Your IP : 216.73.216.219


Current Path : /home/chauffn/vuzelia/2023/tmp/install_6a8c3a237ada0/
Upload File :
Current File : /home/chauffn/vuzelia/2023/tmp/install_6a8c3a237ada0/helix3.php

<?php
/**
 * @package Helix3 Framework
 * @author JoomShaper https://www.joomshaper.com
 * @copyright (c) 2010 - 2026 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
 */

//no direct accees
defined('_JEXEC') or die('resticted aceess');

use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Form\Form;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Uri\Uri;

if (version_compare(JVERSION, '5.0', '>=')) {
    if (! class_exists('Joomla\\CMS\\Filesystem\\File') && class_exists('Joomla\\Filesystem\\File')) {
        class_alias('Joomla\\Filesystem\\File', 'Joomla\\CMS\\Filesystem\\File');
    }
}

use Joomla\Registry\Registry;

if (! class_exists('Helix3')) {
    require_once __DIR__ . '/core/helix3.php';
}

class plgSystemHelix3 extends CMSPlugin
{

    protected $autoloadLanguage = true;

    protected $app;

    /**
     * Handle the event hook onAfterInitialize.
     * Here we can override the HTML functions.
     *
     * @return    void
     * @since    2.0.0
     */
    public function onAfterInitialise()
    {
        $template = $this->getTemplateName();

        if (isset($template) && ! empty($template)) {
            $bootstrapPath = JPATH_ROOT . '/plugins/system/helix3/html/layouts/libraries/cms/html/bootstrap.php';

            if ($this->app->isClient('site') && \file_exists($bootstrapPath)) {
                if (! class_exists('Helix3Bootstrap')) {
                    require_once $bootstrapPath;
                }

                HTMLHelper::register('bootstrap.tooltip', ['Helix3Bootstrap', 'tooltip']);
                HTMLHelper::register('bootstrap.popover', ['Helix3Bootstrap', 'popover']);
            }
        }
    }

    // Copied style
    public function onAfterDispatch()
    {

        if (! Factory::getApplication()->isClient('api') && ! Factory::getApplication()->isClient('administrator')) {

            $activeMenu = Factory::getApplication()->getMenu()->getActive();

            if (is_null($activeMenu)) {
                $template_style_id = 0;
            } else {
                $template_style_id = (int) $activeMenu->template_style_id;
            }

            if ($template_style_id > 0) {
                $db    = Factory::getDbo();
                $query = $db->getQuery(true);
                $query->select(['*']);
                $query->from($db->quoteName('#__template_styles'));
                $query->where($db->quoteName('client_id') . ' = 0');
                $query->where($db->quoteName('id') . ' = ' . $db->quote($template_style_id));
                $db->setQuery($query);
                $style = $db->loadObject();

                if (! empty($style->template) && ! empty($style->params)) {
                    Factory::getApplication()->setTemplate($style->template, $style->params);
                }
            }
        }
    }

    public function onContentPrepareForm($form, $data)
    {
        $v         = self::getVersion();
        $doc       = Factory::getDocument();
        $plg_path  = Uri::root(true) . '/plugins/system/helix3';
        $plg_path2 = Uri::root() . 'plugins/system/helix3';
        Form::addFormPath(JPATH_PLUGINS . '/system/helix3/params');

        if ($form->getName() == 'com_menus.item') { //Add Helix menu params to the menu item
            HTMLHelper::_('jquery.framework');
            $data = (array) $data;

            if ($data['id'] && $data['parent_id'] == 1) {
                $doc->addStyleSheet($plg_path . '/assets/css/bootstrap.css?' . $v);
                $doc->addStyleSheet($plg_path . '/assets/css/font-awesome.min.css?' . $v);
                $doc->addStyleSheet($plg_path . '/assets/css/modal.css?' . $v);
                $doc->addStyleSheet($plg_path . '/assets/css/menu.generator.css?' . $v);

                HTMLHelper::_('jquery.framework');

                if (JVERSION < 4) {
                    HTMLHelper::_('jquery.ui', ['core', 'more', 'sortable']);
                    $doc->addScript($plg_path . '/assets/js/jquery-ui.draggable.min.js?' . $v);
                } else {
                    $doc->addScript($plg_path . '/assets/js/jquery-ui.min.js?' . $v);
                }
                $doc->addScript($plg_path . '/assets/js/modal.js?' . $v);
                $doc->addScript($plg_path . '/assets/js/menu.generator.js?' . $v);
                $form->loadFile('menu-parent', false);

            } else {
                $form->loadFile('menu-child', false);
            }

            $form->loadFile('page-title', false);

        }

        //Article Post format
        if ($form->getName() == 'com_content.article') {
            HTMLHelper::_('jquery.framework');
            $doc->addStyleSheet($plg_path . '/assets/css/font-awesome.min.css?' . $v);
            $doc->addScript($plg_path . '/assets/js/post-formats.js?' . $v);

            $tpl_path = JPATH_ROOT . '/templates/' . $this->getTemplateName();

            if (File::exists($tpl_path . '/post-formats.xml')) {
                Form::addFormPath($tpl_path);
            } else {
                Form::addFormPath(JPATH_PLUGINS . '/system/helix3/params');
            }

            $form->loadFile('post-formats', false);
        }

    }

