mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-22 16:03:47 +01:00
123 lines
3.9 KiB
PHP
123 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* eGgroupWare setup - install the tables
|
|
*
|
|
* @link http://www.egroupware.org
|
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
|
* @package setup
|
|
* @copyright (c) 2007-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @version $Id$
|
|
*/
|
|
|
|
use EGroupware\Api;
|
|
|
|
/**
|
|
* setup command: install the tables
|
|
*/
|
|
class setup_cmd_install extends setup_cmd
|
|
{
|
|
/**
|
|
* Allow to run this command via setup-cli
|
|
*/
|
|
const SETUP_CLI_CALLABLE = true;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param string $domain string with domain-name or array with all arguments
|
|
* @param string $config_user =null user to config the domain (or header_admin_user)
|
|
* @param string $config_passwd =null pw of above user
|
|
* @param string $backup =null filename of backup to use instead of new install, default new install
|
|
* @param string $charset ='utf-8' charset for the install, default utf-8 now
|
|
* @param boolean $verbose =false if true, echos out some status information during the run
|
|
* @param array $config =array() configuration to preset the defaults during the install, eg. set the account_repository
|
|
* @param string $lang ='en'
|
|
*/
|
|
function __construct($domain,$config_user=null,$config_passwd=null,$backup=null,$charset='utf-8',$verbose=false,array $config=array(),$lang='en')
|
|
{
|
|
if (!is_array($domain))
|
|
{
|
|
$domain = array(
|
|
'domain' => $domain,
|
|
'config_user' => $config_user,
|
|
'config_passwd' => $config_passwd,
|
|
'backup' => $backup,
|
|
'charset' => $charset,
|
|
'verbose' => $verbose,
|
|
'config' => $config,
|
|
'lang' => $lang,
|
|
);
|
|
}
|
|
elseif(!$domain['charset'])
|
|
{
|
|
$domain['charset'] = 'utf-8';
|
|
}
|
|
//echo __CLASS__.'::__construct()'; _debug_array($domain);
|
|
admin_cmd::__construct($domain);
|
|
}
|
|
|
|
/**
|
|
* run the command: install the tables
|
|
*
|
|
* @param boolean $check_only =false only run the checks (and throw the exceptions), but not the command itself
|
|
* @return string serialized $GLOBALS defined in the header.inc.php
|
|
* @throws Exception(lang('Wrong credentials to access the header.inc.php file!'),2);
|
|
* @throws Exception('header.inc.php not found!');
|
|
*/
|
|
protected function exec($check_only=false)
|
|
{
|
|
unset($check_only); // not used;
|
|
global $setup_info;
|
|
|
|
// instanciate setup object and check authorisation
|
|
$this->check_setup_auth($this->config_user,$this->config_passwd,$this->domain);
|
|
|
|
$this->check_installed($this->domain,array(13,14,20),$this->verbose);
|
|
|
|
// use uploaded backup, instead installing from scratch
|
|
if ($this->backup)
|
|
{
|
|
$db_backup = new db_backup();
|
|
|
|
if (!is_resource($f = $db_backup->fopen_backup($this->backup,true)))
|
|
{
|
|
throw new Api\Exception\WrongUserinput(lang('Restore failed').' ('.$f.')',31);
|
|
}
|
|
if ($this->verbose)
|
|
{
|
|
echo lang('Restore started, this might take a few minutes ...')."\n";
|
|
}
|
|
else
|
|
{
|
|
ob_start(); // restore echos the table structure
|
|
}
|
|
$db_backup->restore($f,$this->charset,$this->backup);
|
|
fclose($f);
|
|
|
|
if (!$this->verbose)
|
|
{
|
|
ob_end_clean();
|
|
}
|
|
return lang('Restore finished');
|
|
}
|
|
// regular (new) install
|
|
if ($GLOBALS['egw_info']['setup']['stage']['db'] != 3)
|
|
{
|
|
throw new Api\Exception\WrongUserinput(lang('EGroupware is already installed!'),30);
|
|
}
|
|
$setup_info = self::$egw_setup->detection->upgrade_exclude($setup_info);
|
|
|
|
// Set the DB's client charset if a system-charset is set
|
|
self::$egw_setup->system_charset = 'utf-8';
|
|
self::$egw_setup->db->Link_ID->SetCharSet(self::$egw_setup->db->Type === 'mysql' ? 'utf8' : 'utf-8');
|
|
$_POST['ConfigLang'] = $this->lang;
|
|
|
|
if ($this->verbose) echo lang('Installation started, this might take a few minutes ...')."\n";
|
|
if (true) $setup_info = self::$egw_setup->process->pass($setup_info,'new',false,True,$this->config);
|
|
|
|
$this->restore_db();
|
|
|
|
return lang('Installation finished');
|
|
}
|
|
} |