koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/updater updatedatabase


From: paul poulain
Subject: [Koha-cvs] koha/updater updatedatabase
Date: Fri, 14 Apr 2006 09:37:29 +0000

CVSROOT:        /cvsroot/koha
Module name:    koha
Branch:         
Changes by:     paul poulain <address@hidden>   06/04/14 09:37:29

Modified files:
        updater        : updatedatabase 

Log message:
        improvements from SAN Ouest Provence :
        * introducing a category_type into categories. It can be A (adult), C 
(children), P (Professionnal), I (institution/organisation).
        * each category_type has it's own forms to create members.
        * the borrowers table has been heavily modified (many fields changed), 
to get something more logic & readable
        * reintroducing guarantor/guanrantee system that is now independant 
from hardcoded C/A for categories
        * updating templates to fit template rules
        
        (see mail feb, 17 on koha-devel "new features for borrowers" for more 
details)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/updater/updatedatabase.diff?tr1=1.133&tr2=1.134&r1=text&r2=text

Patches:
Index: koha/updater/updatedatabase
diff -u koha/updater/updatedatabase:1.133 koha/updater/updatedatabase:1.134
--- koha/updater/updatedatabase:1.133   Thu Apr 13 08:36:42 2006
+++ koha/updater/updatedatabase Fri Apr 14 09:37:29 2006
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: updatedatabase,v 1.133 2006/04/13 08:36:42 plg Exp $
+# $Id: updatedatabase,v 1.134 2006/04/14 09:37:29 tipaul Exp $
 
 # Database Updater
 # This script checks for required updates to the database.
@@ -135,6 +135,15 @@
                                        `debarred3` int(1) default '0',
                                        PRIMARY KEY  
(`branchcode`,`categorycode`)
                                        )",
+       cities                  => "(`cityid` int auto_increment,
+                                               `city_name` char(100) NOT NULL,
+                                               `city_zipcode` char(20),
+                                               PRIMARY KEY (`cityid`)
+                                       )",
+       roadtype                        => "(`roadtypeid` int auto_increment,
+                                               `road_type` char(100) NOT NULL,
+                                               PRIMARY KEY (`roadtypeid`)
+                                       )",
 );
 
 my %requirefields = (
@@ -157,6 +166,7 @@
 
 my %uselessfields = (
 # tablename => "field1,field2",
+       borrowers => 
"suburb,altstreetaddress,altsuburb,altcity,studentnumber,school,area,preferredcont,altcp",
        );
 # the other hash contains other actions that can't be done elsewhere. they are 
done
 # either BEFORE of AFTER everything else, depending on "when" entry (default 
=> AFTER)
@@ -346,6 +356,24 @@
                type            => 'Choice',
                options         => 'Calendar|Days'
         },
+        {
+            uniquefieldrequired => 'variable',
+            variable            => 'borrowerMandatoryField',
+            value               => 'zipcode|surname',
+            forceupdate         => { 'explanation' => 1,
+                                     'type' => 1},
+            explanation         => 'List all mandatory fields for borrowers',
+            type                => 'free',
+        },
+        {
+            uniquefieldrequired => 'variable',
+            variable            => 'borrowerRelationship',
+            value               => 'father|mother,grand-mother',
+            forceupdate         => { 'explanation' => 1,
+                                     'type' => 1},
+            explanation         => 'The relationships between a guarantor & a 
guarantee (separated by | or ,)',
+            type                => 'free',
+        },
     ],
 
 );
@@ -415,6 +443,78 @@
                        extra   => '',
                },
        ],
+       borrowers => [
+               {       field => 'B_email',
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'B_zipcode',
+                },
+                {
+                       field => 'streetnumber', # street number (hidden if 
streettable table is empty)
+                       type => 'char(10)',
+                       null => 'NULL',
+                       after => 'initials',
+               },
+               {
+                       field => 'streettype', # street table, list builded 
from a system table
+                       type => 'char(50)',
+                       null => 'NULL',
+                       after => 'streetnumber',
+               },
+                {
+                       field => 'B_streetnumber', # street number (hidden if 
streettable table is empty)
+                       type => 'char(10)',
+                       null => 'NULL',
+                       after => 'fax',
+               },
+               {
+                       field => 'B_streettype', # street table, list builded 
from a system table
+                       type => 'char(50)',
+                       null => 'NULL',
+                       after => 'B_streetnumber',
+               },
+               {
+                       field => 'phonepro',
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'fax',
+               },
+               {
+                       field => 'address2', # complement address
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'address',
+               },
+               {
+                       field => 'emailpro',
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'fax',
+               },
+               {
+                       field => 'contactfirstname', # contact's firstname
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'contactname',
+               },
+               {
+                       field => 'contacttitle', # contact's title
+                       type => 'text',
+                       null => 'NULL',
+                       after => 'contactfirstname',
+               },
+       ],
+       categories =>  [
+               {
+                       field   => 'category_type',
+                       type    => 'char(1)',
+                       null    => 'NOT NULL',
+                       key             => '',
+                       default => 'A',
+                       extra   => '',
+               },
+       ],
+
 );
 
 my %indexes = (
@@ -715,6 +815,123 @@
        # FIXME : don't constraint auth_*_table and auth_word, as they may be 
replaced by zebra
 );
 
