From ca2ffb6aeaf93a1cb28ff85a5644b6bc40be10c4 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Sun, 1 May 2016 15:56:49 +0000 Subject: [PATCH] using new api for setup --- setup/account_migration.php | 12 +- setup/admin_account.php | 7 +- setup/applications.php | 5 +- setup/config.php | 9 +- setup/db_backup.php | 25 +- setup/inc/class.setup.inc.php | 18 +- setup/inc/class.setup_cmd.inc.php | 45 +- setup/inc/class.setup_cmd_admin.inc.php | 33 +- setup/inc/class.setup_cmd_database.inc.php | 66 +-- setup/inc/class.setup_cmd_header.inc.php | 38 +- setup/inc/class.setup_cmd_hooks.inc.php | 4 +- setup/inc/class.setup_cmd_install.inc.php | 27 +- setup/inc/class.setup_cmd_ldap.inc.php | 14 +- setup/inc/class.setup_cmd_showheader.inc.php | 38 +- setup/inc/class.setup_cmd_update.inc.php | 14 +- setup/inc/class.setup_detection.inc.php | 2 +- setup/inc/class.setup_header.inc.php | 21 +- setup/inc/class.setup_html.inc.php | 9 +- setup/inc/class.setup_process.inc.php | 4 +- setup/inc/class.setup_translation.inc.php | 31 +- setup/inc/functions.inc.php | 2 +- setup/inc/hook_config.inc.php | 6 +- setup/inc/hook_config_validate.inc.php | 15 +- setup/index.php | 9 +- setup/manageheader.php | 10 +- setup/setup-cli.php | 10 +- setup/sqltoarray.php | 434 +++++++++---------- 27 files changed, 478 insertions(+), 430 deletions(-) diff --git a/setup/account_migration.php b/setup/account_migration.php index 1bbb6bd992..355558a617 100644 --- a/setup/account_migration.php +++ b/setup/account_migration.php @@ -1,6 +1,6 @@ LDAP + * EGroupware Setup - Account migration between SQL <--> LDAP * * The migration is done to the account-repository configured for eGroupWare! * @@ -31,7 +31,7 @@ $setup_tpl->set_file(array( 'T_footer' => 'footer.tpl', 'T_alert_msg' => 'msg_alert_msg.tpl' )); -$setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); +$setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); // check CSRF token for POST requests with any content (setup uses empty POST to call it's modules!) if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST) @@ -108,7 +108,7 @@ if (!$_POST['migrate'] && !$_POST['passwords2sql']) else { $user_list .= '\n"; } } @@ -129,7 +129,7 @@ if (!$_POST['migrate'] && !$_POST['passwords2sql']) $setup_tpl->set_var('cancel',lang('Cancel')); if ($from == 'sql' && $GLOBALS['egw_info']['server']['auth_type'] == 'ldap') { - $setup_tpl->set_var('extra_button', html::submit_button('passwords2sql', lang('Passwords --> SQL'))); + $setup_tpl->set_var('extra_button', Api\Html::submit_button('passwords2sql', lang('Passwords --> SQL'))); } $setup_tpl->pfp('out','header'); @@ -163,10 +163,10 @@ else // do the migration // store new repostory (and auth_type), as we are migrated now if ($_POST['migrate']) { - config::save_value('account_repository', $GLOBALS['egw_info']['server']['account_repository']=$to, 'phpgwapi'); + Api\Config::save_value('account_repository', $GLOBALS['egw_info']['server']['account_repository']=$to, 'phpgwapi'); if (empty($GLOBALS['egw_info']['server']['auth_type']) || $GLOBALS['egw_info']['server']['auth_type'] == $from) { - config::save_value('auth_type', $GLOBALS['egw_info']['server']['auth_type']=$to, 'phpgwapi'); + Api\Config::save_value('auth_type', $GLOBALS['egw_info']['server']['auth_type']=$to, 'phpgwapi'); } } echo '

'.lang('Click here to return to setup.')."

\n"; diff --git a/setup/admin_account.php b/setup/admin_account.php index 4179a53bcb..4093111b5d 100644 --- a/setup/admin_account.php +++ b/setup/admin_account.php @@ -1,6 +1,6 @@ html->setup_tpl_dir('setup'); - $setup_tpl = new Template($tpl_root); + $setup_tpl = new Framework\Template($tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', @@ -91,7 +92,7 @@ if(!$_POST['submit'] || $error) $setup_tpl->set_var('create_demo_accounts',lang('Create demo accounts')); $setup_tpl->set_var('demo_desc',lang('The username/passwords are: demo/guest, demo2/guest and demo3/guest.')); - $setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); + $setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); $setup_tpl->set_var('lang_submit',lang('Save')); $setup_tpl->set_var('lang_cancel',lang('Cancel')); diff --git a/setup/applications.php b/setup/applications.php index 7b2f2e8080..20d54c7336 100644 --- a/setup/applications.php +++ b/setup/applications.php @@ -1,6 +1,6 @@ auth('Config')) // Does not return unless user is authorized $tpl_root = $GLOBALS['egw_setup']->html->setup_tpl_dir('setup'); -$setup_tpl = new Template($tpl_root); +$setup_tpl = new Framework\Template($tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', diff --git a/setup/config.php b/setup/config.php index d06fe02bce..2789b582c2 100644 --- a/setup/config.php +++ b/setup/config.php @@ -1,6 +1,6 @@ auth('Config') || @$_POST['cancel']) } $tpl_root = $GLOBALS['egw_setup']->html->setup_tpl_dir('setup'); -$setup_tpl = new Template($tpl_root); +$setup_tpl = new Framework\Template($tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', @@ -34,7 +35,7 @@ $setup_tpl->set_file(array( 'T_config_pre_script' => 'config_pre_script.tpl', 'T_config_post_script' => 'config_post_script.tpl' )); -$setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); +$setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); // check CSRF token for POST requests with any content (setup uses empty POST to call it's modules!) if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST) @@ -120,7 +121,7 @@ class phpgw $GLOBALS['egw'] = new phpgw; $GLOBALS['egw']->db =& $GLOBALS['egw_setup']->db; -$t = new Template(common::get_tpl_dir('setup')); +$t = new Framework\Template(Framework\Template::get_dir('setup')); $t->set_unknowns('keep'); $t->set_file(array('config' => 'config.tpl')); diff --git a/setup/db_backup.php b/setup/db_backup.php index 9628b8d971..80a47fc317 100644 --- a/setup/db_backup.php +++ b/setup/db_backup.php @@ -1,6 +1,6 @@ setup { @@ -32,7 +35,7 @@ if (!is_object(@$GLOBALS['egw'])) // called from outside eGW ==> setup $is_setup = true; } $db_backup = new Api\Db\Backup(); -$asyncservice = new asyncservice(); +$asyncservice = new Api\AsyncService(); // download a backup, has to be before any output !!! if ($_POST['download']) @@ -41,17 +44,17 @@ if ($_POST['download']) $file = $db_backup->backup_dir.'/'.basename($file); // basename to now allow to change the dir while (@ob_end_clean()) {} // end all active output buffering ini_set('zlib.output_compression',0); // switch off zlib.output_compression, as this would limit downloads in size to memory_limit - html::content_header(basename($file)); + Api\Header\Content::type(basename($file)); readfile($file); exit; } -$setup_tpl = new Template($tpl_root); +$setup_tpl = new Framework\Template($tpl_root); $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', 'T_db_backup' => 'db_backup.tpl', )); -$setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); +$setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); // check CSRF token for POST requests with any content (setup uses empty POST to call it's modules!) if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST) @@ -76,7 +79,7 @@ else $setup_tpl->set_block('T_db_backup','setup_header'); $setup_tpl->set_var('setup_header',''); $GLOBALS['egw_info']['flags']['app_header'] = $stage_title; - common::egw_header(); + $GLOBALS['egw']->framework->header(); parse_navbar(); $run_in_egw = true; } @@ -107,13 +110,13 @@ if ($_POST['save_backup_settings']) } if ($_POST['mount']) { - Api\Vfs::$is_root = true; + Vfs::$is_root = true; echo '
'. - (Api\Vfs::mount('filesystem://default'.$db_backup->backup_dir.'?group=Admins&mode=070','/backup',false) ? + (Vfs::mount('filesystem://default'.$db_backup->backup_dir.'?group=Admins&mode=070','/backup',false) ? lang('Backup directory %1 mounted as %2',$db_backup->backup_dir,'/backup') : lang('Failed to mount Backup directory!')). "
\n"; - Api\Vfs::$is_root = false; + Vfs::$is_root = false; } // create a backup now if($_POST['backup']) @@ -204,7 +207,7 @@ if ($_POST['restore']) $GLOBALS['egw_info']['server']['header_admin_user']='admin', $GLOBALS['egw_info']['server']['header_admin_password']=uniqid('pw',true),false,true); echo $cmd->run()."\n"; - echo '

'.lang('You should %1log out%2 and in again, to update your current session!','','')."

\n"; + echo '

'.lang('You should %1log out%2 and in again, to update your current session!','','')."

