static function buildActionCache($silent = true) { if (!is_dir(ActionFactory::$action_directory)) { return false; } // First get a list of all the files in this directory. $entries = array(); $actions = array(); $javascript = ""; foreach (SugarAutoLoader::getFilesCustom(ActionFactory::$action_directory) as $path) { $entry = basename($path); if (strtolower(substr($entry, -4)) != ".php" || in_array($entry, ActionFactory::$exclude_files)) { continue; } require_once $path; $className = substr($entry, 0, strlen($entry) - 4); $actionName = call_user_func(array($className, "getActionName")); $actions[$actionName] = array('class' => $className, 'file' => $path); $javascript .= call_user_func(array($className, "getJavascriptClass")); if (!$silent) { echo "added action {$actionName} <br/>"; } } if (empty($actions)) { return ""; } create_cache_directory("Expressions/actions_cache.php"); write_array_to_file('actions', $actions, sugar_cached('Expressions/actions_cache.php')); ActionFactory::$loaded_actions = $actions; return $javascript; }
/** * initializes the cache in question */ protected static function _init() { $lastPriority = 1000; $locations = SugarAutoLoader::getFilesCustom('include/SugarCache'); if (empty($locations)) { $locations = array('include/SugarCache/SugarCacheMemory.php'); } foreach ($locations as $location) { $cacheClass = basename($location, ".php"); if ($cacheClass == 'SugarCache') { continue; } require_once $location; if (class_exists($cacheClass) && is_subclass_of($cacheClass, 'SugarCacheAbstract')) { $GLOBALS['log']->debug("Found cache backend {$cacheClass}"); $cacheInstance = new $cacheClass(); if ($cacheInstance->useBackend() && $cacheInstance->getPriority() < $lastPriority) { $GLOBALS['log']->debug("Using cache backend {$cacheClass}, since " . $cacheInstance->getPriority() . " is less than " . $lastPriority); self::$_cacheInstance = $cacheInstance; $lastPriority = $cacheInstance->getPriority(); } } } }
/** * Builds the theme registry */ public static function buildRegistry() { self::$_themes = array(); // check for a default themedef file $themedefDefault = array(); if (SugarAutoLoader::existing("custom/themes/default/themedef.php")) { $themedef = array(); require "custom/themes/default/themedef.php"; $themedefDefault = $themedef; } foreach (SugarAutoLoader::getFilesCustom("themes", true) as $file) { if (SugarAutoLoader::existing("{$file}/themedef.php")) { $themedef = array(); require "{$file}/themedef.php"; $themedef = array_merge($themedef, $themedefDefault); $themedef['dirName'] = basename($file); if (self::exists($themedef['dirName'])) { $existingTheme = self::get($themedef['dirName']); foreach (SugarTheme::getThemeDefFields() as $field) { if (!isset($themedef[$field])) { $themedef[$field] = $existingTheme->{$field}; } } self::remove($themedef['dirName']); } if (isset($themedef['name'])) { self::add($themedef); } } } // default to setting the default theme as the current theme if (!isset($GLOBALS['sugar_config']['default_theme']) || !self::set($GLOBALS['sugar_config']['default_theme'])) { if (count(self::availableThemes()) == 0) { sugar_die('No valid themes are found on this instance'); } else { self::set(self::getDefaultThemeKey()); } } }
/** * Finds all the available loggers in the application */ protected function _findAvailableLoggers() { $locations = SugarAutoLoader::getFilesCustom('include/SugarLogger'); foreach ($locations as $location) { $loggerClass = basename($location, ".php"); if ($loggerClass == "LoggerTemplate" || $loggerClass == "LoggerManager") { continue; } require_once $location; if (class_exists($loggerClass) && class_implements($loggerClass, 'LoggerTemplate')) { self::$_loggers[$loggerClass] = new $loggerClass(); } } }