diff --git a/lib/classes/user.php b/lib/classes/user.php index 49672295cdc..6925e0224f6 100644 --- a/lib/classes/user.php +++ b/lib/classes/user.php @@ -461,7 +461,7 @@ class core_user { 'choices' => array_merge(array('' => ''), get_string_manager()->get_list_of_countries(true, true))); $fields['lang'] = array('type' => PARAM_LANG, 'null' => NULL_NOT_ALLOWED, 'default' => $CFG->lang, 'choices' => array_merge(array('' => ''), get_string_manager()->get_list_of_translations(false))); - $fields['calendartype'] = array('type' => PARAM_NOTAGS, 'null' => NULL_NOT_ALLOWED, 'default' => $CFG->calendartype, + $fields['calendartype'] = array('type' => PARAM_PLUGIN, 'null' => NULL_NOT_ALLOWED, 'default' => $CFG->calendartype, 'choices' => array_merge(array('' => ''), \core_calendar\type_factory::get_list_of_calendar_types())); $fields['theme'] = array('type' => PARAM_THEME, 'null' => NULL_NOT_ALLOWED, 'default' => theme_config::DEFAULT_THEME, 'choices' => array_merge(array('' => ''), get_list_of_themes())); diff --git a/webservice/externallib.php b/webservice/externallib.php index 84b0fd4b40d..b091147691e 100644 --- a/webservice/externallib.php +++ b/webservice/externallib.php @@ -197,6 +197,14 @@ class core_webservice_external extends external_api { // User home page. $siteinfo['userhomepage'] = get_home_page(); + // Calendar. + $siteinfo['sitecalendartype'] = $CFG->calendartype; + if (empty($USER->calendartype)) { + $siteinfo['usercalendartype'] = $CFG->calendartype; + } else { + $siteinfo['usercalendartype'] = $USER->calendartype; + } + return $siteinfo; } @@ -259,7 +267,9 @@ class core_webservice_external extends external_api { 'userhomepage' => new external_value(PARAM_INT, 'the default home page for the user: 0 for the site home, 1 for dashboard', VALUE_OPTIONAL), - 'siteid' => new external_value(PARAM_INT, 'Site course ID', VALUE_OPTIONAL) + 'siteid' => new external_value(PARAM_INT, 'Site course ID', VALUE_OPTIONAL), + 'sitecalendartype' => new external_value(PARAM_PLUGIN, 'Calendar type set in the site.', VALUE_OPTIONAL), + 'usercalendartype' => new external_value(PARAM_PLUGIN, 'Calendar typed used by the user.', VALUE_OPTIONAL), ) ); } diff --git a/webservice/tests/externallib_test.php b/webservice/tests/externallib_test.php index f845b622b2b..b5bea8ddb23 100644 --- a/webservice/tests/externallib_test.php +++ b/webservice/tests/externallib_test.php @@ -122,6 +122,12 @@ class core_webservice_externallib_testcase extends externallib_advanced_testcase $this->assertEquals(true, $siteinfo['usercanmanageownfiles']); $this->assertEquals(HOMEPAGE_MY, $siteinfo['userhomepage']); + $this->assertEquals($CFG->calendartype, $siteinfo['sitecalendartype']); + if (!empty($USER->calendartype)) { + $this->assertEquals($USER->calendartype, $siteinfo['usercalendartype']); + } else { + $this->assertEquals($CFG->calendartype, $siteinfo['usercalendartype']); + } // Now as admin. $this->setAdminUser(); diff --git a/webservice/upgrade.txt b/webservice/upgrade.txt index 895a5f90a57..2301a7c6e24 100644 --- a/webservice/upgrade.txt +++ b/webservice/upgrade.txt @@ -3,6 +3,11 @@ information provided here is intended especially for developers. This information is intended for authors of webservices, not people writing webservice clients. +=== 3.4 === + +* 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. + === 3.2 === * webservice->get_external_functions now returns the external function list ordered by name ASC.