\n"; } } else @@ -301,7 +304,7 @@ $setup_tpl->pparse('out','T_db_backup'); if ($run_in_egw) { - common::egw_footer(); + $GLOBALS['egw']->framework->footer(); } else { diff --git a/setup/inc/class.setup.inc.php b/setup/inc/class.setup.inc.php index 1c94551d43..290452155d 100644 --- a/setup/inc/class.setup.inc.php +++ b/setup/inc/class.setup.inc.php @@ -14,6 +14,9 @@ */ use EGroupware\Api; +use EGroupware\Api\Link; +use EGroupware\Api\Egw; +use EGroupware\Api\Vfs; class setup { @@ -77,8 +80,7 @@ class setup if (!is_object($GLOBALS['egw'])) { - require_once(EGW_API_INC.'/class.egw.inc.php'); - $GLOBALS['phpgw'] = $GLOBALS['egw'] = new egw_minimal(); + $GLOBALS['phpgw'] = $GLOBALS['egw'] = new Egw\Base(); } $this->detection = new setup_detection(); $this->process = new setup_process(); @@ -631,7 +633,7 @@ class setup $this->db->delete($this->applications_table,array('app_name'=>$appname),__LINE__,__FILE__); // Remove links to the app - Api\Link::unlink(0, $appname); + Link::unlink(0, $appname); $this->clear_session_cache(); } @@ -903,7 +905,7 @@ class setup /** * Own instance of the accounts class * - * @var accounts + * @var Api\Accounts */ var $accounts; @@ -1009,19 +1011,19 @@ class setup return false; } } - // call Api\Vfs\Hooks::add{account|group} hook to create the vfs-home-dirs + // call Vfs\Hooks::add{account|group} hook to create the vfs-home-dirs // calling general add{account|group} hook fails, as we are only in setup // --> setup_cmd_admin execs "admin/admin-cli.php --edit-user" to run them if ($primary_group) { - Api\Vfs\Hooks::addAccount(array( + Vfs\Hooks::addAccount(array( 'account_id' => $accountid, 'account_lid' => $username, )); } else { - Api\Vfs\Hooks::addGroup(array( + Vfs\Hooks::addGroup(array( 'account_id' => $accountid, 'account_lid' => $username, )); @@ -1071,7 +1073,7 @@ class setup $this->accounts->search(array( 'type' => 'accounts', 'start' => 0, - 'offset' => 2 // we only need to check 2 accounts, if we just check for not anonymous + 'offset' => 2 // we only need to check 2 Api\Accounts, if we just check for not anonymous )); return $this->accounts->total > 1; diff --git a/setup/inc/class.setup_cmd.inc.php b/setup/inc/class.setup_cmd.inc.php index 8ad3f0ee2c..6e22b27122 100644 --- a/setup/inc/class.setup_cmd.inc.php +++ b/setup/inc/class.setup_cmd.inc.php @@ -10,6 +10,7 @@ * @version $Id$ */ +use EGroupware\Api; use EGroupware\Api\Egw; /** @@ -27,7 +28,7 @@ abstract class setup_cmd extends admin_cmd /** * Should be called by every command usually requiring header admin rights * - * @throws egw_exception_no_permission(lang('Wrong credentials to access the header.inc.php file!'),2); + * @throws Api\Exception\NoPermission(lang('Wrong credentials to access the header.inc.php file!'),2); */ protected function _check_header_access() { @@ -43,7 +44,7 @@ abstract class setup_cmd extends admin_cmd if ($this->header_secret != $secret) { //echo "_check_header_access: header_secret='$this->header_secret' != '$secret'=_calc_header_secret({$GLOBALS['egw_info']['server']['header_admin_user']},{$GLOBALS['egw_info']['server']['header_admin_password']})\n"; - throw new egw_exception_no_permission(lang('Wrong credentials to access the header.inc.php file!'),5); + throw new Api\Exception\NoPermission(lang('Wrong credentials to access the header.inc.php file!'),5); } } @@ -139,10 +140,10 @@ abstract class setup_cmd extends admin_cmd if (is_object($GLOBALS['egw']->db) && $domain) { $GLOBALS['egw']->db->disconnect(); - $GLOBALS['egw']->db = new egw_db($GLOBALS['egw_domain'][$domain]); + $GLOBALS['egw']->db = new Api\Db($GLOBALS['egw_domain'][$domain]); // change caching to managed instance - egw_cache::unset_instance_key(); + Api\Cache::unset_instance_key(); } } @@ -155,15 +156,15 @@ abstract class setup_cmd extends admin_cmd if (is_object($GLOBALS['egw']->db)) { $GLOBALS['egw']->db->disconnect(); - $GLOBALS['egw']->db = new egw_db($GLOBALS['egw_info']['server']); + $GLOBALS['egw']->db = new Api\Db($GLOBALS['egw_info']['server']); // change caching back to own instance - egw_cache::unset_instance_key(); + Api\Cache::unset_instance_key(); if (!is_null(self::$egw_accounts_backup)) { $GLOBALS['egw']->accounts = self::$egw_accounts_backup; - accounts::cache_invalidate(); + Api\Accounts::cache_invalidate(); unset(self::$egw_accounts_backup); } } @@ -175,8 +176,8 @@ abstract class setup_cmd extends admin_cmd * @param string $user * @param string $pw * @param string $domain =null if given we also check agains config user/pw - * @throws egw_exception_no_permission(lang('Access denied: wrong username or password for manage-header !!!'),21); - * @throws egw_exception_no_permission(lang("Access denied: wrong username or password to configure the domain '%1(%2)' !!!",$domain,$GLOBALS['egw_domain'][$domain]['db_type']),40); + * @throws Api\Exception\NoPermission(lang('Access denied: wrong username or password for manage-header !!!'),21); + * @throws Api\Exception\NoPermission(lang("Access denied: wrong username or password to configure the domain '%1(%2)' !!!",$domain,$GLOBALS['egw_domain'][$domain]['db_type']),40); */ static function check_setup_auth($user,$pw,$domain=null) { @@ -193,11 +194,11 @@ abstract class setup_cmd extends admin_cmd { if (is_null($domain)) { - throw new egw_exception_no_permission(lang('Access denied: wrong username or password for manage-header !!!'),21); + throw new Api\Exception\NoPermission(lang('Access denied: wrong username or password for manage-header !!!'),21); } else { - throw new egw_exception_no_permission(lang("Access denied: wrong username or password to configure the domain '%1(%2)' !!!",$domain,$GLOBALS['egw_domain'][$domain]['db_type']),40); + throw new Api\Exception\NoPermission(lang("Access denied: wrong username or password to configure the domain '%1(%2)' !!!",$domain,$GLOBALS['egw_domain'][$domain]['db_type']),40); } } } @@ -243,7 +244,7 @@ abstract class setup_cmd extends admin_cmd { if (!include(EGW_INCLUDE_ROOT.'/phpgwapi/setup/setup.inc.php')) { - throw new egw_exception_wrong_userinput(lang("eGroupWare sources in '%1' are not complete, file '%2' missing !!!",realpath('..'),'phpgwapi/setup/setup.inc.php'),99); // should not happen ;-) + throw new Api\Exception\WrongUserinput(lang("eGroupWare sources in '%1' are not complete, file '%2' missing !!!",realpath('..'),'phpgwapi/setup/setup.inc.php'),99); // should not happen ;-) } $versions['phpgwapi'] = $setup_info['phpgwapi']['version']; unset($setup_info); @@ -257,13 +258,13 @@ abstract class setup_cmd extends admin_cmd switch ($header_stage) { - case 1: throw new egw_exception_wrong_userinput(lang('eGroupWare configuration file (header.inc.php) does NOT exist.')."\n".lang('Use --create-header to create the configuration file (--usage gives more options).'),1); + case 1: throw new Api\Exception\WrongUserinput(lang('eGroupWare configuration file (header.inc.php) does NOT exist.')."\n".lang('Use --create-header to create the configuration file (--usage gives more options).'),1); -// case 2: throw new egw_exception_wrong_userinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('No header admin password set! Use --edit-header [,] to set one (--usage gives more options).'),2); +// case 2: throw new Api\Exception\WrongUserinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('No header admin password set! Use --edit-header [,] to set one (--usage gives more options).'),2); - case 3: throw new egw_exception_wrong_userinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('No eGroupWare domains / database instances exist! Use --edit-header --domain to add one (--usage gives more options).'),3); + case 3: throw new Api\Exception\WrongUserinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('No eGroupWare domains / database instances exist! Use --edit-header --domain to add one (--usage gives more options).'),3); - case 4: throw new egw_exception_wrong_userinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('It needs upgrading to version %1! Use --update-header [,] to do so (--usage gives more options).',$versions['current_header']),4); + case 4: throw new Api\Exception\WrongUserinput(lang('eGroupWare configuration file (header.inc.php) version %1 exists%2',$versions['header'],'.')."\n".lang('It needs upgrading to version %1! Use --update-header [,] to do so (--usage gives more options).',$versions['current_header']),4); } if ($header_checks) { @@ -275,7 +276,7 @@ abstract class setup_cmd extends admin_cmd $domains = $GLOBALS['egw_domain']; if ($domain) // domain to check given { - if (!isset($GLOBALS['egw_domain'][$domain])) throw new egw_exception_wrong_userinput(lang("Domain '%1' does NOT exist !!!",$domain), 92); + if (!isset($GLOBALS['egw_domain'][$domain])) throw new Api\Exception\WrongUserinput(lang("Domain '%1' does NOT exist !!!",$domain), 92); $domains = array($domain => $GLOBALS['egw_domain'][$domain]); } @@ -309,11 +310,11 @@ abstract class setup_cmd extends admin_cmd } switch($db_stage) { - case 1: throw new egw_exception_wrong_userinput(lang('Your Database is not working!')." $db: ".self::$egw_setup->db->Error,11); + case 1: throw new Api\Exception\WrongUserinput(lang('Your Database is not working!')." $db: ".self::$egw_setup->db->Error,11); - case 3: throw new egw_exception_wrong_userinput(lang('Your database is working, but you dont have any applications installed')." ($db). ".lang("Use --install to install eGroupWare."),13); + case 3: throw new Api\Exception\WrongUserinput(lang('Your database is working, but you dont have any applications installed')." ($db). ".lang("Use --install to install eGroupWare."),13); - case 4: throw new egw_exception_wrong_userinput(lang('eGroupWare API needs a database (schema) update from version %1 to %2!',$setup_info['phpgwapi']['currentver'],$versions['phpgwapi']).' '.lang('Use --update to do so.'),14); + case 4: throw new Api\Exception\WrongUserinput(lang('eGroupWare API needs a database (schema) update from version %1 to %2!',$setup_info['phpgwapi']['currentver'],$versions['phpgwapi']).' '.lang('Use --update to do so.'),14); case 10: // also check apps of updates self::$apps_to_upgrade = self::$apps_to_install = array(); @@ -338,7 +339,7 @@ abstract class setup_cmd extends admin_cmd $db_stage = 4; if ($stop && in_array(10+$db_stage,$stop)) return $messages; - throw new egw_exception_wrong_userinput(lang('The following applications need to be upgraded:').' '.implode(', ',self::$apps_to_upgrade).'! '.lang('Use --update to do so.'),14); + throw new Api\Exception\WrongUserinput(lang('The following applications need to be upgraded:').' '.implode(', ',self::$apps_to_upgrade).'! '.lang('Use --update to do so.'),14); } break; } @@ -347,7 +348,7 @@ abstract class setup_cmd extends admin_cmd self::$egw_setup->detection->check_config(); if ($GLOBALS['egw_info']['setup']['config_errors'] && $stop && !in_array(15,$stop)) { - throw new egw_exception_wrong_userinput(lang('You need to configure eGroupWare:')."\n- ".@implode("\n- ",$GLOBALS['egw_info']['setup']['config_errors']),15); + throw new Api\Exception\WrongUserinput(lang('You need to configure eGroupWare:')."\n- ".@implode("\n- ",$GLOBALS['egw_info']['setup']['config_errors']),15); } } return $messages; diff --git a/setup/inc/class.setup_cmd_admin.inc.php b/setup/inc/class.setup_cmd_admin.inc.php index e503f42cb0..810c2eb2da 100644 --- a/setup/inc/class.setup_cmd_admin.inc.php +++ b/setup/inc/class.setup_cmd_admin.inc.php @@ -5,11 +5,13 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2007-10 by Ralf Becker + * @copyright (c) 2007-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ +use EGroupware\Api; + /** * setup command: create a first eGroupWare user / admin and our two standard groups: Default & Admins * @@ -26,15 +28,15 @@ class setup_cmd_admin extends setup_cmd * Constructor * * @param string|array $domain domain-name or array with all parameters - * @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 $admin_user=null - * @param string $admin_password=null - * @param string $admin_firstname=null - * @param string $admin_lastname=null - * @param string $admin_email=null - * @param array $config=array() extra config for the account object: account_repository, ldap_* - * @param string $lang='en' + * @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 $admin_user =null + * @param string $admin_password =null + * @param string $admin_firstname =null + * @param string $admin_lastname =null + * @param string $admin_email =null + * @param array $config =array() extra config for the account object: account_repository, ldap_* + * @param string $lang ='en' */ function __construct($domain,$config_user=null,$config_passwd=null,$admin_user=null,$admin_password=null, $admin_firstname=null,$admin_lastname=null,$admin_email=null,array $config=array(),$lang='en') @@ -61,7 +63,7 @@ class setup_cmd_admin extends setup_cmd /** * run the command: create eGW admin and standard groups * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @param boolean $check_only =false only run the checks (and throw the exceptions), but not the command itself * @return string success message * @throws Exception(lang('Wrong credentials to access the header.inc.php file!'),2); * @throws Exception('header.inc.php not found!'); @@ -97,25 +99,26 @@ class setup_cmd_admin extends setup_cmd switch ($error) { case 41: - throw new egw_exception_wrong_userinput(lang('Error in admin-creation !!!'),41); + throw new Api\Exception\WrongUserinput(lang('Error in admin-creation !!!'),41); case 42: - throw new egw_exception_wrong_userinput(lang('Error in group-creation !!!'),42); + throw new Api\Exception\WrongUserinput(lang('Error in group-creation !!!'),42); } $this->restore_db(); - // run admin/admin-cli.php --add-user to store the new accounts once in EGroupware + // run admin/admin-cli.php --add-user to store the new Api\Accounts once in EGroupware // to run all hooks (some of them can NOT run inside setup) $cmd = EGW_SERVER_ROOT.'/admin/admin-cli.php --add-user '. escapeshellarg($this->admin_user.'@'.$this->domain.','.$this->admin_password.','.$this->admin_user); if (php_sapi_name() !== 'cli' || !file_exists(EGW_SERVER_ROOT.'/stylite') || file_exists(EGW_SERVER_ROOT.'/managementserver')) { + $output = $ret = null; exec($cmd,$output,$ret); } $output = implode("\n",$output); //echo "ret=$ret\n".$output; if ($ret) { - throw new egw_exception ($output,$ret); + throw new Api\Exception ($output,$ret); } return lang('Admin account successful created.'); } diff --git a/setup/inc/class.setup_cmd_database.inc.php b/setup/inc/class.setup_cmd_database.inc.php index 20d31db56f..950567c787 100644 --- a/setup/inc/class.setup_cmd_database.inc.php +++ b/setup/inc/class.setup_cmd_database.inc.php @@ -5,11 +5,13 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2007-10 by Ralf Becker + * @copyright (c) 2007-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ +use EGroupware\Api; + /** * setup command: test or create the database */ @@ -28,9 +30,9 @@ class setup_cmd_database extends setup_cmd const MAX_DB_NAME_LEN = 16; /** - * Instance of egw_db to connect or create the db + * Instance of Api\Db to connect or create the db * - * @var egw_db + * @var Api\Db */ private $test_db; @@ -39,16 +41,16 @@ class setup_cmd_database extends setup_cmd * * @param string/array $domain domain-name to customize the defaults or array with all parameters * @param string $db_type db-type (mysql, pgsql, ...) - * @param string $db_host=null - * @param string $db_port=null - * @param string $db_name=null - * @param string $db_user=null - * @param string $db_pass=null - * @param string $db_root=null - * @param string $db_root_pw=null - * @param string $sub_command='create_db' 'create_db', 'test_db', 'test_db_root' - * @param string $db_grant_host='localhost' host/ip of webserver for grant - * @param boolean $make_db_name_unique=false true: if create fails because db exists, + * @param string $db_host =null + * @param string $db_port =null + * @param string $db_name =null + * @param string $db_user =null + * @param string $db_pass =null + * @param string $db_root =null + * @param string $db_root_pw =null + * @param string $sub_command ='create_db' 'create_db', 'test_db', 'test_db_root' + * @param string $db_grant_host ='localhost' host/ip of webserver for grant + * @param boolean $make_db_name_unique =false true: if create fails because db exists, * try creating a unique name by shortening the name and adding a number to it */ function __construct($domain,$db_type=null,$db_host=null,$db_port=null,$db_name=null,$db_user=null,$db_pass=null, @@ -78,7 +80,7 @@ class setup_cmd_database extends setup_cmd /** * run the command: test or create database * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @param boolean $check_only =false only run the checks (and throw the exceptions), but not the command itself * @return string success message * @throws Exception(lang('Wrong credentials to access the header.inc.php file!'),2); * @throws Exception('header.inc.php not found!'); @@ -87,7 +89,7 @@ class setup_cmd_database extends setup_cmd { if (!empty($this->domain) && !preg_match('/^([a-z0-9_-]+\.)*[a-z0-9]+/i',$this->domain)) { - throw new egw_exception_wrong_userinput(lang("'%1' is no valid domain name!",$this->domain)); + throw new Api\Exception\WrongUserinput(lang("'%1' is no valid domain name!",$this->domain)); } if ($this->remote_id && $check_only) return true; // further checks can only done locally @@ -127,10 +129,10 @@ class setup_cmd_database extends setup_cmd /** * Connect to database * - * @param string $user=null default $this->db_user - * @param string $pass=null default $this->db_pass - * @param string $name=null default $this->db_name - * @throws egw_exception_wrong_userinput Can not connect to database ... + * @param string $user =null default $this->db_user + * @param string $pass =null default $this->db_pass + * @param string $name =null default $this->db_name + * @throws Api\Exception\WrongUserinput Can not connect to database ... */ private function connect($user=null,$pass=null,$name=null) { @@ -138,7 +140,7 @@ class setup_cmd_database extends setup_cmd if (is_null($pass)) $pass = $this->db_pass; if (is_null($name)) $name = $this->db_name; - $this->test_db = new egw_db(); + $this->test_db = new Api\Db(); $error_rep = error_reporting(); error_reporting($error_rep & ~E_WARNING); // switch warnings of, in case they are on @@ -152,7 +154,7 @@ class setup_cmd_database extends setup_cmd if ($e) { - throw new egw_exception_wrong_userinput(lang('Can not connect to %1 database %2 on host %3 using user %4!', + throw new Api\Exception\WrongUserinput(lang('Can not connect to %1 database %2 on host %3 using user %4!', $this->db_type,$name,$this->db_host.($this->db_port?':'.$this->db_port:''),$user).' ('.$e->getMessage().')'); } return lang('Successful connected to %1 database %2 on %3 using user %4.', @@ -168,7 +170,7 @@ class setup_cmd_database extends setup_cmd * added to $this->db_name AND $this->db_user, if db already exists. * * @return string with success message - * @throws egw_exception_wrong_userinput + * @throws Api\Exception\WrongUserinput */ private function create() { @@ -184,13 +186,13 @@ class setup_cmd_database extends setup_cmd try { $msg = $this->connect(); } - catch (egw_exception_wrong_userinput $e) { + catch (Api\Exception\WrongUserinput $e) { // db or user not working --> connect as root and create it try { $this->test_db->create_database($this->db_root,$this->db_root_pw,$this->db_charset,$this->db_grant_host); $this->connect(); } - catch(egw_exception_db $e) { // catches failed to create database + catch(Api\Db\Exception $e) { // catches failed to create database // try connect as root to check if wrong root/root_pw is the problem $this->connect($this->db_root,$this->db_root_pw,$this->db_meta); @@ -201,6 +203,7 @@ class setup_cmd_database extends setup_cmd try { $this->connect($this->db_root,$this->db_root_pw); // create new db_name by incrementing an existing numeric postfix + $matches = null; if (preg_match('/([0-9]+)$/',$this->db_name,$matches)) { $num = (string)(++$matches[1]); @@ -215,13 +218,13 @@ class setup_cmd_database extends setup_cmd return $this->create(); } - catch (egw_exception_wrong_userinput $e2) + catch (Api\Exception\WrongUserinput $e2) { // we can NOT connect to db as root --> ignore exception to give general error } } // if not give general error - throw new egw_exception_wrong_userinput(lang('Can not create %1 database %2 on %3 for user %4!', + throw new Api\Exception\WrongUserinput(lang('Can not create %1 database %2 on %3 for user %4!', $this->db_type,$this->db_name,$this->db_host.($this->db_port?':'.$this->db_port:''),$this->db_user)); } $msg = lang('Successful connected to %1 on %3 and created database %2 for user %4.', @@ -234,7 +237,7 @@ class setup_cmd_database extends setup_cmd { $table = $table['table_name']; } - throw new egw_exception_wrong_userinput(lang('%1 database %2 on %3 already contains the following tables:', + throw new Api\Exception\WrongUserinput(lang('%1 database %2 on %3 already contains the following tables:', $this->db_type,$this->db_name,$this->db_host.($this->db_port?':'.$this->db_port:'')).' '. implode(', ',$tables)); } @@ -245,8 +248,8 @@ class setup_cmd_database extends setup_cmd * Drop database and user * * @return string with success message - * @throws egw_exception_wrong_userinput - * @throws egw_db_exception if database not exist + * @throws Api\Exception\WrongUserinput + * @throws Api\Db\Exception if database not exist */ private function drop() { @@ -257,7 +260,8 @@ class setup_cmd_database extends setup_cmd $this->test_db->query('DROP USER '.$this->test_db->quote($this->db_user).'@'. $this->test_db->quote($this->db_grant_host?$this->db_grant_host:'%'),__LINE__,__FILE__); } - catch (egw_db_exception $e) { + catch (Api\Db\Exception $e) { + unset($e); // we make this no fatal error, as the granthost might be something else ... $msg .= ' '.lang('Error dropping User!'); } @@ -267,7 +271,7 @@ class setup_cmd_database extends setup_cmd /** * Return default database settings for a given domain * - * @param string $db_type='mysql' + * @param string $db_type ='mysqli' * @return array */ static function defaults($db_type='mysqli') diff --git a/setup/inc/class.setup_cmd_header.inc.php b/setup/inc/class.setup_cmd_header.inc.php index 92756eeef5..d7588a7dd0 100644 --- a/setup/inc/class.setup_cmd_header.inc.php +++ b/setup/inc/class.setup_cmd_header.inc.php @@ -5,11 +5,13 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2007/8 by Ralf Becker + * @copyright (c) 2007-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ +use EGroupware\Api; + /** * setup command: create or update the header.inc.php * @@ -33,8 +35,8 @@ class setup_cmd_header extends setup_cmd /** * Constructor * - * @param string/array $sub_command='create' 'create','edit','delete'(-domain) or array with all arguments - * @param array $arguments=null comand line arguments + * @param string|array $sub_command ='create' 'create','edit','delete'(-domain) or array with all arguments + * @param array $arguments =null comand line arguments */ function __construct($sub_command='create',$arguments=null) { @@ -66,7 +68,7 @@ class setup_cmd_header extends setup_cmd /** * Create or update header.inc.php * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @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!'); @@ -81,7 +83,7 @@ class setup_cmd_header extends setup_cmd { if ($this->sub_command != 'create') { - throw new egw_exception_wrong_userinput(lang('eGroupWare configuration file (header.inc.php) does NOT exist.')."\n".lang('Use --create-header to create the configuration file (--usage gives more options).'),1); + throw new Api\Exception\WrongUserinput(lang('eGroupWare configuration file (header.inc.php) does NOT exist.')."\n".lang('Use --create-header to create the configuration file (--usage gives more options).'),1); } $this->defaults(false); } @@ -89,7 +91,7 @@ class setup_cmd_header extends setup_cmd { if ($this->sub_command == 'create') { - throw new egw_exception_wrong_userinput( + throw new Api\Exception\WrongUserinput( lang('eGroupWare configuration file header.inc.php already exists, you need to use --edit-header or delete it first!'),20); } if ($this->arguments) @@ -123,7 +125,7 @@ class setup_cmd_header extends setup_cmd echo '$GLOBALS[egw_info] = '; print_r($GLOBALS['egw_info']); echo '$GLOBALS[egw_domain] = '; print_r($GLOBALS['egw_domain']); } - throw new egw_exception_wrong_userinput(lang('Configuration errors:')."\n- ".implode("\n- ",$errors)."\n".lang("You need to fix the above errors, before the configuration file header.inc.php can be written!"),23); + throw new Api\Exception\WrongUserinput(lang('Configuration errors:')."\n- ".implode("\n- ",$errors)."\n".lang("You need to fix the above errors, before the configuration file header.inc.php can be written!"),23); } if ($check_only) { @@ -142,20 +144,20 @@ class setup_cmd_header extends setup_cmd { unlink($this->header_path); } - if (($f = fopen($this->header_path,'wb')) && ($w=fwrite($f,$header))) + if (($f = fopen($this->header_path,'wb')) && fwrite($f,$header)) { fclose($f); return lang('header.inc.php successful written.'); } } - throw new egw_exception_no_permission(lang("Failed writing configuration file header.inc.php, check the permissions !!!"),24); + throw new Api\Exception\NoPermission(lang("Failed writing configuration file header.inc.php, check the permissions !!!"),24); } /** * Magic method to allow to call all methods from setup_header, as if they were our own * * @param string $method - * @param array $args=null + * @param array $args =null * @return mixed */ function __call($method,array $args=null) @@ -271,18 +273,18 @@ class setup_cmd_header extends setup_cmd if (!isset(self::$options[$arg])) { - throw new egw_exception_wrong_userinput(lang("Unknown option '%1' !!!",$arg),90); + throw new Api\Exception\WrongUserinput(lang("Unknown option '%1' !!!",$arg),90); } $option = self::$options[$arg]; - $values = !is_array($option) ? array($values) : explode(',',$values); + $vals = !is_array($option) ? array($values) : explode(',',$values); if (!is_array($option)) $option = array($option => $option); $n = 0; foreach($option as $name => $data) { - if ($n >= count($values)) break; + if ($n >= count($vals)) break; - $this->_parse_value($arg,$name,$data,$values[$n++]); + $this->_parse_value($arg,$name,$data,$vals[$n++]); } } } @@ -296,7 +298,7 @@ class setup_cmd_header extends setup_cmd { if (!isset($GLOBALS['egw_domain'][$domain])) { - throw new egw_exception_wrong_userinput(lang("Domain '%1' does NOT exist !!!",$domain),92); + throw new Api\Exception\WrongUserinput(lang("Domain '%1' does NOT exist !!!",$domain),92); } unset($GLOBALS['egw_domain'][$domain]); } @@ -311,7 +313,7 @@ class setup_cmd_header extends setup_cmd */ private function _parse_value($arg,$name,$data,$value) { - static $domain; + static $domain=null; if (!is_array($data)) $data = array('type' => $data); $type = $data['type']; @@ -320,7 +322,7 @@ class setup_cmd_header extends setup_cmd { if (!isset($data['allowed'][$value])) { - throw new egw_exception_wrong_userinput(lang("'%1' is not allowed as %2. arguments of option %3 !!!",$value,1+$n,$arg),91); + throw new Api\Exception\WrongUserinput(lang("'%1' is not allowed as %2. arguments of option %3 !!!",$value,1,$arg),91); } $value = $data['allowed'][$value]; } @@ -359,6 +361,6 @@ class setup_cmd_header extends setup_cmd { $var =& $var[$name]; } - $var = strpos($name,'passw') !== false ? md5($value) : $value; + if (true) $var = strpos($name,'passw') !== false ? md5($value) : $value; } } diff --git a/setup/inc/class.setup_cmd_hooks.inc.php b/setup/inc/class.setup_cmd_hooks.inc.php index 48c1e33530..628a7eafb4 100644 --- a/setup/inc/class.setup_cmd_hooks.inc.php +++ b/setup/inc/class.setup_cmd_hooks.inc.php @@ -5,7 +5,7 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2011 by Ralf Becker + * @copyright (c) 2011-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ @@ -40,7 +40,7 @@ class setup_cmd_hooks extends setup_cmd /** * run the command: register all hooks * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @param boolean $check_only =false only run the checks (and throw the exceptions), but not the command itself * @return string success message * @throws Exception(lang('Wrong credentials to access the header.inc.php file!'),2); * @throws Exception('header.inc.php not found!'); diff --git a/setup/inc/class.setup_cmd_install.inc.php b/setup/inc/class.setup_cmd_install.inc.php index 51dd41cb5b..62e421f8a7 100644 --- a/setup/inc/class.setup_cmd_install.inc.php +++ b/setup/inc/class.setup_cmd_install.inc.php @@ -5,11 +5,13 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2007 by Ralf Becker + * @copyright (c) 2007-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ +use EGroupware\Api; + /** * setup command: install the tables */ @@ -24,13 +26,13 @@ class setup_cmd_install extends setup_cmd * 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' + * @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') { @@ -58,13 +60,14 @@ class setup_cmd_install extends setup_cmd /** * run the command: install the tables * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @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 @@ -79,7 +82,7 @@ class setup_cmd_install extends setup_cmd if (!is_resource($f = $db_backup->fopen_backup($this->backup,true))) { - throw new egw_exception_wrong_userinput(lang('Restore failed').' ('.$f.')',31); + throw new Api\Exception\WrongUserinput(lang('Restore failed').' ('.$f.')',31); } if ($this->verbose) { @@ -101,7 +104,7 @@ class setup_cmd_install extends setup_cmd // regular (new) install if ($GLOBALS['egw_info']['setup']['stage']['db'] != 3) { - throw new egw_exception_wrong_userinput(lang('eGroupWare is already installed!'),30); + throw new Api\Exception\WrongUserinput(lang('eGroupWare is already installed!'),30); } $setup_info = self::$egw_setup->detection->upgrade_exclude($setup_info); @@ -111,7 +114,7 @@ class setup_cmd_install extends setup_cmd $_POST['ConfigLang'] = $this->lang; if ($this->verbose) echo lang('Installation started, this might take a few minutes ...')."\n"; - $setup_info = self::$egw_setup->process->pass($setup_info,'new',false,True,$this->config); + if (true) $setup_info = self::$egw_setup->process->pass($setup_info,'new',false,True,$this->config); $this->restore_db(); diff --git a/setup/inc/class.setup_cmd_ldap.inc.php b/setup/inc/class.setup_cmd_ldap.inc.php index d24a27ba32..a3f5c5a857 100644 --- a/setup/inc/class.setup_cmd_ldap.inc.php +++ b/setup/inc/class.setup_cmd_ldap.inc.php @@ -45,7 +45,7 @@ use EGroupware\Api; * attributes={smtp:}proxyAddresses=mail,{smtp:}proxyAddresses=mailalias,{quota:}proxyAddresses=mailuserquota,{forward:}proxyaddresses=maildrop * * - copies mail-attributes from ldap to AD (example is from Mandriva mailAccount schema, need to adapt to other schema!) - * (no_sid_check=1 uses all objectClass=posixAccount, not checking for having a SID and uid not ending in $ for computer accounts) + * (no_sid_check=1 uses all objectClass=posixAccount, not checking for having a SID and uid not ending in $ for computer Api\Accounts) * * setup/setup-cli.php [--dry-run] --setup-cmd-ldap ,, sub_command=passwords_to_sql \ * ldap_context=ou=accounts,dc=local ldap_root_dn=cn=admin,dc=local ldap_root_pw=secret ldap_host=localhost @@ -477,7 +477,7 @@ class setup_cmd_ldap extends setup_cmd } // invalidate cache: otherwise no migration takes place, if cached results says account already exists - accounts::cache_invalidate($account_id); + Api\Accounts::cache_invalidate($account_id); if ($passwords2sql) { @@ -658,7 +658,7 @@ class setup_cmd_ldap extends setup_cmd } // migrate addressbook data $GLOBALS['egw_info']['user']['apps']['admin'] = true; // otherwise migration will not run in setup! - $addressbook = new addressbook_so(); + $addressbook = new Api\Contacts\Storage(); foreach($this->as_array() as $name => $value) { if (substr($name, 5) == 'ldap_') @@ -757,16 +757,16 @@ class setup_cmd_ldap extends setup_cmd $account['memberships'] = $accounts_obj->memberships($account_id,true); } } - accounts::cache_invalidate(); + Api\Accounts::cache_invalidate(); return $accounts; } /** - * Instancate accounts object from either sql of ldap + * Instanciate accounts object from either sql of ldap * * @param string $type 'ldap', 'sql', 'univention' - * @return accounts + * @return Api\Accounts */ private function accounts_obj($type) { @@ -862,7 +862,7 @@ class setup_cmd_ldap extends setup_cmd $this->ldap_base => array(), $this->ldap_context => array(), $this->ldap_group_context => array(), - $this->ldap_root_dn => array('userPassword' => auth::encrypt_ldap($this->ldap_root_pw,'ssha')), + $this->ldap_root_dn => array('userPassword' => Api\Auth::encrypt_ldap($this->ldap_root_pw,'ssha')), ) as $dn => $extra) { if (!$this->_create_node($dn,$extra,$this->check_only) && $dn == $this->ldap_root_dn) diff --git a/setup/inc/class.setup_cmd_showheader.inc.php b/setup/inc/class.setup_cmd_showheader.inc.php index ac00cc1686..07626879ab 100644 --- a/setup/inc/class.setup_cmd_showheader.inc.php +++ b/setup/inc/class.setup_cmd_showheader.inc.php @@ -5,28 +5,30 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2007 by Ralf Becker + * @copyright (c) 2007-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License - * @version $Id$ + * @version $Id$ */ +use EGroupware\Api; + /** * setup command: show/return the header.inc.php - * + * * Has no constructor, as we have no arguments beside the header admin user and password, * which get set via setup_cmd::set_header_secret($user,$pw) */ -class setup_cmd_showheader extends setup_cmd +class setup_cmd_showheader extends setup_cmd { /** * Allow to run this command via setup-cli */ const SETUP_CLI_CALLABLE = true; - + /** * Constructor * - * @param boolean $data=true true: send only the remote_hash, domain and webserver_url, + * @param boolean $data=true true: send only the remote_hash, domain and webserver_url, * false: the complete header vars, plus install_id and webserver_url from the config table, * null: only the header vars */ @@ -46,8 +48,8 @@ class setup_cmd_showheader extends setup_cmd /** * show/return the header.inc.php - * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * + * @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!'); @@ -55,7 +57,7 @@ class setup_cmd_showheader extends setup_cmd function exec($check_only=false) { if ($this->remote_id && $check_only) return true; // cant check for the remote site locally! - + $this->_check_header_access(); if ($check_only) return true; @@ -77,9 +79,9 @@ class setup_cmd_showheader extends setup_cmd // include the api version of this instance $GLOBALS['egw_info']['server']['versions']['phpgwapi'] = $egw_info_backup['server']['versions']['phpgwapi']; - + // fetching the install id's stored in the database - foreach($GLOBALS['egw_domain'] as $domain => &$data) + foreach($GLOBALS['egw_domain'] as &$data) { if (!is_null($this->hash_only)) { @@ -99,7 +101,7 @@ class setup_cmd_showheader extends setup_cmd 'webserver_url' => $data['webserver_url'], 'install_id' => $data['install_id'], )+($data['error'] ? array( - 'error' => $data['error'], + 'error' => $data['error'], ) : array()); } } @@ -117,10 +119,10 @@ class setup_cmd_showheader extends setup_cmd ); } $GLOBALS['egw_info'] = $egw_info_backup; - + return $ret; } - + /** * Fetch the install_id, and webserver_url of a domain from the DB * @@ -129,7 +131,7 @@ class setup_cmd_showheader extends setup_cmd */ private function _fetch_config(array $data) { - $db = new egw_db(); + $db = new Api\Db(); ob_start(); // not available db connection echos a lot grab ;-) $err_rep = error_reporting(0); @@ -155,14 +157,14 @@ class setup_cmd_showheader extends setup_cmd // restoring the db connection, seems to be necessary when we run via remote execution $this->restore_db(); - + return $config; } - + /** * Saving the object to the database, reimplemented to only the save the command if it runs remote * - * @param boolean $set_modifier=true set the current user as modifier or 0 (= run by the system) + * @param boolean $set_modifier =true set the current user as modifier or 0 (= run by the system) * @return boolean true on success, false otherwise */ function save($set_modifier=true) diff --git a/setup/inc/class.setup_cmd_update.inc.php b/setup/inc/class.setup_cmd_update.inc.php index c7a95bf5e7..f8995149c7 100644 --- a/setup/inc/class.setup_cmd_update.inc.php +++ b/setup/inc/class.setup_cmd_update.inc.php @@ -5,7 +5,7 @@ * @link http://www.egroupware.org * @author Ralf Becker * @package setup - * @copyright (c) 2009-14 by Ralf Becker + * @copyright (c) 2009-16 by Ralf Becker * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ @@ -24,11 +24,11 @@ class setup_cmd_update extends setup_cmd * Constructor * * @param string|array $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 boolean $verbose=false if true, echos out some status information during the run - * @param string $app=null single application to update or install + * @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 boolean $verbose =false if true, echos out some status information during the run + * @param string $app =null single application to update or install */ function __construct($domain,$config_user=null,$config_passwd=null,$backup=null,$verbose=false,$app=null) { @@ -50,7 +50,7 @@ class setup_cmd_update extends setup_cmd /** * run the command: update or install/update a single app ($this->app) * - * @param boolean $check_only=false only run the checks (and throw the exceptions), but not the command itself + * @param boolean $check_only =false only run the checks (and throw the exceptions), but not the command itself * @return string success message * @throws Exception(lang('Wrong credentials to access the header.inc.php file!'),2); * @throws Exception('header.inc.php not found!'); diff --git a/setup/inc/class.setup_detection.inc.php b/setup/inc/class.setup_detection.inc.php index bf2b096d97..09c713d763 100755 --- a/setup/inc/class.setup_detection.inc.php +++ b/setup/inc/class.setup_detection.inc.php @@ -1,6 +1,6 @@ check_db_support($null); $default_db = count($supported_db) ? $supported_db[0] : 'mysqli'; @@ -149,16 +153,17 @@ class setup_header * should write an identical header.inc.php as the one include * * @param array $egw_info usual content (in server key) plus keys server_root and include_root - * @param array $egw_domains info about the existing eGW domains / DB instances + * @param array $egw_domain info about the existing eGW domains / DB instances * @return string content of header.inc.php */ function generate($egw_info,$egw_domain) { - $tpl = new Template('../', 'keep'); // 'keep' to not loose '{hash}' prefix of password-hashes! + $tpl = new Framework\Template('../', 'keep'); // 'keep' to not loose '{hash}' prefix of password-hashes! $tpl->set_file(array('header' => 'header.inc.php.template')); $tpl->set_block('header','domain','domain'); - auth::passwdhashes($most_secure_pw_hash); + $most_secure_pw_hash = null; + Api\Auth::passwdhashes($most_secure_pw_hash); foreach($egw_domain as $domain => $data) { @@ -168,7 +173,7 @@ class setup_header if ($name == 'db_port' && !$value) $value = $this->default_db_ports[$data['db_type']]; if ($name == 'config_passwd') { - $var['CONFIG_PASS'] = self::is_hashed($value) ? $value : auth::encrypt_sql($value, $most_secure_pw_hash); + $var['CONFIG_PASS'] = self::is_hashed($value) ? $value : Api\Auth::encrypt_sql($value, $most_secure_pw_hash); } else { @@ -183,7 +188,7 @@ class setup_header $var = Array(); foreach($egw_info['server'] as $name => $value) { - if ($name == 'header_admin_password' && $value && !self::is_hashed($value)) $value = auth::encrypt_sql($value, $most_secure_pw_hash); + if ($name == 'header_admin_password' && $value && !self::is_hashed($value)) $value = Api\Auth::encrypt_sql($value, $most_secure_pw_hash); if ($name == 'versions') { $name = 'mcrypt_version'; @@ -213,7 +218,7 @@ class setup_header */ function generate_mcyrpt_iv() { - /*$mcrypt = mcrypt_module_open(egw_session::MCRYPT_ALGO, '', egw_session::MCRYPT_MODE, ''); + /*$mcrypt = mcrypt_module_open(Api\Session::MCRYPT_ALGO, '', Api\Session::MCRYPT_MODE, ''); $size = mcrypt_enc_get_iv_size($mcrypt); if (function_exists('mcrypt_create_iv')) // PHP 5.3+ { diff --git a/setup/inc/class.setup_html.inc.php b/setup/inc/class.setup_html.inc.php index f546e74d32..b3b2bbbc3b 100644 --- a/setup/inc/class.setup_html.inc.php +++ b/setup/inc/class.setup_html.inc.php @@ -1,6 +1,6 @@ 1) { - foreach($GLOBALS['egw_domain'] as $domain => $data) + foreach(array_keys($GLOBALS['egw_domain']) as $domain) { $domains .= "\n"; } @@ -295,7 +297,7 @@ class setup_html $ConfigLang = setup::get_lang(); if (empty($ConfigLang)) $ConfigLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); } - return html::select('ConfigLang', $ConfigLang, translation::get_available_langs(false), true, + return Api\Html::select('ConfigLang', $ConfigLang, Api\Translation::get_available_langs(false), true, $onChange ? ' onchange="this.form.submit();"' : ''); } @@ -303,6 +305,7 @@ class setup_html { $d = dir(EGW_SERVER_ROOT . '/phpgwapi/templates'); + $list = array(); while($entry = $d->read()) { if ($entry != 'CVS' && $entry != '.' && $entry != '..') diff --git a/setup/inc/class.setup_process.inc.php b/setup/inc/class.setup_process.inc.php index 4cbe7d70d3..269950ea76 100755 --- a/setup/inc/class.setup_process.inc.php +++ b/setup/inc/class.setup_process.inc.php @@ -327,7 +327,7 @@ class setup_process // so the default_records use the current data $GLOBALS['egw_info']['server'] = array_merge((array)$GLOBALS['egw_info']['server'], $current_config); Api\Cache::flush(); // flush whole instance cache - Api\Config::init_static(); // flush internal cache of config class + Api\Config::init_static(); // flush internal cache of Api\Config class $GLOBALS['egw_setup']->setup_account_object($current_config); } @@ -497,7 +497,7 @@ class setup_process unset($appdata, $oProc); // Clear categories cache in case app adds categories - categories::invalidate_cache(); + Api\Categories::invalidate_cache(); /* Done, return current status */ return ($setup_info); diff --git a/setup/inc/class.setup_translation.inc.php b/setup/inc/class.setup_translation.inc.php index d88c06e68f..e635c3a566 100644 --- a/setup/inc/class.setup_translation.inc.php +++ b/setup/inc/class.setup_translation.inc.php @@ -1,6 +1,6 @@ no_translation_marker; - $key = strtolower(trim($key)); + $ret = $_key . $this->no_translation_marker; + $key = strtolower(trim($_key)); if (isset($this->langarray[$key])) { $ret = $this->langarray[$key]; } if ($GLOBALS['egw_setup']->system_charset != $this->langarray['charset']) { - $ret = translation::convert($ret,$this->langarray['charset']); + $ret = Api\Translation::convert($ret,$this->langarray['charset']); } if (is_array($vars)) { @@ -104,7 +106,7 @@ class setup_translation /** * Languages we support (alphabetically sorted) * - * @param boolean $array_values=true true: values are an array, false values are just the descriptiong + * @param boolean $array_values =true true: values are an array, false values are just the descriptiong * @return array */ static function get_supported_langs($array_values=true) @@ -112,8 +114,8 @@ class setup_translation $f = fopen(EGW_SERVER_ROOT.'/setup/lang/languages','rb'); while(($line = fgets($f))) { - list($lang,$descr) = explode("\t",$line,2); - $lang = trim($lang); + list($lang2,$descr) = explode("\t",$line,2); + $lang = trim($lang2); if ($array_values) { $languages[$lang]['lang'] = $lang; @@ -132,6 +134,7 @@ class setup_translation $d = dir(EGW_SERVER_ROOT.'/setup/lang'); while(($file = $d->read())) { + $matches = null; if(preg_match('/^(php|e)gw_([-a-z]+).lang$/i',$file,$matches)) { $languages[$matches[2]]['available'] = True; @@ -150,9 +153,9 @@ class setup_translation /** * List availible charsets and it's supported languages - * @param boolean/string $name=false name for selectbox or false to return an array + * @param boolean|string $name =false name for selectbox or false to return an array * @param string $selected selected charset - * @return string/array html for a selectbox or array with charset / languages pairs + * @return string|array html for a selectbox or array with charset / languages pairs */ static function get_charsets($name=false,$selected='') { @@ -189,6 +192,6 @@ class setup_translation { return $charsets; } - return html::select($name,trim(strtolower($selected)),$charsets,true); + return Api\Html::select($name,trim(strtolower($selected)),$charsets,true); } } diff --git a/setup/inc/functions.inc.php b/setup/inc/functions.inc.php index ecd9559a89..d21bcd3f7a 100644 --- a/setup/inc/functions.inc.php +++ b/setup/inc/functions.inc.php @@ -1,6 +1,6 @@ 'sqlfs://$host/?storage=db', '/apps' => 'links://$host/apps?storage=db', ),'phpgwapi'); @@ -71,6 +73,7 @@ function vfs_storage_mode($settings) function temp_dir($settings) { + $error_msg = null; if (!setup_detection::check_dir($settings['temp_dir'],$error_msg)) { $GLOBALS['config_error'] = lang("Your temporary directory '%1' %2",$settings['temp_dir'],$error_msg); @@ -79,6 +82,7 @@ function temp_dir($settings) function files_dir($settings) { + $error_msg = null; if ($settings['file_repository'] == 'sql' && $settings['file_store_contents'] == 'filesystem' && !setup_detection::check_dir($settings['files_dir'],$error_msg,true)) { @@ -92,6 +96,7 @@ function backup_dir(&$settings) { $settings['backup_dir'] = $settings['files_dir'].'/db_backup'; } + $error_msg = null; if (!setup_detection::check_dir($settings['backup_dir'],$error_msg,true)) { $GLOBALS['config_error'] = lang("Your backup directory '%1' %2",$settings['backup_dir'],$error_msg); @@ -101,7 +106,7 @@ function backup_dir(&$settings) function _mcrypt_test_module_mode($module,$mode) { /* Data */ - $key = 'this is a very long key, even too long for the cipher'; + $key_in = 'this is a very long key, even too long for the cipher'; $plain_text = 'very important data'; /* Open module, and create IV */ @@ -110,7 +115,7 @@ function _mcrypt_test_module_mode($module,$mode) @mcrypt_module_close($GLOBALS['td']); return False; } - $key = substr($key, 0, mcrypt_enc_get_key_size($GLOBALS['td'])); + $key = substr($key_in, 0, mcrypt_enc_get_key_size($GLOBALS['td'])); $iv_size = mcrypt_enc_get_iv_size($GLOBALS['td']); $iv = @mcrypt_create_iv($iv_size, MCRYPT_RAND); diff --git a/setup/index.php b/setup/index.php index 76aaef86d0..234c2a6d81 100644 --- a/setup/index.php +++ b/setup/index.php @@ -1,6 +1,6 @@ html->setup_tpl_dir('setup'); -$setup_tpl = new Template($tpl_root); +$setup_tpl = new Framework\Template($tpl_root); $setup_tpl->set_file(array ( 'T_head' => 'head.tpl', @@ -254,7 +255,7 @@ switch($GLOBALS['egw_info']['setup']['stage']['db']) $setup_tpl->set_var('V_db_filled_block',$db_filled_block); break; case 4: - $setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); + $setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); $setup_tpl->set_var('oldver',lang('You appear to be running version %1 of eGroupWare', isset($setup_info['api']['currentver']) ? $setup_info['api']['currentver'] : $setup_info['phpgwapi']['currentver'])); $setup_tpl->set_var('automatic',lang('We will automatically update your tables/records to %1',$setup_info['api']['version'])); @@ -277,7 +278,7 @@ switch($GLOBALS['egw_info']['setup']['stage']['db']) $setup_tpl->set_var('V_db_filled_block',$db_filled_block); break; case 5: - $setup_tpl->set_var('hidden_vars', html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); + $setup_tpl->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__FILE__))); $setup_tpl->set_var('are_you_sure',lang('ARE YOU SURE?')); $setup_tpl->set_var('really_uninstall_all_applications',lang('REALLY Uninstall all applications')); $setup_tpl->set_var('dropwarn',lang('Your tables will be dropped and you will lose data')); diff --git a/setup/manageheader.php b/setup/manageheader.php index dc5b39b377..3acf267d01 100644 --- a/setup/manageheader.php +++ b/setup/manageheader.php @@ -1,6 +1,6 @@ header = new setup_header(); -$setup_tpl = new Template('./templates/default', 'keep'); // 'keep' to keep our {hash} prefix of passwords +$setup_tpl = new Framework\Template('./templates/default', 'keep'); // 'keep' to keep our {hash} prefix of passwords $setup_tpl->set_file(array( 'T_head' => 'head.tpl', 'T_footer' => 'footer.tpl', @@ -97,7 +100,7 @@ else switch($action) { case 'download': - html::content_header('header.inc.php','application/octet-stream'); + Api\Header\Content::type('header.inc.php','application/octet-stream'); echo $newheader; break; @@ -232,6 +235,7 @@ function show_header_form($validation_errors) $GLOBALS['egw_setup']->html->show_footer(); exit; } + $detected = null; $supported_db = $GLOBALS['egw_setup']->header->check_db_support($detected); if (!count($supported_db)) diff --git a/setup/setup-cli.php b/setup/setup-cli.php index 5eb6563863..308fb706b8 100755 --- a/setup/setup-cli.php +++ b/setup/setup-cli.php @@ -11,6 +11,8 @@ * @version $Id$ */ +use EGroupware\Api; + chdir(dirname(__FILE__)); // to enable our relative pathes to work if (php_sapi_name() !== 'cli') // security precaution: forbit calling setup-cli as web-page @@ -61,7 +63,7 @@ $GLOBALS['egw_setup']->system_charset = $charset; if ((float) PHP_VERSION < $GLOBALS['egw_setup']->required_php_version) { - throw new egw_exception_wrong_userinput(lang('You are using PHP version %1. EGroupware now requires %2 or later, recommended is PHP %3.',PHP_VERSION,$GLOBALS['egw_setup']->required_php_version,$GLOBALS['egw_setup']->recommended_php_version),98); + throw new Api\Exception\WrongUserinput(lang('You are using PHP version %1. EGroupware now requires %2 or later, recommended is PHP %3.',PHP_VERSION,$GLOBALS['egw_setup']->required_php_version,$GLOBALS['egw_setup']->recommended_php_version),98); } switch($action) @@ -132,7 +134,7 @@ switch($action) list($name,$value) = explode('=',$arg,2); if(property_exists('admin_cmd',$name)) // dont allow to overwrite admin_cmd properties { - throw new egw_exception_wrong_userinput(lang("Invalid argument '%1' !!!",$arg),90); + throw new Api\Exception\WrongUserinput(lang("Invalid argument '%1' !!!",$arg),90); } if (substr($name,-1) == ']') // allow 1-dim. arrays { @@ -150,7 +152,7 @@ switch($action) echo "$msg\n"; break; } - throw new egw_exception_wrong_userinput(lang("Unknown option '%1' !!!",$action),90); + throw new Api\Exception\WrongUserinput(lang("Unknown option '%1' !!!",$action),90); } exit(0); @@ -255,7 +257,7 @@ function do_backup($arg,$quite_check=false) } else // backup failed ==> dont start the upgrade { - throw new egw_exception_wrong_userinput(lang('Backup failed').': '.$f,50); + throw new Api\Exception\WrongUserinput(lang('Backup failed').': '.$f,50); } } } diff --git a/setup/sqltoarray.php b/setup/sqltoarray.php index 935c448142..ff0bb7a0fc 100644 --- a/setup/sqltoarray.php +++ b/setup/sqltoarray.php @@ -1,254 +1,254 @@ + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @version $Id$ + */ - /* $Id$ */ +use EGroupware\Api; - $GLOBALS['egw_info'] = array( - 'flags' => array( - 'noheader' => True, - 'nonavbar' => True, - 'currentapp' => 'home', - 'noapi' => True +$GLOBALS['egw_info'] = array( + 'flags' => array( + 'noheader' => True, + 'nonavbar' => True, + 'currentapp' => 'home', + 'noapi' => True +)); +include('./inc/functions.inc.php'); + +/* Check header and authentication */ +if(!$GLOBALS['egw_setup']->auth('Config')) +{ + Header('Location: index.php'); + exit; +} +// Does not return unless user is authorized + +$tpl_root = $GLOBALS['egw_setup']->html->setup_tpl_dir('setup'); +$setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); + +$cancel = get_var('cancel',Array('GET','POST')); +if($cancel) +{ + Header('Location: applications.php'); + exit; +} +$apps = get_var('apps',Array('GET','POST')); +$download = get_var('download',Array('GET','POST')); +$submit = get_var('submit',Array('GET','POST')); +$showall = get_var('showall',Array('GET','POST')); +$appname = get_var('appname',Array('GET','POST')); +if($download) +{ + $setup_tpl->set_file(array( + 'sqlarr' => 'arraydl.tpl' )); - include('./inc/functions.inc.php'); + $setup_tpl->set_var('idstring',"/* \$Id" . ": tables_current.inc.php" . ",v 1.0" . " 2001/05/28 08:42:04 username " . "Exp \$ */"); + $setup_tpl->set_block('sqlarr','sqlheader','sqlheader'); + $setup_tpl->set_block('sqlarr','sqlbody','sqlbody'); + $setup_tpl->set_block('sqlarr','sqlfooter','sqlfooter'); +} +else +{ + $setup_tpl->set_file(array( + 'T_head' => 'head.tpl', + 'T_footer' => 'footer.tpl', + 'T_alert_msg' => 'msg_alert_msg.tpl', + 'T_login_main' => 'login_main.tpl', + 'T_login_stage_header' => 'login_stage_header.tpl', + 'T_setup_main' => 'schema.tpl', + 'applist' => 'applist.tpl', + 'sqlarr' => 'sqltoarray.tpl', + 'T_head' => 'head.tpl', + 'T_footer' => 'footer.tpl' + )); + $setup_tpl->set_block('T_login_stage_header','B_multi_domain','V_multi_domain'); + $setup_tpl->set_block('T_login_stage_header','B_single_domain','V_single_domain'); + $setup_tpl->set_block('T_setup_main','header','header'); + $setup_tpl->set_block('applist','appheader','appheader'); + $setup_tpl->set_block('applist','appitem','appitem'); + $setup_tpl->set_block('applist','appfooter','appfooter'); + $setup_tpl->set_block('sqlarr','sqlheader','sqlheader'); + $setup_tpl->set_block('sqlarr','sqlbody','sqlbody'); + $setup_tpl->set_block('sqlarr','sqlfooter','sqlfooter'); +} - /* Check header and authentication */ - if(!$GLOBALS['egw_setup']->auth('Config')) +$GLOBALS['egw_setup']->loaddb(); + +function parse_vars($table,$term) +{ + $GLOBALS['setup_tpl']->set_var('table', $table); + $GLOBALS['setup_tpl']->set_var('term',$term); + + list($arr,$pk,$fk,$ix,$uc) = $GLOBALS['egw_setup']->process->sql_to_array($table); + $GLOBALS['setup_tpl']->set_var('arr',$arr); + + foreach(array('pk','fk','ix','uc') as $kind) { - Header('Location: index.php'); - exit; + $GLOBALS['setup_tpl']->set_var($kind.'s',_arr2str($$kind)); } - // Does not return unless user is authorized + unset($pk,$fk,$ix,$uc); +} - $tpl_root = $GLOBALS['egw_setup']->html->setup_tpl_dir('setup'); - $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root); +function _arr2str($arr) +{ + if(!is_array($arr)) return $arr; - $cancel = get_var('cancel',Array('GET','POST')); - if($cancel) + $str = ''; + foreach($arr as $key => $val) { - Header('Location: applications.php'); - exit; + if($str) $str .= ','; + + if(!is_int($key)) + { + $str .= "'$key' => "; + } + $str .= is_array($val) ? 'array('._arr2str($val).')' : "'$val'"; } - $apps = get_var('apps',Array('GET','POST')); - $download = get_var('download',Array('GET','POST')); - $submit = get_var('submit',Array('GET','POST')); - $showall = get_var('showall',Array('GET','POST')); - $appname = get_var('appname',Array('GET','POST')); + return $str; +} + +function printout($template) +{ + $download = get_var('download',array('POST','GET')); + $appname = get_var('appname',array('POST','GET')); + $showall = get_var('showall',array('POST','GET')); + $apps = $GLOBALS['apps'] ? $GLOBALS['apps'] : ''; + if($download) { - $setup_tpl->set_file(array( - 'sqlarr' => 'arraydl.tpl' - )); - $setup_tpl->set_var('idstring',"/* \$Id" . ": tables_current.inc.php" . ",v 1.0" . " 2001/05/28 08:42:04 username " . "Exp \$ */"); - $setup_tpl->set_block('sqlarr','sqlheader','sqlheader'); - $setup_tpl->set_block('sqlarr','sqlbody','sqlbody'); - $setup_tpl->set_block('sqlarr','sqlfooter','sqlfooter'); + $GLOBALS['setup_tpl']->set_var('appname',$appname); + $GLOBALS['setup_tpl']->set_var('apps',$apps); + $string = $GLOBALS['setup_tpl']->parse('out',$template); } else { - $setup_tpl->set_file(array( - 'T_head' => 'head.tpl', - 'T_footer' => 'footer.tpl', - 'T_alert_msg' => 'msg_alert_msg.tpl', - 'T_login_main' => 'login_main.tpl', - 'T_login_stage_header' => 'login_stage_header.tpl', - 'T_setup_main' => 'schema.tpl', - 'applist' => 'applist.tpl', - 'sqlarr' => 'sqltoarray.tpl', - 'T_head' => 'head.tpl', - 'T_footer' => 'footer.tpl' - )); - $setup_tpl->set_block('T_login_stage_header','B_multi_domain','V_multi_domain'); - $setup_tpl->set_block('T_login_stage_header','B_single_domain','V_single_domain'); - $setup_tpl->set_block('T_setup_main','header','header'); - $setup_tpl->set_block('applist','appheader','appheader'); - $setup_tpl->set_block('applist','appitem','appitem'); - $setup_tpl->set_block('applist','appfooter','appfooter'); - $setup_tpl->set_block('sqlarr','sqlheader','sqlheader'); - $setup_tpl->set_block('sqlarr','sqlbody','sqlbody'); - $setup_tpl->set_block('sqlarr','sqlfooter','sqlfooter'); - } - - $GLOBALS['egw_setup']->loaddb(); - - function parse_vars($table,$term) - { - $GLOBALS['setup_tpl']->set_var('table', $table); - $GLOBALS['setup_tpl']->set_var('term',$term); - - list($arr,$pk,$fk,$ix,$uc) = $GLOBALS['egw_setup']->process->sql_to_array($table); - $GLOBALS['setup_tpl']->set_var('arr',$arr); - - foreach(array('pk','fk','ix','uc') as $kind) - { - $GLOBALS['setup_tpl']->set_var($kind.'s',_arr2str($$kind)); - } - } - - function _arr2str($arr) - { - if(!is_array($arr)) return $arr; - - $str = ''; - foreach($arr as $key => $val) - { - if($str) $str .= ','; - - if(!is_int($key)) - { - $str .= "'$key' => "; - } - $str .= is_array($val) ? 'array('._arr2str($val).')' : "'$val'"; - } - return $str; - } - - function printout($template) - { - $download = get_var('download',array('POST','GET')); - $appname = get_var('appname',array('POST','GET')); - $showall = get_var('showall',array('POST','GET')); - $apps = $GLOBALS['apps'] ? $GLOBALS['apps'] : ''; - - if($download) - { - $GLOBALS['setup_tpl']->set_var('appname',$appname); - $GLOBALS['setup_tpl']->set_var('apps',$apps); - $string = $GLOBALS['setup_tpl']->parse('out',$template); - } - else - { // $url = $GLOBALS['appname'] ? 'applications.php' : 'sqltoarray.php'; - $GLOBALS['setup_tpl']->set_var('appname',$appname); - $GLOBALS['setup_tpl']->set_var('lang_download',lang('Download')); - $GLOBALS['setup_tpl']->set_var('lang_cancel',lang('Cancel')); - $GLOBALS['setup_tpl']->set_var('showall',$showall); - $GLOBALS['setup_tpl']->set_var('apps',$apps); - $GLOBALS['setup_tpl']->set_var('action_url','sqltoarray.php'); - $GLOBALS['setup_tpl']->pfp('out',$template); - } - return $string; + $GLOBALS['setup_tpl']->set_var('appname',$appname); + $GLOBALS['setup_tpl']->set_var('lang_download',lang('Download')); + $GLOBALS['setup_tpl']->set_var('lang_cancel',lang('Cancel')); + $GLOBALS['setup_tpl']->set_var('showall',$showall); + $GLOBALS['setup_tpl']->set_var('apps',$apps); + $GLOBALS['setup_tpl']->set_var('action_url','sqltoarray.php'); + $GLOBALS['setup_tpl']->pfp('out',$template); } + return $string; +} - function download_handler($dlstring,$fn='tables_current.inc.php') - { - html::content_header($fn); - echo $dlstring; - exit; - } +function download_handler($dlstring,$fn='tables_current.inc.php') +{ + Api\Header\Content::type($fn); + echo $dlstring; + exit; +} - if($submit || $showall) - { - $dlstring = ''; - $term = ''; +if($submit || $showall) +{ + $dlstring = ''; + $term = ''; - if(!$download) - { - $GLOBALS['egw_setup']->html->show_header(); - } - - if($showall) - { - $table = $appname = ''; - } - - if(!$table && !$appname) - { - $term = ','; - $dlstring .= printout('sqlheader'); - - $GLOBALS['egw_setup']->db->connect(); - foreach($GLOBALS['egw_setup']->db->Link_ID->MetaTables() as $table) - { - parse_vars($table,$term); - $dlstring .= printout('sqlbody'); - } - $dlstring .= printout('sqlfooter'); - - } - elseif($appname) - { - $dlstring .= printout('sqlheader'); - $term = ','; - - if(!$setup_info[$appname]['tables']) - { - $f = EGW_SERVER_ROOT . '/' . $appname . '/setup/setup.inc.php'; - if(file_exists($f)) - { - include($f); - } - } - - //$tables = explode(',',$setup_info[$appname]['tables']); - $tables = $setup_info[$appname]['tables']; - $i = 0; - $tbls = count($tables); - while(list($key,$table) = @each($tables)) - { - $i++; - if($i == $tbls) - { - $term = ''; - } - parse_vars($table,$term); - $dlstring .= printout('sqlbody'); - /* $i++; */ - } - $dlstring .= printout('sqlfooter'); - } - elseif($table) - { - $term = ';'; - parse_vars($table,$term); - $dlstring .= printout('sqlheader'); - $dlstring .= printout('sqlbody'); - $dlstring .= printout('sqlfooter'); - } - if($download) - { - download_handler($dlstring); - } - } - else + if(!$download) { $GLOBALS['egw_setup']->html->show_header(); + } - $setup_tpl->set_var('action_url','sqltoarray.php'); - $setup_tpl->set_var('lang_submit','Show selected'); - $setup_tpl->set_var('lang_showall','Show all'); - $setup_tpl->set_var('title','SQL to schema_proc array util'); - $setup_tpl->set_var('lang_applist','Applications'); - $setup_tpl->set_var('select_to_download_file',lang('Select to download file')); - $setup_tpl->pfp('out','appheader'); + if($showall) + { + $table = $appname = ''; + } - $d = dir(EGW_SERVER_ROOT); - while($entry = $d->read()) + if(!$table && !$appname) + { + $term = ','; + $dlstring .= printout('sqlheader'); + + $GLOBALS['egw_setup']->db->connect(); + foreach($GLOBALS['egw_setup']->db->Link_ID->MetaTables() as $table) { - $f = EGW_SERVER_ROOT . '/' . $entry . '/setup/setup.inc.php'; + parse_vars($table,$term); + $dlstring .= printout('sqlbody'); + } + $dlstring .= printout('sqlfooter'); + + } + elseif($appname) + { + $dlstring .= printout('sqlheader'); + $term = ','; + + if(!$setup_info[$appname]['tables']) + { + $f = EGW_SERVER_ROOT . '/' . $appname . '/setup/setup.inc.php'; if(file_exists($f)) { include($f); } } - while(list($key,$data) = @each($setup_info)) + //$tables = explode(',',$setup_info[$appname]['tables']); + $tables = $setup_info[$appname]['tables']; + $i = 0; + $tbls = count($tables); + while(list($key,$table) = @each($tables)) { - if($data['tables']) + $i++; + if($i == $tbls) { - $setup_tpl->set_var('appname',$data['name']); - $setup_tpl->set_var('apptitle',$data['title']); - $setup_tpl->pfp('out','appitem'); + $term = ''; } + parse_vars($table,$term); + $dlstring .= printout('sqlbody'); + /* $i++; */ } - $setup_tpl->pfp('out','appfooter'); + $dlstring .= printout('sqlfooter'); } -?> + elseif($table) + { + $term = ';'; + parse_vars($table,$term); + $dlstring .= printout('sqlheader'); + $dlstring .= printout('sqlbody'); + $dlstring .= printout('sqlfooter'); + } + if($download) + { + download_handler($dlstring); + } +} +else +{ + $GLOBALS['egw_setup']->html->show_header(); + + $setup_tpl->set_var('action_url','sqltoarray.php'); + $setup_tpl->set_var('lang_submit','Show selected'); + $setup_tpl->set_var('lang_showall','Show all'); + $setup_tpl->set_var('title','SQL to schema_proc array util'); + $setup_tpl->set_var('lang_applist','Applications'); + $setup_tpl->set_var('select_to_download_file',lang('Select to download file')); + $setup_tpl->pfp('out','appheader'); + + $d = dir(EGW_SERVER_ROOT); + while($entry = $d->read()) + { + $f = EGW_SERVER_ROOT . '/' . $entry . '/setup/setup.inc.php'; + if(file_exists($f)) + { + include($f); + } + } + + while(list($key,$data) = @each($setup_info)) + { + if($data['tables']) + { + $setup_tpl->set_var('appname',$data['name']); + $setup_tpl->set_var('apptitle',$data['title']); + $setup_tpl->pfp('out','appitem'); + } + } + $setup_tpl->pfp('out','appfooter'); +}