* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package admin * @subpackage setup */ use EGroupware\Api; function admin_upgrade1_2() { return $GLOBALS['setup_info']['admin']['currentver'] = '1.4'; } function admin_upgrade1_4() { $GLOBALS['egw_setup']->oProc->CreateTable('egw_admin_queue',array( 'fd' => array( 'cmd_id' => array('type' => 'auto'), 'cmd_uid' => array('type' => 'varchar','precision' => '255','nullable' => False), 'cmd_creator' => array('type' => 'int','precision' => '4','nullable' => False), 'cmd_creator_email' => array('type' => 'varchar','precision' => '128','nullable' => False), 'cmd_created' => array('type' => 'int','precision' => '8','nullable' => False), 'cmd_type' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'admin_cmd'), 'cmd_status' => array('type' => 'int','precision' => '1'), 'cmd_scheduled' => array('type' => 'int','precision' => '8'), 'cmd_modified' => array('type' => 'int','precision' => '8'), 'cmd_modifier' => array('type' => 'int','precision' => '4'), 'cmd_modifier_email' => array('type' => 'varchar','precision' => '128'), 'cmd_error' => array('type' => 'varchar','precision' => '255'), 'cmd_errno' => array('type' => 'int','precision' => '4'), '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') ), 'pk' => array('cmd_id'), 'fk' => array(), 'ix' => array('cmd_status','cmd_scheduled'), 'uc' => array('cmd_uid') )); return $GLOBALS['setup_info']['admin']['currentver'] = '1.5.001'; } function admin_upgrade1_5_001() { $GLOBALS['egw_setup']->oProc->CreateTable('egw_admin_remote',array( 'fd' => array( 'remote_id' => array('type' => 'auto'), '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) ), 'pk' => array('remote_id'), 'fk' => array(), 'ix' => array(), 'uc' => array('remote_name') )); return $GLOBALS['setup_info']['admin']['currentver'] = '1.5.002'; } function admin_upgrade1_5_002() { $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','remote_id',array( 'type' => 'int', 'precision' => '4' )); return $GLOBALS['setup_info']['admin']['currentver'] = '1.5.003'; } function admin_upgrade1_5_003() { return $GLOBALS['setup_info']['admin']['currentver'] = '1.6'; } function admin_upgrade1_6() { return $GLOBALS['setup_info']['admin']['currentver'] = '1.8'; } /** * Change index page via setup.inc.php * * @return string */ function admin_upgrade1_8() { return $GLOBALS['setup_info']['admin']['currentver'] = '1.9.001'; } 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'; } /** * Remove cleartext passwords from egw_admin_queue * * @return string */ function admin_upgrade14_3() { // asuming everythings not MySQL uses PostgreSQL regular expression syntax $regexp = substr($GLOBALS['egw_setup']->db->Type, 0, 5) == 'mysql' ? 'REGEXP' : '~*'; foreach($GLOBALS['egw_setup']->db->select('egw_admin_queue', 'cmd_id,cmd_data', 'cmd_status NOT IN ('.implode(',', admin_cmd::$require_pw_stati).") AND cmd_data $regexp '(pw|passwd\\_?\\d*|password|db\\_pass)\\?\"'", __LINE__, __FILE__, false, '', 'admin') as $row) { if (($masked = admin_cmd::mask_passwords($row['cmd_data'])) != $row['cmd']) { $GLOBALS['egw_setup']->db->update('egw_admin_queue', array('cmd_data' => $masked), array('cmd_id' => $row['cmd_id']), __LINE__, __FILE__, 'admin'); } } return $GLOBALS['setup_info']['admin']['currentver'] = '14.3.001'; } function admin_upgrade14_3_001() { return $GLOBALS['setup_info']['admin']['currentver'] = '16.1'; } function admin_upgrade16_1() { return $GLOBALS['setup_info']['admin']['currentver'] = '17.1'; } function admin_upgrade17_1() { $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','cmd_app',array( 'type' => 'ascii', 'precision' => '16', 'comment' => 'affected app' )); $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','cmd_account',array( 'type' => 'int', 'meta' => 'account', 'precision' => '4', 'comment' => 'affected account' )); $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','cmd_rrule',array( 'type' => 'varchar', 'precision' => '128', 'comment' => 'rrule for periodic execution' )); $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','cmd_parent',array( 'type' => 'int', 'precision' => '4', 'comment' => 'cmd_id of periodic command' )); $GLOBALS['egw_setup']->oProc->AddColumn('egw_admin_queue','cmd_run',array( 'type' => 'int', 'meta' => 'timestamp', 'precision' => '8', 'comment' => 'periodic execution time' )); // fill cmd_account/app from foreach($GLOBALS['egw_setup']->db->select('egw_admin_queue', 'cmd_id,cmd_data', "cmd_data LIKE '%\"account\":%' OR cmd_data LIKE '%\"app\":%'", __LINE__, __FILE__, false, '', 'admin') as $row) { $data = json_php_unserialize($row['cmd_data']); if (!empty($data['account'])) { $row['cmd_account'] = $data['account']; unset($data['account']); } if (!empty($data['app'])) { $row['cmd_app'] = $data['app']; unset($data['app']); } if (isset($row['cmd_account']) || isset($row['cmd_app'])) { $cmd_id = $row['cmd_id']; unset($row['cmd_id']); $row['cmd_data'] = json_encode($data); $GLOBALS['egw_setup']->db->update('egw_admin_queue', $row, array('cmd_id' => $cmd_id), __LINE__, __FILE__, 'admin'); } } return $GLOBALS['setup_info']['admin']['currentver'] = '18.1'; }