+
+# column changes
+my %column_change = (
+       # table
+       borrowers => [
+                               {
+                                       from => 'emailaddress',
+                                       to => 'email',
+                                       after => 'city',
+                               },
+                               {
+                                       from => 'streetaddress',
+                                       to => 'address',
+                                       after => 'initials',
+                               },
+                               {
+                                       from => 'faxnumber',
+                                       to => 'fax',
+                                       after => 'phone',
+                               },
+                               {
+                                       from => 'textmessaging',
+                                       to => 'opacnote',
+                                       after => 'userid',
+                               },
+                               {
+                                       from => 'altnotes',
+                                       to => 'contactnote',
+                                       after => 'opacnote',
+                               },
+                               {
+                                       from => 'physstreet',
+                                       to => 'B_address',
+                                       after => 'fax',
+                               },
+                               {
+                                       from => 'streetcity',
+                                       to => 'B_city',
+                                       after => 'B_address',
+                               },
+                               {
+                                       from => 'phoneday',
+                                       to => 'mobile',
+                                       after => 'phone',
+                               },
+                               {
+                                       from => 'zipcode',
+                                       to => 'zipcode',
+                                       after => 'city',
+                               },
+                               {
+                                       from => 'homezipcode',
+                                       to => 'B_zipcode',
+                                       after => 'B_city',
+                               },
+                               {
+                                       from => 'altphone',
+                                       to => 'B_phone',
+                                       after => 'B_zipcode',
+                               },
+                               {
+                                       from => 'expiry',
+                                       to => 'dateexpiry',
+                                       after => 'dateenrolled',
+                               },
+                               {
+                                       from => 'guarantor',
+                                       to => 'guarantorid',
+                                       after => 'contactname',
+                               },
+                               {
+                                       from => 'textmessaging',
+                                       to => 'opacnotes',
+                                       after => 'flags',
+                               },
+                               {
+                                       from => 'altnotes',
+                                       to => 'contactnotes',
+                                       after => 'opacnotes',
+                               },
+                               {
+                                       from => 'altrelationship',
+                                       to => 'relationship',
+                                       after => 'borrowernotes',
+                               },
+                       ],
+               );
+               
+foreach my $table (keys %column_change) {
+       $sth = $dbh->prepare("show columns from $table");
+       $sth->execute();
+       undef %types;
+       while ( ( $column, $type, $null, $key, $default, $extra ) = 
$sth->fetchrow )
+       {
+               $types{$column}->{type} ="$type";
+               $types{$column}->{null} = "$null";
+               $types{$column}->{key} = "$key";
+               $types{$column}->{default} = "$default";
+               $types{$column}->{extra} = "$extra";
+       }    # while
+       my $tablerows = $column_change{$table};
+       foreach my $row ( @$tablerows ) {
+               if ($types{$row->{from}}->{type}) {
+                       print "altering $table $row->{from} to $row->{to}\n";
+                       # ALTER TABLE `borrowers` CHANGE `faxnumber` `fax` TEXT 
CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL 
+#                      alter table `borrowers` change `faxnumber` `fax` type 
text  null after phone
+                       my $sql = 
+                               "alter table `$table` change `$row->{from}` 
`$row->{to}` $types{$row->{from}}->{type} ".
+                               ($types{$row->{from}}->{null} eq 'YES'?" 
NULL":" NOT NULL").
+                               ($types{$row->{from}}->{default}?" default 
".$types{$row->{from}}->{default}:"").
+                               "$types{$row->{from}}->{extra} after 
$row->{after} ";
+#                      print "$sql";
+                       $dbh->do($sql);
+               }
+       }
+}
+
 #-------------------
 # Initialize
 
@@ -820,6 +1037,7 @@
 #              $default="''" unless $default;
                my $extra   = $row->{extra};
                my $def     = $definitions->{$field};
+               my $after       = ($row->{after}?" after ".$row->{after}:"");
 
                unless ( $type eq $def->{type}
                        && $null eq $def->{null}
@@ -846,17 +1064,16 @@
 # if it's a primary key, drop the previous pk, before altering the table
                        my $sth;
                        if ($key ne 'PRIMARY KEY') {
-                               $sth =$dbh->prepare("alter table $table $action 
$field $type $null $key $extra default ?");
+                               $sth =$dbh->prepare("alter table $table $action 
$field $type $null $key $extra default ? $after");
                        } else {
-                               $sth =$dbh->prepare("alter table $table drop 
primary key, $action $field $type $null $key $extra default ?");
+                               $sth =$dbh->prepare("alter table $table drop 
primary key, $action $field $type $null $key $extra default ? $after");
                        }
                        $sth->execute($default);
-                       print "  Alter $field in $table\n" unless $silent;
+                       print "  alter or create $field in $table\n" unless 
$silent;
                }
        }
 }
 
-
 # Populate tables with required data
 
 
@@ -1286,6 +1503,16 @@
 exit;
 
 # $Log: updatedatabase,v $
+# Revision 1.134  2006/04/14 09:37:29  tipaul
+# improvements from SAN Ouest Provence :
+# * introducing a category_type into categories. It can be A (adult), C 
(children), P (Professionnal), I (institution/organisation).
+# * each category_type has it's own forms to create members.
+# * the borrowers table has been heavily modified (many fields changed), to 
get something more logic & readable
+# * reintroducing guarantor/guanrantee system that is now independant from 
hardcoded C/A for categories
+# * updating templates to fit template rules
+#
+# (see mail feb, 17 on koha-devel "new features for borrowers" for more 
details)
+#
 # Revision 1.133  2006/04/13 08:36:42  plg
 # new: function C4::Date::get_date_format_string_for_DHTMLcalendar based on
 # the system preference prefered date format.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]