| | |
| | |
|
| | | class ApsCrawler extends ApsBase
|
| | | {
|
| | | |
| | | public $app_download_url_list = array();
|
| | | |
| | | /**
|
| | | * Constructor
|
| | | *
|
| | |
| | | // Check if the cURL module is available
|
| | | if(!function_exists('curl_version')) throw new Exception('cURL is not available');
|
| | |
|
| | | // Check if used folders are writable (chmod 777)
|
| | | // Check if used folders are writable
|
| | | if($this->interface_mode)
|
| | | {
|
| | | if(!is_writable($this->interface_pkg_dir))
|
| | |
| | | * A method to build query URLs out of a list of vendors
|
| | | *
|
| | | */
|
| | | private function formatVendorCallback(&$array_item, $key)
|
| | | private function formatVendorCallback($array_item)
|
| | | {
|
| | | $array_item = str_replace(' ', '%20', $array_item);
|
| | | $array_item = str_replace('http://', '', $array_item);
|
| | | $array_item = '/'.$this->aps_version.'.atom?vendor='.$array_item.'&pageSize=100';
|
| | | return($array_item);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | if(!$vendors) throw new Exception('Unable to fetch vendors. Aborting');
|
| | |
|
| | | // Format all vendors for further processing (i.e. typo3.org -> /1.atom?vendor=typo3.org&pageSize=100
|
| | | array_walk($vendors, array($this, 'formatVendorCallback'));
|
| | | //array_walk($vendors, array($this, 'formatVendorCallback'));
|
| | | if(is_array($vendors)) {
|
| | | foreach($vendors as $key => $array_item) {
|
| | | $vendors[$key] = $this->formatVendorCallback($array_item);
|
| | | }
|
| | | }
|
| | |
|
| | | // Process all vendors in chunks of 50 entries
|
| | | $vendor_chunks = array_chunk($vendors, 50);
|
| | |
| | |
|
| | | // Find out a (possibly) existing package version
|
| | | $ex_ver = '';
|
| | | /*
|
| | | array_walk($existing_apps,
|
| | | create_function('$v, $k, $ex_ver', 'if($v["Name"] == "'.$app_name.'") $ex_ver = $v["CurrentVersion"];'), &$ex_ver);
|
| | | |
| | | */
|
| | | if(is_array($existing_apps)) {
|
| | | foreach($existing_apps as $k => $v) {
|
| | | if($v["Name"] == $app_name) $ex_ver = $v["CurrentVersion"];
|
| | | }
|
| | | }
|
| | | |
| | | $new_ver = $app_version.'-'.$app_release;
|
| | | $local_intf_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$new_ver.'.app.zip/';
|
| | |
|
| | |
| | | $app_dl = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@href");
|
| | | $app_filesize = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@length");
|
| | | $app_metafile = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='meta']/@href");
|
| | | |
| | | $this->app_download_url_list[$app_name.'-'.$new_ver.'.app.zip'] = $app_dl;
|
| | |
|
| | | // Skip ASP.net packages because they can't be used at all
|
| | | $asp_handler = parent::getXPathValue($sxe, '//aspnet:handler');
|
| | |
| | | $path_query = $this->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)
|
| | | 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']);
|
| | | unset($tmp);
|
| | | }
|
| | |
|
| | | // Register all new packages
|
| | | $new_packages = array_diff($pkg_list, $existing_packages);
|
| | |
| | | ".$this->db->quote($pkg_release).", ".PACKAGE_ENABLED.");");
|
| | | */
|
| | |
|
| | | $insert_data = "(`path`, `name`, `category`, `version`, `release`, `package_status`) VALUES |
| | | $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).", ".PACKAGE_ENABLED.");";
|
| | | ".$this->db->quote($pkg_release).", '".$this->db->quote($this->app_download_url_list[$pkg])."', ".PACKAGE_ENABLED.");";
|
| | |
|
| | | $this->app->db->datalogInsert('aps_packages', $insert_data, 'id');
|
| | | }
|