Merge pull request #4920 from pratikshad/Fixed-webtests
[civicrm-core.git] / CRM / Utils / System.php
index e5bbda8fccbb0f929f47d65888271346df9d2576..353d59351cad325278a9f55aae808a2c27e5db60 100644 (file)
@@ -106,8 +106,8 @@ class CRM_Utils_System {
   public static function getLinksUrl($urlVar, $includeReset = FALSE, $includeForce = TRUE, $skipUFVar = TRUE) {
     // Sort out query string to prevent messy urls
     $querystring = array();
-    $qs          = array();
-    $arrays      = array();
+    $qs = array();
+    $arrays = array();
 
     if (!empty($_SERVER['QUERY_STRING'])) {
       $qs = explode('&', str_replace('&', '&', $_SERVER['QUERY_STRING']));
@@ -182,11 +182,10 @@ class CRM_Utils_System {
    *   (optional) For maintenance mode.
    *
    * @return string
-   *
    */
-  static function theme(
+  public static function theme(
     &$content,
-    $print       = FALSE,
+    $print = FALSE,
     $maintenance = FALSE
   ) {
     $config = &CRM_Core_Config::singleton();
@@ -230,12 +229,12 @@ class CRM_Utils_System {
    * @return string
    *   An HTML string containing a link to the given path.
    */
-  static function url(
+  public static function url(
     $path = NULL,
-    $query    = NULL,
+    $query = NULL,
     $absolute = FALSE,
     $fragment = NULL,
-    $htmlize  = TRUE,
+    $htmlize = TRUE,
     $frontend = FALSE,
     $forceBackend = FALSE
   ) {
@@ -262,7 +261,8 @@ class CRM_Utils_System {
    *
    * @return string
    */
-  static function href($text, $path = NULL, $query = NULL, $absolute = TRUE,
+  public static function href(
+    $text, $path = NULL, $query = NULL, $absolute = TRUE,
     $fragment = NULL, $htmlize = TRUE, $frontend = FALSE, $forceBackend = FALSE
   ) {
     $url = self::url($path, $query, $absolute, $fragment, $htmlize, $frontend, $forceBackend);
@@ -285,7 +285,9 @@ class CRM_Utils_System {
     return $config->userSystem->logout();
   }
 
-  // this is a very drupal specific function for now
+  /**
+   * this is a very drupal specific function for now
+   */
   public static function updateCategories() {
     $config = CRM_Core_Config::singleton();
     if ($config->userSystem->is_drupal) {
@@ -296,7 +298,8 @@ class CRM_Utils_System {
   /**
    * What menu path are we currently on. Called for the primary tpl
    *
-   * @return string the current menu path
+   * @return string
+   *   the current menu path
    */
   public static function currentPath() {
     $config = CRM_Core_Config::singleton();
@@ -304,12 +307,13 @@ class CRM_Utils_System {
   }
 
   /**
-   * This function is called from a template to compose a url.
+   * called from a template to compose a url.
    *
    * @param array $params
    *   List of parameters.
    *
-   * @return string url
+   * @return string
+   *   url
    */
   public static function crmURL($params) {
     $p = CRM_Utils_Array::value('p', $params);
@@ -333,7 +337,6 @@ class CRM_Utils_System {
    *
    * @param string $title
    * @param string $pageTitle
-   *
    */
   public static function setTitle($title, $pageTitle = NULL) {
     self::$title = $title;
@@ -350,7 +353,6 @@ class CRM_Utils_System {
    *   Refererer should match any str in this array.
    * @param string $default
    *   (optional) The default userContext if no match found.
-   *
    */
   public static function setUserContext($names, $default = NULL) {
     $url = $default;
@@ -380,7 +382,6 @@ class CRM_Utils_System {
    *
    * @return string
    *   The class name of the object.
-   *
    */
   public static function getClassName($object) {
     return get_class($object);
@@ -391,7 +392,6 @@ class CRM_Utils_System {
    *
    * @param string $url
    *   The URL to provide to the browser via the Location header.
-   *
    */
   public static function redirect($url = NULL) {
     if (!$url) {
@@ -426,11 +426,10 @@ class CRM_Utils_System {
    *   (optional) The page title to use for the redirect page.
    * @param string $message
    *   (optional) The message to provide in the body of the redirect page.
-   *
    */
-  static function jsRedirect(
-    $url     = NULL,
-    $title   = NULL,
+  public static function jsRedirect(
+    $url = NULL,
+    $title = NULL,
     $message = NULL
   ) {
     if (!$url) {
@@ -465,7 +464,6 @@ class CRM_Utils_System {
    * Append an additional breadcrumb tag to the existing breadcrumbs.
    *
    * @param $breadCrumbs
-   *
    */
   public static function appendBreadCrumb($breadCrumbs) {
     $config = CRM_Core_Config::singleton();
@@ -474,7 +472,6 @@ class CRM_Utils_System {
 
   /**
    * Reset an additional breadcrumb tag to the existing breadcrumb.
-   *
    */
   public static function resetBreadCrumb() {
     $config = CRM_Core_Config::singleton();
@@ -485,7 +482,6 @@ class CRM_Utils_System {
    * Append a string to the head of the HTML file.
    *
    * @param string $bc
-   *
    */
   public static function addHTMLHead($bc) {
     $config = CRM_Core_Config::singleton();
@@ -508,14 +504,13 @@ class CRM_Utils_System {
 
   /**
    * Rewrite various system URLs to https.
-   *
    */
   public static function mapConfigToSSL() {
     $config = CRM_Core_Config::singleton();
     $config->userFrameworkResourceURL = str_replace('http://', 'https://', $config->userFrameworkResourceURL);
     $config->resourceBase = $config->userFrameworkResourceURL;
 
-    if (! empty($config->extensionsURL)) {
+    if (!empty($config->extensionsURL)) {
       $config->extensionsURL = str_replace('http://', 'https://', $config->extensionsURL);
     }
 
@@ -631,7 +626,7 @@ class CRM_Utils_System {
       list($userID, $ufID, $randomNumber) = $result;
       if ($userID && $ufID) {
         $config = CRM_Core_Config::singleton();
-        $config->userSystem->setUserSession( array($userID, $ufID) );
+        $config->userSystem->setUserSession(array($userID, $ufID));
       }
       else {
         return self::authenticateAbort(
@@ -669,7 +664,7 @@ class CRM_Utils_System {
      * process typically done in CLI and cron scripts. See: CRM-12648
      */
     $session = CRM_Core_Session::singleton();
-    $session->set( 'civicrmInitSession', TRUE );
+    $session->set('civicrmInitSession', TRUE);
 
     $dbDrupal = DB::connect($config->userFrameworkDSN);
     return $config->userSystem->authenticate($name, $password, $loadCMSBootstrap, $realPath);
@@ -680,7 +675,6 @@ class CRM_Utils_System {
    *
    * @param string $message
    *   The message to set.
-   *
    */
   public static function setUFMessage($message) {
     $config = CRM_Core_Config::singleton();
@@ -701,6 +695,7 @@ class CRM_Utils_System {
       return TRUE;
     }
     if (is_array($value)) {
+      // @todo Reuse of the $value variable = asking for trouble.
       foreach ($value as $key => $value) {
         if (!self::isNull($value)) {
           return FALSE;
@@ -741,17 +736,17 @@ class CRM_Utils_System {
     $s = ob_get_contents();
     ob_end_clean();
 
-    $s        = strip_tags($s, '<h2><th><td>');
-    $s        = preg_replace('/<th[^>]*>([^<]+)<\/th>/', "<info>\\1</info>", $s);
-    $s        = preg_replace('/<td[^>]*>([^<]+)<\/td>/', "<info>\\1</info>", $s);
-    $vTmp     = preg_split('/(<h2>[^<]+<\/h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
+    $s = strip_tags($s, '<h2><th><td>');
+    $s = preg_replace('/<th[^>]*>([^<]+)<\/th>/', "<info>\\1</info>", $s);
+    $s = preg_replace('/<td[^>]*>([^<]+)<\/td>/', "<info>\\1</info>", $s);
+    $vTmp = preg_split('/(<h2>[^<]+<\/h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
     $vModules = array();
     for ($i = 1; $i < count($vTmp); $i++) {
       if (preg_match('/<h2>([^<]+)<\/h2>/', $vTmp[$i], $vMat)) {
         $vName = trim($vMat[1]);
         $vTmp2 = explode("\n", $vTmp[$i + 1]);
-        foreach ($vTmp2 AS $vOne) {
-          $vPat  = '<info>([^<]+)<\/info>';
+        foreach ($vTmp2 as $vOne) {
+          $vPat = '<info>([^<]+)<\/info>';
           $vPat3 = "/$vPat\s*$vPat\s*$vPat/";
           $vPat2 = "/$vPat\s*$vPat/";
           // 3cols
@@ -804,7 +799,8 @@ class CRM_Utils_System {
    * @param bool $output
    * @param string $disposition
    */
-  static function download($name, $mimeType, &$buffer,
+  public static function download(
+    $name, $mimeType, &$buffer,
     $ext = NULL,
     $output = TRUE,
     $disposition = 'attachment'
@@ -846,7 +842,7 @@ class CRM_Utils_System {
    *   (optional) Whether to log the memory usage information.
    */
   public static function xMemory($title = NULL, $log = FALSE) {
-    $mem = (float ) xdebug_memory_usage() / (float )(1024);
+    $mem = (float ) xdebug_memory_usage() / (float ) (1024);
     $mem = number_format($mem, 5) . ", " . time();
     if ($log) {
       echo "<p>$title: $mem<p>";
@@ -900,7 +896,7 @@ class CRM_Utils_System {
         list($className, $methodName) = explode('::', $callback);
         $fileName = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
         // ignore errors if any
-        @include_once ($fileName);
+        @include_once $fileName;
         if (!class_exists($className)) {
           self::$_callbacks[$callback] = FALSE;
         }
@@ -960,7 +956,7 @@ class CRM_Utils_System {
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 
     // lets capture the return stuff rather than echo
-    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 
     // CRM-13227, CRM-14744: only return the SSL error status
     return (curl_exec($ch) !== FALSE);
@@ -987,8 +983,8 @@ class CRM_Utils_System {
 
     if ($abort) {
       CRM_Core_Error::fatal(ts('This feature requires PHP Version %1 or greater',
-          array(1 => $ver)
-        ));
+        array(1 => $ver)
+      ));
     }
     return FALSE;
   }
@@ -1062,7 +1058,7 @@ class CRM_Utils_System {
         array(dirname(__FILE__), '..', '..', 'civicrm-version.php')
       );
       if (file_exists($verFile)) {
-        require_once ($verFile);
+        require_once $verFile;
         if (function_exists('civicrmVersion')) {
           $info = civicrmVersion();
           $version = $info['version'];
@@ -1074,8 +1070,8 @@ class CRM_Utils_System {
           array(dirname(__FILE__), '..', '..', 'xml', 'version.xml')
         );
         if (file_exists($verFile)) {
-          $str     = file_get_contents($verFile);
-          $xmlObj  = simplexml_load_string($str);
+          $str = file_get_contents($verFile);
+          $xmlObj = simplexml_load_string($str);
           $version = (string) $xmlObj->version_no;
         }
       }
@@ -1116,10 +1112,10 @@ class CRM_Utils_System {
         $headers[str_replace(' ',
           '-',
           ucwords(strtolower(str_replace('_',
-                ' ',
-                substr($name, 5)
-              )
-            ))
+              ' ',
+              substr($name, 5)
+            )
+          ))
         )] = $value;
       }
     }
@@ -1143,7 +1139,7 @@ class CRM_Utils_System {
    * Note that we inline this function in install/civicrm.php, so if you change
    * this function, please go and change the code in the install script as well.
    */
-  public static function isSSL( ) {
+  public static function isSSL() {
     return
       (isset($_SERVER['HTTPS']) &&
         !empty($_SERVER['HTTPS']) &&
@@ -1166,7 +1162,7 @@ class CRM_Utils_System {
           CRM_Core_Error::fatal('HTTPS is not set up on this machine');
         }
         else {
-      CRM_Core_Session::setStatus(ts('HTTPS is not set up on this machine'), ts('Warning'), 'alert');
+          CRM_Core_Session::setStatus(ts('HTTPS is not set up on this machine'), ts('Warning'), 'alert');
           // admin should be the only one following this
           // since we dont want the user stuck in a bad place
           return;
@@ -1176,7 +1172,7 @@ class CRM_Utils_System {
     }
   }
 
-  /*
+  /**
    * Get logged in user's IP address.
    *
    * Get IP address from HTTP REMOTE_ADDR header. If the CMS is Drupal then use
@@ -1189,11 +1185,6 @@ class CRM_Utils_System {
    * @return string
    *   IP address of logged in user.
    */
-  /**
-   * @param bool $strictIPV4
-   *
-   * @return mixed|string
-   */
   public static function ipAddress($strictIPV4 = TRUE) {
     $address = CRM_Utils_Array::value('REMOTE_ADDR', $_SERVER);
 
@@ -1201,7 +1192,7 @@ class CRM_Utils_System {
     if ($config->userSystem->is_drupal && function_exists('ip_address')) {
       //drupal function handles the server being behind a proxy securely. We still have legacy ipn methods
       // that reach this point without bootstrapping hence the check that the fn exists
-        $address = ip_address();
+      $address = ip_address();
     }
 
     // hack for safari
@@ -1245,7 +1236,8 @@ class CRM_Utils_System {
   /**
    * Returns wiki (alternate) documentation URL base.
    *
-   * @return string documentation url
+   * @return string
+   *   documentation url
    */
   public static function getWikiBaseURL() {
     // FIXME: move this to configuration at some stage
@@ -1261,7 +1253,7 @@ class CRM_Utils_System {
    *
    * @param string $page
    *   Title of documentation wiki page.
-   * @param boolean $URLonly
+   * @param bool $URLonly
    *   (optional) Whether to return URL only or full HTML link (default).
    * @param string $text
    *   (optional) Text of HTML link (no effect if $URLonly = false).
@@ -1280,8 +1272,9 @@ class CRM_Utils_System {
     // return just the URL, no matter what other parameters are defined
     if (!function_exists('ts')) {
       if ($resource == 'wiki') {
-          $docBaseURL = self::getWikiBaseURL();
-      } else {
+        $docBaseURL = self::getWikiBaseURL();
+      }
+      else {
         $docBaseURL = self::getDocBaseURL();
       }
       return $docBaseURL . str_replace(' ', '+', $page);
@@ -1307,7 +1300,7 @@ class CRM_Utils_System {
    * @param array $params
    *   An array of parameters (see CRM_Utils_System::docURL2 method for names)
    *
-   * @return string
+   * @return string|void
    *   URL or link to documentation page, based on provided parameters.
    */
   public static function docURL($params) {
@@ -1318,7 +1311,8 @@ class CRM_Utils_System {
 
     if (CRM_Utils_Array::value('resource', $params) == 'wiki') {
       $docBaseURL = self::getWikiBaseURL();
-    } else {
+    }
+    else {
       $docBaseURL = self::getDocBaseURL();
     }
 
@@ -1428,8 +1422,8 @@ class CRM_Utils_System {
       // if db.ver > code.ver, sth really wrong
       if (version_compare($dbVersion, $codeVersion) > 0) {
         $errorMessage = '<p>' . ts('Your database is marked with an unexpected version number: %1. The v%2 codebase may not be compatible with your database state. You will need to determine the correct version corresponding to your current database state. You may want to revert to the codebase you were using until you resolve this problem.',
-          array(1 => $dbVersion, 2 => $codeVersion)
-        ) . '</p>';
+            array(1 => $dbVersion, 2 => $codeVersion)
+          ) . '</p>';
         $errorMessage .= "<p>" . ts('OR if this is a manual install from git, you might want to fix civicrm-version.php file.') . "</p>";
         return FALSE;
       }
@@ -1455,7 +1449,7 @@ class CRM_Utils_System {
   /**
    * Reset the various system caches and some important static variables.
    */
-  public static function flushCache( ) {
+  public static function flushCache() {
     // flush out all cache entries so we can reload new data
     // a bit aggressive, but livable for now
     $cache = CRM_Utils_Cache::singleton();
@@ -1470,15 +1464,16 @@ class CRM_Utils_System {
     CRM_ACL_BAO_Cache::resetCache();
 
     // reset various static arrays used here
-    CRM_Contact_BAO_Contact::$_importableFields =
-      CRM_Contact_BAO_Contact::$_exportableFields =
-      CRM_Contribute_BAO_Contribution::$_importableFields =
-      CRM_Contribute_BAO_Contribution::$_exportableFields =
-      CRM_Pledge_BAO_Pledge::$_exportableFields =
-      CRM_Contribute_BAO_Query::$_contributionFields =
-      CRM_Core_BAO_CustomField::$_importFields =
-      CRM_Core_BAO_Cache::$_cache =
-      CRM_Core_DAO::$_dbColumnValueCache = NULL;
+    CRM_Contact_BAO_Contact::$_importableFields
+      = CRM_Contact_BAO_Contact::$_exportableFields
+      = CRM_Contribute_BAO_Contribution::$_importableFields
+      = CRM_Contribute_BAO_Contribution::$_exportableFields
+      = CRM_Pledge_BAO_Pledge::$_exportableFields
+      = CRM_Contribute_BAO_Query::$_contributionFields
+      = CRM_Core_BAO_CustomField::$_importFields
+      = CRM_Core_BAO_Cache::$_cache
+      = CRM_Core_DAO::$_dbColumnValueCache
+      = NULL;
 
     CRM_Core_OptionGroup::flushAll();
     CRM_Utils_PseudoConstant::flushAll();
@@ -1543,7 +1538,8 @@ class CRM_Utils_System {
             DIRECTORY_SEPARATOR . 'sites' .
             DIRECTORY_SEPARATOR . 'all' .
             DIRECTORY_SEPARATOR . 'modules'
-          ) === FALSE) {
+          ) === FALSE
+        ) {
           $startPos = strpos($civicrm_root,
             DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR
           );
@@ -1621,7 +1617,8 @@ class CRM_Utils_System {
    *
    * @param string $url
    *
-   * @return string $url, clean url
+   * @return string
+   *   , clean url
    */
   public static function cleanUrl($url) {
     if (!$url) {
@@ -1643,9 +1640,11 @@ class CRM_Utils_System {
    * @param bool $addLanguagePart
    * @param bool $removeLanguagePart
    *
-   * @return string $url, formatted url.
+   * @return string
+   *   , formatted url.
    */
-  static function languageNegotiationURL($url,
+  public static function languageNegotiationURL(
+    $url,
     $addLanguagePart = TRUE,
     $removeLanguagePart = FALSE
   ) {
@@ -1666,7 +1665,8 @@ class CRM_Utils_System {
    *   (optional) Sent by contribution/event reg/profile pages which uses a id
    *   specific extra file name if present.
    */
-  static function appendTPLFile($fileName,
+  public static function appendTPLFile(
+    $fileName,
     &$content,
     $overideFileName = NULL
   ) {
@@ -1754,7 +1754,6 @@ class CRM_Utils_System {
   // getPluginList()
 
   /**
-   *
    */
   public static function executeScheduledJobs() {
     $facility = new CRM_Core_JobManager();
@@ -1832,15 +1831,17 @@ class CRM_Utils_System {
    * This function delegates the decision-making to (a) the hook system and
    * (b) the BAO system.
    *
-   * @param array $crudLinkSpec with keys:
-   *  - action: int, CRM_Core_Action::UPDATE or CRM_Core_Action::VIEW [default: VIEW]
-   *  - entity_table: string, eg "civicrm_contact"
-   *  - entity_id: int
-   * @return array|NULL NULL if unavailable, or an array. array has keys:
-   *  - path: string
-   *  - query: array
-   *  - title: string
-   *  - url: string
+   * @param array $crudLinkSpec
+   *   With keys:.
+   *   - action: int, CRM_Core_Action::UPDATE or CRM_Core_Action::VIEW [default: VIEW]
+   *   - entity_table: string, eg "civicrm_contact"
+   *   - entity_id: int
+   * @return array|NULL
+   *   NULL if unavailable, or an array. array has keys:
+   *   - path: string
+   *   - query: array
+   *   - title: string
+   *   - url: string
    */
   public static function createDefaultCrudLink($crudLinkSpec) {
     $crudLinkSpec['action'] = CRM_Utils_Array::value('action', $crudLinkSpec, CRM_Core_Action::VIEW);