CRM-17789 - CRM_Core_Error - Adjust setDefaultCallback() sig
authorTim Otten <totten@civicrm.org>
Mon, 1 Aug 2016 00:58:02 +0000 (17:58 -0700)
committerTim Otten <totten@civicrm.org>
Mon, 1 Aug 2016 00:58:02 +0000 (17:58 -0700)
The definitions of PEAR_ErrorStack::setDefaultCallback() are slightly
different in PEAR 1.9.0 and PEAR 1.10.0.  The older one is *implicitly*
static (which, in some deployments of PHP, produces a warning); while the
newer one is *explicitly* static.

This code should work with either signature without warnings.

CRM/Core/Error.php

index 7d488ee9078d8a001319b5de69ca5eddea6a85f9..f6f70b187fa931050d1e204e76de32c27f96fc12 100644 (file)
@@ -124,8 +124,13 @@ class CRM_Core_Error extends PEAR_ErrorStack {
     $log = CRM_Core_Config::getLog();
     $this->setLogger($log);
 
-    // set up error handling for Pear Error Stack
-    $this->setDefaultCallback(array($this, 'handlePES'));
+    // PEAR<=1.9.0 does not declare "static" properly.
+    if (!is_callable(array('PEAR', '__callStatic'))) {
+      $this->setDefaultCallback(array($this, 'handlePES'));
+    }
+    else {
+      PEAR_ErrorStack::setDefaultCallback(array($this, 'handlePES'));
+    }
   }
 
   /**