interface/lib/classes/aps_guicontroller.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/web/sites/aps_cron_apscrawler_if.php | ●●●●● patch | view | raw | blame | history | |
interface/web/sites/aps_do_operation.php | ●●●●● patch | view | raw | blame | history | |
interface/web/sites/aps_installedpackages_list.php | ●●●●● patch | view | raw | blame | history | |
server/lib/classes/aps_installer.inc.php | ●●●●● patch | view | raw | blame | history | |
server/plugins-available/aps_plugin.inc.php | ●●●●● patch | view | raw | blame | history |
interface/lib/classes/aps_guicontroller.inc.php
@@ -87,7 +87,7 @@ */ private function getCustomerIDFromDomain($domain) { $customerid = ''; $customerid = 0; $customerdata = $this->db->queryOneRecord("SELECT client_id FROM sys_group, web_domain WHERE web_domain.sys_groupid = sys_group.groupid @@ -206,7 +206,7 @@ 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"); @@ -306,6 +306,11 @@ $datalog = array('Instance_id' => $instanceid, 'server_id' => $webserver_id); $this->db->datalogSave('aps', 'DELETE', 'id', $instanceid, array(), $datalog); */ $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 = $this->db->queryOneRecord($sql); if($tmp['database_id'] > 0) $this->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); $this->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_REMOVE, 'id', $instanceid); } @@ -327,6 +332,11 @@ $datalog = array('instance_id' => $instanceid, 'server_id' => $webserver_id); $this->db->datalogSave('aps', 'INSERT', 'id', $instanceid, array(), $datalog); */ $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 = $this->db->queryOneRecord($sql); if($tmp['database_id'] > 0) $this->db->datalogDelete('web_database', 'database_id', $tmp['database_id']); $this->db->datalogUpdate('aps_instances', "instance_status = ".INSTANCE_INSTALL, 'id', $instanceid); } interface/web/sites/aps_cron_apscrawler_if.php
@@ -32,8 +32,8 @@ //require_once('classes/class.crawler.php'); $app->load('aps_crawler'); if(!@ini_get('allow_url_fopen')) $app->error('allow_url_fopen is not enabled'); if(!function_exists('curl_version')) $app->error('cURL is not available'); if(!@ini_get('allow_url_fopen')) $app->error('allow_url_fopen is not enabled.'); if(!function_exists('curl_version')) $app->error('The PHP CURL extension is not available.'); $log_prefix = 'APS crawler cron: '; interface/web/sites/aps_do_operation.php
@@ -30,35 +30,35 @@ require_once('../../lib/config.inc.php'); require_once('../../lib/app.inc.php'); require_once('classes/class.guicontroller.php'); $app->load('aps_guicontroller'); // Check the module permissions $app->auth->check_module_permissions('aps'); $app->auth->check_module_permissions('sites'); $gui = new ApsGUIController($app); // An action and ID are required in any case if(!isset($_GET['action'])) die; if(!isset($_GET['action'])) die('No action'); // List of operations which can be performed if($_GET['action'] == 'change_status') { // Only admins can perform this operation if($_SESSION['s']['user']['typ'] != 'admin') die; if($_SESSION['s']['user']['typ'] != 'admin') die('For admin use only.'); // Make sure a valid package ID is given if(!$gui->isValidPackageID($_GET['id'], true)) die($app->lng('Invalid ID')); // Change the existing status to the opposite $get_status = $app->db->queryOneRecord("SELECT PackageStatus FROM aps_packages WHERE ID = '".intval($_GET['id'])."';"); if($get_status['PackageStatus'] == strval(PACKAGE_LOCKED)) $get_status = $app->db->queryOneRecord("SELECT package_status FROM aps_packages WHERE id = '".intval($_GET['id'])."';"); if($get_status['package_status'] == strval(PACKAGE_LOCKED)) { $app->db->query("UPDATE aps_packages SET PackageStatus = ".PACKAGE_ENABLED." WHERE ID = '".intval($_GET['id'])."';"); $app->db->query("UPDATE aps_packages SET package_status = ".PACKAGE_ENABLED." WHERE id = '".intval($_GET['id'])."';"); echo '<div class="swap" id="ir-Yes"><span>'.$app->lng('Yes').'</span></div>'; } else { $app->db->query("UPDATE aps_packages SET PackageStatus = ".PACKAGE_LOCKED." WHERE ID = '".intval($_GET['id'])."';"); $app->db->query("UPDATE aps_packages SET Package_status = ".PACKAGE_LOCKED." WHERE id = '".intval($_GET['id'])."';"); echo '<div class="swap" id="ir-No"><span>'.$app->lng('No').'</span></div>'; } } @@ -76,9 +76,9 @@ if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID')); // Only delete the instance if the status is "installed" or "flawed" $check = $app->db->queryOneRecord("SELECT ID FROM aps_instances WHERE ID = ".$app->db->quote($_GET['id'])." AND (InstanceStatus = ".INSTANCE_SUCCESS." OR InstanceStatus = ".INSTANCE_ERROR.");"); $check = $app->db->queryOneRecord("SELECT id FROM aps_instances WHERE id = ".$app->db->quote($_GET['id'])." AND (instance_status = ".INSTANCE_SUCCESS." OR instance_status = ".INSTANCE_ERROR.");"); if(!empty($check)) $gui->deleteInstance($_GET['id']); echo $app->lng('Installation_remove'); @@ -96,13 +96,13 @@ // Assume that the given instance belongs to the currently calling client_id. Unimportant if status is admin if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID')); // We've an InstanceID, so make sure the package is no enabled and InstanceStatus is still "installed" $check = $app->db->queryOneRecord("SELECT aps_instances.ID FROM aps_instances, aps_packages WHERE aps_instances.PackageID = aps_packages.ID AND aps_instances.InstanceStatus = ".INSTANCE_SUCCESS." AND aps_packages.PackageStatus = ".PACKAGE_ENABLED." AND aps_instances.ID = ".$app->db->quote($_GET['id']).";"); if(!$check) die; // normally this might not happen at all, so just die // We've an InstanceID, so make sure the package is not enabled and InstanceStatus is still "installed" $check = $app->db->queryOneRecord("SELECT aps_instances.id FROM aps_instances, aps_packages WHERE aps_instances.package_id = aps_packages.id AND aps_instances.instance_status = ".INSTANCE_SUCCESS." AND aps_packages.package_status = ".PACKAGE_ENABLED." AND aps_instances.id = ".$app->db->quote($_GET['id']).";"); if(!$check) die('Check failed'); // normally this might not happen at all, so just die $gui->reinstallInstance($_GET['id']); echo $app->lng('Installation_task'); interface/web/sites/aps_installedpackages_list.php
@@ -82,6 +82,7 @@ $limit_sql = $app->listform->getPagingSQL($sql_where); $app->tpl->setVar('paging', $app->listform->pagingHTML); if(!$is_admin) { // Our query over multiple tables $query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id, aps_instances.customer_id AS customer_id, client.username AS customer_name, @@ -92,7 +93,20 @@ '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) AS install_location FROM aps_instances, aps_packages, client WHERE client.client_id = aps_instances.Customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql; WHERE client.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql; } else { $query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id, aps_instances.customer_id AS customer_id, sys_group.name AS customer_name, aps_instances.instance_status AS instance_status, aps_packages.name AS package_name, aps_packages.version AS package_version, aps_packages.release AS package_release, aps_packages.package_status AS package_status, CONCAT ((SELECT value FROM aps_instances_settings WHERE name='main_domain' AND instance_id = aps_instances.id), '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) AS install_location FROM aps_instances, aps_packages, sys_group WHERE sys_group.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql; } $records = $app->db->queryAllRecords($query); $app->listform_actions->DataRowColor = '#FFFFFF'; server/lib/classes/aps_installer.inc.php
@@ -586,10 +586,15 @@ else return false; // Get all instance metadata /* $task = $this->app->db->queryOneRecord("SELECT * FROM aps_instances AS i INNER JOIN aps_packages AS p ON i.package_id = p.id INNER JOIN client AS c ON i.customer_id = c.client_id WHERE i.id = ".$instanceid.";"); */ $task = $this->app->db->queryOneRecord("SELECT * FROM aps_instances AS i INNER JOIN aps_packages AS p ON i.package_id = p.id WHERE i.id = ".$instanceid.";"); if(!$task) return false; // formerly: throw new Exception('The InstanceID doesn\'t exist.'); if(!isset($task['instance_id'])) $task['instance_id'] = $instanceid; server/plugins-available/aps_plugin.inc.php
@@ -57,7 +57,7 @@ global $app; // Register the available events $app->plugins->registerEvent('aps_instance_install', $this->plugin_name, 'install'); $app->plugins->registerEvent('aps_instance_insert', $this->plugin_name, 'install'); $app->plugins->registerEvent('aps_instance_update', $this->plugin_name, 'install'); $app->plugins->registerEvent('aps_instance_delete', $this->plugin_name, 'delete'); } @@ -78,6 +78,12 @@ $app->log("Running installHandler",LOGLEVEL_DEBUG); $aps->installHandler($instanceid, 'install'); } if($data['new']['instance_status'] == INSTANCE_REMOVE) { $aps = new ApsInstaller($app); $app->log("Running installHandler",LOGLEVEL_DEBUG); $aps->installHandler($instanceid, 'delete'); } } /**