public static function get_archive($id, $url_prefix) { $archive = ArchiveCache::get_archive_by_id($id); if (!is_null($archive)) { return $archive; } $version_url = $url_prefix . '/versions.txt'; try { $doc = HD::http_get_document($version_url); } catch (Exception $e) { $doc = null; } $version_by_name = array(); $total_size = 0; if (is_null($doc)) { hd_print("Failed to fetch archive versions.txt from {$version_url}."); } else { $tok = strtok($doc, "\n"); while ($tok !== false) { $pos = strrpos($tok, ' '); if ($pos === false) { hd_print("Invalid line in versions.txt for archive '{$id}'."); continue; } $name = trim(substr($tok, 0, $pos)); $version = trim(substr($tok, $pos + 1)); $version_by_name[$name] = $version; $tok = strtok("\n"); } hd_print("Archive {$id}: " . count($version_by_name) . " files."); $size_url = $url_prefix . '/size.txt'; $doc = HD::http_get_document($size_url); if (is_null($doc)) { hd_print("Failed to fetch archive size.txt from {$size_url}."); $version_by_name = array(); } else { $total_size = intval($doc); hd_print("Archive {$id}: size = {$total_size}"); } } $archive = new DefaultArchive($id, $url_prefix, $version_by_name, $total_size); ArchiveCache::set_archive($archive); return $archive; }
public static function clear_all() { self::$archive_by_id = null; }
public static function get_cached_archive($arquiveName) { // hd_print(__METHOD__); return ArchiveCache::get_archive_by_id($arquiveName); }