From bfcdef6bc91753cb2044e3626f522b5b1aec129f Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 14 Nov 2012 05:34:56 -0500 Subject: [PATCH] Merged revisions 3596-3670 from 3.0.5 stable branch. --- interface/lib/classes/aps_crawler.inc.php | 64 +++++++++++++++++-------------- 1 files changed, 35 insertions(+), 29 deletions(-) diff --git a/interface/lib/classes/aps_crawler.inc.php b/interface/lib/classes/aps_crawler.inc.php index 25a700f..ca3402e 100644 --- a/interface/lib/classes/aps_crawler.inc.php +++ b/interface/lib/classes/aps_crawler.inc.php @@ -54,6 +54,8 @@ */ private function checkRequirements() { + global $app; + try { // Check if allow_url_fopen is enabled @@ -77,7 +79,7 @@ } catch(Exception $e) { - $this->app->log($this->log_prefix.'Aborting execution because '.$e->getMessage(), LOGLEVEL_ERROR); + $app->log($this->log_prefix.'Aborting execution because '.$e->getMessage(), LOGLEVEL_ERROR); return false; } } @@ -213,6 +215,8 @@ */ public function startCrawler() { + global $app; + try { // Make sure the requirements are given so that this script can execute @@ -220,7 +224,7 @@ if(!$req_ret) return false; // Execute the open task and first fetch all vendors (APS catalog API 1.1, p. 12) - $this->app->log($this->log_prefix.'Fetching data from '.$this->fetch_url); + $app->log($this->log_prefix.'Fetching data from '.$this->fetch_url); $vendor_page = $this->fetchPage('/all-app/'); //$vendor_page = $this->fetchPage('/'.$this->aps_version.'/'); preg_match_all("/\<a href=\"(.+)\/\" class=\"vendor\"/i", $vendor_page, $matches); @@ -242,7 +246,7 @@ // Get all known apps from the database and the highest known version // Note: A dirty hack is used for numerical sorting of the VARCHAR field Version: +0 -> cast // A longer but typesafe way would be: ORDER BY CAST(REPLACE(Version, '.', '') AS UNSIGNED) DESC - $existing_apps = $this->db->queryAllRecords("SELECT * FROM ( + $existing_apps = $app->db->queryAllRecords("SELECT * FROM ( SELECT name AS Name, CONCAT(version, '-', CAST(`release` AS CHAR)) AS CurrentVersion FROM aps_packages ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC ) as Versions GROUP BY name"); @@ -325,14 +329,14 @@ if(file_exists($old_folder)) $this->removeDirectory($old_folder); /* - $this->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_OUTDATED."' WHERE name = '". - $this->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '". - $this->db->quote($ex_ver)."';"); + $app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_OUTDATED."' WHERE name = '". + $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '". + $app->db->quote($ex_ver)."';"); */ - $tmp = $this->db->queryOneRecord("SELECT id FROM aps_packages WHERE name = '". - $this->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '". - $this->db->quote($ex_ver)."';"); - $this->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_OUTDATED, 'id', $tmp['id']); + $tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE name = '". + $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '". + $app->db->quote($ex_ver)."';"); + $app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_OUTDATED, 'id', $tmp['id']); unset($tmp); } @@ -446,19 +450,19 @@ if($apps_to_dl_chunks[$i][$j]['filesize'] != 0 && $apps_to_dl_chunks[$i][$j]['filesize'] != filesize($apps_to_dl_chunks[$i][$j]['localtarget'])) { - $this->app->log($this->log_prefix.' The filesize of the package "'. + $app->log($this->log_prefix.' The filesize of the package "'. $apps_to_dl_chunks[$i][$j]['name'].'" is wrong. Download failure?', LOGLEVEL_WARN); } } } - $this->app->log($this->log_prefix.'Processed '.$apps_in_repo. + $app->log($this->log_prefix.'Processed '.$apps_in_repo. ' apps from the repo. Downloaded '.$apps_updated. ' updates, '.$apps_downloaded.' new apps'); } catch(Exception $e) { - $this->app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR); + $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR); return false; } } @@ -472,6 +476,8 @@ */ public function parseFolderToDB() { + global $app; + try { // This method must be used in server mode @@ -491,14 +497,14 @@ // Get registered packages and mark non-existant packages with an error code to omit the install $existing_packages = array(); - $path_query = $this->db->queryAllRecords('SELECT path AS Path FROM aps_packages;'); + $path_query = $app->db->queryAllRecords('SELECT path AS Path FROM aps_packages;'); foreach($path_query as $path) $existing_packages[] = $path['Path']; $diff = array_diff($existing_packages, $pkg_list); foreach($diff as $todelete) { - /*$this->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_ERROR_NOMETA."' - WHERE path = '".$this->db->quote($todelete)."';");*/ - $tmp = $this->db->queryOneRecord("SELECT id FROM aps_packages WHERE path = '".$this->db->quote($todelete)."';"); - $this->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_ERROR_NOMETA, 'id', $tmp['id']); + /*$app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_ERROR_NOMETA."' + WHERE path = '".$app->db->quote($todelete)."';");*/ + $tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE path = '".$app->db->quote($todelete)."';"); + $app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_ERROR_NOMETA, 'id', $tmp['id']); unset($tmp); } @@ -510,7 +516,7 @@ $metafile = $this->interface_pkg_dir.'/'.$pkg.'/APP-META.xml'; if(!file_exists($metafile)) { - $this->app->log($this->log_prefix.'Cannot read metadata from '.$pkg, LOGLEVEL_ERROR); + $app->log($this->log_prefix.'Cannot read metadata from '.$pkg, LOGLEVEL_ERROR); continue; } @@ -527,25 +533,25 @@ $pkg_release = parent::getXPathValue($sxe, 'release'); /* - $this->db->query("INSERT INTO `aps_packages` + $app->db->query("INSERT INTO `aps_packages` (`path`, `name`, `category`, `version`, `release`, `package_status`) VALUES - ('".$this->db->quote($pkg)."', '".$this->db->quote($pkg_name)."', - '".$this->db->quote($pkg_category)."', '".$this->db->quote($pkg_version)."', - ".$this->db->quote($pkg_release).", ".PACKAGE_ENABLED.");"); + ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."', + '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."', + ".$app->db->quote($pkg_release).", ".PACKAGE_ENABLED.");"); */ $insert_data = "(`path`, `name`, `category`, `version`, `release`, `package_url`, `package_status`) VALUES - ('".$this->db->quote($pkg)."', '".$this->db->quote($pkg_name)."', - '".$this->db->quote($pkg_category)."', '".$this->db->quote($pkg_version)."', - ".$this->db->quote($pkg_release).", '".$this->db->quote($this->app_download_url_list[$pkg])."', ".PACKAGE_ENABLED.");"; + ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."', + '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."', + ".$app->db->quote($pkg_release).", '".$app->db->quote($this->app_download_url_list[$pkg])."', ".PACKAGE_ENABLED.");"; - $this->app->db->datalogInsert('aps_packages', $insert_data, 'id'); + $app->db->datalogInsert('aps_packages', $insert_data, 'id'); } } catch(Exception $e) { - $this->app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR); - $this->app->error($e->getMessage()); + $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR); + $app->error($e->getMessage()); return false; } } -- Gitblit v1.9.1