forked from extern/egroupware
301 lines
8.5 KiB
PHP
301 lines
8.5 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';
|
|
}
|
|
|
|
/**
|
|
* Bump version to 19.1
|
|
*
|
|
* @return string
|
|
*/
|
|
function admin_upgrade18_1_001()
|
|
{
|
|
return $GLOBALS['setup_info']['admin']['currentver'] = '19.1';
|
|
}
|
|
|
|
/**
|
|
* Bump version to 20.1
|
|
*
|
|
* @return string
|
|
*/
|
|
function admin_upgrade19_1()
|
|
{
|
|
return $GLOBALS['setup_info']['admin']['currentver'] = '20.1';
|
|
}
|
|
|
|
/**
|
|
* Bump version to 21.1
|
|
*
|
|
* @return string
|
|
*/
|
|
function admin_upgrade20_1()
|
|
{
|
|
return $GLOBALS['setup_info']['admin']['currentver'] = '21.1';
|
|
}
|