HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/administrator/components/com_acym/helpers/entitySelect.php
<?php
defined('_JEXEC') or die('Restricted access');
?><?php

class acymentitySelectHelper extends acymObject
{
    var $svg;
    var $columnsHeaderNotToDisplay;

    public function __construct()
    {
        parent::__construct();
        $this->svg = acym_getSvg(ACYM_IMAGES.'loader.svg');
        $this->columnsHeaderNotToDisplay = ['color'];
    }

    private function _getListing($type, $allSelector, $entity, $columnsToDisplay = [])
    {
        $display = '<div class="cell medium-auto grid-x acym_area acym__entity_select__'.$type.'">
                        <h5 class="cell font-bold acym_area_title text-center">'.acym_translation('ACYM_'.strtoupper($type).'_'.strtoupper($entity)).'</h5>
                        <div class="cell grid-x">
                        <div class="cell grid-x acym__entity_select__header">
                            <div class="cell grid-x">
                                <div class="cell"><input type="text" class="acym__light__input" v-model="'.$type.'Search" placeholder="'.acym_translation('ACYM_SEARCH').'"></div>
                                <div class="cell align-right grid-x acym__entity_select__select__all">
                                    <button type="button" v-show="!loading" v-if="displaySelectAll_'.$type.'" v-on:click="moveAll('.acym_escapeDB($type).')" class="cell shrink acym__entity_select__select__all__button acym__entity_select__select__all__button__'.$type.'">'.acym_translation('ACYM_'.strtoupper($allSelector).'_ALL').'</button>
                                </div>
                            </div>
                        </div>
                        <div v-infinite-scroll="loadMoreEntity'.ucfirst($type).'" :infinite-scroll-disabled="busy" class="acym__listing cell acym__entity_select__'.$type.'__listing acym__content">';
        $emptyMessage = acym_translation($type === 'available' ? 'ACYM_NOTHING_TO_SHOW_HERE_RIGHT_PANEL' : 'ACYM_PLEASE_CLICK_ON_THE_LEFT_PANEL');
        $display .= '<div class="cell text-center acym__entity_select__title margin-top-2" v-show="Object.keys(entitiesToDisplay_'.$type.').length == 0 && !loading">'.$emptyMessage.'</div>
                    <div class="cell acym_vcenter acym__listing__row grid-x acym__listing__row__header" v-if="Object.keys(entitiesToDisplay_'.$type.').length != 0">';


        if ($type !== 'available') $display .= '<div class="cell small-1"></div>';

        foreach ($columnsToDisplay as $column => $class) {
            $display .= '<div class="cell grid-x '.$class.'">'.(in_array($column, $this->columnsHeaderNotToDisplay) ? '' : acym_translation('ACYM_'.strtoupper($column))).'</div>';
        }

        if ($type === 'available') $display .= '<div class="cell small-1"></div>';
        $display .= '</div>';

        $functionClick = $type === 'available' ? 'v-on:click="selectEntity(entity.id)"' : 'v-on:click="unselectEntity(entity.id)"';
        $display .= '<div '.$functionClick.' v-for="(entity, index) in entitiesToDisplay_'.$type.'" class="cell acym_vcenter acym__listing__row grid-x acym__entity_select__'.$type.'__listing__row" >';

        if ($type !== 'available') {
            $display .= '<div class="cell small-1 vertical-align-middle text-center">
                            <div class="plus-container acym__entity_select__selected__listing__row__unselect">
                              <div class="top-plus plus-bar"></div>
                              <div class="plus plus-bar"></div>
                              <div class="bottom-plus plus-bar"></div>
                            </div>
                        </div>';
        }

        $display .= '<div v-for="(column, index) in columnsToDisplay" class="cell align-center acym__entity_select__columns" :class="getClass(column)" v-html="entity[column]"></div>';

        if ($type === 'available') {
            $display .= '<div class="cell small-1 vertical-align-middle text-center">
                        <div class="plus-container acym__entity_select__available__listing__row__select">
                          <div class="top-plus plus-bar"></div>
                          <div class="plus plus-bar"></div>
                          <div class="bottom-plus plus-bar"></div>
                        </div>
        			</div>';
        }

        $display .= '</div>
                    <div class="cell grid-x align-center acym__entity_select__loading margin-top-1"  v-show="loading"><div class="cell text-center acym__entity_select__title">'.acym_translation('ACYM_WE_ARE_LOADING_YOUR_DATA').'</div><div class="cell grid-x shrink margin-top-1">'.$this->svg.'</div></div>';
        $display .= '</div>';
        $display .= '</div>
                    </div>';

        return $display;
    }

