コード例 #1
0
 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;
 }
コード例 #2
0
 public static function clear_all()
 {
     self::$archive_by_id = null;
 }
コード例 #3
0
 public static function get_cached_archive($arquiveName)
 {
     // hd_print(__METHOD__);
     return ArchiveCache::get_archive_by_id($arquiveName);
 }