civicrm-version.php - Keep civicrmVersion() in global namespace
authorTim Otten <totten@civicrm.org>
Thu, 10 May 2018 23:45:06 +0000 (16:45 -0700)
committerTim Otten <totten@civicrm.org>
Fri, 11 May 2018 02:01:26 +0000 (19:01 -0700)
The function has traditionally been in the global namespace, and it
should stay there for backward compatibility.

This patch looks big, but it's really just wrapping code inside new
`namespace ...  { ...  }` blocks.

civicrm-version.php

index aec485b8731ee91de36f4c154ef8cc6d5ff35676..6292f2b2cdd8e5ec2beceea90dd776227a00299a 100755 (executable)
 <?php
 
-namespace Civi;
+namespace Civi {
 
-class Version {
+  class Version {
 
-  /**
-   * Get the CiviCRM version
-   */
-  public static function findVersion() {
-    $verFile = implode(DIRECTORY_SEPARATOR, [dirname(__FILE__), 'xml', 'version.xml']);
-    if (file_exists($verFile)) {
-      $str = file_get_contents($verFile);
-      $xmlObj = simplexml_load_string($str);
-      return (string) $xmlObj->version_no;
-    }
-
-    trigger_error("Unknown version", E_USER_ERROR);
-    exit();
-  }
+    /**
+     * Get the CiviCRM version
+     */
+    public static function findVersion() {
+      $verFile = implode(DIRECTORY_SEPARATOR, [dirname(__FILE__), 'xml', 'version.xml']);
+      if (file_exists($verFile)) {
+        $str = file_get_contents($verFile);
+        $xmlObj = simplexml_load_string($str);
+        return (string) $xmlObj->version_no;
+      }
 
-  /**
-   * Get the CMS name
-   */
-  public static function findCMS() {
-    if (defined('CIVICRM_UF')) {
-      return CIVICRM_UF;
+      trigger_error("Unknown version", E_USER_ERROR);
+      exit();
     }
-    elseif (function_exists('drupal_bootstrap') && version_compare(VERSION, '6.0', '>=') && version_compare(VERSION, '7.0', '<')) {
-      return 'Drupal6';
-    }
-    elseif (function_exists('drupal_bootstrap') && version_compare(VERSION, '7.0', '>=') && version_compare(VERSION, '8.0', '<')) {
-      return 'Drupal';
-    }
-    else {
-      // guess CMS name from the current path
-      list($cmsType,) = self::findCMSRootPath();
 
-      if (!empty($cmsType)) {
-        return $cmsType;
+    /**
+     * Get the CMS name
+     */
+    public static function findCMS() {
+      if (defined('CIVICRM_UF')) {
+        return CIVICRM_UF;
+      }
+      elseif (function_exists('drupal_bootstrap') && version_compare(VERSION, '6.0', '>=') && version_compare(VERSION, '7.0', '<')) {
+        return 'Drupal6';
+      }
+      elseif (function_exists('drupal_bootstrap') && version_compare(VERSION, '7.0', '>=') && version_compare(VERSION, '8.0', '<')) {
+        return 'Drupal';
+      }
+      else {
+        // guess CMS name from the current path
+        list($cmsType,) = self::findCMSRootPath();
+
+        if (!empty($cmsType)) {
+          return $cmsType;
+        }
       }
     }
-  }
 
-  /**
-   * Get the CMS root path and CMS name
-   */
-  public static function findCMSRootPath() {
-    $cmsPatterns = array(
-      'Wordpress' => array(
-        'wp-includes/version.php',
-        // Future? 'vendor/civicrm/wordpress/civicrm.php' => 'wp',
-      ),
-      'Joomla' => array(
-        'administrator/components/com_civicrm/civicrm/civicrm-version.php',
-      ),
-      'Drupal' => array(
-        'modules/system/system.module', // D7
-      ),
-      'Drupal8' => array(
-        'core/core.services.yml', // D8
-      ),
-      'Backdrop' => array(
-        'core/modules/layout/layout.module',
-      ),
-    );
+    /**
+     * Get the CMS root path and CMS name
+     */
+    public static function findCMSRootPath() {
+      $cmsPatterns = array(
+        'Wordpress' => array(
+          'wp-includes/version.php',
+          // Future? 'vendor/civicrm/wordpress/civicrm.php' => 'wp',
+        ),
+        'Joomla' => array(
+          'administrator/components/com_civicrm/civicrm/civicrm-version.php',
+        ),
+        'Drupal' => array(
+          'modules/system/system.module', // D7
+        ),
+        'Drupal8' => array(
+          'core/core.services.yml', // D8
+        ),
+        'Backdrop' => array(
+          'core/modules/layout/layout.module',
+        ),
+      );
 
-    $parts = explode('/', str_replace('\\', '/', self::getSearchDir()));
-    while (!empty($parts)) {
-      $basePath = implode('/', $parts);
+      $parts = explode('/', str_replace('\\', '/', self::getSearchDir()));
+      while (!empty($parts)) {
+        $basePath = implode('/', $parts);
 
-      foreach ($cmsPatterns as $cmsType => $relPaths) {
-        foreach ($relPaths as $relPath) {
-          $matches = glob("$basePath/$relPath");
-          if (!empty($matches)) {
-            return [$cmsType, $basePath];
+        foreach ($cmsPatterns as $cmsType => $relPaths) {
+          foreach ($relPaths as $relPath) {
+            $matches = glob("$basePath/$relPath");
+            if (!empty($matches)) {
+              return [$cmsType, $basePath];
+            }
           }
         }
+
+        array_pop($parts);
       }
+    }
 
-      array_pop($parts);
+    /**
+     * Get the current path
+     */
+    public static function getSearchDir() {
+      if ($_SERVER['SCRIPT_FILENAME']) {
+        return dirname($_SERVER['SCRIPT_FILENAME']);
+      }
+      // getenv('PWD') works better with symlinked source trees, but it's
+      // not portable to Windows.
+      if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+        return getcwd();
+      }
+      else {
+        return getenv('PWD');
+      }
     }
+
   }
+}
 
+namespace {
   /**
-   * Get the current path
+   * Get the CiviCRM version.
+   * TODO : For now this function is not included in \Civi\Version class so not to break any code
+   *   which directly call civicrmVersion(). So those call need to replaced with \Civi\Version::civicrmVersion()
+   *   when included in the class
    */
-  public static function getSearchDir() {
-    if ($_SERVER['SCRIPT_FILENAME']) {
-      return dirname($_SERVER['SCRIPT_FILENAME']);
-    }
-    // getenv('PWD') works better with symlinked source trees, but it's
-    // not portable to Windows.
-    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
-      return getcwd();
-    }
-    else {
-      return getenv('PWD');
-    }
+  function civicrmVersion() {
+    return [
+      'version' => \Civi\Version::findVersion(),
+      'cms' => \Civi\Version::findCMS(),
+    ];
   }
-
-}
-
-/**
- * Get the CiviCRM version.
- * TODO : For now this function is not included in \Civi\Version class so not to break any code
- *   which directly call civicrmVersion(). So those call need to replaced with \Civi\Version::civicrmVersion()
- *   when included in the class
- */
-function civicrmVersion() {
-  return [
-    'version' => \Civi\Version::findVersion(),
-    'cms' => \Civi\Version::findCMS(),
-  ];
 }