From a93474ef2b2e15190c53c1143f22b028023eeb8e Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Sun, 19 Jul 2015 10:24:53 +0000 Subject: [PATCH] * Update API version to 14.3, NO new features, just database optimization targeting InnoDB engine in MySQL changing columns with no user-input to CHARACTER SET ascii (instead of utf8), shorten indexes and add additional autoincrement columns where primary key contained varchars --- admin/inc/class.uiasyncservice.inc.php | 8 +- admin/setup/setup.inc.php | 4 +- admin/setup/tables_current.inc.php | 12 +- admin/setup/tables_update.inc.php | 44 ++ calendar/setup/setup.inc.php | 5 +- calendar/setup/tables_current.inc.php | 27 +- calendar/setup/tables_update.inc.php | 110 +++ emailadmin/setup/setup.inc.php | 4 +- emailadmin/setup/tables_current.inc.php | 14 +- emailadmin/setup/tables_update.inc.php | 49 +- infolog/setup/setup.inc.php | 4 +- infolog/setup/tables_current.inc.php | 12 +- infolog/setup/tables_update.inc.php | 49 +- notifications/setup/setup.inc.php | 3 +- notifications/setup/tables_current.inc.php | 4 +- notifications/setup/tables_update.inc.php | 17 + .../inc/adodb/datadict/datadict-mysql.inc.php | 4 + phpgwapi/inc/class.schema_proc.inc.php | 5 + phpgwapi/setup/setup.inc.php | 3 +- phpgwapi/setup/tables_current.inc.php | 173 +++-- phpgwapi/setup/tables_update.inc.php | 719 +++++++++++++++++- 21 files changed, 1142 insertions(+), 128 deletions(-) diff --git a/admin/inc/class.uiasyncservice.inc.php b/admin/inc/class.uiasyncservice.inc.php index cec90d57ca..6cac77f2e3 100644 --- a/admin/inc/class.uiasyncservice.inc.php +++ b/admin/inc/class.uiasyncservice.inc.php @@ -95,16 +95,20 @@ class uiasyncservice { config::save_value('asyncservice', $GLOBALS['egw_info']['server']['asyncservice']=$_POST['asyncservice'], 'phpgwapi'); } +/* if (!$async->only_fallback) { $installed = $async->installed(); if (is_array($installed) && isset($installed['cronline'])) { +*/ $async_use['cron'] = lang('crontab only (recomended)'); +/* } } $async_use[''] = lang('fallback (after each pageview)'); $async_use['off'] = lang('disabled (not recomended)'); +*/ echo '

'.lang('Run Asynchronous services').''. ' \n". lang("for the times below (empty values count as '*', all empty = every minute)")."

