You are here

protected function ProjectVersionClient::parseXml in Acquia Content Hub 8.2

Parses XML from D.O and get latest versions of security covered releases.

Parameters

string $xml_data: XML Data.

string $drupal_version: Drupal major version installed.

Return value

string[] Array of versions of security covered releases for a given project.

1 call to ProjectVersionClient::parseXml()
ProjectVersionClient::getReleaseData in src/Client/ProjectVersionClient.php
Helper method to get latest release versions for a given d.o project.

File

src/Client/ProjectVersionClient.php, line 111

Class

ProjectVersionClient
Project version client to get latest releases for a project from D.O.

Namespace

Drupal\acquia_contenthub\Client

Code

protected function parseXml(string $xml_data, string $drupal_version = '') : array {
  $versions = [];
  try {
    $xml = new \SimpleXMLElement($xml_data);
  } catch (\Exception $e) {
    return [];
  }
  if (!isset($xml->short_name) || !isset($xml->releases)) {
    return [];
  }

  // Break out the loop after the first valid security release.
  foreach ($xml->releases
    ->children() as $release) {
    $version = (string) $release->version;
    $major_version = $version[0];
    $security_covered = $this
      ->isSecurityCoveredRelease($release);
    if (!$security_covered) {
      continue;
    }
    if ($this
      ->isLatestVersion($drupal_version, $major_version)) {
      $versions['latest'] = $version;
      return $versions;
    }
    if (!isset($versions['also_available']) && $drupal_version === '8' && $major_version === '9') {
      $versions['also_available'] = $version;
    }
  }
  return $versions;
}