mirror of
https://github.com/moodle/moodle.git
synced 2025-03-21 16:10:15 +01:00
Merge branch 'wip-MDL-60091-master' of git://github.com/marinaglancy/moodle
This commit is contained in:
commit
dbb54d10ab
@ -54,7 +54,7 @@ foreach ($allfunctions as $f) {
|
||||
//some plugins may want to have own test client forms
|
||||
include_once($CFG->dirroot.'/'.$finfo->testclientpath);
|
||||
}
|
||||
$class = $f->name.'_form';
|
||||
$class = $f->name.'_testclient_form';
|
||||
if (class_exists($class)) {
|
||||
$functions[$f->name] = $f->name;
|
||||
continue;
|
||||
@ -103,7 +103,7 @@ if (!$function or !$protocol) {
|
||||
die;
|
||||
}
|
||||
|
||||
$class = $function.'_form';
|
||||
$class = $function.'_testclient_form';
|
||||
|
||||
$mform = new $class(null, array('authmethod' => $authmethod));
|
||||
$mform->set_data(array('function'=>$function, 'protocol'=>$protocol));
|
||||
|
@ -29,19 +29,23 @@ class webservice_test_client_form extends moodleform {
|
||||
// === Test client forms ===
|
||||
|
||||
/**
|
||||
* Form class for create_categories() web service function test.
|
||||
* Base class for implementations of WS test client forms.
|
||||
*
|
||||
* @package core_webservice
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2012 Fabio Souto
|
||||
* @copyright 2017 Marina Glancy
|
||||
*/
|
||||
class core_course_create_categories_form extends moodleform {
|
||||
abstract class webservice_test_client_base_form extends moodleform {
|
||||
|
||||
/**
|
||||
* Definition of the parameters used by this WS function
|
||||
*/
|
||||
protected abstract function test_client_definition();
|
||||
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
public function definition() {
|
||||
global $CFG;
|
||||
|
||||
$mform = $this->_form;
|
||||
|
||||
$mform->addElement('header', 'wstestclienthdr', get_string('testclient', 'webservice'));
|
||||
@ -59,19 +63,7 @@ class core_course_create_categories_form extends moodleform {
|
||||
}
|
||||
|
||||
$mform->addElement('hidden', 'authmethod', $data['authmethod']);
|
||||
$mform->setType('authmethod', core_user::get_property_type('auth'));
|
||||
$mform->addElement('text', 'name[0]', 'name[0]');
|
||||
$mform->addElement('text', 'parent[0]', 'parent[0]');
|
||||
$mform->addElement('text', 'idnumber[0]', 'idnumber[0]');
|
||||
$mform->addElement('text', 'description[0]', 'description[0]');
|
||||
$mform->addElement('text', 'name[1]', 'name[1]');
|
||||
$mform->addElement('text', 'parent[1]', 'parent[1]');
|
||||
$mform->addElement('text', 'idnumber[1]', 'idnumber[1]');
|
||||
$mform->addElement('text', 'description[1]', 'description[1]');
|
||||
$mform->setType('name', core_user::get_property_type('firstname'));
|
||||
$mform->setType('parent', core_user::get_property_type('id'));
|
||||
$mform->setType('idnumber', core_user::get_property_type('idnumber'));
|
||||
$mform->setType('description', core_user::get_property_type('description'));
|
||||
$mform->setType('authmethod', PARAM_ALPHA);
|
||||
|
||||
$mform->addElement('hidden', 'function');
|
||||
$mform->setType('function', PARAM_PLUGIN);
|
||||
@ -79,6 +71,8 @@ class core_course_create_categories_form extends moodleform {
|
||||
$mform->addElement('hidden', 'protocol');
|
||||
$mform->setType('protocol', PARAM_ALPHA);
|
||||
|
||||
$this->test_client_definition();
|
||||
|
||||
$this->add_action_buttons(true, get_string('execute', 'webservice'));
|
||||
}
|
||||
|
||||
@ -90,19 +84,51 @@ class core_course_create_categories_form extends moodleform {
|
||||
if (!$data = $this->get_data()) {
|
||||
return null;
|
||||
}
|
||||
// Remove unused from form data.
|
||||
unset($data->submitbutton);
|
||||
unset($data->protocol);
|
||||
unset($data->function);
|
||||
unset($data->wsusername);
|
||||
unset($data->wspassword);
|
||||
unset($data->token);
|
||||
unset($data->authmethod);
|
||||
return array_diff_key((array)$data, ['submitbutton' => 1, 'protocol' => 1, 'function' => 1,
|
||||
'wsusername' => 1, 'wspassword' => 1, 'token' => 1, 'authmethod' => 1]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Form class for create_categories() web service function test.
|
||||
*
|
||||
* @package core_webservice
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2012 Fabio Souto
|
||||
*/
|
||||
class core_course_create_categories_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
protected function test_client_definition() {
|
||||
$mform = $this->_form;
|
||||
$mform->addElement('text', 'name[0]', 'name[0]');
|
||||
$mform->addElement('text', 'parent[0]', 'parent[0]');
|
||||
$mform->addElement('text', 'idnumber[0]', 'idnumber[0]');
|
||||
$mform->addElement('text', 'description[0]', 'description[0]');
|
||||
$mform->addElement('text', 'name[1]', 'name[1]');
|
||||
$mform->addElement('text', 'parent[1]', 'parent[1]');
|
||||
$mform->addElement('text', 'idnumber[1]', 'idnumber[1]');
|
||||
$mform->addElement('text', 'description[1]', 'description[1]');
|
||||
$mform->setType('name', PARAM_TEXT);
|
||||
$mform->setType('parent', PARAM_INT);
|
||||
$mform->setType('idnumber', PARAM_RAW);
|
||||
$mform->setType('description', PARAM_RAW);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the parameters that the user submitted using the form.
|
||||
* @return array|null
|
||||
*/
|
||||
public function get_params() {
|
||||
if (!$data = $this->get_data()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$params = array();
|
||||
$params['categories'] = array();
|
||||
for ($i=0; $i<10; $i++) {
|
||||
if (empty($data->name[$i]) or empty($data->parent[$i])) {
|
||||
if (empty($data->name[$i])) {
|
||||
continue;
|
||||
}
|
||||
$params['categories'][] = array('name'=>$data->name[$i], 'parent'=>$data->parent[$i],
|
||||
@ -119,48 +145,21 @@ class core_course_create_categories_form extends moodleform {
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2012 Fabio Souto
|
||||
*/
|
||||
class core_course_delete_categories_form extends moodleform {
|
||||
class core_course_delete_categories_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
public function definition() {
|
||||
global $CFG;
|
||||
|
||||
protected function test_client_definition() {
|
||||
$mform = $this->_form;
|
||||
|
||||
$mform->addElement('header', 'wstestclienthdr', get_string('testclient', 'webservice'));
|
||||
|
||||
// Note: these values are intentionally PARAM_RAW - we want users to test any rubbish as parameters.
|
||||
$data = $this->_customdata;
|
||||
if ($data['authmethod'] == 'simple') {
|
||||
$mform->addElement('text', 'wsusername', 'wsusername');
|
||||
$mform->setType('wsusername', core_user::get_property_type('username'));
|
||||
$mform->addElement('text', 'wspassword', 'wspassword');
|
||||
$mform->setType('wspassword', core_user::get_property_type('password'));
|
||||
} else if ($data['authmethod'] == 'token') {
|
||||
$mform->addElement('text', 'token', 'token');
|
||||
$mform->setType('token', PARAM_RAW_TRIMMED);
|
||||
}
|
||||
|
||||
$mform->addElement('hidden', 'authmethod', $data['authmethod']);
|
||||
$mform->setType('authmethod', core_user::get_property_type('auth'));
|
||||
$mform->addElement('text', 'id[0]', 'id[0]');
|
||||
$mform->addElement('text', 'newparent[0]', 'newparent[0]');
|
||||
$mform->addElement('text', 'recursive[0]', 'recursive[0]');
|
||||
$mform->addElement('text', 'id[1]', 'id[1]');
|
||||
$mform->addElement('text', 'newparent[1]', 'newparent[1]');
|
||||
$mform->addElement('text', 'recursive[1]', 'recursive[1]');
|
||||
$mform->setType('id', core_user::get_property_type('id'));
|
||||
$mform->setType('id', PARAM_INT);
|
||||
$mform->setType('newparent', PARAM_INT);
|
||||
$mform->setType('recursive', PARAM_BOOL);
|
||||
|
||||
$mform->addElement('hidden', 'function');
|
||||
$mform->setType('function', PARAM_PLUGIN);
|
||||
|
||||
$mform->addElement('hidden', 'protocol');
|
||||
$mform->setType('protocol', PARAM_ALPHA);
|
||||
|
||||
$this->add_action_buttons(true, get_string('execute', 'webservice'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -171,15 +170,6 @@ class core_course_delete_categories_form extends moodleform {
|
||||
if (!$data = $this->get_data()) {
|
||||
return null;
|
||||
}
|
||||
// Remove unused from form data.
|
||||
unset($data->submitbutton);
|
||||
unset($data->protocol);
|
||||
unset($data->function);
|
||||
unset($data->wsusername);
|
||||
unset($data->wspassword);
|
||||
unset($data->token);
|
||||
unset($data->authmethod);
|
||||
|
||||
$params = array();
|
||||
$params['categories'] = array();
|
||||
for ($i=0; $i<10; $i++) {
|
||||
@ -207,31 +197,12 @@ class core_course_delete_categories_form extends moodleform {
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2012 Fabio Souto
|
||||
*/
|
||||
class core_course_update_categories_form extends moodleform {
|
||||
class core_course_update_categories_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
public function definition() {
|
||||
global $CFG;
|
||||
|
||||
protected function test_client_definition() {
|
||||
$mform = $this->_form;
|
||||
|
||||
$mform->addElement('header', 'wstestclienthdr', get_string('testclient', 'webservice'));
|
||||
|
||||
// Note: these values are intentionally PARAM_RAW - we want users to test any rubbish as parameters.
|
||||
$data = $this->_customdata;
|
||||
if ($data['authmethod'] == 'simple') {
|
||||
$mform->addElement('text', 'wsusername', 'wsusername');
|
||||
$mform->setType('wsusername', core_user::get_property_type('username'));
|
||||
$mform->addElement('text', 'wspassword', 'wspassword');
|
||||
$mform->setType('wspassword', core_user::get_property_type('password'));
|
||||
} else if ($data['authmethod'] == 'token') {
|
||||
$mform->addElement('text', 'token', 'token');
|
||||
$mform->setType('token', PARAM_RAW_TRIMMED);
|
||||
}
|
||||
|
||||
$mform->addElement('hidden', 'authmethod', $data['authmethod']);
|
||||
$mform->setType('authmethod', core_user::get_property_type('auth'));
|
||||
$mform->addElement('text', 'id[0]', 'id[0]');
|
||||
$mform->addElement('text', 'name[0]', 'name[0]');
|
||||
$mform->addElement('text', 'parent[0]', 'parent[0]');
|
||||
@ -242,19 +213,11 @@ class core_course_update_categories_form extends moodleform {
|
||||
$mform->addElement('text', 'parent[1]', 'parent[1]');
|
||||
$mform->addElement('text', 'idnumber[1]', 'idnumber[1]');
|
||||
$mform->addElement('text', 'description[1]', 'description[1]');
|
||||
$mform->setType('id', core_user::get_property_type('id'));
|
||||
$mform->setType('name', core_user::get_property_type('firstname'));
|
||||
$mform->setType('id', PARAM_INT);
|
||||
$mform->setType('name', PARAM_TEXT);
|
||||
$mform->setType('parent', PARAM_INT);
|
||||
$mform->setType('idnumber', core_user::get_property_type('idnumber'));
|
||||
$mform->setType('description', core_user::get_property_type('description'));
|
||||
|
||||
$mform->addElement('hidden', 'function');
|
||||
$mform->setType('function', PARAM_PLUGIN);
|
||||
|
||||
$mform->addElement('hidden', 'protocol');
|
||||
$mform->setType('protocol', PARAM_ALPHA);
|
||||
|
||||
$this->add_action_buttons(true, get_string('execute', 'webservice'));
|
||||
$mform->setType('idnumber', PARAM_RAW);
|
||||
$mform->setType('description', PARAM_RAW);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -265,15 +228,6 @@ class core_course_update_categories_form extends moodleform {
|
||||
if (!$data = $this->get_data()) {
|
||||
return null;
|
||||
}
|
||||
// Remove unused from form data.
|
||||
unset($data->submitbutton);
|
||||
unset($data->protocol);
|
||||
unset($data->function);
|
||||
unset($data->wsusername);
|
||||
unset($data->wspassword);
|
||||
unset($data->token);
|
||||
unset($data->authmethod);
|
||||
|
||||
$params = array();
|
||||
$params['categories'] = array();
|
||||
for ($i=0; $i<10; $i++) {
|
||||
@ -299,4 +253,100 @@ class core_course_update_categories_form extends moodleform {
|
||||
}
|
||||
return $params;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test class for WS function core_fetch_notifications
|
||||
*
|
||||
* @package core_webservice
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2017 Marina Glancy
|
||||
*/
|
||||
class core_fetch_notifications_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
protected function test_client_definition() {
|
||||
$mform = $this->_form;
|
||||
$mform->addElement('text', 'contextid', 'contextid');
|
||||
$mform->setType('contextid', PARAM_INT);
|
||||
$mform->setDefault('contextid', context_system::instance()->id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test class for WS function get_site_info
|
||||
*
|
||||
* @package core_webservice
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2017 Marina Glancy
|
||||
*/
|
||||
class core_webservice_get_site_info_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
protected function test_client_definition() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test class for WS function core_get_string
|
||||
*
|
||||
* @package core_webservice
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2017 Marina Glancy
|
||||
*/
|
||||
class core_get_string_testclient_form extends webservice_test_client_base_form {
|
||||
/**
|
||||
* The form definition.
|
||||
*/
|
||||
protected function test_client_definition() {
|
||||
$mform = $this->_form;
|
||||
$mform->addElement('text', 'stringid', 'stringid');
|
||||
$mform->setType('stringid', PARAM_STRINGID);
|
||||
$mform->addElement('text', 'component', 'component');
|
||||
$mform->setType('component', PARAM_COMPONENT);
|
||||
$mform->addElement('text', 'lang', 'lang');
|
||||
$mform->setType('lang', PARAM_LANG);
|
||||
$mform->addElement('text', 'stringparams_name[1]', 'Parameter 1 name');
|
||||
$mform->setType('stringparams_name[1]', PARAM_ALPHANUMEXT);
|
||||
$mform->addElement('text', 'stringparams_value[1]', 'Parameter 1 value');
|
||||
$mform->setType('stringparams_value[1]', PARAM_RAW);
|
||||
$mform->addElement('text', 'stringparams_name[2]', 'Parameter 2 name');
|
||||
$mform->setType('stringparams_name[2]', PARAM_ALPHANUMEXT);
|
||||
$mform->addElement('text', 'stringparams_value[2]', 'Parameter 2 value');
|
||||
$mform->setType('stringparams_value[2]', PARAM_RAW);
|
||||
$mform->addElement('text', 'stringparams_name[3]', 'Parameter 3 name');
|
||||
$mform->setType('stringparams_name[3]', PARAM_ALPHANUMEXT);
|
||||
$mform->addElement('text', 'stringparams_value[3]', 'Parameter 3 value');
|
||||
$mform->setType('stringparams_value[3]', PARAM_RAW);
|
||||
$mform->addElement('static', 'paramnote', '', 'If a parameter is not an object, only specify "Parameter 1 value"');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the parameters that the user submitted using the form.
|
||||
* @return array|null
|
||||
*/
|
||||
public function get_params() {
|
||||
$params = parent::get_params();
|
||||
if ($params === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$params['stringparams'] = [];
|
||||
for ($idx = 1; $idx <= 3; $idx++) {
|
||||
$name = isset($params['stringparams_name'][$idx]) ? strval($params['stringparams_name'][$idx]) : '';
|
||||
$value = isset($params['stringparams_value'][$idx]) ? strval($params['stringparams_value'][$idx]) : '';
|
||||
if ($name !== '' || $value !== '') {
|
||||
if ($name === '') {
|
||||
$params['stringparams'][] = ['value' => $value];
|
||||
} else {
|
||||
$params['stringparams'][] = ['name' => $name, 'value' => $value];
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($params['stringparams_name']);
|
||||
unset($params['stringparams_value']);
|
||||
return $params;
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,9 @@ This information is intended for authors of webservices, not people writing webs
|
||||
|
||||
* External function core_webservice_external::get_site_info() now returns the calendar type used in the site and
|
||||
by the user in the sitecalendartype and usercalendartype fields.
|
||||
* Implementations of forms for test clients now must follow naming schema: WSFUNCTIONNAME_testclient_form
|
||||
The old naming schema WSFUNCTIONNAME_form caused conflicts with existing classes.
|
||||
New class webservice_test_client_base_form can be used as a base class for such forms.
|
||||
|
||||
=== 3.2 ===
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user