__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

/**
 * Joomla! Content Management System
 *
 * @copyright  (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\Form\Field;

use Joomla\CMS\Application\ApplicationHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\Path;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormField;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\Database\ParameterType;
use Joomla\Filesystem\Folder;

// phpcs:disable PSR1.Files.SideEffects
\defined('JPATH_PLATFORM') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
 * Form Field to display a list of the layouts for a component view from
 * the extension or template overrides.
 *
 * @since  1.6
 */
class ComponentlayoutField extends FormField
{
    /**
     * The form field type.
     *
     * @var    string
     * @since  1.6
     */
    protected $type = 'ComponentLayout';

    /**
     * Method to get the field input for a component layout field.
     *
     * @return  string   The field input.
     *
     * @since   1.6
     */
    protected function getInput()
    {
        // Get the client id.
        $clientId = $this->element['client_id'];

        if ($clientId === null && $this->form instanceof Form) {
            $clientId = $this->form->getValue('client_id');
        }

        $clientId = (int) $clientId;

        $client = ApplicationHelper::getClientInfo($clientId);

        // Get the extension.
        $extension = (string) $this->element['extension'];

        if (empty($extension) && ($this->form instanceof Form)) {
            $extension = $this->form->getValue('extension');
        }

        $extension = preg_replace('#\W#', '', $extension);

        $template = (string) $this->element['template'];
        $template = preg_replace('#\W#', '', $template);

        $template_style_id = 0;

        if ($this->form instanceof Form) {
            $template_style_id = $this->form->getValue('template_style_id', null, 0);
            $template_style_id = (int) preg_replace('#\W#', '', $template_style_id);
        }

        $view = (string) $this->element['view'];
        $view = preg_replace('#\W#', '', $view);

        // If a template, extension and view are present build the options.
        if ($extension && $view && $client) {
            // Load language file
            $lang = Factory::getLanguage();
            $lang->load($extension . '.sys', JPATH_ADMINISTRATOR)
            || $lang->load($extension . '.sys', JPATH_ADMINISTRATOR . '/components/' . $extension);

            // Get the database object and a new query object.
            $db    = $this->getDatabase();
            $query = $db->getQuery(true);

            // Build the query.
            $query->select(
                [
                    $db->quoteName('e.element'),
                    $db->quoteName('e.name'),
                ]
            )
                ->from($db->quoteName('#__extensions', 'e'))
                ->where(
                    [
                        $db->quoteName('e.client_id') . ' = :clientId',
                        $db->quoteName('e.type') . ' = ' . $db->quote('template'),
                        $db->quoteName('e.enabled') . ' = 1',
                    ]
                )
                ->bind(':clientId', $clientId, ParameterType::INTEGER);

            if ($template) {
                $query->where($db->quoteName('e.element') . ' = :template')
                    ->bind(':template', $template);
            }

            if ($template_style_id) {
                $query->join('LEFT', $db->quoteName('#__template_styles', 's'), $db->quoteName('s.template') . ' = ' . $db->quoteName('e.element'))
                    ->where($db->quoteName('s.id') . ' = :style')
                    ->bind(':style', $template_style_id, ParameterType::INTEGER);
            }

            // Set the query and load the templates.
            $db->setQuery($query);
            $templates = $db->loadObjectList('element');

            // Build the search paths for component layouts.
            $component_path = Path::clean($client->path . '/components/' . $extension . '/tmpl/' . $view);

            // Check if the new layouts folder exists, else use the old one
            if (!is_dir($component_path)) {
                $component_path = Path::clean($client->path . '/components/' . $extension . '/views/' . $view . '/tmpl');
            }

            // Prepare array of component layouts
            $component_layouts = [];

            // Prepare the grouped list
            $groups = [];

            // Add a Use Global option if useglobal="true" in XML file
            if ((string) $this->element['useglobal'] === 'true') {
                $groups[Text::_('JOPTION_FROM_STANDARD')]['items'][] = HTMLHelper::_('select.option', '', Text::_('JGLOBAL_USE_GLOBAL'));
            }

            // Add the layout options from the component path.
            if (is_dir($component_path) && ($component_layouts = Folder::files($component_path, '^[^_]*\.xml$', false, true))) {
                // Create the group for the component
                $groups['_']          = [];
                $groups['_']['id']    = $this->id . '__';
                $groups['_']['text']  = Text::sprintf('JOPTION_FROM_COMPONENT');
                $groups['_']['items'] = [];

                foreach ($component_layouts as $i => $file) {
                    // Attempt to load the XML file.
                    if (!$xml = simplexml_load_file($file)) {
                        unset($component_layouts[$i]);

                        continue;
                    }

                    // Get the help data from the XML file if present.
                    if (!$menu = $xml->xpath('layout[1]')) {
                        unset($component_layouts[$i]);

                        continue;
                    }

                    $menu = $menu[0];

                    // Add an option to the component group
                    $value                  = basename($file, '.xml');
                    $component_layouts[$i]  = $value;
                    $text                   = isset($menu['option']) ? Text::_($menu['option']) : (isset($menu['title']) ? Text::_($menu['title']) : $value);
                    $groups['_']['items'][] = HTMLHelper::_('select.option', '_:' . $value, $text);
                }
            }

            // Loop on all templates
            if ($templates) {
                foreach ($templates as $template) {
                    // Load language file
                    $lang->load('tpl_' . $template->element . '.sys', $client->path)
                        || $lang->load('tpl_' . $template->element . '.sys', $client->path . '/templates/' . $template->element);

                    $template_path = Path::clean(
                        $client->path
                        . '/templates/'
                        . $template->element
                        . '/html/'
                        . $extension
                        . '/'
                        . $view
                    );

                    // Add the layout options from the template path.
                    if (is_dir($template_path) && ($files = Folder::files($template_path, '^[^_]*\.php$', false, true))) {
                        foreach ($files as $i => $file) {
                            // Remove layout files that exist in the component folder
                            if (\in_array(basename($file, '.php'), $component_layouts)) {
                                unset($files[$i]);
                            }
                        }

                        if (\count($files)) {
                            // Create the group for the template
                            $groups[$template->name]          = [];
                            $groups[$template->name]['id']    = $this->id . '_' . $template->element;
                            $groups[$template->name]['text']  = Text::sprintf('JOPTION_FROM_TEMPLATE', $template->name);
                            $groups[$template->name]['items'] = [];

                            foreach ($files as $file) {
                                // Add an option to the template group
                                $value = basename($file, '.php');
                                $text  = $lang
                                    ->hasKey(
                                        $key = strtoupper(
                                            'TPL_'
                                            . $template->name
                                            . '_'
                                            . $extension
                                            . '_'
                                            . $view
                                            . '_LAYOUT_'
                                            . $value
                                        )
                                    )
                                    ? Text::_($key) : $value;
                                $groups[$template->name]['items'][] = HTMLHelper::_('select.option', $template->element . ':' . $value, $text);
                            }
                        }
                    }
                }
            }

            // Compute attributes for the grouped list
            $attr = $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
            $attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';

            // Prepare HTML code
            $html = [];

            // Compute the current selected values
            $selected = [$this->value];

            // Add a grouped list
            $html[] = HTMLHelper::_(
                'select.groupedlist',
                $groups,
                $this->name,
                ['id' => $this->id, 'group.id' => 'id', 'list.attr' => $attr, 'list.select' => $selected]
            );

            return implode($html);
        } else {
            return '';
        }
    }
}

