From 292931f6bd575101c6f6a9ee93700fcf263b88a9 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Thu, 10 May 2018 16:45:06 -0700 Subject: [PATCH] civicrm-version.php - Keep civicrmVersion() in global namespace 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 | 187 ++++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 92 deletions(-) diff --git a/civicrm-version.php b/civicrm-version.php index aec485b873..6292f2b2cd 100755 --- a/civicrm-version.php +++ b/civicrm-version.php @@ -1,115 +1,118 @@ 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(), - ]; } -- 2.25.1