    public function entitySelect($entity, $entityParams = [], $columnsToDisplay = ['name'], $buttonSubmit = ['text' => '', 'action' => '', 'class' => ''], $displaySelected = true, $additionalData = '')
    {
        $entityClass = acym_get('class.'.$entity);
        $entitySelectController = acym_get('controller.entitySelect');

        $columnJoin = '';
        $columnsToGet = $columnsToDisplay;
        if (!empty($columnsToGet['join'])) {
            $joinArray = [
                'join' => $columnsToGet['join'],
            ];
            $columnJoin = explode('.', $columnsToGet['join']);

            unset($columnsToGet['join']);
            $columnsToGet = array_keys($columnsToGet);
            $columnsToGet = array_merge($columnsToGet, $joinArray);
        } else {
            $columnsToGet = array_keys($columnsToGet);
        }

        $data = $entitySelectController->loadEntityBack($entity, 0, 500, $entityParams['join'], $columnsToGet);

        unset($columnsToDisplay['join']);

        if (empty($entityClass)) return false;

        if (empty($entityParams['elementsPerPage']) || $entityParams['elementsPerPage'] < 1) {
            $paginationHelper = acym_get('helper.pagination');
            $entityParams['elementsPerPage'] = $paginationHelper->getListLimit();
        }

        if (!empty($columnJoin)) $columnJoin = 'data-column-join="'.$columnJoin[1].'" data-table-join="'.$columnJoin[0].'"';
        $display = '<div style="display: none;" id="acym__entity_select" class="acym__entity_select cell grid-x" data-display-selected="'.($displaySelected ? 'true' : 'false').'" data data-entity="'.acym_escape($entity).'" data-type="select" data-columns="'.implode(',', array_keys($columnsToDisplay)).'" data-columns-class="'.acym_escape(json_encode($columnsToDisplay)).'" data-join="'.$entityParams['join'].'" '.$columnJoin.'>';

        $display .= $this->_getListing('available', 'select', $entity, $columnsToDisplay);

        $display .= '<div class="cell medium-shrink text-center grid-x acym_vcenter"><i class="acymicon-arrows-h cell"></i></div>';

        $display .= $this->_getListing('selected', 'unselect', $entity, $columnsToDisplay);

        $display .= $additionalData;

        if (!empty($buttonSubmit['text'])) {
            $class = !empty($buttonSubmit['action']) ? 'acy_button_submit' : 'acym__entity_select__button__close';
            if (!empty($buttonSubmit['class'])) $class .= ' '.$buttonSubmit['class'];
            $buttonSubmit['action'] = !empty($buttonSubmit['action']) ? 'data-task="'.$buttonSubmit['action'].'"' : '';
            $display .= '<div class="cell grid-x align-center"><button type="button" id="acym__entity_select__button__submit" class="cell shrink grid-x '.$class.' button" '.$buttonSubmit['action'].'>'.$buttonSubmit['text'].'</button></div>';
        }

        $display .= '<input type="hidden" class="acym__entity_select__selected" name="acym__entity_select__selected" value="">';
        $display .= '<input type="hidden" class="acym__entity_select__unselected" name="acym__entity_select__unselected" value="">';

        if (!empty($data)) $display .= '<input type="hidden" value="'.acym_escape(json_encode($data['data'])).'" id="acym__entity_select__data">';

        $display .= '</div>';

        return $display;
    }

    public function getColumnsForList($join = '', $small = false)
    {
        $columns = [
            'color' => $small ? 'small-2' : 'small-1',
            'name' => 'auto',
            'id' => 'small-2',
        ];
        if (!empty($join)) $columns['join'] = $join;

        return $columns;
    }

    public function getColumnsForUser($join = '')
    {
        $columns = [
            'email' => 'auto',
            'name' => 'auto',
            'id' => 'small-1',
        ];
        if (!empty($join)) $columns['join'] = $join;

        return $columns;
    }

}