major = (int) $versionParts[0]; } if (isset($versionParts[1]) && is_numeric($versionParts[1])) { $this->minor = (int) $versionParts[1]; } if (isset($versionParts[2]) && is_numeric($versionParts[2])) { $this->patch = (int) $versionParts[2]; } } /** * Tests if OpenSocialVersion is equivalent to the parameter version * @param OpenSocialVersion $version Compare with this version * @return boolean TRUE if is equivalent to version */ public function isEquivalent(OpenSocialVersion $version){ if ($this->major === null || $version->major === null) { return true; } $cmp = $version->major - $this->major; if($cmp == 0 && $version->minor && $this->minor){ $cmp = $version->minor - $this->minor; } if($cmp == 0 && $version->patch && $this->patch){ $cmp = $version->patch - $this->patch; } return $cmp == 0; } /** * Tests if OpenSocialVersion is equal to or greater than parameter version * @param OpenSocialVersion $version Compare with this version * @return boolean TRUE if is equal or greater than version */ public function isEqualOrGreaterThan(OpenSocialVersion $version){ if ($this->major === null || $version->major === null) { return true; } $cmp = $version->major - $this->major; if($cmp == 0){ if($version->minor && $this->minor){ $cmp = $version->minor - $this->minor; } else { $cmp = $version->minor; } } if($cmp == 0){ if($version->patch && $this->patch){ $cmp = $version->patch - $this->patch; } else { $cmp = $version->patch; } } return $cmp <= 0; } /** * @return string */ public function __toString() { return $this->major . '.' . $this->minor . '.' . $this->patch; } }