__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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\Access\Access;
use Joomla\CMS\Access\Rules;
use Joomla\CMS\Form\FormField;
use Joomla\CMS\Helper\UserGroupsHelper;
use Joomla\Database\ParameterType;

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

/**
 * Form Field class for the Joomla Platform.
 * Field for assigning permissions to groups for a given asset
 *
 * @see    JAccess
 * @since  1.7.0
 */
class RulesField extends FormField
{
    /**
     * The form field type.
     *
     * @var    string
     * @since  1.7.0
     */
    protected $type = 'Rules';

    /**
     * Name of the layout being used to render the field
     *
     * @var    string
     * @since  4.0.0
     */
    protected $layout = 'joomla.form.field.rules';

    /**
     * The section.
     *
     * @var    string
     * @since  3.2
     */
    protected $section;

    /**
     * The component.
     *
     * @var    string
     * @since  3.2
     */
    protected $component;

    /**
     * The assetField.
     *
     * @var    string
     * @since  3.2
     */
    protected $assetField;

    /**
     * The flag which indicates if it is the global config
     *
     * @var    bool
     * @since  4.3.0
     */
    protected $isGlobalConfig;

    /**
     * The asset rules
     *
     * @var    Rules
     * @since  4.3.0
     */
    protected $assetRules;

    /**
     * The actions
     *
     * @var    object[]
     * @since  4.3.0
     */
    protected $actions;

    /**
     * The groups
     *
     * @var    object[]
     * @since  4.3.0
     */
    protected $groups;

    /**
     * The asset Id
     *
     * @var    int
     * @since  4.3.0
     */
    protected $assetId;

    /**
     * The parent asset Id
     *
     * @var    int
     * @since  4.3.0
     */
    protected $parentAssetId;

    /**
     * The flag to indicate that it is a new item
     *
     * @var    bool
     * @since  4.3.0
     */
    protected $newItem;

    /**
     * The parent class of the field
     *
     * @var  string
     * @since 4.0.0
     */
    protected $parentclass;

    /**
     * Method to get certain otherwise inaccessible properties from the form field object.
     *
     * @param   string  $name  The property name for which to get the value.
     *
     * @return  mixed  The property value or null.
     *
     * @since   3.2
     */
    public function __get($name)
    {
        switch ($name) {
            case 'section':
            case 'component':
            case 'assetField':
                return $this->$name;
        }

        return parent::__get($name);
    }

    /**
     * Method to set certain otherwise inaccessible properties of the form field object.
     *
     * @param   string  $name   The property name for which to set the value.
     * @param   mixed   $value  The value of the property.
     *
     * @return  void
     *
     * @since   3.2
     */
    public function __set($name, $value)
    {
        switch ($name) {
            case 'section':
            case 'component':
            case 'assetField':
                $this->$name = (string) $value;
                break;

            default:
                parent::__set($name, $value);
        }
    }

    /**
     * Method to attach a Form object to the field.
     *
     * @param   \SimpleXMLElement  $element  The SimpleXMLElement object representing the `<field>` tag for the form field object.
     * @param   mixed              $value    The form field value to validate.
     * @param   string             $group    The field name group control value. This acts as an array container for the field.
     *                                       For example if the field has name="foo" and the group value is set to "bar" then the
     *                                       full field name would end up being "bar[foo]".
     *
     * @return  boolean  True on success.
     *
     * @see     FormField::setup()
     * @since   3.2
     */
    public function setup(\SimpleXMLElement $element, $value, $group = null)
    {
        $return = parent::setup($element, $value, $group);

        if ($return) {
            $this->section    = $this->element['section'] ? (string) $this->element['section'] : '';
            $this->component  = $this->element['component'] ? (string) $this->element['component'] : '';
            $this->assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
        }

        return $return;
    }