    // Live Update system
    public function onExtensionAfterSave($option, $data)
    {

        if ($option == 'com_templates.style' && ! empty($data->id)) {

            $params = new Registry;
            $params->loadString($data->params);

            $email       = $params->get('joomshaper_email');
            $license_key = $params->get('joomshaper_license_key');
            $template    = trim($data->template);

            if (! empty($email) and ! empty($license_key)) {

                $extra_query  = 'joomshaper_email=' . urlencode($email);
                $extra_query .= '&amp;joomshaper_license_key=' . urlencode($license_key);

                $db = Factory::getDbo();

                $fields = [
                    $db->quoteName('extra_query') . '=' . $db->quote($extra_query),
                    $db->quoteName('last_check_timestamp') . '=0',
                ];

                $query = $db->getQuery(true)
                    ->update($db->quoteName('#__update_sites'))
                    ->set($fields)
                    ->where($db->quoteName('name') . '=' . $db->quote($template));
                $db->setQuery($query);
                $db->execute();
            }
        }
    }

    public function onAfterRoute()
    {
        $japps = Factory::getApplication();

        if ($japps->isClient('administrator')) {
            $user = Factory::getUser();

            if (! in_array(8, $user->groups)) {
                return false;
            }

            $inputs = Factory::getApplication()->input;

            $option     = $inputs->get('option', '');
            $id         = $inputs->get('id', '0', 'INT');
            $helix3task = $inputs->get('helix3task', '');

            if (strtolower($option) == 'com_templates' && $id && $helix3task == "export") {
                $db    = Factory::getDbo();
                $query = $db->getQuery(true);

                $query
                    ->select('*')
                    ->from($db->quoteName('#__template_styles'))
                    ->where($db->quoteName('id') . ' = ' . $db->quote($id) . ' AND ' . $db->quoteName('client_id') . ' = 0');

                $db->setQuery($query);

                $result = $db->loadObject();

                header('Content-Description: File Transfer');
                header('Content-type: application/txt');
                header('Content-Disposition: attachment; filename="' . $result->template . '_settings_' . date('d-m-Y') . '.json"');
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate');
                header('Pragma: public');

                echo $result->params;

                exit;
            }
        }

    }

    private function getTemplateName()
    {
        $db    = Factory::getDbo();
        $query = $db->getQuery(true);
        $query->select($db->quoteName(['template']));
        $query->from($db->quoteName('#__template_styles'));
        $query->where($db->quoteName('client_id') . ' = 0');
        $query->where($db->quoteName('home') . ' = 1');
        $db->setQuery($query);

        return $db->loadObject()->template;
    }

    public function onAfterRender()
    {
        $app = Factory::getApplication();

        if ($app->isClient('administrator')) {
            return;
        }

        $body   = Factory::getApplication()->getBody();
        $preset = Helix3::Preset();

        $body = str_replace('{helix_preset}', ! empty($preset) ? $preset : '', $body);

        Factory::getApplication()->setBody($body);
    }

    private static function getVersion()
    {
        $db    = Factory::getDbo();
        $query = $db->getQuery(true);
        $query
            ->select(['*'])
            ->from($db->quoteName('#__extensions'))
            ->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
            ->where($db->quoteName('element') . ' = ' . $db->quote('helix3'))
            ->where($db->quoteName('folder') . ' = ' . $db->quote('system'));
        $db->setQuery($query);
        $result         = $db->loadObject();
        $manifest_cache = json_decode($result->manifest_cache);

        if (isset($manifest_cache->version)) {
            return $manifest_cache->version;
        }

        return;
    }
}