auth->check_module_permissions('aps'); $gui = new ApsGUIController($app); // An action and ID are required in any case if(!isset($_GET['action'])) die; // 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; // 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)) { $app->db->query("UPDATE aps_packages SET PackageStatus = ".PACKAGE_ENABLED." WHERE ID = '".intval($_GET['id'])."';"); echo '
'.$app->lng('Yes').'
'; } else { $app->db->query("UPDATE aps_packages SET PackageStatus = ".PACKAGE_LOCKED." WHERE ID = '".intval($_GET['id'])."';"); echo '
'.$app->lng('No').'
'; } } else if($_GET['action'] == 'delete_instance') { // Make sure a valid package ID is given (also corresponding to the calling user) $client_id = 0; $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false; if(!$is_admin) { $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';"); $client_id = $cid['client_id']; } // 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')); // 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.");"); if(!empty($check)) $gui->deleteInstance($_GET['id']); echo $app->lng('Installation_remove'); } else if($_GET['action'] == 'reinstall_instance') { // Make sure a valid package ID is given (also corresponding to the calling user) $client_id = 0; $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false; if(!$is_admin) { $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';"); $client_id = $cid['client_id']; } // 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 $gui->reinstallInstance($_GET['id']); echo $app->lng('Installation_task'); } ?>