    /**
     * Method to get the field input markup for Access Control Lists.
     * Optionally can be associated with a specific component and section.
     *
     * @return  string  The field input markup.
     *
     * @since   1.7.0
     * @todo:   Add access check.
     */
    protected function getInput()
    {
        // Initialise some field attributes.
        $section    = $this->section;
        $assetField = $this->assetField;
        $component  = empty($this->component) ? 'root.1' : $this->component;

        // Current view is global config?
        $this->isGlobalConfig = $component === 'root.1';

        // Get the actions for the asset.
        $this->actions = Access::getActionsFromFile(
            JPATH_ADMINISTRATOR . '/components/' . $component . '/access.xml',
            "/access/section[@name='" . $section . "']/"
        );

        if ($this->actions === false) {
            $this->actions = [];
        }

        // Iterate over the children and add to the actions.
        foreach ($this->element->children() as $el) {
            if ($el->getName() === 'action') {
                $this->actions[] = (object) [
                    'name'        => (string) $el['name'],
                    'title'       => (string) $el['title'],
                    'description' => (string) $el['description'],
                ];
            }
        }

        // Get the asset id.
        // Note that for global configuration, com_config injects asset_id = 1 into the form.
        $this->assetId = (int) $this->form->getValue($assetField);
        $this->newItem = empty($this->assetId) && $this->isGlobalConfig === false && $section !== 'component';

        // If the asset id is empty (component or new item).
        if (empty($this->assetId)) {
            // Get the component asset id as fallback.
            $db    = $this->getDatabase();
            $query = $db->getQuery(true)
                ->select($db->quoteName('id'))
                ->from($db->quoteName('#__assets'))
                ->where($db->quoteName('name') . ' = :component')
                ->bind(':component', $component);

            $db->setQuery($query);

            $this->assetId = (int) $db->loadResult();

            /**
             * @todo: incorrect info
             * When creating a new item (not saving) it uses the calculated permissions from the component (item <-> component <-> global config).
             * But if we have a section too (item <-> section(s) <-> component <-> global config) this is not correct.
             * Also, currently it uses the component permission, but should use the calculated permissions for achild of the component/section.
             */
        }

        // If not in global config we need the parent_id asset to calculate permissions.
        if (!$this->isGlobalConfig) {
            // In this case we need to get the component rules too.
            $db = $this->getDatabase();

            $query = $db->getQuery(true)
                ->select($db->quoteName('parent_id'))
                ->from($db->quoteName('#__assets'))
                ->where($db->quoteName('id') . ' = :assetId')
                ->bind(':assetId', $this->assetId, ParameterType::INTEGER);

            $db->setQuery($query);

            $this->parentAssetId = (int) $db->loadResult();
        }

        // Get the rules for just this asset (non-recursive).
        $this->assetRules = Access::getAssetRules($this->assetId, false, false);

        // Get the available user groups.
        $this->groups = $this->getUserGroups();

        // Trim the trailing line in the layout file
        return trim($this->getRenderer($this->layout)->render($this->collectLayoutData()));
    }

    /**
     * Method to get the data to be passed to the layout for rendering.
     *
     * @return  array
     *
     * @since   4.0.0
     */
    protected function getLayoutData()
    {
        $data = parent::getLayoutData();

        $extraData = [
            'groups'         => $this->groups,
            'section'        => $this->section,
            'actions'        => $this->actions,
            'assetId'        => $this->assetId,
            'newItem'        => $this->newItem,
            'assetRules'     => $this->assetRules,
            'isGlobalConfig' => $this->isGlobalConfig,
            'parentAssetId'  => $this->parentAssetId,
            'component'      => $this->component,
        ];

        return array_merge($data, $extraData);
    }

    /**
     * Get a list of the user groups.
     *
     * @return  object[]
     *
     * @since   1.7.0
     */
    protected function getUserGroups()
    {
        $options = UserGroupsHelper::getInstance()->getAll();

        foreach ($options as &$option) {
            $option->value = $option->id;
            $option->text  = $option->title;
        }

        return array_values($options);
    }
}

