| | |
| | | curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0); |
| | | curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1); |
| | | curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); |
| | | curl_setopt($conn[$i], CURLOPT_SSL_VERIFYHOST, 1); |
| | | curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false); |
| | | |
| | | curl_multi_add_handle($mh, $conn[$i]); |
| | | } |
| | |
| | | $apps_count = substr_count($apps[$j], '<opensearch:totalResults>0</opensearch:totalResults>'); |
| | | if($apps_count == 0) // obviously this vendor provides one or more apps |
| | | { |
| | | try { |
| | | // Rename namespaces and register them |
| | | $xml = str_replace("xmlns=", "ns=", $apps[$j]); |
| | | $sxe = new SimpleXMLElement($xml); |
| | |
| | | $old_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$ex_ver.'.app.zip'; |
| | | if(file_exists($old_folder)) $this->removeDirectory($old_folder); |
| | | |
| | | /* |
| | | $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 = $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']); |
| | | $tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE name = ? AND CONCAT(version, '-', CAST(`release` AS CHAR)) = ?", $app_name, $ex_ver); |
| | | $app->db->datalogUpdate('aps_packages', array("package_status" => PACKAGE_OUTDATED), 'id', $tmp['id']); |
| | | unset($tmp); |
| | | } |
| | | |
| | |
| | | |
| | | unset($sxe); |
| | | $apps_in_repo++; |
| | | } catch (Exception $e) { |
| | | // We dont want the crawler to fail on xml parse errors |
| | | $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_WARN); |
| | | //echo 'Caught exception: ', $e->getMessage(), "\n"; |
| | | } |
| | | } |
| | | } |
| | | //var_dump($apps); |
| | | //echo print_r($apps_to_dl).'<br>-------------------<br>'; |
| | | |
| | | // For memory reasons, unset the current vendor and his apps |
| | | unset($apps); |
| | |
| | | |
| | | // Get registered packages and mark non-existant packages with an error code to omit the install |
| | | $existing_packages = array(); |
| | | $path_query = $app->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) { |
| | | /*$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']); |
| | | $tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE path = ?", $todelete); |
| | | $app->db->datalogUpdate('aps_packages', array("package_status" => PACKAGE_ERROR_NOMETA), 'id', $tmp['id']); |
| | | unset($tmp); |
| | | } |
| | | |
| | |
| | | //$pkg_url = $this->app_download_url_list[$pkg]; |
| | | $pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$pkg.'/PKG_URL'); |
| | | |
| | | /* |
| | | $app->db->query("INSERT INTO `aps_packages` |
| | | (`path`, `name`, `category`, `version`, `release`, `package_status`) VALUES |
| | | ('".$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 only if data is complete |
| | | if($pkg != '' && $pkg_name != '' && $pkg_category != '' && $pkg_version != '' && $pkg_release != '' && $pkg_url){ |
| | | $insert_data = "(`path`, `name`, `category`, `version`, `release`, `package_url`, `package_status`) VALUES |
| | | ('".$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($pkg_url)."', ".PACKAGE_ENABLED.");"; |
| | | |
| | | $insert_data = array( |
| | | "path" => $pkg, |
| | | "name" => $pkg_name, |
| | | "category" => $pkg_category, |
| | | "version" => $pkg_version, |
| | | "release" => $pkg_release, |
| | | "package_url" => $pkg_url, |
| | | "package_status" => PACKAGE_ENABLED |
| | | ); |
| | | $app->db->datalogInsert('aps_packages', $insert_data, 'id'); |
| | | } else { |
| | | if(file_exists($this->interface_pkg_dir.'/'.$pkg)) $this->removeDirectory($this->interface_pkg_dir.'/'.$pkg); |
| | |
| | | // This method must be used in interface mode |
| | | if(!$this->interface_mode) return false; |
| | | |
| | | $incomplete_pkgs = $app->db->queryAllRecords("SELECT * FROM aps_packages WHERE package_url = ''"); |
| | | $incomplete_pkgs = $app->db->queryAllRecords("SELECT * FROM aps_packages WHERE package_url = ?", ''); |
| | | if(is_array($incomplete_pkgs) && !empty($incomplete_pkgs)){ |
| | | foreach($incomplete_pkgs as $incomplete_pkg){ |
| | | $pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$incomplete_pkg['path'].'/PKG_URL'); |
| | | if($pkg_url != ''){ |
| | | $app->db->datalogUpdate('aps_packages', "package_url = '".$app->db->quote($pkg_url)."'", 'id', $incomplete_pkg['id']); |
| | | $app->db->datalogUpdate('aps_packages', array("package_url" => $pkg_url), 'id', $incomplete_pkg['id']); |
| | | } |
| | | } |
| | | } |