예제 #1
0
 /**
  * Gets the package_update.xml from an update server.
  * 
  * @param	array		$updateServer
  */
 protected static function getPackageUpdateXML($updateServer)
 {
     // get auth data
     $authData = self::getAuthData($updateServer);
     // send request
     $response = self::sendRequest($updateServer['server'], array('timestamp' => $updateServer['timestamp']), $authData);
     // check response
     // check http code
     if ($response['httpStatusCode'] == 401) {
         throw new PackageUpdateAuthorizationRequiredException($updateServer['packageUpdateServerID'], $updateServer['server'], $response);
     }
     if ($response['httpStatusCode'] != 200) {
         throw new SystemException(WCF::getLanguage()->get('wcf.acp.packageUpdate.error.listNotFound') . ' (' . $response['httpStatusLine'] . ')', 18009);
     }
     // parse given package update xml
     $allNewPackages = self::parsePackageUpdateXML($response['content']);
     unset($response);
     // save packages
     if (count($allNewPackages)) {
         self::savePackageUpdates($allNewPackages, $updateServer['packageUpdateServerID']);
     }
     unset($allNewPackages);
     // update server status
     $updateServerEditor = new UpdateServerEditor(null, $updateServer);
     $updateServerEditor->updateStatus(TIME_NOW);
 }