/** * 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); }