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]; }
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]; }
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; }