MDL-82844 ws: Return home page url in get_site_info WebService

This commit is contained in:
Dani Palou
2024-09-12 15:03:25 +02:00
parent 3477082aa9
commit 59ebca88bb
3 changed files with 53 additions and 0 deletions
@@ -0,0 +1,7 @@
issueNumber: MDL-82844
notes:
core_external:
- message: >-
The external function core_webservice_external::get_site_info now
returns the default home page URL when needed.
type: changed
+5
View File
@@ -194,6 +194,9 @@ class core_webservice_external extends \core_external\external_api {
// User home page.
$siteinfo['userhomepage'] = get_home_page();
if ($siteinfo['userhomepage'] === HOMEPAGE_URL) {
$siteinfo['userhomepageurl'] = (string) get_default_home_page_url();
}
// Calendar.
$siteinfo['sitecalendartype'] = $CFG->calendartype;
@@ -280,6 +283,8 @@ class core_webservice_external extends \core_external\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),
'userhomepageurl' => new external_value(PARAM_LOCALURL,
'The URL of default home page when userhomepage is 4 (HOMEPAGE_URL).', VALUE_OPTIONAL),
'userprivateaccesskey' => new external_value(PARAM_ALPHANUM, 'Private user access key for fetching files.',
VALUE_OPTIONAL),
'siteid' => new external_value(PARAM_INT, 'Site course ID', VALUE_OPTIONAL),
+41
View File
@@ -30,6 +30,7 @@ require_once($CFG->dirroot . '/webservice/tests/helpers.php');
* External course functions unit tests
*
* @package core_webservice
* @covers \core_webservice_external::get_site_info
* @category external
* @copyright 2012 Paul Charsley
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
@@ -44,6 +45,9 @@ final class externallib_test extends externallib_advanced_testcase {
set_config('enablewebservices', '1');
}
/**
* Test get_site_info.
*/
public function test_get_site_info(): void {
global $DB, $USER, $CFG, $PAGE;
@@ -281,4 +285,41 @@ final class externallib_test extends externallib_advanced_testcase {
$this->assertEquals('core_user_get_users', $result['functions'][0]['name']);
}
/**
* Test get_site_info returns the default home page URL when needed.
*/
public function test_get_site_info_default_home_page(): void {
global $CFG;
$this->resetAfterTest();
$this->setAdminUser();
// Site configuration.
$CFG->defaulthomepage = HOMEPAGE_MY;
$result = \core_webservice_external::get_site_info();
$result = external_api::clean_returnvalue(\core_webservice_external::get_site_info_returns(), $result);
$this->assertEquals(HOMEPAGE_MY, $result['userhomepage']);
$this->assertArrayNotHasKey('userhomepageurl', $result);
$CFG->defaulthomepage = "{$CFG->wwwroot}/home";
$result = \core_webservice_external::get_site_info();
$result = external_api::clean_returnvalue(\core_webservice_external::get_site_info_returns(), $result);
$this->assertEquals(HOMEPAGE_URL, $result['userhomepage']);
$this->assertEquals($CFG->defaulthomepage, $result['userhomepageurl']);
// User preference.
$CFG->defaulthomepage = HOMEPAGE_USER;
$userpreference = "{$CFG->wwwroot}/about";
set_user_preference('user_home_page_preference', $userpreference);
$result = \core_webservice_external::get_site_info();
$result = external_api::clean_returnvalue(\core_webservice_external::get_site_info_returns(), $result);
$this->assertEquals(HOMEPAGE_URL, $result['userhomepage']);
$this->assertEquals($userpreference, $result['userhomepageurl']);
}
}