Beispiel #1
0
 /**
  * @param $class
  * @return bool
  */
 public static function autoload($class)
 {
     $uclass = ucfirst($class);
     if (!empty(self::$noAutoLoad[$class])) {
         return false;
     }
     if (!empty(self::$map[$uclass])) {
         require_once self::$map[$uclass];
         return true;
     }
     if (empty(self::$moduleMap)) {
         if (isset($GLOBALS['beanFiles'])) {
             self::$moduleMap = $GLOBALS['beanFiles'];
         } else {
             include 'include/modules.php';
             self::$moduleMap = $beanFiles;
         }
     }
     if (!empty(self::$moduleMap[$class]) && file_exists(self::$moduleMap[$class])) {
         require_once self::$moduleMap[$class];
         return true;
     }
     $viewPath = self::getFilenameForViewClass($class);
     if (!empty($viewPath)) {
         require_once $viewPath;
         return true;
     }
     $reportWidget = self::getFilenameForSugarWidget($class);
     if (!empty($reportWidget)) {
         require_once $reportWidget;
         return true;
     }
     return false;
 }
Beispiel #2
0
 public static function autoload($class)
 {
     $uclass = ucfirst($class);
     if (!empty(SugarAutoLoader::$noAutoLoad[$class])) {
         return false;
     }
     if (!empty(SugarAutoLoader::$map[$uclass])) {
         require_once SugarAutoLoader::$map[$uclass];
         return true;
     }
     if (empty(SugarAutoLoader::$moduleMap)) {
         if (isset($GLOBALS['beanFiles'])) {
             SugarAutoLoader::$moduleMap = $GLOBALS['beanFiles'];
         } else {
             include 'include/modules.php';
             SugarAutoLoader::$moduleMap = $beanFiles;
         }
     }
     if (!empty(SugarAutoLoader::$moduleMap[$class])) {
         require_once SugarAutoLoader::$moduleMap[$class];
         return true;
     }
     $viewPath = self::getFilenameForViewClass($class);
     if (!empty($viewPath)) {
         require_once $viewPath;
         return true;
     }
     $reportWidget = self::getFilenameForSugarWidget($class);
     if (!empty($reportWidget)) {
         require_once $reportWidget;
         return true;
     }
     // Autoload Google libraries
     $classPath = explode('_', $class);
     if ($classPath[0] != 'Google') {
         return false;
     }
     // Drop 'Google', and maximum class file path depth in this project is 3.
     $classPath = array_slice($classPath, 1, 2);
     $filePath = 'include/google-api-php-client/src/Google/' . implode('/', $classPath) . '.php';
     if (file_exists($filePath)) {
         require_once $filePath;
         return true;
     }
     return false;
 }
Beispiel #3
0
 public static function autoload($class)
 {
     $uclass = ucfirst($class);
     if (!empty(SugarAutoLoader::$noAutoLoad[$class])) {
         return false;
     }
     if (!empty(SugarAutoLoader::$map[$uclass])) {
         require_once SugarAutoLoader::$map[$uclass];
         return true;
     }
     if (empty(SugarAutoLoader::$moduleMap)) {
         if (isset($GLOBALS['beanFiles'])) {
             SugarAutoLoader::$moduleMap = $GLOBALS['beanFiles'];
         } else {
             include 'include/modules.php';
             SugarAutoLoader::$moduleMap = $beanFiles;
         }
     }
     if (!empty(SugarAutoLoader::$moduleMap[$class])) {
         require_once SugarAutoLoader::$moduleMap[$class];
         return true;
     }
     return false;
 }
Beispiel #4
0
 /**
  * Load a class
  * @param string $class Class name
  * @return boolean Success?
  */
 public static function autoload($class)
 {
     // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
     $class = ltrim($class, '\\');
     $uclass = ucfirst($class);
     if (!empty(self::$noAutoLoad[$class])) {
         return false;
     }
     // try known classes
     if (isset(self::$classMap[$uclass])) {
         if (self::$classMap[$uclass]) {
             // No need for a file_exists, if it is in the map we have found it before
             require_once self::$classMap[$uclass];
             return true;
         }
         return false;
     }
     // try namespaces
     if (false !== strpos($class, '\\')) {
         if ($file = self::getFilenameForFQCN($class)) {
             if (self::load($file)) {
                 self::$classMap[$class] = $file;
                 self::$classMapDirty = true;
                 return true;
             }
         }
         self::$classMap[$class] = false;
         self::$classMapDirty = true;
         return false;
     }
     if (empty(self::$moduleMap)) {
         if (isset($GLOBALS['beanFiles'])) {
             self::$moduleMap = $GLOBALS['beanFiles'];
         } else {
             include 'include/modules.php';
             self::$moduleMap = $beanFiles;
         }
     }
     // Try known modules
     if (!empty(self::$moduleMap[$class])) {
         require_once self::$moduleMap[$class];
         return true;
     }
     if (strncmp('HTMLPurifier', $class, 12) == 0) {
         return HTMLPurifier_Bootstrap::autoload($class);
     }
     // Split on _, capitalize elements and make a path
     // foo_bar -> Foo/Bar.
     $class_file = join('/', array_map('ucfirst', explode('_', $class)));
     // Try known prefixes
     foreach (self::$prefixMap as $prefix => $dir) {
         if (strncasecmp($prefix, $class, strlen($prefix)) === 0) {
             if ($file = self::requireWithCustom("{$dir}{$class_file}.php")) {
                 self::$classMap[$uclass] = $file;
                 self::$classMapDirty = true;
                 return true;
             } else {
                 break;
             }
         }
     }
     // Special cases
     // Special case because lookup goes to $_REQUEST['module']
     if ($file = self::getFilenameForViewClass($class)) {
         self::$classMap[$uclass] = $file;
         self::$classMapDirty = true;
         return true;
     }
     // Special case because widget name can be lowercased
     if ($file = self::getFilenameForSugarWidget($class)) {
         self::$classMap[$uclass] = $file;
         self::$classMapDirty = true;
         return true;
     }
     // Special case because it checks by ending in Layout
     if ($file = self::getFilenameForLayoutClass($class)) {
         self::$classMap[$uclass] = $file;
         self::$classMapDirty = true;
         return true;
     }
     if ($file = self::getFilenameForExpressionClass($class)) {
         self::$classMap[$uclass] = $file;
         self::$classMapDirty = true;
         return true;
     }
     // Try known dirs
     foreach (self::$dirMap as $dir) {
         // include/Class.php
         if ($file = self::requireWithCustom("{$dir}{$class_file}.php")) {
             self::$classMap[$uclass] = $file;
             self::$classMapDirty = true;
             return true;
         }
         // include/Class/Class.php
         // Note here we don't use $class_file since using path twice would not make sense:
         // Foo/Bar/Foo/Bar.php vs. Foo_Bar/Foo_Bar.php
         if ($file = self::requireWithCustom("{$dir}{$class}/{$class}.php")) {
             self::$classMap[$uclass] = $file;
             self::$classMapDirty = true;
             return true;
         }
         // try include/Foo_Bar.php as a last resort
         if ($file = self::requireWithCustom("{$dir}{$class}.php")) {
             self::$classMap[$uclass] = $file;
             self::$classMapDirty = true;
             return true;
         }
     }
     self::$classMap[$uclass] = false;
     self::$classMapDirty = true;
     return false;
 }