Merge pull request #15321 from yashodha/dev_1065
[civicrm-core.git] / CRM / Core / ClassLoader.php
index a87e8ea783b934ef94c75096095a2958a0640fa5..b7fa50df7393d4e991ecf4533781d937461f9246 100644 (file)
@@ -63,11 +63,14 @@ class CRM_Core_ClassLoader {
   }
 
   /**
-   * @var bool TRUE if previously registered
+   * Has this been registered already.
+   *
+   * @var bool
    */
   protected $_registered;
 
   /**
+   * Class constructor.
    */
   protected function __construct() {
     $this->_registered = FALSE;
@@ -190,7 +193,7 @@ class CRM_Core_ClassLoader {
     // we do this to prevent a autoloader errors with joomla / 3rd party packages
     // Use absolute path, since we don't know the content of include_path yet.
     // CRM-11304
-    $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifer/HTMLPurifier/Bootstrap.php';
+    $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php';
     if (file_exists($file)) {
       return $file;
     }
@@ -202,6 +205,12 @@ class CRM_Core_ClassLoader {
    * @param $class
    */
   public function loadClass($class) {
+    if ($class === 'CiviCRM_API3_Exception') {
+      //call internal error class api/Exception first
+      // allow api/Exception class call external error class
+      // CiviCRM_API3_Exception
+      require_once 'api/Exception.php';
+    }
     if (
       // Only load classes that clearly belong to CiviCRM.
       // Note: api/v3 does not use classes, but api_v3's test-suite does