/**
  * @see CacheBuilder::getData()
  */
 public function getData($cacheResource)
 {
     list($cache, $sourceID) = explode('-', $cacheResource['cache']);
     $data = array('packages' => array(), 'hashes' => array());
     // get associated packages
     $sql = "SELECT\t\tpackageName, version, directory, packageType\n\t\t\tFROM\t\tpb" . PB_N . "_source_package\n\t\t\tWHERE\t\tsourceID = " . intval($sourceID) . "\n\t\t\tORDER BY\tpackageName ASC";
     $result = WCF::getDB()->sendQuery($sql);
     // assign data ordered by package name
     while ($row = WCF::getDB()->fetchArray($result)) {
         $hash = PackageHelper::getHash($sourceID, $row['packageName'], $row['directory']);
         $row['sourceID'] = $sourceID;
         $data['packages'][$hash] = $row;
         $data['hashes'][$row['packageName']][] = $hash;
     }
     return $data;
 }
 /**
  * gets the name and the hash of the requested package
  *
  * @return void
  */
 protected function getRequestedPackage()
 {
     // get directory
     $sourceData = WCF::getSession()->getVar('source' . $this->source->sourceID);
     // get package name
     if ($sourceData !== null) {
         $sourceData = unserialize($sourceData);
         $this->directory = $sourceData['directory'];
         foreach ($this->cachedPackages['packages'] as $package) {
             if ($package['directory'] == $this->directory) {
                 $this->requestedPackageName = $package['packageName'];
                 $this->requestedPackageHash = PackageHelper::getHash($this->source->sourceID, $package['packageName'], $this->directory);
                 return;
             }
         }
     }
     throw new IllegalLinkException();
 }