Use php version_compare function instead of our own
authorColeman Watts <coleman@civicrm.org>
Wed, 24 Apr 2013 04:01:34 +0000 (21:01 -0700)
committerColeman Watts <coleman@civicrm.org>
Wed, 24 Apr 2013 04:01:34 +0000 (21:01 -0700)
CRM/Utils/VersionCheck.php

index a118af2031c2df40239858db7b408bd0b65c17a5..0f6404d756c08954f3318cd065f784ae3168b5f1 100644 (file)
@@ -161,22 +161,12 @@ class CRM_Utils_VersionCheck {
    * Get the latest version number if it's newer than the local one
    *
    * @return string|null
-   * Returns the newer version's number or null if the versions are equal
+   * Returns the newer version's number, or null if the versions are equal
    */
   public function newerVersion() {
     if ($this->latestVersion) {
-      $local = array_pad(explode('.', $this->localVersion), 3, 0);
-      $latest = array_pad(explode('.', $this->latestVersion), 3, 0);
-
-      for ($i = 0; $i < 3; $i++) {
-        $loc = (int) $local[$i];
-        $lat = (int) $latest[$i];
-        if ($loc > $lat) {
-          return NULL;
-        }
-        elseif ($loc < $lat) {
-          return $this->latestVersion;
-        }
+      if (version_compare($this->localVersion, $this->latestVersion) < 0) {
+        return $this->latestVersion;
       }
     }
     return NULL;
@@ -304,6 +294,9 @@ class CRM_Utils_VersionCheck {
     if (!preg_match('/^\d+\.\d+\.\d+$/', $this->latestVersion)) {
       $this->latestVersion = NULL;
     }
+    else {
+      $this->latestVersion = trim($this->latestVersion);
+    }
     ini_restore('default_socket_timeout');
   }