/** * This function returns information about the versions on this topic. * - Version permissions: unreleased, preview, or released * - Version age: older, latest, or newer * Since a Topic can have multiple versions, it's possible for a single topic to be in unreleased, preview, released, older, * latest, AND newer versions AT THE SAME TIME! * This information can be used by skins to change UI based on the version features. * * @return array */ public function getVersionClasses() { $productName = PonyDocsProduct::getSelectedProduct(); $versionClasses = array(); $releasedVersions = PonyDocsProductVersion::GetReleasedVersions($productName); // Just the names of our released versions $releasedNames = array(); foreach ($releasedVersions as $ver) { $releasedNames[] = strtolower($ver->getVersionName()); } $previewVersions = PonyDocsProductVersion::GetPreviewVersions($productName); // Just the names of our preview versions $previewNames = array(); foreach ($previewVersions as $ver) { $previewNames[] = strtolower($ver->getVersionName()); } $latestVersion = PonyDocsProductVersion::GetLatestReleasedVersion($productName); foreach ($this->versions as $version) { $versionName = strtolower($version->getVersionName()); // Is this version released, preview, or unreleased? if (in_array($versionName, $releasedNames)) { $versionClasses['released'] = TRUE; } elseif (in_array($versionName, $previewNames)) { $versionClasses['preview'] = TRUE; } else { $versionClasses['unreleased'] = TRUE; } // Is this version older or later or equal to the current version? if ($latestVersion) { if (PonyDocs_ProductVersionCmp($version, $latestVersion) < 0) { $versionClasses['older'] = TRUE; } elseif (PonyDocs_ProductVersionCmp($version, $latestVersion) > 0) { $versionClasses['newer'] = TRUE; } else { $versionClasses['latest'] = TRUE; } } } return array_keys($versionClasses); }