. /** * Web services function UI * * @package webservice * @copyright 2009 Moodle Pty Ltd (http://moodle.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once('../../config.php'); require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->dirroot.'/admin/webservice/lib.php'); $id = required_param('id', PARAM_INT); $PAGE->set_url('/admin/webservice/service_users.php', array('id'=>$id)); $PAGE->navbar->ignore_active(true); $PAGE->navbar->add(get_string('administrationsite')); $PAGE->navbar->add(get_string('plugins', 'admin')); $PAGE->navbar->add(get_string('webservices', 'webservice')); $PAGE->navbar->add(get_string('externalservices', 'webservice'), new moodle_url('/admin/settings.php?section=externalservices')); $PAGE->navbar->add(get_string('serviceusers', 'webservice')); $PAGE->requires->js('/admin/webservice/script.js'); admin_externalpage_setup('externalserviceusers'); admin_externalpage_print_header(); /// Get the user_selector we will need. $potentialuserselector = new service_user_selector('addselect', array('serviceid' => $id, 'displayallowedusers' => 0)); $alloweduserselector = new service_user_selector('removeselect', array('serviceid' => $id, 'displayallowedusers' => 1)); /// Process incoming user assignments to the service if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { $userstoassign = $potentialuserselector->get_selected_users(); if (!empty($userstoassign)) { foreach ($userstoassign as $adduser) { $serviceuser = new object(); $serviceuser->externalserviceid = $id; $serviceuser->userid = $adduser->id; $serviceuser->timecreated = mktime(); $DB->insert_record('external_services_users', $serviceuser); add_to_log(1, 'core', 'assign', $CFG->admin.'/webservice/service_users.php?id='.$id, 'add', '', $adduser->id); } $potentialuserselector->invalidate_selected_users(); $alloweduserselector->invalidate_selected_users(); } } /// Process removing user assignments to the service if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { $userstoremove = $alloweduserselector->get_selected_users(); if (!empty($userstoremove)) { foreach ($userstoremove as $removeuser) { $DB->delete_records('external_services_users', array('externalserviceid' => $id, 'userid' => $removeuser->id)); add_to_log(1, 'core', 'assign', $CFG->admin.'/webservice/service_users.php?id='.$id, 'remove', '', $removeuser->id); } $potentialuserselector->invalidate_selected_users(); $alloweduserselector->invalidate_selected_users(); } } /// Print the form. /// display the UI ?>

display() ?>

display() ?>
id = $serviceuserid; if ($enablevaliduntil) { $serviceuser->validuntil = $validuntil; } else { $serviceuser->validuntil = null; //the valid until field is disabled, we reset the value } $serviceuser->iprestriction = $iprestriction; $DB->update_record('external_services_users', $serviceuser); //TODO: assign capability } //display the list of allowed users with their options (ip/timecreated / validuntil...) //check that the user has the service required capability (if needed) $sql = " SELECT u.id as id, esu.id as serviceuserid, u.email as email, u.firstname as firstname, u.lastname as lastname, esu.iprestriction as iprestriction, esu.validuntil as validuntil, esu.timecreated as timecreated FROM {user} u, {external_services_users} esu WHERE username <> 'guest' AND deleted = 0 AND confirmed = 1 AND esu.userid = u.id AND esu.externalserviceid = ?"; $allowedusers = $DB->get_records_sql($sql, array($id)); if (!empty($allowedusers)) { echo $OUTPUT->box_start('generalbox', 'alloweduserlist'); echo ""; echo "

"; //reduce font of the user settings foreach($allowedusers as $user) { echo print_collapsible_region_start('', 'usersettings'.$user->id,$user->firstname." ".$user->lastname.", ".$user->email,false,true,true); //user settings form $contents = "
"; //ip restriction textfield $iprestid = 'iprest'.$user->id; $contents .= "
"; $contents .= ''; $contents .= "
"; //valid until date selector $contents .= "
"; // the following date selector needs to have specific day/month/year field ids because we use javascript (enable/disable). $selectors = html_writer::select_time('days', 'fromday'.$user->id, $user->validuntil) . html_writer::select_time('months', 'frommonth'.$user->id, $user->validuntil) . html_writer::select_time('years', 'fromyear'.$user->id, $user->validuntil); foreach ($selectors as $select) { if (empty($user->validuntil)) { $select->disabled = true; } $contents .= $OUTPUT->select($select); } $contents .= html_writer::checkbox('enablevaliduntil', 1, !empty($user->validuntil), get_string('enabled', 'webservice'), array('id'=>'enablevaliduntil'.$user->id)); // TODO: init date selector using standard $PAGE->requires->js_init_call(); $contents .= "
"; //TO IMPLEMENT : assign the required capability (if needed) $contents .= "
"; $contents .= html_writer::checkbox('addcap', 1, 'TODO:'.get_string('addrequiredcapability', 'webservice')); $contents .= '
'; $contents .= ''; $contents .= ''; $contents .= ''; $contents .= ''; $contents .= ''; $contents .= "
"; echo html_writer::tag('form', array('target'=>'service_users.php', 'method'=>'post', 'id'=>'usersetting'.$user->id), $contents); echo print_collapsible_region_end(true); } echo ""; echo $OUTPUT->box_end(); } echo $OUTPUT->footer();