egroupware/admin/setup/tables_update.inc.php
Ralf Becker 858f2c0119 getting admin_cmd_config history finished:
- deprecate app="phpgwapi" and appname, using now "store_as_api" and changed app
- update script to fix database
- use "config" hook to load application specific options
2019-03-20 11:54:49 +01:00

272 lines
8.0 KiB
PHP

<?php
/**
* EGroupware - Setup
*
* Created by eTemplates DB-Tools written by ralfbecker@outdoor-training.de
*
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package admin
* @subpackage setup
*/
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';
}
/**
* Update admin_cmd_config to use "store_as_api" instead of "app"="phpgwapi" and "appname"
*
* @return string
*/
function admin_upgrade18_1()
{
// fill cmd_account/app from
foreach($GLOBALS['egw_setup']->db->select('egw_admin_queue', 'cmd_id,cmd_app,cmd_data', array(
'cmd_app' => 'phpgwapi',
'cmd_type' => 'admin_cmd_config',
), __LINE__, __FILE__, false, '', 'admin') as $row)
{
$data = json_php_unserialize($row['cmd_data']);
$data['store_as_api'] = $row['cmd_app'] === 'phpgwapi';
$row['cmd_app'] = !empty($data['appname']) ? $data['appname'] : 'setup';
unset($data['appname']);
$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.001';
}