Filemanager

Name Type Size Permission Actions
AccessiblemediaField.php File 5.98 KB 0664
AccesslevelField.php File 1.01 KB 0664
AliastagField.php File 2.06 KB 0664
AuthorField.php File 2.1 KB 0664
CachehandlerField.php File 1.26 KB 0664
CalendarField.php File 13.36 KB 0664
CaptchaField.php File 5.05 KB 0664
CategoryField.php File 3.39 KB 0664
CheckboxField.php File 4.1 KB 0664
CheckboxesField.php File 4.51 KB 0664
ChromestyleField.php File 6.64 KB 0664
ColorField.php File 9.72 KB 0664
ComboField.php File 1.64 KB 0664
ComponentlayoutField.php File 9.87 KB 0664
ComponentsField.php File 2.17 KB 0664
ContenthistoryField.php File 1.99 KB 0664
ContentlanguageField.php File 1.02 KB 0664
ContenttypeField.php File 2.8 KB 0664
DatabaseconnectionField.php File 2.39 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.58 KB 0664
FolderlistField.php File 6.46 KB 0664
FrontendlanguageField.php File 2.2 KB 0664
GroupedlistField.php File 5.57 KB 0664
HeadertagField.php File 1.1 KB 0664
HiddenField.php File 910 B 0664
ImagelistField.php File 1.08 KB 0664
IntegerField.php File 2.07 KB 0664
LanguageField.php File 2.58 KB 0664
LastvisitdaterangeField.php File 1.61 KB 0664
LimitboxField.php File 2.66 KB 0664
ListField.php File 8.79 KB 0664
MediaField.php File 13.35 KB 0664
MenuField.php File 3.72 KB 0664
MenuitemField.php File 7.12 KB 0664
MeterField.php File 5.79 KB 0664
ModalSelectField.php File 8.85 KB 0664
ModulelayoutField.php File 7.83 KB 0664
ModuleorderField.php File 3.88 KB 0664
ModulepositionField.php File 5.18 KB 0664
ModuletagField.php File 1.14 KB 0664
NoteField.php File 2.71 KB 0664
NumberField.php File 5.93 KB 0664
OrderingField.php File 5.75 KB 0664
PasswordField.php File 7.95 KB 0664
PluginsField.php File 5.17 KB 0664
PluginstatusField.php File 774 B 0664
PredefinedlistField.php File 3.48 KB 0664
RadioField.php File 1.28 KB 0664
RadiobasicField.php File 1.64 KB 0664
RangeField.php File 1.61 KB 0664
RedirectStatusField.php File 868 B 0664
RegistrationdaterangeField.php File 1.6 KB 0664
RulesField.php File 9.45 KB 0664
SchemaorgComponentSectionsField.php File 1.75 KB 0664
SessionhandlerField.php File 1.36 KB 0664
SpacerField.php File 3.95 KB 0664
SqlField.php File 9.24 KB 0664
StatusField.php File 859 B 0664
SubformField.php File 13.25 KB 0664
TagField.php File 9.73 KB 0664
TelephoneField.php File 1.83 KB 0664
TemplatestyleField.php File 5.75 KB 0664
TextField.php File 8.98 KB 0664
TextareaField.php File 5.26 KB 0664
TimeField.php File 4.3 KB 0664
TimezoneField.php File 4.46 KB 0664
TransitionField.php File 5.34 KB 0664
UrlField.php File 2.03 KB 0664
UserField.php File 4.59 KB 0664
UseractiveField.php File 1.26 KB 0664
UsergrouplistField.php File 2.92 KB 0664
UserstateField.php File 800 B 0664
WorkflowComponentSectionsField.php File 1.72 KB 0664
WorkflowconditionField.php File 3.78 KB 0664
WorkflowstageField.php File 4.92 KB 0664
Filemanager