. /** * 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->requires->js($CFG->admin.'/webservice/script.js'); admin_externalpage_setup('externalserviceusers'); admin_externalpage_print_header(); global $DB; /// 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 = "
"; $form = new html_form(); $form->url = new moodle_url('service_users.php', array('id' => $id, 'userid' => $user->id, 'updateuser' => 1, 'serviceuserid' => $user->serviceuserid)); // Required $form->button = new html_button(); $form->button->text = get_string('update'); // Required $form->button->disabled = false; $form->button->title = get_string('update'); $form->method = 'post'; $form->id = 'usersetting'.$user->id; //ip restriction textfield $contents .= "
"; $field = new html_field(); $field->name = 'iprestriction'; $field->value = $user->iprestriction; $field->style = 'width: 30em;'; $contents .= $OUTPUT->textfield($field); $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_select::make_time_selectors(array('days' => 'fromday'.$user->id,'months' => 'frommonth'.$user->id, 'years' => 'fromyear'.$user->id),$user->validuntil); foreach ($selectors as $select) { if (empty($user->validuntil)) { $select->disabled = true; } $contents .= $OUTPUT->select($select); } $checkbox = new html_select_option(); $checkbox->value = 1; $checkbox->id = 'enablevaliduntil'.$user->id; $checkbox->name = 'enablevaliduntil'; $checkbox->selected = empty($user->validuntil)?false:true; $checkbox->text = get_string('enabled', 'webservice'); $checkbox->label->text = get_string('enabled', 'webservice'); $checkbox->alt = get_string('enabled', 'webservice'); $checkbox->add_action('change', 'external_disablevaliduntil', array($user->id)); //into admin/webservice/script.js $contents .= $OUTPUT->checkbox($checkbox, 'enablevaliduntil'); $contents .= ""; //init date selector disable status $contents .= "
"; //TO IMPLEMENT : assign the required capability (if needed) $contents .= "
"; $checkbox = new html_select_option(); $checkbox->value = $user->id; $checkbox->selected = false; $checkbox->text = ' '; $checkbox->label->text = ' '; $checkbox->alt = 'TODO:'.get_string('addrequiredcapability', 'webservice'); $contents .= $OUTPUT->checkbox($checkbox, 'addcap')."
"; $contents .= "
"; echo $OUTPUT->form($form, $contents); echo print_collapsible_region_end(true); } echo "
"; echo $OUTPUT->box_end(); } echo $OUTPUT->footer();