File Manager

Current Directory: /home/astoriaah/www/templates/yootheme/vendor/yootheme/theme/platforms/joomla/src
Viewing File: /home/astoriaah/www/templates/yootheme/vendor/yootheme/theme/platforms/joomla/src/Joomla.php
<?php namespace YOOtheme\Theme; use YOOtheme\EventSubscriberInterface; use YOOtheme\Module; use YOOtheme\Theme\Joomla\ChildThemeListener; use YOOtheme\Theme\Joomla\ContentListener; use YOOtheme\Theme\Joomla\CustomizerListener; use YOOtheme\Theme\Joomla\UrlListener; use YOOtheme\Util\Str; class Joomla extends Module implements EventSubscriberInterface { /** * {@inheritdoc} */ public function __invoke($app) { $app->subscribe(new ContentListener) ->subscribe(new CustomizerListener) ->subscribe(new ChildThemeListener) ->subscribe(new UrlListener); $app['locator']->addPath("{$this->path}/assets", 'assets'); } public function onInit($theme) { $this->language->load('tpl_yootheme', $this->theme->path); $this->document->setBase(htmlspecialchars(\JUri::current())); $this->url->addResolver(function ($path, $parameters, $secure, $next) { $uri = $next($path, $parameters, $secure, $next); if (Str::startsWith($uri->getQueryParam('p'), 'theme/')) { $query = $uri->getQueryParams(); $query['option'] = 'com_ajax'; $query['style'] = $this->theme->id; $uri = $uri->withQueryParams($query); } return $uri; }); if (!$this->app['admin'] && !$this->theme->isCustomizer && $this->document->getType() == 'html') { $this->app->trigger('theme.site', [$this->theme]); } } public function onSite($theme) { require "{$this->theme->path}/html/helpers.php"; $this->theme->set('direction', $this->document->direction); $this->theme->set('site_url', rtrim(\JUri::root(), '/')); $this->theme->set('page_class', $this->application->getParams()->get('pageclass_sfx')); if ($this->customizer->isActive()) { \JHtml::_('behavior.keepalive'); $this->conf->set('caching', 0); } $this->builder->addRenderer(function ($element, $type, $next) { $result = $next($element, $type); if ($element->type == 'layout') { $result = \JHtmlContent::prepare($result); } return $result; }); } public function onDispatch() { if (!$this->sections->exists('builder') && null !== $data = $this->theme->get('builder')) { $this->sections->set('builder', function () use ($data) { $result = $this->builder->render($data['content'], 'page').$data['edit']; $this->app->trigger('content', [$result]); return $result; }); } if ($this->sections->exists('builder')) { $this->theme->set('builder', true); $this->document->setBuffer('', 'component'); } } public function onContentData($context, $data) { if ($context == 'com_templates.style') { $params = ['style' => $data->id]; } elseif ($context == 'com_content.article' && $data->id) { \JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php'); $route = \JRouter::getInstance('site')->build(\ContentHelperRoute::getArticleRoute($data->id, $data->catid)); $params = [ 'section' => 'builder', 'site' => $this->admin ? preg_replace('/\/administrator/', '', $route, 1) : (string) $route, ]; } else { return; } $this->scripts ->add('$customizer', 'platforms/joomla/app/customizer.js', '$customizer-data') ->add('$customizer-data', sprintf('var $customizer = %s;', json_encode([ 'context' => $context, 'apikey' => ($installer = \JPluginHelper::getPlugin('installer', 'yootheme')) ? (new \JRegistry($installer->params))->get('apikey') : false, 'url' => $this->app->url(($this->app['admin'] ? 'administrator/' : '') . 'index.php?p=customizer&option=com_ajax', $params), ])), [], 'string'); } public static function getSubscribedEvents() { return [ 'theme.init' => ['onInit', -15], 'theme.site' => ['onSite', 10], 'dispatch' => 'onDispatch', 'content.data' => 'onContentData', ]; } }