From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001 From: mcramer <m.cramer@pixcept.de> Date: Tue, 16 Jul 2013 10:45:17 -0400 Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now Along with this fixed some display problems with the combo boxes introduced in 3.0.5. Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ. --- interface/lib/classes/aps_guicontroller.inc.php | 239 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 155 insertions(+), 84 deletions(-) diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php index 55d6db0..49393bd 100644 --- a/interface/lib/classes/aps_guicontroller.inc.php +++ b/interface/lib/classes/aps_guicontroller.inc.php @@ -87,11 +87,12 @@ */ private function getCustomerIDFromDomain($domain) { - $customerid = ''; + global $app; + $customerid = 0; - $customerdata = $this->db->queryOneRecord("SELECT client_id FROM sys_group, web_domain + $customerdata = $app->db->queryOneRecord("SELECT client_id FROM sys_group, web_domain WHERE web_domain.sys_groupid = sys_group.groupid - AND web_domain.domain = '".$this->db->quote($domain)."';"); + AND web_domain.domain = '".$app->db->quote($domain)."';"); if(!empty($customerdata)) $customerid = $customerdata['client_id']; return $customerid; @@ -106,18 +107,19 @@ */ private function getInstanceDataForDatalog($instanceid) { + global $app; $webserver_id = ''; - $websrv = $this->db->queryOneRecord("SELECT server_id FROM web_domain + $websrv = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain = (SELECT value FROM aps_instances_settings - WHERE name = 'main_domain' AND instance_id = ".$this->db->quote($instanceid).");"); + WHERE name = 'main_domain' AND instance_id = ".$app->db->quote($instanceid).");"); // If $websrv is empty, an error has occured. Domain no longer existing? Settings table damaged? // Anyhow, remove this instance record because it's not useful at all if(empty($websrv)) { - $this->db->query("DELETE FROM aps_instances WHERE id = ".$this->db->quote($instanceid).";"); - $this->db->query("DELETE FROM aps_instances_settings WHERE instance_id = ".$this->db->quote($instanceid).";"); + $app->db->query("DELETE FROM aps_instances WHERE id = ".$app->db->quote($instanceid).";"); + $app->db->query("DELETE FROM aps_instances_settings WHERE instance_id = ".$app->db->quote($instanceid).";"); } else $webserver_id = $websrv['server_id']; @@ -133,12 +135,14 @@ */ public function getNewestPackageID($id) { + global $app; + if(preg_match('/^[0-9]+$/', $id) != 1) return 0; - $result = $this->db->queryOneRecord("SELECT id, name, + $result = $app->db->queryOneRecord("SELECT id, name, CONCAT(version, '-', CAST(`release` AS CHAR)) AS current_version FROM aps_packages - WHERE name = (SELECT name FROM aps_packages WHERE id = ".$this->db->quote($id).") + WHERE name = (SELECT name FROM aps_packages WHERE id = ".$app->db->quote($id).") ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC"); if(!empty($result) && ($id != $result['id'])) return $result['id']; @@ -155,13 +159,15 @@ */ public function isValidPackageID($id, $is_admin = false) { + global $app; + if(preg_match('/^[0-9]+$/', $id) != 1) return false; $sql_ext = (!$is_admin) ? 'package_status = '.PACKAGE_ENABLED.' AND' : '(package_status = '.PACKAGE_ENABLED.' OR package_status = '.PACKAGE_LOCKED.') AND'; - $result = $this->db->queryOneRecord("SELECT id FROM aps_packages WHERE ".$sql_ext." id = ".$this->db->quote($id).";"); + $result = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE ".$sql_ext." id = ".$app->db->quote($id).";"); if(!$result) return false; return true; @@ -177,12 +183,14 @@ */ public function isValidInstanceID($id, $client_id, $is_admin = false) { + global $app; + if(preg_match('/^[0-9]+$/', $id) != 1) return false; // Only filter if not admin - $sql_ext = (!$is_admin) ? 'customer_id = '.$this->db->quote($client_id).' AND' : ''; + $sql_ext = (!$is_admin) ? 'customer_id = '.$app->db->quote($client_id).' AND' : ''; - $result = $this->db->queryOneRecord('SELECT id FROM aps_instances WHERE '.$sql_ext.' id = '.$this->db->quote($id).';'); + $result = $app->db->queryOneRecord('SELECT id FROM aps_instances WHERE '.$sql_ext.' id = '.$app->db->quote($id).';'); if(!$result) return false; return true; @@ -199,28 +207,34 @@ { global $app; - include_once(ISPC_WEB_PATH.'/sites/tools.inc.php'); - + $app->uses('tools_sites'); + $webserver_id = 0; - $websrv = $this->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '".$this->db->quote($settings['main_domain'])."';"); + $websrv = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '".$app->db->quote($settings['main_domain'])."';"); if(!empty($websrv)) $webserver_id = $websrv['server_id']; $customerid = $this->getCustomerIDFromDomain($settings['main_domain']); - if(empty($settings) || empty($customerid) || empty($webserver_id)) return false; + if(empty($settings) || empty($webserver_id)) return false; //* Get server config of the web server - $this->app->uses("getconf"); - $web_config = $this->app->getconf->get_server_config(intval($websrv["server_id"]),'web'); + $app->uses("getconf"); + $web_config = $app->getconf->get_server_config($app->functions->intval($websrv["server_id"]),'web'); - //* Set mysql mode to php-fcgi and enable suexec in website on apache servers + //* Set PHP mode to php-fcgi and enable suexec in website on apache servers / set PHP mode to PHP-FPM on nginx servers if($web_config['server_type'] == 'apache') { - if($websrv['php'] != 'fast-cgi' || $websrv['suexec'] != 'y') { + if(($websrv['php'] != 'fast-cgi' || $websrv['suexec'] != 'y') && $websrv['php'] != 'php-fpm') { $app->db->datalogUpdate('web_domain', "php = 'fast-cgi', suexec = 'y'", 'domain_id', $websrv['domain_id']); + } + } else { + // nginx + if($websrv['php'] != 'php-fpm' && $websrv['php'] != 'fast-cgi') { + $app->db->datalogUpdate('web_domain', "php = 'php-fpm'", 'domain_id', $websrv['domain_id']); } } + //* Create the MySQL database for the application - $pkg = $this->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$this->db->quote($packageid).';'); + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($packageid).';'); $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; $sxe = $this->readInMetaFile($metafile); @@ -231,38 +245,67 @@ $tmp = array(); $tmp['parent_domain_id'] = $websrv['domain_id']; $tmp['sys_groupid'] = $websrv['sys_groupid']; - $dbname_prefix = replacePrefix($global_config['dbname_prefix'], $tmp); - $dbuser_prefix = replacePrefix($global_config['dbuser_prefix'], $tmp); + $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $tmp); + $dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $tmp); unset($tmp); - //* get the default database server of the client - $client = $app->db->queryOneRecord("SELECT default_dbserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ".$websrv['sys_groupid']); - if(is_array($client) && $client['default_dbserver'] > 0 && $client['default_dbserver'] != $websrv['server_id']) { - $mysql_db_server_id = $client['default_dbserver']; - $dbserver_config = $web_config = $app->getconf->get_server_config(intval($mysql_db_server_id),'server'); - $mysql_db_host = $dbserver_config['ip_address']; - $mysql_db_remote_access = 'y'; - $mysql_db_remote_ips = $dbserver_config['ip_address']; - } else { + // get information if the webserver is a db server, too + $web_server = $app->db->queryOneRecord("SELECT server_id,server_name,db_server FROM server WHERE server_id = ".$websrv['server_id']); + if($web_server['db_server'] == 1) { + // create database on "localhost" (webserver) $mysql_db_server_id = $websrv['server_id']; $mysql_db_host = 'localhost'; $mysql_db_remote_access = 'n'; $mysql_db_remote_ips = ''; - } + } else { + //* get the default database server of the client + $client = $app->db->queryOneRecord("SELECT default_dbserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ".$websrv['sys_groupid']); + if(is_array($client) && $client['default_dbserver'] > 0 && $client['default_dbserver'] != $websrv['server_id']) { + $mysql_db_server_id = $client['default_dbserver']; + $dbserver_config = $web_config = $app->getconf->get_server_config($app->functions->intval($mysql_db_server_id),'server'); + $mysql_db_host = $dbserver_config['ip_address']; + $mysql_db_remote_access = 'y'; + $webserver_config = $app->getconf->get_server_config($app->functions->intval($websrv['server_id']),'server'); + $mysql_db_remote_ips = $webserver_config['ip_address']; + } else { + /* I left this in place for a fallback that should NEVER! happen. + * if we reach this point it means that there is NO default db server for the client + * AND the webserver has NO db service enabled. + * We have to abort the aps installation here... so I added a return false + * although this does not present any error message to the user. + */ + return false; + + /*$mysql_db_server_id = $websrv['server_id']; + $mysql_db_host = 'localhost'; + $mysql_db_remote_access = 'n'; + $mysql_db_remote_ips = '';*/ + } + } - //* Find a free db name for the app + //* Find a free db name for the app for($n = 1; $n <= 1000; $n++) { - $mysql_db_name = $dbname_prefix.'aps'.$n; - $mysql_db_user = $dbuser_prefix.'aps'.$n; - $tmp = $app->db->queryOneRecord("SELECT count(database_id) as number FROM web_database WHERE database_name = '".$app->db->quote($mysql_db_user)."' OR database_user = '".$app->db->quote($mysql_db_name)."'"); + $mysql_db_name = ($dbname_prefix != '' ? $dbname_prefix.'aps'.$n : uniqid('aps')); + $tmp = $app->db->queryOneRecord("SELECT count(database_id) as number FROM web_database WHERE database_name = '".$app->db->quote($mysql_db_name)."'"); + if($tmp['number'] == 0) break; + } + //* Find a free db username for the app + for($n = 1; $n <= 1000; $n++) { + $mysql_db_user = ($dbuser_prefix != '' ? $dbuser_prefix.'aps'.$n : uniqid('aps')); + $tmp = $app->db->queryOneRecord("SELECT count(database_user_id) as number FROM web_database_user WHERE database_user = '".$app->db->quote($mysql_db_user)."'"); if($tmp['number'] == 0) break; } $mysql_db_password = $settings['main_database_password']; + //* Create the mysql database user + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `database_user`, `database_user_prefix`, `database_password`) + VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', 0, '$mysql_db_user', '".$app->db->quote($dbuser_prefix) . "', PASSWORD('$mysql_db_password'))"; + $mysql_db_user_id = $app->db->datalogInsert('web_database_user', $insert_data, 'database_user_id'); + //* Create the mysql database - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `parent_domain_id`, `type`, `database_name`, `database_user`, `database_password`, `database_charset`, `remote_access`, `remote_ips`, `backup_copies`, `active`, `backup_interval`) - VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', $mysql_db_server_id, ".$websrv['domain_id'].", 'mysql', '$mysql_db_name', '$mysql_db_user', PASSWORD('$mysql_db_password'), '', '$mysql_db_remote_access', '$mysql_db_remote_ips', ".$websrv['backup_copies'].", 'y', '".$websrv['backup_interval']."')"; + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `parent_domain_id`, `type`, `database_name`, `database_name_prefix`, `database_user_id`, `database_ro_user_id`, `database_charset`, `remote_access`, `remote_ips`, `backup_copies`, `active`, `backup_interval`) + VALUES( ".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', $mysql_db_server_id, ".$websrv['domain_id'].", 'mysql', '$mysql_db_name', '" . $app->db->quote($dbname_prefix) . "', '$mysql_db_user_id', 0, '', '$mysql_db_remote_access', '$mysql_db_remote_ips', ".$websrv['backup_copies'].", 'y', '".$websrv['backup_interval']."')"; $app->db->datalogInsert('web_database', $insert_data, 'database_id'); //* Add db details to package settings @@ -273,14 +316,14 @@ } //* Insert new package instance - $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', ".$this->db->quote($webserver_id).",".$this->db->quote($customerid).", ".$this->db->quote($packageid).", ".INSTANCE_PENDING.")"; + $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `customer_id`, `package_id`, `instance_status`) VALUES (".$websrv['sys_userid'].", ".$websrv['sys_groupid'].", 'riud', '".$websrv['sys_perm_group']."', '', ".$app->db->quote($webserver_id).",".$app->db->quote($customerid).", ".$app->db->quote($packageid).", ".INSTANCE_PENDING.")"; $InstanceID = $app->db->datalogInsert('aps_instances', $insert_data, 'id'); //* Insert all package settings if(is_array($settings)) { foreach($settings as $key => $value) { - $insert_data = "(server_id, instance_id, name, value) VALUES (".$this->db->quote($webserver_id).",".$this->db->quote($InstanceID).", '".$this->db->quote($key)."', '".$this->db->quote($value)."')"; - $this->db->datalogInsert('aps_instances_settings', $insert_data, 'id'); + $insert_data = "(server_id, instance_id, name, value) VALUES (".$app->db->quote($webserver_id).",".$app->db->quote($InstanceID).", '".$app->db->quote($key)."', '".$app->db->quote($value)."')"; + $app->db->datalogInsert('aps_instances_settings', $insert_data, 'id'); } } @@ -296,17 +339,28 @@ */ public function deleteInstance($instanceid) { - /* - $this->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_REMOVE." WHERE id = ".$instanceid.";"); + global $app; + /* + $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_REMOVE." WHERE id = ".$instanceid.";"); $webserver_id = $this->getInstanceDataForDatalog($instanceid); if($webserver_id == '') return; // Create a sys_datalog entry for deletion $datalog = array('Instance_id' => $instanceid, 'server_id' => $webserver_id); - $this->db->datalogSave('aps', 'DELETE', 'id', $instanceid, array(), $datalog); + $app->db->datalogSave('aps', 'DELETE', 'id', $instanceid, array(), $datalog); */ - $this->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_REMOVE, 'id', $instanceid); + + $sql = "SELECT web_database.database_id as database_id, web_database.database_user_id as `database_user_id` FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.value = aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); + + $database_user = $tmp['database_user_id']; + $tmp = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_database` WHERE `database_user_id` = '" . $app->functions->intval($database_user) . "' OR `database_ro_user_id` = '" . $app->functions->intval($database_user) . "'"); + if($tmp['cnt'] < 1) $app->db->datalogDelete('web_database_user', 'database_user_id', $database_user); + + $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_REMOVE, 'id', $instanceid); + } /** @@ -317,17 +371,24 @@ */ public function reinstallInstance($instanceid) { + global $app; + /* - $this->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_INSTALL." WHERE id = ".$instanceid.";"); + $app->db->query("UPDATE aps_instances SET instance_status = ".INSTANCE_INSTALL." WHERE id = ".$instanceid.";"); $webserver_id = $this->getInstanceDataForDatalog($instanceid); if($webserver_id == '') return; // Create a sys_datalog entry for re-installation $datalog = array('instance_id' => $instanceid, 'server_id' => $webserver_id); - $this->db->datalogSave('aps', 'INSERT', 'id', $instanceid, array(), $datalog); + $app->db->datalogSave('aps', 'INSERT', 'id', $instanceid, array(), $datalog); */ - $this->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $instanceid); + + $sql = "SELECT web_database.database_id as database_id FROM aps_instances_settings, web_database WHERE aps_instances_settings.value = web_database.database_name AND aps_instances_settings.value = aps_instances_settings.name = 'main_database_name' AND aps_instances_settings.instance_id = ".$instanceid." LIMIT 0,1"; + $tmp = $app->db->queryOneRecord($sql); + if($tmp['database_id'] > 0) $app->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); + + $app->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $instanceid); } /** @@ -338,7 +399,9 @@ */ public function getPackageSettings($id) { - $pkg = $this->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$this->db->quote($id).';'); + global $app; + + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); // Load in meta file if existing and register its namespaces $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; @@ -425,6 +488,8 @@ */ public function validateInstallerInput($postinput, $pkg_details, $domains, $settings = array()) { + global $app; + $ret = array(); $input = array(); $error = array(); @@ -432,10 +497,10 @@ // Main domain (obligatory) if(isset($postinput['main_domain'])) { - if(!in_array($postinput['main_domain'], $domains)) $error[] = $this->app->lng('error_main_domain'); + if(!in_array($postinput['main_domain'], $domains)) $error[] = $app->lng('error_main_domain'); else $input['main_domain'] = $postinput['main_domain']; } - else $error[] = $this->app->lng('error_main_domain'); + else $error[] = $app->lng('error_main_domain'); // Main location (not obligatory but must be supplied) if(isset($postinput['main_location'])) @@ -450,13 +515,13 @@ $main_location = $this->secureLocation($main_location); // Only allow digits, words, / and - $main_location = preg_replace("/[^\d\w\/\-]/i", "", $main_location); - if($userinput && (strlen($main_location) == 0)) $temp_errstr = $this->app->lng('error_inv_main_location'); + if($userinput && (strlen($main_location) == 0)) $temp_errstr = $app->lng('error_inv_main_location'); // Find out document_root and make sure no apps are installed twice to one location if(in_array($postinput['main_domain'], $domains)) { - $docroot = $this->db->queryOneRecord("SELECT document_root FROM web_domain - WHERE domain = '".$this->db->quote($postinput['main_domain'])."';"); + $docroot = $app->db->queryOneRecord("SELECT document_root FROM web_domain + WHERE domain = '".$app->db->quote($postinput['main_domain'])."';"); $new_path = $docroot['document_root']; if(substr($new_path, -1) != '/') $new_path .= '/'; $new_path .= $main_location; @@ -468,52 +533,52 @@ // and get the corresponding document roots as well as the defined // locations. If an existing doc_root + location matches with the // new one -> error - $instance_domains = $this->db->queryAllRecords("SELECT instance_id, s.value AS domain + $instance_domains = $app->db->queryAllRecords("SELECT instance_id, s.value AS domain FROM aps_instances AS i, aps_instances_settings AS s WHERE i.id = s.instance_id AND s.name = 'main_domain' - AND i.customer_id = '".$this->db->quote($customerid)."';"); + AND i.customer_id = '".$app->db->quote($customerid)."';"); for($i = 0; $i < count($instance_domains); $i++) { $used_path = ''; - $doc_root = $this->db->queryOneRecord("SELECT document_root FROM web_domain - WHERE domain = '".$this->db->quote($instance_domains[$i]['domain'])."';"); + $doc_root = $app->db->queryOneRecord("SELECT document_root FROM web_domain + WHERE domain = '".$app->db->quote($instance_domains[$i]['domain'])."';"); // Probably the domain settings were changed later, so make sure the doc_root // is not empty for further validation if(!empty($doc_root)) { - $used_path = $docroot['document_root']; + $used_path = $doc_root['document_root']; if(substr($used_path, -1) != '/') $used_path .= '/'; - $location_for_domain = $this->db->queryOneRecord("SELECT value + $location_for_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_location' - AND instance_id = '".$this->db->quote($instance_domains[$i]['instance_id'])."';"); + AND instance_id = '".$app->db->quote($instance_domains[$i]['instance_id'])."';"); // The location might be empty but the DB return must not be false! - if($location_for_domain) $used_path .= $location_for_domain['value']; + if($location_for_domain) $used_path .= $location_for_domain['value']; if($new_path == $used_path) { - $temp_errstr = $this->app->lng('error_used_location'); + $temp_errstr = $app->lng('error_used_location'); break; } } } } - else $temp_errstr = $this->app->lng('error_main_domain'); + else $temp_errstr = $app->lng('error_main_domain'); if($temp_errstr == '') $input['main_location'] = htmlspecialchars($main_location); else $error[] = $temp_errstr; } - else $error[] = $this->app->lng('error_no_main_location'); + else $error[] = $app->lng('error_no_main_location'); // License (the checkbox must be set) if(isset($pkg_details['License need agree']) && $pkg_details['License need agree'] == 'true') { if(isset($postinput['license']) && $postinput['license'] == 'on') $input['license'] = 'true'; - else $error[] = $this->app->lng('error_license_agreement'); + else $error[] = $app->lng('error_license_agreement'); } // Database @@ -522,12 +587,12 @@ { if(isset($postinput['main_database_password'])) { - if($postinput['main_database_password'] == '') $error[] = $this->app->lng('error_no_database_pw'); + if($postinput['main_database_password'] == '') $error[] = $app->lng('error_no_database_pw'); else if(strlen($postinput['main_database_password']) > 8) $input['main_database_password'] = htmlspecialchars($postinput['main_database_password']); - else $error[] = $this->app->lng('error_short_database_pw'); + else $error[] = $app->lng('error_short_database_pw'); } - else $error[] = $this->app->lng('error_no_database_pw'); + else $error[] = $app->lng('error_no_database_pw'); } // Validate the package settings @@ -542,38 +607,38 @@ { if($setting['SettingType'] == 'string' || $setting['SettingType'] == 'password') { - if(intval($setting['SettingMinLength']) != 0 - && strlen($postinput[$setting_id]) < intval($setting['SettingMinLength'])) - $temp_errstr = sprintf($this->app->lng('error_short_value_for'), $setting['setting_name']); + if($app->functions->intval($setting['SettingMinLength'], true) != 0 + && strlen($postinput[$setting_id]) < $app->functions->intval($setting['SettingMinLength'], true)) + $temp_errstr = sprintf($app->lng('error_short_value_for'), $setting['setting_name']); - if(intval($setting['SettingMaxLength']) != 0 - && strlen($postinput[$setting_id]) > intval($setting['SettingMaxLength'])) - $temp_errstr = sprintf($this->app->lng('error_long_value_for'), $setting['setting_name']); + if($app->functions->intval($setting['SettingMaxLength'], true) != 0 + && strlen($postinput[$setting_id]) > $app->functions->intval($setting['SettingMaxLength'], true)) + $temp_errstr = sprintf($app->lng('error_long_value_for'), $setting['setting_name']); if(isset($setting['SettingRegex']) && !preg_match("/".$setting['SettingRegex']."/", $postinput[$setting_id])) - $temp_errstr = sprintf($this->app->lng('error_inv_value_for'), $setting['setting_name']); + $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['setting_name']); } else if($setting['SettingType'] == 'email') { if(filter_var(strtolower($postinput[$setting_id]), FILTER_VALIDATE_EMAIL) === false) - $temp_errstr = sprintf($this->app->lng('error_inv_email_for'), $setting['setting_name']); + $temp_errstr = sprintf($app->lng('error_inv_email_for'), $setting['setting_name']); } else if($setting['SettingType'] == 'domain-name') { if(!preg_match("^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$", $postinput[$setting_id])) - $temp_errstr = sprintf($this->app->lng('error_inv_domain_for'), $setting['setting_name']); + $temp_errstr = sprintf($app->lng('error_inv_domain_for'), $setting['setting_name']); } else if($setting['SettingType'] == 'integer') { if(filter_var($postinput[$setting_id], FILTER_VALIDATE_INT) === false) - $temp_errstr = sprintf($this->app->lng('error_inv_integer_for'), $setting['setting_name']); + $temp_errstr = sprintf($app->lng('error_inv_integer_for'), $setting['setting_name']); } else if($setting['SettingType'] == 'float') { if(filter_var($postinput[$setting_id], FILTER_VALIDATE_FLOAT) === false) - $temp_errstr = sprintf($this->app->lng('error_inv_float_for'), $setting['setting_name']); + $temp_errstr = sprintf($app->lng('error_inv_float_for'), $setting['setting_name']); } else if($setting['SettingType'] == 'boolean') { @@ -590,13 +655,13 @@ if($setting['SettingChoices'][$i]['EnumID'] == $postinput[$setting_id]) $found = true; } - if(!$found) $temp_errstr = sprintf($this->app->lng('error_inv_value_for'), $setting['SettingName']); + if(!$found) $temp_errstr = sprintf($app->lng('error_inv_value_for'), $setting['SettingName']); } if($temp_errstr == '') $input[$setting_id] = $postinput[$setting_id]; else $error[] = $temp_errstr; } - else $error[] = sprintf($this->app->lng('error_no_value_for'), $setting['SettingName']); + else $error[] = sprintf($app->lng('error_no_value_for'), $setting['SettingName']); } $ret['input'] = $input; @@ -613,7 +678,9 @@ */ public function getPackageDetails($id) { - $pkg = $this->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$this->db->quote($id).';'); + global $app; + + $pkg = $app->db->queryOneRecord('SELECT * FROM aps_packages WHERE id = '.$app->db->quote($id).';'); // Load in meta file if existing and register its namespaces $metafile = $this->interface_pkg_dir.'/'.$pkg['path'].'/APP-META.xml'; @@ -661,6 +728,8 @@ // Using parse_url() to filter malformed URLs $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$icon); + // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path + $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); $pkg['Icon'] = $path; } else $pkg['Icon'] = ''; @@ -674,6 +743,8 @@ // Using parse_url() to filter malformed URLs $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'. basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$screen['path']); + // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path + $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path); $pkg['Screenshots'][] = array('ScreenPath' => $path, 'ScreenDescription' => htmlspecialchars(trim((string)$screen->description))); -- Gitblit v1.9.1