\n"; +*/ } echo "
\n"; diff --git a/admin/setup/setup.inc.php b/admin/setup/setup.inc.php index 1dd9b2a484..5a3dfdc101 100755 --- a/admin/setup/setup.inc.php +++ b/admin/setup/setup.inc.php @@ -10,7 +10,7 @@ */ $setup_info['admin']['name'] = 'admin'; -$setup_info['admin']['version'] = '14.1'; +$setup_info['admin']['version'] = '14.3'; $setup_info['admin']['app_order'] = 1; $setup_info['admin']['tables'] = array('egw_admin_queue','egw_admin_remote'); $setup_info['admin']['enable'] = 1; @@ -53,3 +53,5 @@ $setup_info['admin']['depends'][] = array( 'appname' => 'etemplate', 'versions' => Array('14.1') ); + + diff --git a/admin/setup/tables_current.inc.php b/admin/setup/tables_current.inc.php index 0ad82a3bd7..e1d9f2e0b9 100644 --- a/admin/setup/tables_current.inc.php +++ b/admin/setup/tables_current.inc.php @@ -16,11 +16,11 @@ $phpgw_baseline = array( 'egw_admin_queue' => array( 'fd' => array( 'cmd_id' => array('type' => 'auto','nullable' => False), - 'cmd_uid' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'cmd_uid' => array('type' => 'ascii','precision' => '64','nullable' => False), 'cmd_creator' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False), 'cmd_creator_email' => array('type' => 'varchar','precision' => '128','nullable' => False), 'cmd_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False), - 'cmd_type' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'admin_cmd'), + 'cmd_type' => array('type' => 'ascii','precision' => '32','nullable' => False,'default' => 'admin_cmd'), 'cmd_status' => array('type' => 'int','precision' => '1'), 'cmd_scheduled' => array('type' => 'int','meta' => 'timestamp','precision' => '8'), 'cmd_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8'), @@ -31,7 +31,7 @@ $phpgw_baseline = array( 'cmd_requested' => array('type' => 'int','precision' => '4'), 'cmd_requested_email' => array('type' => 'varchar','precision' => '128'), 'cmd_comment' => array('type' => 'varchar','precision' => '255'), - 'cmd_data' => array('type' => 'blob'), + 'cmd_data' => array('type' => 'ascii','precision' => '16384'), 'remote_id' => array('type' => 'int','precision' => '4') ), 'pk' => array('cmd_id'), @@ -43,9 +43,9 @@ $phpgw_baseline = array( 'fd' => array( 'remote_id' => array('type' => 'auto','nullable' => False), 'remote_name' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'remote_hash' => array('type' => 'varchar','precision' => '32','nullable' => False), - 'remote_url' => array('type' => 'varchar','precision' => '128','nullable' => False), - 'remote_domain' => array('type' => 'varchar','precision' => '64','nullable' => False) + 'remote_hash' => array('type' => 'ascii','precision' => '32','nullable' => False), + 'remote_url' => array('type' => 'ascii','precision' => '128','nullable' => False), + 'remote_domain' => array('type' => 'ascii','precision' => '64','nullable' => False) ), 'pk' => array('remote_id'), 'fk' => array(), diff --git a/admin/setup/tables_update.inc.php b/admin/setup/tables_update.inc.php index 73da15de9c..c8134632c7 100644 --- a/admin/setup/tables_update.inc.php +++ b/admin/setup/tables_update.inc.php @@ -107,3 +107,47 @@ function admin_upgrade1_9_001() { return $GLOBALS['setup_info']['admin']['currentver'] = '14.1'; } + +function admin_upgrade14_1() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_queue','cmd_uid',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_queue','cmd_type',array( + 'type' => 'ascii', + 'precision' => '32', + 'nullable' => False, + 'default' => 'admin_cmd' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_queue','cmd_data',array( + 'type' => 'ascii', + 'precision' => '16384' + )); + + return $GLOBALS['setup_info']['admin']['currentver'] = '14.2.001'; +} + + +function admin_upgrade14_2_001() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_remote','remote_hash',array( + 'type' => 'ascii', + 'precision' => '32', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_remote','remote_url',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_admin_remote','remote_domain',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['admin']['currentver'] = '14.3'; +} + diff --git a/calendar/setup/setup.inc.php b/calendar/setup/setup.inc.php index 0fdc035bcd..783b0a028b 100755 --- a/calendar/setup/setup.inc.php +++ b/calendar/setup/setup.inc.php @@ -10,7 +10,7 @@ */ $setup_info['calendar']['name'] = 'calendar'; -$setup_info['calendar']['version'] = '14.2.003'; +$setup_info['calendar']['version'] = '14.3'; $setup_info['calendar']['app_order'] = 3; $setup_info['calendar']['enable'] = 1; $setup_info['calendar']['index'] = 'calendar.calendar_uiviews.index'; @@ -71,3 +71,6 @@ $setup_info['calendar']['check_install'] = array( 'from' => 'Calendar', ), ); + + + diff --git a/calendar/setup/tables_current.inc.php b/calendar/setup/tables_current.inc.php index 833b7545f2..3b2e68984e 100644 --- a/calendar/setup/tables_current.inc.php +++ b/calendar/setup/tables_current.inc.php @@ -13,9 +13,9 @@ $phpgw_baseline = array( 'egw_cal' => array( 'fd' => array( 'cal_id' => array('type' => 'auto','nullable' => False,'comment' => 'calendar id'), - 'cal_uid' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'unique id of event(-series)'), + 'cal_uid' => array('type' => 'ascii','precision' => '128','nullable' => False,'comment' => 'unique id of event(-series)'), 'cal_owner' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'event owner / calendar'), - 'cal_category' => array('type' => 'varchar','meta' => 'category','precision' => '64','comment' => 'category id(s)'), + 'cal_category' => array('type' => 'ascii','meta' => 'category','precision' => '64','comment' => 'category id(s)'), 'cal_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'ts of last modification'), 'cal_priority' => array('type' => 'int','precision' => '2','nullable' => False,'default' => '2','comment' => 'priority: 1=Low, 2=Normal, 3=High'), 'cal_public' => array('type' => 'int','precision' => '2','nullable' => False,'default' => '1','comment' => '1=public, 0=private event'), @@ -32,7 +32,7 @@ $phpgw_baseline = array( 'cal_recurrence' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'default' => '0','comment' => 'cal_start of original recurrence for exception'), 'tz_id' => array('type' => 'int','precision' => '4','comment' => 'key into egw_cal_timezones'), 'cal_deleted' => array('type' => 'int','precision' => '8','comment' => 'ts when event was deleted'), - 'caldav_name' => array('type' => 'varchar','precision' => '200','comment' => 'name part of CalDAV URL, if specified by client'), + 'caldav_name' => array('type' => 'ascii','precision' => '128','comment' => 'name part of CalDAV URL, if specified by client'), 'range_start' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'startdate (of range)'), 'range_end' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'enddate (of range, UNTIL of RRULE)') ), @@ -72,18 +72,19 @@ $phpgw_baseline = array( 'egw_cal_user' => array( 'fd' => array( 'cal_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'cal_recur_date' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0'), - 'cal_user_type' => array('type' => 'varchar','precision' => '1','nullable' => False,'default' => 'u','comment' => 'u=user, g=group, c=contact, r=resource, e=email'), - 'cal_user_id' => array('type' => 'varchar','meta' => array("cal_user_type='u'" => 'account'),'precision' => '128','nullable' => False,'comment' => 'id or email-address for type=e'), - 'cal_status' => array('type' => 'char','precision' => '1','default' => 'A','comment' => 'U=unknown, A=accepted, R=rejected, T=tentative'), + 'cal_recur_date' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'default' => '0'), + 'cal_user_type' => array('type' => 'ascii','precision' => '1','nullable' => False,'default' => 'u','comment' => 'u=user, g=group, c=contact, r=resource, e=email'), + 'cal_user_id' => array('type' => 'ascii','meta' => array("cal_user_type='u'" => 'account'),'precision' => '128','nullable' => False,'comment' => 'id or email-address for type=e'), + 'cal_status' => array('type' => 'ascii','precision' => '1','default' => 'A','comment' => 'U=unknown, A=accepted, R=rejected, T=tentative'), 'cal_quantity' => array('type' => 'int','precision' => '4','default' => '1','comment' => 'only for certain types (eg. resources)'), - 'cal_role' => array('type' => 'varchar','precision' => '64','default' => 'REQ-PARTICIPANT','comment' => 'CHAIR, REQ-PARTICIPANT, OPT-PARTICIPANT, NON-PARTICIPANT, X-CAT-$cat_id'), - 'cal_user_modified' => array('type' => 'timestamp','default' => 'current_timestamp','comment' => 'automatic timestamp of last update') + 'cal_role' => array('type' => 'ascii','precision' => '64','default' => 'REQ-PARTICIPANT','comment' => 'CHAIR, REQ-PARTICIPANT, OPT-PARTICIPANT, NON-PARTICIPANT, X-CAT-$cat_id'), + 'cal_user_modified' => array('type' => 'timestamp','default' => 'current_timestamp','comment' => 'automatic timestamp of last update'), + 'cal_user_auto' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('cal_id','cal_recur_date','cal_user_type','cal_user_id'), + 'pk' => array('cal_user_auto'), 'fk' => array(), 'ix' => array('cal_user_modified',array('cal_user_type','cal_user_id')), - 'uc' => array() + 'uc' => array(array('cal_id','cal_recur_date','cal_user_type','cal_user_id')) ), 'egw_cal_extra' => array( 'fd' => array( @@ -111,11 +112,11 @@ $phpgw_baseline = array( 'egw_cal_timezones' => array( 'fd' => array( 'tz_id' => array('type' => 'auto','nullable' => False), - 'tz_tzid' => array('type' => 'varchar','precision' => '128','nullable' => False), + 'tz_tzid' => array('type' => 'ascii','precision' => '128','nullable' => False), 'tz_alias' => array('type' => 'int','precision' => '4','comment' => 'tz_id for data'), 'tz_latitude' => array('type' => 'int','precision' => '4'), 'tz_longitude' => array('type' => 'int','precision' => '4'), - 'tz_component' => array('type' => 'text','comment' => 'iCal VTIMEZONE component') + 'tz_component' => array('type' => 'ascii','precision' => '8192','comment' => 'iCal VTIMEZONE component') ), 'pk' => array('tz_id'), 'fk' => array(), diff --git a/calendar/setup/tables_update.inc.php b/calendar/setup/tables_update.inc.php index 1a786e8a47..1a759e1a40 100644 --- a/calendar/setup/tables_update.inc.php +++ b/calendar/setup/tables_update.inc.php @@ -2443,3 +2443,113 @@ function calendar_upgrade14_2_002() return $GLOBALS['setup_info']['calendar']['currentver'] = '14.2.003'; } + +function calendar_upgrade14_2_003() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal','cal_uid',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False, + 'comment' => 'unique id of event(-series)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal','cal_category',array( + 'type' => 'ascii', + 'meta' => 'category', + 'precision' => '64', + 'comment' => 'category id(s)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal','caldav_name',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'name part of CalDAV URL, if specified by client' + )); + + return $GLOBALS['setup_info']['calendar']['currentver'] = '14.2.004'; +} + + +function calendar_upgrade14_2_004() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_user','cal_recur_date',array( + 'type' => 'int', + 'meta' => 'timestamp', + 'precision' => '8', + 'nullable' => False, + 'default' => '0' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_user','cal_user_type',array( + 'type' => 'ascii', + 'precision' => '1', + 'nullable' => False, + 'default' => 'u', + 'comment' => 'u=user, g=group, c=contact, r=resource, e=email' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_user','cal_user_id',array( + 'type' => 'ascii', + 'meta' => array( + "cal_user_type='u'" => 'account' + ), + 'precision' => '128', + 'nullable' => False, + 'comment' => 'id or email-address for type=e' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_user','cal_status',array( + 'type' => 'ascii', + 'precision' => '1', + 'default' => 'A', + 'comment' => 'U=unknown, A=accepted, R=rejected, T=tentative' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_user','cal_role',array( + 'type' => 'ascii', + 'precision' => '64', + 'default' => 'REQ-PARTICIPANT', + 'comment' => 'CHAIR, REQ-PARTICIPANT, OPT-PARTICIPANT, NON-PARTICIPANT, X-CAT-$cat_id' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_cal_user','cal_user_auto',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_cal_user',array( + 'fd' => array( + 'cal_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'cal_recur_date' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'default' => '0'), + 'cal_user_type' => array('type' => 'ascii','precision' => '1','nullable' => False,'default' => 'u','comment' => 'u=user, g=group, c=contact, r=resource, e=email'), + 'cal_user_id' => array('type' => 'ascii','meta' => array("cal_user_type='u'" => 'account'),'precision' => '128','nullable' => False,'comment' => 'id or email-address for type=e'), + 'cal_status' => array('type' => 'ascii','precision' => '1','default' => 'A','comment' => 'U=unknown, A=accepted, R=rejected, T=tentative'), + 'cal_quantity' => array('type' => 'int','precision' => '4','default' => '1','comment' => 'only for certain types (eg. resources)'), + 'cal_role' => array('type' => 'ascii','precision' => '64','default' => 'REQ-PARTICIPANT','comment' => 'CHAIR, REQ-PARTICIPANT, OPT-PARTICIPANT, NON-PARTICIPANT, X-CAT-$cat_id'), + 'cal_user_modified' => array('type' => 'timestamp','default' => 'current_timestamp','comment' => 'automatic timestamp of last update'), + 'cal_user_auto' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('cal_user_auto'), + 'fk' => array(), + 'ix' => array('cal_user_modified',array('cal_user_type','cal_user_id')), + 'uc' => array(array('cal_id','cal_recur_date','cal_user_type','cal_user_id')) + )); + + return $GLOBALS['setup_info']['calendar']['currentver'] = '14.2.005'; +} + + +function calendar_upgrade14_2_005() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_timezones','tz_tzid',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_cal_timezones','tz_component',array( + 'type' => 'ascii', + 'precision' => '8192', + 'comment' => 'iCal VTIMEZONE component' + )); + + return $GLOBALS['setup_info']['calendar']['currentver'] = '14.3'; +} + diff --git a/emailadmin/setup/setup.inc.php b/emailadmin/setup/setup.inc.php index 7a6a928da9..d33770080e 100644 --- a/emailadmin/setup/setup.inc.php +++ b/emailadmin/setup/setup.inc.php @@ -13,7 +13,7 @@ $setup_info['emailadmin']['name'] = 'emailadmin'; $setup_info['emailadmin']['title'] = 'EMailAdmin'; -$setup_info['emailadmin']['version'] = '14.2'; +$setup_info['emailadmin']['version'] = '14.3'; $setup_info['emailadmin']['app_order'] = 10; $setup_info['emailadmin']['enable'] = 2; @@ -107,3 +107,5 @@ $setup_info['emailadmin']['check_install'] = array( ), ); + + diff --git a/emailadmin/setup/tables_current.inc.php b/emailadmin/setup/tables_current.inc.php index f49ec50a5c..b7d221e801 100644 --- a/emailadmin/setup/tables_current.inc.php +++ b/emailadmin/setup/tables_current.inc.php @@ -64,9 +64,9 @@ $phpgw_baseline = array( 'egw_mailaccounts' => array( 'fd' => array( 'mail_id' => array('type' => 'auto','nullable' => False,'comment' => 'the id'), - 'account_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'account id of the owner, can be user AND group','meta' => 'account'), + 'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'comment' => 'account id of the owner, can be user AND group'), 'mail_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '0=active, 1=alias, 2=forward, 3=forwardOnly, 4=quota'), - 'mail_value' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'the value (that should be) corresponding to the mail_type') + 'mail_value' => array('type' => 'ascii','precision' => '128','nullable' => False,'comment' => 'the value (that should be) corresponding to the mail_type') ), 'pk' => array('mail_id'), 'fk' => array(), @@ -78,11 +78,11 @@ $phpgw_baseline = array( 'acc_id' => array('type' => 'auto','nullable' => False), 'acc_name' => array('type' => 'varchar','precision' => '80','comment' => 'description'), 'ident_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'standard identity'), - 'acc_imap_host' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'imap hostname'), + 'acc_imap_host' => array('type' => 'ascii','precision' => '128','nullable' => False,'comment' => 'imap hostname'), 'acc_imap_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'), 'acc_imap_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '143','comment' => 'imap port'), 'acc_sieve_enabled' => array('type' => 'bool','default' => '0','comment' => 'sieve enabled'), - 'acc_sieve_host' => array('type' => 'varchar','precision' => '128','comment' => 'sieve host, default imap_host'), + 'acc_sieve_host' => array('type' => 'ascii','precision' => '128','comment' => 'sieve host, default imap_host'), 'acc_sieve_port' => array('type' => 'int','precision' => '4','default' => '4190'), 'acc_folder_sent' => array('type' => 'varchar','precision' => '128','comment' => 'sent folder'), 'acc_folder_trash' => array('type' => 'varchar','precision' => '128','comment' => 'trash folder'), @@ -91,9 +91,9 @@ $phpgw_baseline = array( 'acc_smtp_host' => array('type' => 'varchar','precision' => '128','comment' => 'smtp hostname'), 'acc_smtp_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'), 'acc_smtp_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '25','comment' => 'smtp port'), - 'acc_smtp_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_smtp','comment' => 'smtp class to use'), - 'acc_imap_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'), - 'acc_imap_logintype' => array('type' => 'varchar','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'), + 'acc_smtp_type' => array('type' => 'ascii','precision' => '32','default' => 'emailadmin_smtp','comment' => 'smtp class to use'), + 'acc_imap_type' => array('type' => 'ascii','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'), + 'acc_imap_logintype' => array('type' => 'ascii','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'), 'acc_domain' => array('type' => 'varchar','precision' => '100','comment' => 'domain name'), 'acc_further_identities' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'), 'acc_user_editable' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'), diff --git a/emailadmin/setup/tables_update.inc.php b/emailadmin/setup/tables_update.inc.php index 15590f9b8f..ed557b1a59 100644 --- a/emailadmin/setup/tables_update.inc.php +++ b/emailadmin/setup/tables_update.inc.php @@ -1,4 +1,4 @@ -oProc->AlterColumn('egw_mailaccounts','mail_value',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False, + 'comment' => 'the value (that should be) corresponding to the mail_type' + )); + + return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.2.001'; +} + + +function emailadmin_upgrade14_2_001() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_host',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False, + 'comment' => 'imap hostname' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_sieve_host',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'sieve host, default imap_host' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_smtp_type',array( + 'type' => 'ascii', + 'precision' => '32', + 'default' => 'emailadmin_smtp', + 'comment' => 'smtp class to use' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_type',array( + 'type' => 'ascii', + 'precision' => '32', + 'default' => 'emailadmin_imap', + 'comment' => 'imap class to use' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_logintype',array( + 'type' => 'ascii', + 'precision' => '20', + 'comment' => 'standard, vmailmgr, admin, uidNumber' + )); + + return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.3'; +} diff --git a/infolog/setup/setup.inc.php b/infolog/setup/setup.inc.php index fff3c3aa34..fe260f5432 100755 --- a/infolog/setup/setup.inc.php +++ b/infolog/setup/setup.inc.php @@ -12,7 +12,7 @@ */ $setup_info['infolog']['name'] = 'infolog'; -$setup_info['infolog']['version'] = '14.2'; +$setup_info['infolog']['version'] = '14.3'; $setup_info['infolog']['app_order'] = 5; $setup_info['infolog']['tables'] = array('egw_infolog','egw_infolog_extra'); $setup_info['infolog']['enable'] = 1; @@ -75,3 +75,5 @@ $setup_info['infolog']['depends'][] = array( 'versions' => Array('14.1') ); + + diff --git a/infolog/setup/tables_current.inc.php b/infolog/setup/tables_current.inc.php index fec0342b34..3ff7f77877 100644 --- a/infolog/setup/tables_current.inc.php +++ b/infolog/setup/tables_current.inc.php @@ -21,8 +21,8 @@ $phpgw_baseline = array( 'info_subject' => array('type' => 'varchar','precision' => '255','comment' => 'title of the infolog-entry'), 'info_des' => array('type' => 'text','comment' => 'desciption of the infolog-entry'), 'info_owner' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'comment' => 'owner of the entry, can be account or group'), - 'info_responsible' => array('type' => 'varchar','meta' => 'account-commasep','precision' => '255','nullable' => False,'default' => '0','comment' => 'responsible users or groups (multiple)'), - 'info_access' => array('type' => 'varchar','precision' => '10','default' => 'public','comment' => 'public or privat'), + 'info_responsible' => array('type' => 'ascii','meta' => 'account-commasep','precision' => '255','nullable' => False,'default' => '0','comment' => 'responsible users or groups (multiple)'), + 'info_access' => array('type' => 'ascii','precision' => '10','default' => 'public','comment' => 'public or privat'), 'info_cat' => array('type' => 'int','meta' => 'category','precision' => '4','nullable' => False,'default' => '0','comment' => 'category id'), 'info_datemodified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'timestamp of the last mofification'), 'info_startdate' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'default' => '0','comment' => 'timestamp of the startdate'), @@ -32,7 +32,7 @@ $phpgw_baseline = array( 'info_replanned_time' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0','comment' => 'pm-field: replanned time'), 'info_used_time' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0','comment' => 'pm-field: used time'), 'info_status' => array('type' => 'varchar','precision' => '40','default' => 'done','comment' => 'status e.g. ongoing, done ...'), - 'info_confirm' => array('type' => 'varchar','precision' => '10','default' => 'not'), + 'info_confirm' => array('type' => 'ascii','precision' => '10','default' => 'not'), 'info_modifier' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'default' => '0','comment' => 'account id of the last modifier'), 'info_link_id' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0','comment' => 'id of the primary link'), 'info_priority' => array('type' => 'int','precision' => '2','default' => '1','comment' => '0=Low, 1=Normal, 2=High, 3=Urgent'), @@ -42,9 +42,9 @@ $phpgw_baseline = array( 'info_datecompleted' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'timestamp of completion'), 'info_location' => array('type' => 'varchar','precision' => '255','comment' => 'textfield location'), 'info_custom_from' => array('type' => 'int','precision' => '1','comment' => 'tick-box to show infolog_from'), - 'info_uid' => array('type' => 'varchar','precision' => '255','comment' => 'unique id of the infolog-entry'), + 'info_uid' => array('type' => 'ascii','precision' => '128','comment' => 'unique id of the infolog-entry'), 'info_cc' => array('type' => 'varchar','precision' => '255','comment' => 'textfield for email-adress to be notified via email of changes'), - 'caldav_name' => array('type' => 'varchar','precision' => '200','comment' => 'name part of CalDAV URL, if specified by client'), + 'caldav_name' => array('type' => 'ascii','precision' => '128','comment' => 'name part of CalDAV URL, if specified by client'), 'info_etag' => array('type' => 'int','precision' => '4','default' => '0','comment' => 'etag, not yet used'), 'info_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'timestamp of the creation date'), 'info_creator' => array('type' => 'int','meta' => 'user','precision' => '4','comment' => 'account id of the creator') @@ -58,7 +58,7 @@ $phpgw_baseline = array( 'fd' => array( 'info_id' => array('type' => 'int','precision' => '4','nullable' => False), 'info_extra_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '64','nullable' => False), - 'info_extra_value' => array('type' => 'text','meta' => 'cfvalue','nullable' => False) + 'info_extra_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','nullable' => False) ), 'pk' => array('info_id','info_extra_name'), 'fk' => array(), diff --git a/infolog/setup/tables_update.inc.php b/infolog/setup/tables_update.inc.php index 04d1023886..cea3f87d7f 100644 --- a/infolog/setup/tables_update.inc.php +++ b/infolog/setup/tables_update.inc.php @@ -749,4 +749,51 @@ function infolog_upgrade14_1() $GLOBALS['egw_setup']->db->query("UPDATE egw_infolog SET info_status='not-started' WHERE info_status IS NULL", __LINE__, __FILE__); return $GLOBALS['setup_info']['infolog']['currentver'] = '14.2'; -} \ No newline at end of file +} +function infolog_upgrade14_2() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog','info_responsible',array( + 'type' => 'ascii', + 'meta' => 'account-commasep', + 'precision' => '255', + 'nullable' => False, + 'default' => '0', + 'comment' => 'responsible users or groups (multiple)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog','info_access',array( + 'type' => 'ascii', + 'precision' => '10', + 'default' => 'public', + 'comment' => 'public or privat' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog','info_confirm',array( + 'type' => 'ascii', + 'precision' => '10', + 'default' => 'not' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog','info_uid',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'unique id of the infolog-entry' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog','caldav_name',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'name part of CalDAV URL, if specified by client' + )); + + return $GLOBALS['setup_info']['infolog']['currentver'] = '14.2.001'; +} + + +function infolog_upgrade14_2_001() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_infolog_extra','info_extra_value',array( + 'type' => 'varchar', + 'meta' => 'cfvalue', + 'precision' => '16384', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['infolog']['currentver'] = '14.3'; +} diff --git a/notifications/setup/setup.inc.php b/notifications/setup/setup.inc.php index 0b6e9bb3c2..55160c6fd4 100644 --- a/notifications/setup/setup.inc.php +++ b/notifications/setup/setup.inc.php @@ -15,7 +15,7 @@ if (!defined('NOTIFICATION_APP')) } $setup_info[NOTIFICATION_APP]['name'] = NOTIFICATION_APP; -$setup_info[NOTIFICATION_APP]['version'] = '14.1'; +$setup_info[NOTIFICATION_APP]['version'] = '14.3'; $setup_info[NOTIFICATION_APP]['app_order'] = 1; $setup_info[NOTIFICATION_APP]['tables'] = array('egw_notificationpopup'); $setup_info[NOTIFICATION_APP]['enable'] = 2; @@ -44,3 +44,4 @@ $setup_info[NOTIFICATION_APP]['depends'][] = array( 'appname' => 'etemplate', 'versions' => Array('14.1') ); + diff --git a/notifications/setup/tables_current.inc.php b/notifications/setup/tables_current.inc.php index a9bee6bbe0..25061ec57b 100644 --- a/notifications/setup/tables_current.inc.php +++ b/notifications/setup/tables_current.inc.php @@ -14,9 +14,9 @@ $phpgw_baseline = array( 'fd' => array( 'notify_id' => array('type' => 'auto','nullable' => False,'comment' => 'primary key'), 'account_id' => array('type' => 'int','meta' => 'user','precision' => '20','nullable' => False,'comment' => 'user to notify'), - 'notify_message' => array('type' => 'text','comment' => 'notification message'), + 'notify_message' => array('type' => 'varchar','precision' => '16384','comment' => 'notification message'), 'notify_created' => array('type' => 'timestamp','meta' => 'timestamp','default' => 'current_timestamp','comment' => 'creation time of notification'), - 'notify_type' => array('type' => 'varchar','precision' => '32','comment' => 'notification type') + 'notify_type' => array('type' => 'ascii','precision' => '32','comment' => 'notification type') ), 'pk' => array('notify_id'), 'fk' => array(), diff --git a/notifications/setup/tables_update.inc.php b/notifications/setup/tables_update.inc.php index 387715dba3..0c59f20a57 100644 --- a/notifications/setup/tables_update.inc.php +++ b/notifications/setup/tables_update.inc.php @@ -106,3 +106,20 @@ function notifications_upgrade1_9_004() { return $GLOBALS['setup_info']['notifications']['currentver'] = '14.1'; } + +function notifications_upgrade14_1() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_notificationpopup','notify_message',array( + 'type' => 'varchar', + 'precision' => '16384', + 'comment' => 'notification message' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_notificationpopup','notify_type',array( + 'type' => 'ascii', + 'precision' => '32', + 'comment' => 'notification type' + )); + + return $GLOBALS['setup_info']['notifications']['currentver'] = '14.3'; +} + diff --git a/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php b/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php index a17e6266f0..32a237ae9f 100644 --- a/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php +++ b/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php @@ -110,6 +110,10 @@ class ADODB2_mysql extends ADODB_DataDict { function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) { $suffix = ''; + if (stripos($fconstraint, 'CHARACTER SET') === 0) { + $suffix .= ' '.$fconstraint; + unset($fconstraint); + } if ($funsigned) $suffix .= ' UNSIGNED'; if ($fnotnull) $suffix .= ' NOT NULL'; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; diff --git a/phpgwapi/inc/class.schema_proc.inc.php b/phpgwapi/inc/class.schema_proc.inc.php index fc426b2590..877bbe356d 100644 --- a/phpgwapi/inc/class.schema_proc.inc.php +++ b/phpgwapi/inc/class.schema_proc.inc.php @@ -1057,6 +1057,7 @@ class schema_proc break; case 'char': // ADOdb does not differ between char and varchar + case 'ascii': case 'varchar': $ado_col = "C"; if(0 < $col_data['precision'] && $col_data['precision'] <= $this->max_varchar_length) @@ -1067,6 +1068,10 @@ class schema_proc { $ado_col = 'X'; } + if ($col_data['type'] == 'ascii' && $this->sType == 'mysql') + { + $ado_col .= ' CONSTRAINT "CHARACTER SET ascii"'; + } break; case 'date': $ado_col = 'D'; diff --git a/phpgwapi/setup/setup.inc.php b/phpgwapi/setup/setup.inc.php index 6a07aa9e5c..1d8a007986 100755 --- a/phpgwapi/setup/setup.inc.php +++ b/phpgwapi/setup/setup.inc.php @@ -12,7 +12,7 @@ /* Basic information about this app */ $setup_info['phpgwapi']['name'] = 'phpgwapi'; $setup_info['phpgwapi']['title'] = 'EGroupware API'; -$setup_info['phpgwapi']['version'] = '14.2'; +$setup_info['phpgwapi']['version'] = '14.3'; $setup_info['phpgwapi']['versions']['current_header'] = '1.29'; $setup_info['phpgwapi']['enable'] = 3; $setup_info['phpgwapi']['app_order'] = 1; @@ -73,4 +73,3 @@ $setup_info['groupdav']['author'] = $setup_info['groupdav']['maintainer'] = arra $setup_info['groupdav']['license'] = 'GPL'; $setup_info['groupdav']['hooks']['preferences'] = 'groupdav_hooks::menus'; $setup_info['groupdav']['hooks']['settings'] = 'groupdav_hooks::settings'; - diff --git a/phpgwapi/setup/tables_current.inc.php b/phpgwapi/setup/tables_current.inc.php index e9fda853d1..cb5eeea483 100644 --- a/phpgwapi/setup/tables_current.inc.php +++ b/phpgwapi/setup/tables_current.inc.php @@ -14,8 +14,8 @@ $phpgw_baseline = array( 'egw_config' => array( 'fd' => array( - 'config_app' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'config_name' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'config_app' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'config_name' => array('type' => 'ascii','precision' => '32','nullable' => False), 'config_value' => array('type' => 'text') ), 'pk' => array('config_app','config_name'), @@ -26,14 +26,14 @@ $phpgw_baseline = array( 'egw_applications' => array( 'fd' => array( 'app_id' => array('type' => 'auto','precision' => '4','nullable' => False), - 'app_name' => array('type' => 'varchar','precision' => '25','nullable' => False), + 'app_name' => array('type' => 'ascii','precision' => '16','nullable' => False), 'app_enabled' => array('type' => 'int','precision' => '4','nullable' => False), 'app_order' => array('type' => 'int','precision' => '4','nullable' => False), - 'app_tables' => array('type' => 'text','nullable' => False), - 'app_version' => array('type' => 'varchar','precision' => '20','nullable' => False,'default' => '0.0'), - 'app_icon' => array('type' => 'varchar','precision' => '32'), - 'app_icon_app' => array('type' => 'varchar','precision' => '25'), - 'app_index' => array('type' => 'varchar','precision' => '64') + 'app_tables' => array('type' => 'ascii','precision' => '8192','nullable' => False), + 'app_version' => array('type' => 'ascii','precision' => '20','nullable' => False,'default' => '0.0'), + 'app_icon' => array('type' => 'ascii','precision' => '32'), + 'app_icon_app' => array('type' => 'ascii','precision' => '16'), + 'app_index' => array('type' => 'ascii','precision' => '64') ), 'pk' => array('app_id'), 'fk' => array(), @@ -42,15 +42,16 @@ $phpgw_baseline = array( ), 'egw_acl' => array( 'fd' => array( - 'acl_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), - 'acl_location' => array('type' => 'varchar','meta' => 'account','precision' => '255','nullable' => False), + 'acl_appname' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'acl_location' => array('type' => 'ascii','meta' => 'account','precision' => '16','nullable' => False), 'acl_account' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False), - 'acl_rights' => array('type' => 'int','precision' => '4') + 'acl_rights' => array('type' => 'int','precision' => '4'), + 'acl_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('acl_appname','acl_location','acl_account'), + 'pk' => array('acl_id'), 'fk' => array(), 'ix' => array('acl_account',array('acl_location','acl_account'),array('acl_appname','acl_account')), - 'uc' => array() + 'uc' => array(array('acl_appname','acl_location','acl_account')) ), 'egw_accounts' => array( 'fd' => array( @@ -58,7 +59,7 @@ $phpgw_baseline = array( 'account_lid' => array('type' => 'varchar','precision' => '64','nullable' => False), 'account_pwd' => array('type' => 'varchar','precision' => '128','nullable' => False), 'account_lastlogin' => array('type' => 'int','precision' => '4'), - 'account_lastloginfrom' => array('type' => 'varchar','precision' => '255'), + 'account_lastloginfrom' => array('type' => 'ascii','precision' => '48','comment' => 'ip'), 'account_lastpwd_change' => array('type' => 'int','precision' => '4'), 'account_status' => array('type' => 'char','precision' => '1','nullable' => False,'default' => 'A'), 'account_expires' => array('type' => 'int','precision' => '4'), @@ -73,27 +74,28 @@ $phpgw_baseline = array( 'egw_preferences' => array( 'fd' => array( 'preference_owner' => array('type' => 'int','meta' => 'account-prefs','precision' => '4','nullable' => False), - 'preference_app' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'preference_value' => array('type' => 'text','nullable' => False) + 'preference_app' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'preference_value' => array('type' => 'text','nullable' => False), + 'preference_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('preference_owner','preference_app'), + 'pk' => array('preference_id'), 'fk' => array(), 'ix' => array(), - 'uc' => array() + 'uc' => array(array('preference_owner','preference_app')) ), 'egw_access_log' => array( 'fd' => array( 'sessionid' => array('type' => 'auto','nullable' => False,'comment' => 'primary key'), 'loginid' => array('type' => 'varchar','precision' => '64','nullable' => False,'comment' => 'username used to login'), - 'ip' => array('type' => 'varchar','precision' => '40','nullable' => False,'comment' => 'ip of user'), + 'ip' => array('type' => 'ascii','precision' => '48','nullable' => False,'comment' => 'ip of user'), 'li' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'TS if login'), 'lo' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'TD of logout'), 'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'default' => '0','comment' => 'numerical account id'), 'session_dla' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'TS of last user action'), - 'session_action' => array('type' => 'varchar','precision' => '64','comment' => 'menuaction or path of last user action'), - 'session_php' => array('type' => 'varchar','precision' => '64','nullable' => False,'comment' => 'php session-id or error-message'), + 'session_action' => array('type' => 'ascii','precision' => '64','comment' => 'menuaction or path of last user action'), + 'session_php' => array('type' => 'ascii','precision' => '64','nullable' => False,'comment' => 'php session-id or error-message'), 'notification_heartbeat' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'TS of last notification request'), - 'user_agent' => array('type' => 'varchar','precision' => '255','comment' => 'User-agent of browser/device') + 'user_agent' => array('type' => 'ascii','precision' => '255','comment' => 'User-agent of browser/device') ), 'pk' => array('sessionid'), 'fk' => array(), @@ -103,18 +105,18 @@ $phpgw_baseline = array( 'egw_hooks' => array( 'fd' => array( 'hook_id' => array('type' => 'auto','nullable' => False), - 'hook_appname' => array('type' => 'varchar','precision' => '255'), - 'hook_location' => array('type' => 'varchar','precision' => '255'), - 'hook_filename' => array('type' => 'varchar','precision' => '255') + 'hook_appname' => array('type' => 'ascii','precision' => '16'), + 'hook_location' => array('type' => 'ascii','precision' => '32'), + 'hook_filename' => array('type' => 'ascii','precision' => '255') ), 'pk' => array('hook_id'), - 'ix' => array(), 'fk' => array(), + 'ix' => array(), 'uc' => array() ), 'egw_languages' => array( 'fd' => array( - 'lang_id' => array('type' => 'varchar','precision' => '5','nullable' => False), + 'lang_id' => array('type' => 'ascii','precision' => '5','nullable' => False), 'lang_name' => array('type' => 'varchar','precision' => '50','nullable' => False) ), 'pk' => array('lang_id'), @@ -125,19 +127,20 @@ $phpgw_baseline = array( 'egw_lang' => array( 'fd' => array( 'lang' => array('type' => 'varchar','precision' => '5','nullable' => False,'default' => ''), - 'app_name' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'common'), - 'message_id' => array('type' => 'varchar','precision' => '128','nullable' => False,'default' => ''), - 'content' => array('type' => 'text') + 'app_name' => array('type' => 'ascii','precision' => '16','nullable' => False,'default' => 'common'), + 'message_id' => array('type' => 'ascii','precision' => '128','nullable' => False,'default' => ''), + 'content' => array('type' => 'varchar','precision' => '8192'), + 'lang_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('lang','app_name','message_id'), + 'pk' => array('lang_id'), 'fk' => array(), 'ix' => array(), - 'uc' => array() + 'uc' => array(array('lang','app_name','message_id')) ), 'egw_nextid' => array( 'fd' => array( - 'id' => array('type' => 'int','precision' => '4','nullable' => True), - 'appname' => array('type' => 'varchar','precision' => '25','nullable' => False) + 'id' => array('type' => 'int','precision' => '4'), + 'appname' => array('type' => 'ascii','precision' => '16','nullable' => False) ), 'pk' => array('appname'), 'fk' => array(), @@ -150,12 +153,12 @@ $phpgw_baseline = array( 'cat_main' => array('type' => 'int','meta' => 'category','precision' => '4','nullable' => False,'default' => '0'), 'cat_parent' => array('type' => 'int','meta' => 'category','precision' => '4','nullable' => False,'default' => '0'), 'cat_level' => array('type' => 'int','precision' => '2','nullable' => False,'default' => '0'), - 'cat_owner' => array('type' => 'varchar','meta' => 'account-commasep','precision' => '255','nullable' => False,'default' => '0'), - 'cat_access' => array('type' => 'varchar','precision' => '7'), - 'cat_appname' => array('type' => 'varchar','precision' => '50','nullable' => False), + 'cat_owner' => array('type' => 'ascii','meta' => 'account-commasep','precision' => '255','nullable' => False,'default' => '0'), + 'cat_access' => array('type' => 'ascii','precision' => '7'), + 'cat_appname' => array('type' => 'ascii','precision' => '16','nullable' => False), 'cat_name' => array('type' => 'varchar','precision' => '150','nullable' => False), 'cat_description' => array('type' => 'varchar','precision' => '255','nullable' => False), - 'cat_data' => array('type' => 'text'), + 'cat_data' => array('type' => 'varchar','precision' => '8192'), 'last_mod' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False) ), 'pk' => array('cat_id'), @@ -167,9 +170,9 @@ $phpgw_baseline = array( 'fd' => array( 'history_id' => array('type' => 'auto','precision' => '4','nullable' => False), 'history_record_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'history_appname' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'history_appname' => array('type' => 'ascii','precision' => '16','nullable' => False), 'history_owner' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False), - 'history_status' => array('type' => 'varchar','precision' => '64','nullable' => False), + 'history_status' => array('type' => 'ascii','precision' => '32','nullable' => False), 'history_new_value' => array('type' => 'text','nullable' => False), 'history_timestamp' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), 'history_old_value' => array('type' => 'text','nullable' => False), @@ -182,22 +185,23 @@ $phpgw_baseline = array( ), 'egw_async' => array( 'fd' => array( - 'async_id' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'async_id' => array('type' => 'ascii','precision' => '64','nullable' => False), 'async_next' => array('type' => 'int','meta' => 'timestamp','precision' => '4','nullable' => False,'comment' => 'timestamp of next run'), - 'async_times' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'serialized array with values for keys hour,min,day,month,year'), - 'async_method' => array('type' => 'varchar','precision' => '80','nullable' => False,'comment' => 'app.class.method class::method to execute'), - 'async_data' => array('type' => 'text','nullable' => False,'comment' => 'serialized array with data to pass to method'), - 'async_account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'default' => '0','comment' => 'creator of job') + 'async_times' => array('type' => 'ascii','precision' => '255','nullable' => False,'comment' => 'serialized array with values for keys hour,min,day,month,year'), + 'async_method' => array('type' => 'ascii','precision' => '80','nullable' => False,'comment' => 'app.class.method class::method to execute'), + 'async_data' => array('type' => 'ascii','precision' => '8192','nullable' => False,'comment' => 'serialized array with data to pass to method'), + 'async_account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'default' => '0','comment' => 'creator of job'), + 'async_auto_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('async_id'), + 'pk' => array('async_auto_id'), 'fk' => array(), 'ix' => array(), - 'uc' => array() + 'uc' => array('async_id') ), 'egw_api_content_history' => array( 'fd' => array( - 'sync_appname' => array('type' => 'varchar','precision' => '60','nullable' => False), - 'sync_contentid' => array('type' => 'varchar','precision' => '60','nullable' => False), + 'sync_appname' => array('type' => 'ascii','precision' => '32','nullable' => False,'comment' => 'not just app-names!'), + 'sync_contentid' => array('type' => 'ascii','precision' => '48','nullable' => False,'comment' => 'eworkflow uses 36-char uuids'), 'sync_added' => array('type' => 'timestamp'), 'sync_modified' => array('type' => 'timestamp'), 'sync_deleted' => array('type' => 'timestamp'), @@ -212,10 +216,10 @@ $phpgw_baseline = array( 'egw_links' => array( 'fd' => array( 'link_id' => array('type' => 'auto','nullable' => False), - 'link_app1' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'link_id1' => array('type' => 'varchar','precision' => '50','nullable' => False,'meta' => array("link_app1='home-accounts'" => 'account')), - 'link_app2' => array('type' => 'varchar','precision' => '25','nullable' => False), - 'link_id2' => array('type' => 'varchar','precision' => '50','nullable' => False,'meta' => array("link_app2='home-accounts'" => 'account')), + 'link_app1' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'link_id1' => array('type' => 'ascii','meta' => array("link_app1='home-accounts'" => 'account'),'precision' => '64','nullable' => False), + 'link_app2' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'link_id2' => array('type' => 'ascii','meta' => array("link_app2='home-accounts'" => 'account'),'precision' => '64','nullable' => False), 'link_remark' => array('type' => 'varchar','precision' => '100'), 'link_lastmod' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False), 'link_owner' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False), @@ -232,7 +236,7 @@ $phpgw_baseline = array( 'contact_tid' => array('type' => 'char','precision' => '1','default' => 'n'), 'contact_owner' => array('type' => 'int','meta' => 'account','precision' => '8','nullable' => False,'comment' => 'account or group id of the adressbook'), 'contact_private' => array('type' => 'int','precision' => '1','default' => '0','comment' => 'privat or personal'), - 'cat_id' => array('type' => 'varchar','meta' => 'category','precision' => '255','comment' => 'Category(s)'), + 'cat_id' => array('type' => 'ascii','meta' => 'category','precision' => '255','comment' => 'Category(s)'), 'n_family' => array('type' => 'varchar','precision' => '64','comment' => 'Family name'), 'n_given' => array('type' => 'varchar','precision' => '64','comment' => 'Given Name'), 'n_middle' => array('type' => 'varchar','precision' => '64'), @@ -275,12 +279,12 @@ $phpgw_baseline = array( 'contact_email_home' => array('type' => 'varchar','precision' => '128','comment' => 'email address (private)'), 'contact_url' => array('type' => 'varchar','precision' => '128','comment' => 'website (business)'), 'contact_url_home' => array('type' => 'varchar','precision' => '128','comment' => 'website (private)'), - 'contact_freebusy_uri' => array('type' => 'varchar','precision' => '128','comment' => 'freebusy-url for calendar of the contact'), - 'contact_calendar_uri' => array('type' => 'varchar','precision' => '128','comment' => 'url for users calendar - currently not used'), - 'contact_note' => array('type' => 'text','comment' => 'notes field'), + 'contact_freebusy_uri' => array('type' => 'ascii','precision' => '128','comment' => 'freebusy-url for calendar of the contact'), + 'contact_calendar_uri' => array('type' => 'ascii','precision' => '128','comment' => 'url for users calendar - currently not used'), + 'contact_note' => array('type' => 'varchar','precision' => '8192','comment' => 'notes field'), 'contact_tz' => array('type' => 'varchar','precision' => '8','comment' => 'timezone difference'), - 'contact_geo' => array('type' => 'varchar','precision' => '32','comment' => 'currently not used'), - 'contact_pubkey' => array('type' => 'text','comment' => 'public key'), + 'contact_geo' => array('type' => 'ascii','precision' => '32','comment' => 'currently not used'), + 'contact_pubkey' => array('type' => 'ascii','precision' => '8192','comment' => 'public key'), 'contact_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','comment' => 'timestamp of the creation'), 'contact_creator' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account id of the creator'), 'contact_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'timestamp of the last modified'), @@ -288,10 +292,10 @@ $phpgw_baseline = array( 'contact_jpegphoto' => array('type' => 'blob','comment' => 'photo of the contact (attachment)'), 'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','comment' => 'account id'), 'contact_etag' => array('type' => 'int','precision' => '4','default' => '0','comment' => 'etag of the changes'), - 'contact_uid' => array('type' => 'varchar','precision' => '255','comment' => 'unique id of the contact'), - 'adr_one_countrycode' => array('type' => 'varchar','precision' => '2','comment' => 'countrycode (business)'), - 'adr_two_countrycode' => array('type' => 'varchar','precision' => '2','comment' => 'countrycode (private)'), - 'carddav_name' => array('type' => 'varchar','precision' => '200','comment' => 'name part of CardDAV URL, if specified by client') + 'contact_uid' => array('type' => 'ascii','precision' => '128','comment' => 'unique id of the contact'), + 'adr_one_countrycode' => array('type' => 'ascii','precision' => '2','comment' => 'countrycode (business)'), + 'adr_two_countrycode' => array('type' => 'ascii','precision' => '2','comment' => 'countrycode (private)'), + 'carddav_name' => array('type' => 'ascii','precision' => '128','comment' => 'name part of CardDAV URL, if specified by client') ), 'pk' => array('contact_id'), 'fk' => array(), @@ -302,12 +306,13 @@ $phpgw_baseline = array( 'fd' => array( 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), 'contact_owner' => array('type' => 'int','meta' => 'account','precision' => '8'), - 'contact_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '255','nullable' => False), - 'contact_value' => array('type' => 'text','meta' => 'cfvalue') + 'contact_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '64','nullable' => False,'comment' => 'custom-field name'), + 'contact_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => '16384','comment' => 'custom-field value'), + 'contact_extra_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('contact_id','contact_name'), + 'pk' => array('contact_extra_id'), 'fk' => array(), - 'ix' => array('contact_name'), + 'ix' => array('contact_name',array('contact_id','contact_name')), 'uc' => array() ), 'egw_addressbook_lists' => array( @@ -317,8 +322,8 @@ $phpgw_baseline = array( 'list_owner' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False), 'list_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8'), 'list_creator' => array('type' => 'int','meta' => 'user','precision' => '4'), - 'list_uid' => array('type' => 'varchar','precision' => '255'), - 'list_carddav_name' => array('type' => 'varchar','precision' => '64'), + 'list_uid' => array('type' => 'ascii','precision' => '128'), + 'list_carddav_name' => array('type' => 'ascii','precision' => '128'), 'list_etag' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '0'), 'list_modified' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'), 'list_modifier' => array('type' => 'int','meta' => 'user','precision' => '4') @@ -350,7 +355,7 @@ $phpgw_baseline = array( 'fs_gid' => array('type' => 'int','meta' => 'group-abs','precision' => '4','nullable' => False,'default' => '0'), 'fs_created' => array('type' => 'timestamp','precision' => '8','nullable' => False), 'fs_modified' => array('type' => 'timestamp','precision' => '8','nullable' => False), - 'fs_mime' => array('type' => 'varchar','precision' => '96','nullable' => False), + 'fs_mime' => array('type' => 'ascii','precision' => '96','nullable' => False), 'fs_size' => array('type' => 'int','precision' => '8','nullable' => False), 'fs_creator' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False), 'fs_modifier' => array('type' => 'int','meta' => 'user','precision' => '4'), @@ -360,7 +365,7 @@ $phpgw_baseline = array( ), 'pk' => array('fs_id'), 'fk' => array(), - 'ix' => array(array('fs_dir','fs_active','fs_name')), + 'ix' => array(array('fs_dir','fs_active','fs_name(16)')), 'uc' => array() ), 'egw_index_keywords' => array( @@ -400,7 +405,7 @@ $phpgw_baseline = array( ), 'egw_locks' => array( 'fd' => array( - 'lock_token' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'lock_token' => array('type' => 'ascii','precision' => '64','nullable' => False), 'lock_path' => array('type' => 'varchar','precision' => '255','nullable' => False), 'lock_expires' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False), 'lock_owner' => array('type' => 'varchar','precision' => '255'), @@ -408,29 +413,31 @@ $phpgw_baseline = array( 'lock_write' => array('type' => 'bool','nullable' => False,'default' => '0'), 'lock_exclusive' => array('type' => 'bool','nullable' => False,'default' => '0'), 'lock_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0'), - 'lock_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0') + 'lock_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0'), + 'lock_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('lock_token'), + 'pk' => array('lock_id'), 'fk' => array(), 'ix' => array('lock_path','lock_expires'), - 'uc' => array() + 'uc' => array('lock_token') ), 'egw_sqlfs_props' => array( 'fd' => array( 'fs_id' => array('type' => 'int','precision' => '4','nullable' => False), - 'prop_namespace' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'prop_name' => array('type' => 'varchar','precision' => '64','nullable' => False), - 'prop_value' => array('type' => 'text') + 'prop_namespace' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'prop_name' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'prop_value' => array('type' => 'ascii','precision' => '16384'), + 'prop_id' => array('type' => 'auto','nullable' => False) ), - 'pk' => array('fs_id','prop_namespace','prop_name'), + 'pk' => array('prop_id'), 'fk' => array(), - 'ix' => array(), + 'ix' => array(array('fs_id','prop_namespace','prop_name')), 'uc' => array() ), 'egw_customfields' => array( 'fd' => array( 'cf_id' => array('type' => 'auto','nullable' => False), - 'cf_app' => array('type' => 'varchar','precision' => '50','nullable' => False,'comment' => 'app-name cf belongs too'), + 'cf_app' => array('type' => 'ascii','precision' => '16','nullable' => False,'comment' => 'app-name cf belongs too'), 'cf_name' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'internal name'), 'cf_label' => array('type' => 'varchar','precision' => '128','comment' => 'label to display'), 'cf_type' => array('type' => 'varchar','precision' => '64','nullable' => False,'default' => 'text','comment' => 'type of field'), @@ -441,7 +448,7 @@ $phpgw_baseline = array( 'cf_rows' => array('type' => 'int','precision' => '2','comment' => 'rows of field'), 'cf_order' => array('type' => 'int','precision' => '2','comment' => 'order to display fields'), 'cf_needed' => array('type' => 'bool','default' => '0','comment' => 'field is required'), - 'cf_private' => array('type' => 'varchar','meta' => 'account-commasep','precision' => '2048','comment' => 'comma-separated account_id'), + 'cf_private' => array('type' => 'ascii','meta' => 'account-commasep','precision' => '2048','comment' => 'comma-separated account_id'), 'cf_modifier' => array('type' => 'int','meta' => 'account','precision' => '4','comment' => 'last modifier'), 'cf_modified' => array('type' => 'timestamp','default' => 'current_timestamp','comment' => 'last modification time'), 'cf_tab' => array('type' => 'varchar','precision' => '64','comment' => 'tab customfield should be shown') @@ -454,7 +461,7 @@ $phpgw_baseline = array( 'egw_sharing' => array( 'fd' => array( 'share_id' => array('type' => 'auto','nullable' => False,'comment' => 'auto-id'), - 'share_token' => array('type' => 'varchar','precision' => '64','nullable' => False,'comment' => 'secure token'), + 'share_token' => array('type' => 'ascii','precision' => '64','nullable' => False,'comment' => 'secure token'), 'share_path' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'path to share'), 'share_owner' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'owner of share'), 'share_expires' => array('type' => 'date','comment' => 'expire date of share'), diff --git a/phpgwapi/setup/tables_update.inc.php b/phpgwapi/setup/tables_update.inc.php index 94b179344b..5f224f1219 100644 --- a/phpgwapi/setup/tables_update.inc.php +++ b/phpgwapi/setup/tables_update.inc.php @@ -59,4 +59,721 @@ function phpgwapi_upgrade14_1_900() $GLOBALS['egw_setup']->add_acl('phpgwapi', 'anonymous', $anonymous); return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2'; -} \ No newline at end of file +} + +function phpgwapi_upgrade14_2() +{ + $GLOBALS['egw_setup']->oProc->AddColumn('egw_accounts','account_description',array( + 'type' => 'varchar', + 'precision' => '255', + 'comment' => 'group description' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.001'; +} + +function phpgwapi_upgrade14_2_001() +{ + $GLOBALS['run-from-upgrade14_2_001'] = true; // flag no need to run 14.2.025 update + + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_config','config_app',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_config','config_name',array( + 'type' => 'ascii', + 'precision' => '32', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.002'; +} + + +function phpgwapi_upgrade14_2_002() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_name',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_tables',array( + 'type' => 'varchar', + 'precision' => '8192', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.003'; +} + + +function phpgwapi_upgrade14_2_003() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_tables',array( + 'type' => 'ascii', + 'precision' => '8192', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_version',array( + 'type' => 'ascii', + 'precision' => '20', + 'nullable' => False, + 'default' => '0.0' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_icon',array( + 'type' => 'ascii', + 'precision' => '32' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_icon_app',array( + 'type' => 'ascii', + 'precision' => '16' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_applications','app_index',array( + 'type' => 'ascii', + 'precision' => '64' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.004'; +} + + +function phpgwapi_upgrade14_2_004() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_acl','acl_appname',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_acl','acl_location',array( + 'type' => 'ascii', + 'meta' => 'account', + 'precision' => '16', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_acl','acl_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_acl',array( + 'fd' => array( + 'acl_appname' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'acl_location' => array('type' => 'ascii','meta' => 'account','precision' => '16','nullable' => False), + 'acl_account' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False), + 'acl_rights' => array('type' => 'int','precision' => '4'), + 'acl_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('acl_id'), + 'fk' => array(), + 'ix' => array('acl_account',array('acl_location','acl_account'),array('acl_appname','acl_account')), + 'uc' => array(array('acl_appname','acl_location','acl_account')) + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.005'; +} + + +function phpgwapi_upgrade14_2_005() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_accounts','account_lastloginfrom',array( + 'type' => 'ascii', + 'precision' => '48', + 'comment' => 'ip' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.006'; +} + + +function phpgwapi_upgrade14_2_006() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_preferences','preference_app',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_preferences','preference_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_preferences',array( + 'fd' => array( + 'preference_owner' => array('type' => 'int','meta' => 'account-prefs','precision' => '4','nullable' => False), + 'preference_app' => array('type' => 'ascii','precision' => '16','nullable' => False), + 'preference_value' => array('type' => 'text','nullable' => False), + 'preference_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('preference_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array(array('preference_owner','preference_app')) + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.007'; +} + + +function phpgwapi_upgrade14_2_007() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_access_log','ip',array( + 'type' => 'ascii', + 'precision' => '48', + 'nullable' => False, + 'comment' => 'ip of user' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_access_log','session_action',array( + 'type' => 'ascii', + 'precision' => '64', + 'comment' => 'menuaction or path of last user action' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_access_log','session_php',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False, + 'comment' => 'php session-id or error-message' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_access_log','user_agent',array( + 'type' => 'ascii', + 'precision' => '255', + 'comment' => 'User-agent of browser/device' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.008'; +} + + +function phpgwapi_upgrade14_2_008() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_hooks','hook_appname',array( + 'type' => 'ascii', + 'precision' => '16' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_hooks','hook_location',array( + 'type' => 'ascii', + 'precision' => '32' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_hooks','hook_filename',array( + 'type' => 'ascii', + 'precision' => '255' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.009'; +} + + +function phpgwapi_upgrade14_2_009() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_languages','lang_id',array( + 'type' => 'ascii', + 'precision' => '5', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.010'; +} + + +function phpgwapi_upgrade14_2_010() +{ + // delete since 11.x no longer used messages + $GLOBALS['egw_setup']->oProc->query("DELETE FROM egw_lang WHERE app_name NOT IN ('loginscreen','mainscreen','custom')", __LINE__, __FILE__); + + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_lang','lang',array( + 'type' => 'ascii', + 'precision' => '5', + 'nullable' => False, + 'default' => '' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_lang','app_name',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False, + 'default' => 'common' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_lang','message_id',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False, + 'default' => '' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_lang','content',array( + 'type' => 'varchar', + 'precision' => '8192' + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_lang',array( + 'fd' => array( + 'lang' => array('type' => 'ascii','precision' => '5','nullable' => False,'default' => ''), + 'app_name' => array('type' => 'ascii','precision' => '16','nullable' => False,'default' => 'common'), + 'message_id' => array('type' => 'ascii','precision' => '128','nullable' => False,'default' => ''), + 'content' => array('type' => 'varchar','precision' => '8192'), + 'lang_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('lang_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array(array('lang','app_name','message_id')) + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.011'; +} + + +function phpgwapi_upgrade14_2_011() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_nextid','appname',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.012'; +} + + +function phpgwapi_upgrade14_2_012() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_categories','cat_owner',array( + 'type' => 'ascii', + 'meta' => 'account-commasep', + 'precision' => '255', + 'nullable' => False, + 'default' => '0' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_categories','cat_access',array( + 'type' => 'ascii', + 'precision' => '7' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_categories','cat_appname',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_categories','cat_data',array( + 'type' => 'varchar', + 'precision' => '8192' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.013'; +} + + +function phpgwapi_upgrade14_2_013() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_history_log','history_appname',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_history_log','history_status',array( + 'type' => 'ascii', + 'precision' => '32', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.014'; +} + + +function phpgwapi_upgrade14_2_014() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_async','async_id',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_async','async_times',array( + 'type' => 'ascii', + 'precision' => '255', + 'nullable' => False, + 'comment' => 'serialized array with values for keys hour,min,day,month,year' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_async','async_method',array( + 'type' => 'ascii', + 'precision' => '80', + 'nullable' => False, + 'comment' => 'app.class.method class::method to execute' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_async','async_data',array( + 'type' => 'ascii', + 'precision' => '8192', + 'nullable' => False, + 'comment' => 'serialized array with data to pass to method' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_async','async_auto_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_async',array( + 'fd' => array( + 'async_id' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'async_next' => array('type' => 'int','meta' => 'timestamp','precision' => '4','nullable' => False,'comment' => 'timestamp of next run'), + 'async_times' => array('type' => 'ascii','precision' => '255','nullable' => False,'comment' => 'serialized array with values for keys hour,min,day,month,year'), + 'async_method' => array('type' => 'ascii','precision' => '80','nullable' => False,'comment' => 'app.class.method class::method to execute'), + 'async_data' => array('type' => 'ascii','precision' => '8192','nullable' => False,'comment' => 'serialized array with data to pass to method'), + 'async_account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'default' => '0','comment' => 'creator of job'), + 'async_auto_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('async_auto_id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array('async_id') + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.015'; +} + + +function phpgwapi_upgrade14_2_015() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_api_content_history','sync_appname',array( + 'type' => 'ascii', + 'precision' => '32', + 'nullable' => False, + 'comment' => 'not just app-names!' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_api_content_history','sync_contentid',array( + 'type' => 'ascii', + 'precision' => '48', + 'nullable' => False, + 'comment' => 'eworkflow uses 36-char uuids' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.016'; +} + + +function phpgwapi_upgrade14_2_016() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_links','link_app1',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_links','link_id1',array( + 'type' => 'ascii', + 'meta' => array( + "link_app1='home-accounts'" => 'account' + ), + 'precision' => '64', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_links','link_app2',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_links','link_id2',array( + 'type' => 'ascii', + 'meta' => array( + "link_app2='home-accounts'" => 'account' + ), + 'precision' => '64', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.017'; +} + + +function phpgwapi_upgrade14_2_017() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','cat_id',array( + 'type' => 'ascii', + 'meta' => 'category', + 'precision' => '255', + 'comment' => 'Category(s)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_freebusy_uri',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'freebusy-url for calendar of the contact' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_calendar_uri',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'url for users calendar - currently not used' + )); + // only shorten note to varchar(8194), if it does NOT contain longer input and it can be stored as varchar + $max_note_length = $GLOBALS['egw']->db->query('SELECT MAX(CHAR_LENGTH(contact_note)) FROM egw_addressbook')->fetchColumn(); + // returns NULL, if there are no rows! + if ((int)$max_note_length <= 8192 && $GLOBALS['egw_setup']->oProc->max_varchar_length >= 8192) + { + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_note',array( + 'type' => 'varchar', + 'precision' => '8192', + 'comment' => 'notes field' + )); + } + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_geo',array( + 'type' => 'ascii', + 'precision' => '32', + 'comment' => 'currently not used' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_pubkey',array( + 'type' => 'ascii', + 'precision' => '8192', + 'comment' => 'public key' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_uid',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'unique id of the contact' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','adr_one_countrycode',array( + 'type' => 'ascii', + 'precision' => '2', + 'comment' => 'countrycode (business)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','adr_two_countrycode',array( + 'type' => 'ascii', + 'precision' => '2', + 'comment' => 'countrycode (private)' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','carddav_name',array( + 'type' => 'ascii', + 'precision' => '128', + 'comment' => 'name part of CardDAV URL, if specified by client' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.018'; +} + + +function phpgwapi_upgrade14_2_018() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook_extra','contact_name',array( + 'type' => 'varchar', + 'meta' => 'cfname', + 'precision' => '64', + 'nullable' => False, + 'comment' => 'custom-field name' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook_extra','contact_value',array( + 'type' => 'varchar', + 'meta' => 'cfvalue', + 'precision' => '16384', + 'comment' => 'custom-field value' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_addressbook_extra','contact_extra_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + // only shorten cf value to varchar(8194), if it does NOT contain longer input and it can be stored as varchar + $max_value_length = $GLOBALS['egw']->db->query('SELECT MAX(CHAR_LENGTH(contact_value)) FROM egw_addressbook_extra')->fetchColumn(); + // returns NULL, if there are no rows! + $new_value_length = 16384; + if ((int)$max_value_length > $new_value_length && $GLOBALS['egw_setup']->oProc->max_varchar_length >= $new_value_length) + { + $new_value_length = $max_value_length; + } + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_addressbook_extra',array( + 'fd' => array( + 'contact_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'contact_owner' => array('type' => 'int','meta' => 'account','precision' => '8'), + 'contact_name' => array('type' => 'varchar','meta' => 'cfname','precision' => '64','nullable' => False,'comment' => 'custom-field name'), + 'contact_value' => array('type' => 'varchar','meta' => 'cfvalue','precision' => $new_value_length,'comment' => 'custom-field value'), + 'contact_extra_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('contact_extra_id'), + 'fk' => array(), + 'ix' => array('contact_name',array('contact_id','contact_name')), + 'uc' => array() + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.019'; +} + + +function phpgwapi_upgrade14_2_019() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook_lists','list_uid',array( + 'type' => 'ascii', + 'precision' => '128' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook_lists','list_carddav_name',array( + 'type' => 'ascii', + 'precision' => '128' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.020'; +} + + +function phpgwapi_upgrade14_2_020() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_sqlfs','fs_mime',array( + 'type' => 'ascii', + 'precision' => '96', + 'nullable' => False + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.021'; +} + + +function phpgwapi_upgrade14_2_021() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_locks','lock_token',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_locks','lock_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_locks',array( + 'fd' => array( + 'lock_token' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'lock_path' => array('type' => 'varchar','precision' => '255','nullable' => False), + 'lock_expires' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False), + 'lock_owner' => array('type' => 'varchar','precision' => '255'), + 'lock_recursive' => array('type' => 'bool','nullable' => False,'default' => '0'), + 'lock_write' => array('type' => 'bool','nullable' => False,'default' => '0'), + 'lock_exclusive' => array('type' => 'bool','nullable' => False,'default' => '0'), + 'lock_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0'), + 'lock_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','default' => '0'), + 'lock_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('lock_id'), + 'fk' => array(), + 'ix' => array('lock_path','lock_expires'), + 'uc' => array('lock_token') + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.022'; +} + + +function phpgwapi_upgrade14_2_022() +{ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_sqlfs_props','prop_namespace',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_sqlfs_props','prop_name',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_sqlfs_props','prop_value',array( + 'type' => 'ascii', + 'precision' => '16384' + ));*/ + /* done by RefreshTable() anyway + $GLOBALS['egw_setup']->oProc->AddColumn('egw_sqlfs_props','prop_id',array( + 'type' => 'auto', + 'nullable' => False + ));*/ + $GLOBALS['egw_setup']->oProc->RefreshTable('egw_sqlfs_props',array( + 'fd' => array( + 'fs_id' => array('type' => 'int','precision' => '4','nullable' => False), + 'prop_namespace' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'prop_name' => array('type' => 'ascii','precision' => '64','nullable' => False), + 'prop_value' => array('type' => 'ascii','precision' => '16384'), + 'prop_id' => array('type' => 'auto','nullable' => False) + ), + 'pk' => array('prop_id'), + 'fk' => array(), + 'ix' => array(array('fs_id','prop_namespace','prop_name')), + 'uc' => array() + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.023'; +} + + +function phpgwapi_upgrade14_2_023() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_customfields','cf_app',array( + 'type' => 'ascii', + 'precision' => '16', + 'nullable' => False, + 'comment' => 'app-name cf belongs too' + )); + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_customfields','cf_private',array( + 'type' => 'ascii', + 'meta' => 'account-commasep', + 'precision' => '2048', + 'comment' => 'comma-separated account_id' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.024'; +} + + +function phpgwapi_upgrade14_2_024() +{ + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_sharing','share_token',array( + 'type' => 'ascii', + 'precision' => '64', + 'nullable' => False, + 'comment' => 'secure token' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = + empty($GLOBALS['run-from-upgrade14_2_001']) ? '14.2.026' : '14.2.025'; +} + + +/** + * Fix wrongly converted columns back to utf-8 and change message_id to ascii + * + * @return string + */ +function phpgwapi_upgrade14_2_025() +{ + // cat_data contains arbitrary user input eg. in tracker canned responses + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_categories','cat_data',array( + 'type' => 'varchar', + 'precision' => '8192' + )); + // note is utf-8 + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_addressbook','contact_note',array( + 'type' => 'varchar', + 'precision' => '8192', + 'comment' => 'notes field' + )); + // message_id is in english and in an index --> ascii + $GLOBALS['egw_setup']->oProc->AlterColumn('egw_lang','message_id',array( + 'type' => 'ascii', + 'precision' => '128', + 'nullable' => False, + 'default' => '' + )); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.2.026'; +} + +/** + * Shorten index on egw_sqlfs.fs_name to improve performance + * + * @return string + */ +function phpgwapi_upgrade14_2_026() +{ + $GLOBALS['egw_setup']->oProc->DropIndex('egw_sqlfs', array('fs_dir','fs_active','fs_name')); + $GLOBALS['egw_setup']->oProc->CreateIndex('egw_sqlfs', array('fs_dir','fs_active','fs_name(16)')); + + return $GLOBALS['setup_info']['phpgwapi']['currentver'] = '14.3'; +}