if (empty($this->failed
)) { // If we have valid data about release history XML servers that we have
// failed to fetch from on previous attempts, load that.
$this->failed =
$this->tempStore->
get('fetch_failures'
);
} $max_fetch_attempts =
$this->updateSettings->
get('fetch.max_attempts'
);
$success = FALSE;
$available =
[];
$site_key = Crypt::
hmacBase64($base_url,
$this->privateKey->
get());
$fetch_url_base =
$this->updateFetcher->
getFetchBaseUrl($project);
$project_name =
$project['name'
];
if (empty($this->failed
[$fetch_url_base]) ||
$this->failed
[$fetch_url_base] <
$max_fetch_attempts) { $data =
$this->updateFetcher->
fetchProjectData($project,
$site_key);
} if (!
empty($data)) { $available =
$this->
parseXml($data);
// @todo Purge release data we don't need. See
// https://www.drupal.org/node/238950.
if (!
empty($available)) { // Only if we fetched and parsed something sane do we return success.