MDL-24328 completion Check criteria are set before showing links to report
[moodle.git] / admin / webservice / tokens.php
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Web services tokens admin UI
20  *
21  * @package   webservice
22  * @author Jerome Mouneyrac
23  * @copyright 2009 Moodle Pty Ltd (http://moodle.com)
24  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
26 require_once('../../config.php');
27 require_once($CFG->libdir . '/adminlib.php');
28 require_once($CFG->dirroot . '/' . $CFG->admin . '/webservice/forms.php');
29 require_once($CFG->libdir . '/externallib.php');
31 $action = optional_param('action', '', PARAM_ACTION);
32 $tokenid = optional_param('tokenid', '', PARAM_SAFEDIR);
33 $confirm = optional_param('confirm', 0, PARAM_BOOL);
35 $PAGE->set_url('/' . $CFG->admin . '/webservice/tokens.php');
36 $PAGE->navbar->ignore_active(true);
37 $PAGE->navbar->add(get_string('administrationsite'));
38 $PAGE->navbar->add(get_string('plugins', 'admin'));
39 $PAGE->navbar->add(get_string('webservices', 'webservice'));
40 $PAGE->navbar->add(get_string('managetokens', 'webservice'),
41         new moodle_url('/' . $CFG->admin . '/settings.php?section=webservicetokens'));
42 if ($action == "delete") {
43     $PAGE->navbar->add(get_string('delete'));
44 } else {
45     $PAGE->navbar->add(get_string('createtoken', 'webservice'));
46 }
48 admin_externalpage_setup('addwebservicetoken');
50 require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
52 $tokenlisturl = new moodle_url("/" . $CFG->admin . "/settings.php", array('section' => 'webservicetokens'));
54 require_once($CFG->dirroot . "/webservice/lib.php");
55 $webservicemanager = new webservice();
57 switch ($action) {
59     case 'create':
60         $mform = new web_service_token_form(null, array('action' => 'create'));
61         $data = $mform->get_data();
62         if ($mform->is_cancelled()) {
63             redirect($tokenlisturl);
64         } else if ($data and confirm_sesskey()) {
65             ignore_user_abort(true);
67             //check the the user is allowed for the service
68             $selectedservice = $webservicemanager->get_external_service_by_id($data->service);
69             if ($selectedservice->restrictedusers) {
70                 $restricteduser = $webservicemanager->get_ws_authorised_user($data->service, $data->user);
71                 if (empty($restricteduser)) {
72                     $allowuserurl = new moodle_url('/' . $CFG->admin . '/webservice/service_users.php',
73                             array('id' => $selectedservice->id));
74                     $allowuserlink = html_writer::tag('a', $selectedservice->name , array('href' => $allowuserurl));
75                     $errormsg = $OUTPUT->notification(get_string('usernotallowed', 'webservice', $allowuserlink));
76                 }
77             }
79             //process the creation
80             if (empty($errormsg)) {
81                 //TODO improvement: either move this function from externallib.php to webservice/lib.php
82                 // either move most of webservicelib.php functions into externallib.php
83                 // (create externalmanager class) MDL-23523
84                 external_generate_token(EXTERNAL_TOKEN_PERMANENT, $data->service,
85                         $data->user, get_context_instance(CONTEXT_SYSTEM),
86                         $data->validuntil, $data->iprestriction);
87                 redirect($tokenlisturl);
88             }
89         }
91         //OUTPUT: create token form
92         echo $OUTPUT->header();
93         echo $OUTPUT->heading(get_string('createtoken', 'webservice'));
94         if (!empty($errormsg)) {
95             echo $errormsg;
96         }
97         $mform->display();
98         echo $OUTPUT->footer();
99         die;
100         break;
102     case 'delete':        
103         $token = $webservicemanager->get_created_by_user_ws_token($USER->id, $tokenid);
105         //Delete the token
106         if ($confirm and confirm_sesskey()) {
107             $webservicemanager->delete_user_ws_token($token->id);
108             redirect($tokenlisturl);
109         }
111         ////OUTPUT: display delete token confirmation box
112         echo $OUTPUT->header();
113         $renderer = $PAGE->get_renderer('core', 'webservice');
114         echo $renderer->admin_delete_token_confirmation($token);
115         echo $OUTPUT->footer();
116         die;
117         break;
119     default:
120         //wrong url access
121         redirect($tokenlisturl);
122         break;