* @license See LICENSE that came packaged with this software */ class saSettings { static $cache = false; /** * get * Returns the string value of a particular setting. * * @param string $setting * @static * @access public * @return string */ static function get($setting, $default = null) { // // Pull from cached settings array // $cache = self::buildCache('settings_array'); // // if ($cache->has('settings_array_' . $setting)) // { // return $cache->get('settings_array_' . $setting); // } // // //Look in app.ymls for setting // return sfConfig::get('app_' . self::settingize($setting), $default); $setting = Doctrine::getTable('saSetting')->findOneBySlug($setting); if($setting instanceof saSetting) { return $setting->getValue(); } return sfConfig::get('app_' . self::settingize($setting), $default); // return Doctrine::getTable('saSetting')->findOneBySlug($setting)->getValue(); } static function buildCache($type) { $cache_handler = self::getCache(); if (!$cache_handler->get($type . '_sa_cache_is_built', false)) { foreach (Doctrine::getTable('saSetting')->findAll() as $setting) { $cache_handler->set($type . '_' . $setting['slug'], $setting->getValue()); } $cache_handler->set($type . '_sa_cache_is_built', true); } return $cache_handler; } static public function clearSettingsCache() { self::getCache()->clean(); } static public function getCache() { if (!self::$cache) { $cache_settings = sfConfig::get('app_saSettingsPlugin_cache', array( 'class' => 'sfNoCache', 'options' => array() )); $class = $cache_settings['class']; $options = $cache_settings['options']; self::$cache = new $class($options); } return self::$cache; } static public function settingize($anystring) { return str_replace('-', '_', Doctrine_Inflector::urlize(trim($anystring))); } }