Filemanager

Name Type Size Permission Actions
AccessiblemediaField.php File 5.91 KB 0664
AccesslevelField.php File 1.02 KB 0664
AliastagField.php File 2.08 KB 0664
AuthorField.php File 2.12 KB 0664
CachehandlerField.php File 1.27 KB 0664
CalendarField.php File 13.69 KB 0664
CaptchaField.php File 5.1 KB 0664
CategoryField.php File 3.42 KB 0664
CheckboxField.php File 3.96 KB 0664
CheckboxesField.php File 4.52 KB 0664
ChromestyleField.php File 6.64 KB 0664
ColorField.php File 9.73 KB 0664
ComboField.php File 1.64 KB 0664
ComponentlayoutField.php File 9.9 KB 0664
ComponentsField.php File 2.18 KB 0664
ContenthistoryField.php File 2 KB 0664
ContentlanguageField.php File 1.02 KB 0664
ContenttypeField.php File 2.82 KB 0664
DatabaseconnectionField.php File 2.4 KB 0664
EditorField.php File 9.04 KB 0664
EmailField.php File 1.67 KB 0664
FileField.php File 3.89 KB 0664
FilelistField.php File 6.59 KB 0664
FolderlistField.php File 6.47 KB 0664
FrontendlanguageField.php File 2.2 KB 0664
GroupedlistField.php File 5.2 KB 0664
HeadertagField.php File 1.13 KB 0664
HiddenField.php File 1.46 KB 0664
ImagelistField.php File 1.09 KB 0664
IntegerField.php File 2.07 KB 0664
LanguageField.php File 2.59 KB 0664
LastvisitdaterangeField.php File 1.62 KB 0664
LimitboxField.php File 2.67 KB 0664
ListField.php File 7.13 KB 0664
MediaField.php File 13.17 KB 0664
MenuField.php File 3.75 KB 0664
MenuitemField.php File 7.13 KB 0664
MeterField.php File 5.8 KB 0664
ModulelayoutField.php File 7.86 KB 0664
ModuleorderField.php File 3.88 KB 0664
ModulepositionField.php File 5.19 KB 0664
ModuletagField.php File 1.17 KB 0664
NoteField.php File 2.71 KB 0664
NumberField.php File 5.94 KB 0664
OrderingField.php File 5.57 KB 0664
PasswordField.php File 7.95 KB 0664
PluginsField.php File 5.18 KB 0664
PluginstatusField.php File 782 B 0664
PredefinedlistField.php File 3.48 KB 0664
RadioField.php File 1.28 KB 0664
RadiobasicField.php File 1.51 KB 0664
RangeField.php File 1.62 KB 0664
RedirectStatusField.php File 877 B 0664
RegistrationdaterangeField.php File 1.61 KB 0664
RulesField.php File 9.45 KB 0664
SessionhandlerField.php File 1.37 KB 0664
SpacerField.php File 3.97 KB 0664
SqlField.php File 8.94 KB 0664
StatusField.php File 867 B 0664
SubformField.php File 13.25 KB 0664
TagField.php File 9.75 KB 0664
TelephoneField.php File 1.83 KB 0664
TemplatestyleField.php File 5.75 KB 0664
TextField.php File 8.99 KB 0664
TextareaField.php File 5.27 KB 0664
TimeField.php File 4.3 KB 0664
TimezoneField.php File 4.47 KB 0664
TransitionField.php File 5.34 KB 0664
UrlField.php File 2.03 KB 0664
UserField.php File 4.61 KB 0664
UseractiveField.php File 1.27 KB 0664
UsergrouplistField.php File 2.93 KB 0664
UserstateField.php File 808 B 0664
WorkflowComponentSectionsField.php File 1.73 KB 0664
WorkflowconditionField.php File 3.78 KB 0664
WorkflowstageField.php File 4.92 KB 0664
Filemanager