✏️ 正在编辑: Student.php
路径:
/home/eblama1/sms.karnplayinland.com/plugins/Moodle/Students/Student.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php //FJ Moodle integrator //core_user_create_users function function core_user_get_users_object() { $username = DBGetOne( "SELECT USERNAME FROM students WHERE STUDENT_ID='" . UserStudentID() . "'" ); /* XML-RPC (PHP structure) [criteria] => Array ( [0] => Array ( [key] => string [value] => string ) ) */ $criteria = [ 'key' => 'username', 'value' => $username, ]; $object = [ 'criteria' => $criteria ]; if ( MOODLE_API_PROTOCOL === 'rest' ) { $object = [ 'criteria' => [ $criteria ] ]; } return $object; } // @since 5.9 Moodle circumvent bug: no response or error but User created. // Get User ID right after creation and try to save it. function core_user_get_users_response( $response ) { if ( empty( $response['users'][0]['id'] ) ) { return -1; } // Saving Moodle User ID at last. //then, save the ID in the moodlexrosario cross-reference table: /* Array ( [0] => Array ( [id] => int [username] => string ) ) */ DBQuery( "INSERT INTO moodlexrosario (" . DBEscapeIdentifier( 'column' ) . ",rosario_id,moodle_id) VALUES('student_id','" . UserStudentID() . "'," . $response['users'][0]['id'] . ")" ); $_REQUEST['moodle_create_student'] = false; return $response['users'][0]['id']; } //core_user_create_users function function core_user_create_users_object() { //first, gather the necessary variables global $_REQUEST; //then, convert variables for the Moodle object: /* list of ( object { createpassword int Optional //True if password should be created and mailed to user. username string //Username policy is defined in Moodle security config. auth string Default to "manual" //Auth plugins include manual, ldap, etc password string Optional //Plain text password consisting of any characters firstname string //The first name(s) of the user lastname string //The family name of the user email string //A valid and unique email address maildisplay int Optional //Email display city string Optional //Home city of the user country string Optional //Home country code of the user, such as AU or CZ timezone string Optional //Timezone code such as Australia/Perth, or 99 for default description string Optional //User profile description, no HTML firstnamephonetic string Optional //The first name(s) phonetically of the user lastnamephonetic string Optional //The family name phonetically of the user middlename string Optional //The middle name of the user alternatename string Optional //The alternate name of the user interests string Optional //User interests (separated by commas) url string Optional //User web page icq string Optional //ICQ number skype string Optional //Skype ID aim string Optional //AIM ID yahoo string Optional //Yahoo ID msn string Optional //MSN ID idnumber string Default to "" //An arbitrary ID code number perhaps from the institution institution string Optional //institution department string Optional //department phone1 string Optional //Phone 1 phone2 string Optional //Phone 2 address string Optional //Postal address lang string Default to "en" //Language code such as "en", must exist on server calendartype string Default to "gregorian" //Calendar type such as "gregorian", must exist on server theme string Optional //Theme name such as "standard", must exist on server mailformat int Optional //Mail format code is 0 for plain text, 1 for HTML etc customfields Optional //User custom fields (also known as user profil fields) list of ( object { type string //The name of the custom field value string //The value of the custom field } )preferences Optional //User preferences list of ( object { type string //The name of the preference value string //The value of the preference } ) } ) */ $username = mb_strtolower( $_REQUEST['students']['USERNAME'] ); $password = issetVal( $_REQUEST['students']['PASSWORD'] ); $firstname = issetVal( $_REQUEST['students']['FIRST_NAME'] ); $lastname = issetVal( $_REQUEST['students']['LAST_NAME'] ); $email = issetVal( $_REQUEST['students'][ROSARIO_STUDENTS_EMAIL_FIELD] ); $auth = 'manual'; $idnumber = (string) UserStudentID(); // @since 5.9 Moodle creates user password if left empty. $createpassword = empty( $password ) ? 1 : 0; $users = [ [ 'username' => $username, 'password' => $password, 'firstname' => $firstname, 'lastname' => $lastname, 'email' => $email, 'auth' => $auth, 'idnumber' => $idnumber, 'createpassword' => $createpassword, ], ]; if ( MOODLE_API_PROTOCOL === 'rest' ) { return [ 'users' => $users ]; } return [ $users ]; } /** * @param $response * * @return int -1 if no User ID, else Moodle User ID. */ function core_user_create_users_response( $response ) { if ( empty( $response[0]['id'] ) ) { // @since 5.9 Moodle circumvent bug: no response or error but User created. // Return -1 as distinctive error code. return -1; } //then, save the ID in the moodlexrosario cross-reference table: /* Array ( [0] => Array ( [id] => int [username] => string ) ) */ DBQuery( "INSERT INTO moodlexrosario (" . DBEscapeIdentifier( 'column' ) . ",rosario_id,moodle_id) VALUES('student_id','" . UserStudentID() . "'," . $response[0]['id'] . ")" ); $_REQUEST['moodle_create_student'] = false; return $response[0]['id']; } //core_user_update_users function function core_user_update_users_object() { //first, gather the necessary variables global $_REQUEST; //gather the Moodle user ID $moodle_id = MoodleXRosarioGet( 'student_id', UserStudentID() ); if ( empty( $moodle_id ) ) { return null; } //then, convert variables for the Moodle object: /* list of ( object { id double //ID of the user username string Optional //Username policy is defined in Moodle security config. Must be lowercase. password string Optional //Plain text password consisting of any characters //note Francois: the password must respect the Moodle policy: 8 chars min., 1 number, 1 min, 1 maj and 1 non-alphanum at least. firstname string Optional //The first name(s) of the user lastname string Optional //The family name of the user email string Optional //A valid and unique email address auth string Optional //Auth plugins include manual, ldap, imap, etc idnumber string Optional //An arbitrary ID code number perhaps from the institution lang string Optional //Language code such as "en", must exist on server theme string Optional //Theme name such as "standard", must exist on server timezone string Optional //Timezone code such as Australia/Perth, or 99 for default mailformat int Optional //Mail format code is 0 for plain text, 1 for HTML etc description string Optional //User profile description, no HTML city string Optional //Home city of the user country string Optional //Home country code of the user, such as AU or CZ customfields Optional //User custom fields (also known as user profil fields) list of ( object { type string //The name of the custom field value string //The value of the custom field } )preferences Optional //User preferences list of ( object { type string //The name of the preference value string //The value of the preference } )} ) */ $username = ( ! empty( $_REQUEST['students']['USERNAME'] ) ? mb_strtolower( $_REQUEST['students']['USERNAME'] ) : false ); $password = issetVal( $_REQUEST['students']['PASSWORD'], false ); $firstname = issetVal( $_REQUEST['students']['FIRST_NAME'], false ); $lastname = issetVal( $_REQUEST['students']['LAST_NAME'], false ); $email = issetVal( $_REQUEST['students'][ROSARIO_STUDENTS_EMAIL_FIELD], false ); $user = [ 'id' => $moodle_id ]; if ( $username ) { $user['username'] = $username; } // @since 5.9 Do not update Moodle user password. /*if ( $password ) { $user['password'] = $password; }*/ if ( $firstname ) { $user['firstname'] = $firstname; } if ( $lastname ) { $user['lastname'] = $lastname; } if ( $email ) { $user['email'] = $email; } //Update Address //Residence only //Address and Phone not possible... //$address = (!empty($_REQUEST['values']['address']['ADDRESS']) ? $_REQUEST['values']['address']['ADDRESS'] : false); $city = issetVal( $_REQUEST['values']['address']['CITY'], false ); //$country = 'CO'; //Hardcoded (Colombia) //$phone1 = (!empty($_REQUEST['values']['address']['PHONE']) ? $_REQUEST['values']['address']['PHONE'] : false); /*if ($address) $user['address'] = $address;*/ if ( $city ) { $user['city'] = $city; } //$user['country'] = $country; /*if ($phone1) $user['phone1'] = $phone1;*/ //if none of the above user fields are updated, no object returned if ( count( $user ) < 2 ) { return null; } $users = [ $user ]; return [ $users ]; } /** * @param $response */ function core_user_update_users_response( $response ) { return null; } // core_user_delete_users function. function core_user_delete_users_object() { // Gather the Moodle user ID. $moodle_id = MoodleXRosarioGet( 'student_id', UserStudentID() ); if ( empty( $moodle_id ) ) { return null; } // Then, convert variables for the Moodle object:. /* list of ( int //user ID ) */ $user_ids = [ $moodle_id ]; if ( MOODLE_API_PROTOCOL === 'rest' ) { return [ 'userids' => $user_ids ]; } return [ $user_ids ]; } /** * @param $response */ function core_user_delete_users_response( $response ) { // Delete the reference the moodlexrosario cross-reference table. DBQuery( "DELETE FROM moodlexrosario WHERE " . DBEscapeIdentifier( 'column' ) . "='student_id' AND rosario_id='" . UserStudentID() . "'" ); return null; } //core_role_assign_roles function function core_role_assign_roles_object() { //first, gather the necessary variables //then, convert variables for the Moodle object: /* list of ( object { roleid int //Role to assign to the user userid int //The user that is going to be assigned contextid int Optional //The context to assign the user role in contextlevel string Optional //The context level to assign the user role in (block, course, coursecat, system, user, module) instanceid int Optional //The Instance id of item where the role needs to be assigned } )*/ //gather the Moodle user ID $student_id = UserStudentID(); $userid = (int) DBGetOne( "SELECT moodle_id FROM moodlexrosario WHERE rosario_id=(SELECT STAFF_ID FROM students_join_users WHERE STUDENT_ID='" . (int) $student_id . "' LIMIT 1) AND " . DBEscapeIdentifier( 'column' ) . "='staff_id'" ); if ( empty( $userid ) ) { return null; } //gather the Moodle student ID $studentid = MoodleXRosarioGet( 'student_id', $student_id ); if ( empty( $studentid ) ) { return null; } $contextlevel = 'user'; $roleid = MOODLE_PARENT_ROLE_ID; $instanceid = $studentid; $assignments = [ [ 'roleid' => $roleid, 'userid' => $userid, 'contextlevel' => $contextlevel, 'instanceid' => $instanceid, ], ]; if ( MOODLE_API_PROTOCOL === 'rest' ) { return [ 'assignments' => $assignments ]; } return [ $assignments ]; } /** * @param $response */ function core_role_assign_roles_response( $response ) { return null; } //core_files_upload function /** * @return mixed */ function core_files_upload_object() { //first, gather the necessary variables global $_REQUEST; //then, convert variables for the Moodle object: /* contextid int Default to "null" //context id component string //component filearea string //file area itemid int //associated id filepath string //file path filename string //file name filecontent string //file content contextlevel string Default to "null" //The context level to put the file in, (block, course, coursecat, system, user, module) instanceid int Default to "null" //The Instance id of item associated with the context level */ //For a User Avatar, looking at mdl_files table for example: /* contextid = 5 (context = USER, userid = instance = 2), use local_getcontexts_get_contexts function component = user filearea = draft itemid = 230987549 or 1 filepath = / filename = xxx.jpeg filecontent = base64_encode */ //For the moment, component = user && filearea = private is hardcoded... // see http://tracker.moodle.org/browse/MDL-31116 return null; $rosario_id = $_REQUEST['userId']; //gather the Moodle user ID $column = ( mb_strpos( $_REQUEST['modname'], 'Users' ) !== false ? 'staff_id' : 'student_id' ); $instanceid = MoodleXRosarioGet( $column, $rosario_id ); if ( empty( $instanceid ) ) { return null; } $contextlevel = 'user'; $component = 'user'; $filearea = 'draft'; $itemid = 1; $filepath = '/'; $filename = $_REQUEST['userId'] . '.jpg'; function base64_encode_file( $file ) { if ( ! file_exists( $file ) ) { return false; } else { $filename = htmlentities( $file ); } $filetype = pathinfo( $filename, PATHINFO_EXTENSION ); $filebinary = fread( fopen( $filename, "r" ), filesize( $filename ) ); return base64_encode( $filebinary ); } global $RosarioPath; $filecontent = base64_encode_file( $RosarioPath . $_REQUEST['photoPath'] . $_REQUEST['sYear'] . '/' . $_REQUEST['userId'] . '.jpg' ); if ( ! $filecontent ) { global $error; $error[] = 'Moodle: ' . 'File does not exist'; //should never be displayed, so do not translate return false; } $file = [ 'component' => $component, 'filearea' => $filearea, 'itemid' => $itemid, 'filepath' => $filepath, 'filename' => $filename, 'filecontent' => $filecontent, 'contextlevel' => $contextlevel, 'instanceid' => $instanceid, ]; return $file; } /** * @param $response */ function core_files_upload_response( $response ) { /* Array ( [contextid] => int [component] => string [filearea] => string [itemid] => int [filepath] => string [filename] => string [url] => string ) */ return null; }
💾 保存文件
← 返回文件管理器