Ejemplo n.º 1
0
 public static function getLanguages($key = 'default')
 {
     static $languages;
     if (empty($languages)) {
         // Installation uses available languages
         if (MFactory::getApplication()->getClientId() == 2) {
             $languages[$key] = array();
             $knownLangs = MLanguage::getKnownLanguages(MPATH_BASE);
             foreach ($knownLangs as $metadata) {
                 // Take off 3 letters iso code languages as they can't match browsers' languages and default them to en
                 $languages[$key][] = new MObject(array('lang_code' => $metadata['tag']));
             }
         } else {
             $cache = MFactory::getCache('com_languages', '');
             if (!($languages = $cache->get('languages'))) {
                 $langs = get_available_languages();
                 $i = 0;
                 $lngs = array();
                 foreach ($langs as $lang) {
                     $lngs[$i] = new stdClass();
                     $lngs[$i]->title = $lang;
                     $i++;
                 }
                 $languages['default'] = $lngs;
                 $languages['lang_code'] = array();
                 if (isset($languages['default'][0])) {
                     foreach ($languages['default'] as $lang) {
                         $languages['lang_code'][$lang->title] = $lang;
                     }
                 }
                 $cache->store($languages, 'languages');
             }
         }
     }
     return $languages[$key];
 }
Ejemplo n.º 2
0
 public function getBuffer($type = null, $name = null, $attribs = array())
 {
     // If no type is specified, return the whole buffer
     if ($type === null) {
         return parent::$_buffer;
     }
     $result = null;
     if (isset(parent::$_buffer[$type][$name])) {
         return parent::$_buffer[$type][$name];
     }
     // If the buffer has been explicitly turned off don't display or attempt to render
     if ($result === false) {
         return null;
     }
     $renderer = $this->loadRenderer($type);
     if ($this->_caching == true && $type == 'modules') {
         $cache = MFactory::getCache('com_modules', '');
         $hash = md5(serialize(array($name, $attribs, $result, $renderer)));
         $cbuffer = $cache->get('cbuffer_' . $type);
         if (isset($cbuffer[$hash])) {
             return MCache::getWorkarounds($cbuffer[$hash], array('mergehead' => 1));
         } else {
             $options = array();
             $options['nopathway'] = 1;
             $options['nomodules'] = 1;
             $options['modulemode'] = 1;
             $this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
             $data = parent::$_buffer[$type][$name];
             $tmpdata = MCache::setWorkarounds($data, $options);
             $cbuffer[$hash] = $tmpdata;
             $cache->store($cbuffer, 'cbuffer_' . $type);
         }
     } else {
         $this->setBuffer($renderer->render($name, $attribs, $result), $type, $name);
     }
     return parent::$_buffer[$type][$name];
 }
Ejemplo n.º 3
0
 public function display($cachable = false, $urlparams = false)
 {
     $document = MFactory::getDocument();
     $viewType = $document->getType();
     $viewName = MRequest::getCmd('view', $this->default_view);
     $viewLayout = MRequest::getCmd('layout', 'default');
     $view = $this->getView($viewName, $viewType, '', array('base_path' => $this->basePath, 'layout' => $viewLayout));
     // Get/Create the model
     if ($model = $this->getModel($viewName)) {
         // Push the model into the view (as default)
         $view->setModel($model, true);
     }
     $view->document = $document;
     $conf = MFactory::getConfig();
     // Display the view
     if ($cachable && $viewType != 'feed' && $conf->get('caching') >= 1) {
         $option = MRequest::getCmd('option');
         $cache = MFactory::getCache($option, 'view');
         if (is_array($urlparams)) {
             $app = MFactory::getApplication();
             if (!empty($app->registeredurlparams)) {
                 $registeredurlparams = $app->registeredurlparams;
             } else {
                 $registeredurlparams = new stdClass();
             }
             foreach ($urlparams as $key => $value) {
                 // Add your safe url parameters with variable type as value {@see MFilterInput::clean()}.
                 $registeredurlparams->{$key} = $value;
             }
             $app->registeredurlparams = $registeredurlparams;
         }
         $cache->get($view, 'display');
     } else {
         $view->display();
     }
     return $this;
 }