mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 13:02:07 +02:00
MDL-64180 core_message: added new WS for contact request count
This commit is contained in:
parent
720cc99331
commit
7d678923b3
@ -939,6 +939,15 @@ $functions = array(
|
||||
'ajax' => true,
|
||||
'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
|
||||
),
|
||||
'core_message_get_received_contact_requests_count' => array(
|
||||
'classname' => 'core_message_external',
|
||||
'methodname' => 'get_received_contact_requests_count',
|
||||
'classpath' => 'message/externallib.php',
|
||||
'description' => 'Gets the number of received contact requests',
|
||||
'type' => 'read',
|
||||
'ajax' => true,
|
||||
'services' => array(MOODLE_OFFICIAL_MOBILE_SERVICE),
|
||||
),
|
||||
'core_message_delete_contacts' => array(
|
||||
'classname' => 'core_message_external',
|
||||
'methodname' => 'delete_contacts',
|
||||
|
@ -752,6 +752,60 @@ class core_message_external extends external_api {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of contact requests the user has received parameters description.
|
||||
*
|
||||
* @return external_function_parameters
|
||||
*/
|
||||
public static function get_received_contact_requests_count_parameters() {
|
||||
return new external_function_parameters(
|
||||
array(
|
||||
'userid' => new external_value(PARAM_INT, 'The id of the user we want to return the number of ' .
|
||||
'received contact requests for', VALUE_REQUIRED),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of contact requests the user has received.
|
||||
*
|
||||
* @param int $userid The ID of the user we want to return the number of received contact requests for
|
||||
* @return external_value
|
||||
*/
|
||||
public static function get_received_contact_requests_count(int $userid) {
|
||||
global $CFG, $USER;
|
||||
|
||||
// Check if messaging is enabled.
|
||||
if (empty($CFG->messaging)) {
|
||||
throw new moodle_exception('disabled', 'message');
|
||||
}
|
||||
|
||||
// Validate context.
|
||||
$context = context_system::instance();
|
||||
self::validate_context($context);
|
||||
|
||||
$params = [
|
||||
'userid' => $userid,
|
||||
];
|
||||
$params = self::validate_parameters(self::get_received_contact_requests_count_parameters(), $params);
|
||||
|
||||
$capability = 'moodle/site:manageallmessaging';
|
||||
if (($USER->id != $params['userid']) && !has_capability($capability, $context)) {
|
||||
throw new required_capability_exception($context, $capability, 'nopermissions', '');
|
||||
}
|
||||
|
||||
return \core_message\api::get_received_contact_requests_count($params['userid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of contact requests the user has received return description.
|
||||
*
|
||||
* @return external_value
|
||||
*/
|
||||
public static function get_received_contact_requests_count_returns() {
|
||||
return new external_value(PARAM_INT, 'The number of received contact requests');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns get conversation members parameters description.
|
||||
*
|
||||
|
@ -663,6 +663,85 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
core_message_external::create_contact_request($user1->id, $user2->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting the number of received contact requests.
|
||||
*/
|
||||
public function test_get_received_contact_requests_count() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
$user4 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
$contactrequestnumber = core_message_external::get_received_contact_requests_count($user1->id);
|
||||
$contactrequestnumber = external_api::clean_returnvalue(
|
||||
core_message_external::get_received_contact_requests_count_returns(), $contactrequestnumber);
|
||||
$this->assertEquals(0, $contactrequestnumber);
|
||||
|
||||
\core_message\api::create_contact_request($user2->id, $user1->id);
|
||||
|
||||
$contactrequestnumber = core_message_external::get_received_contact_requests_count($user1->id);
|
||||
$contactrequestnumber = external_api::clean_returnvalue(
|
||||
core_message_external::get_received_contact_requests_count_returns(), $contactrequestnumber);
|
||||
$this->assertEquals(1, $contactrequestnumber);
|
||||
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
|
||||
$contactrequestnumber = core_message_external::get_received_contact_requests_count($user1->id);
|
||||
$contactrequestnumber = external_api::clean_returnvalue(
|
||||
core_message_external::get_received_contact_requests_count_returns(), $contactrequestnumber);
|
||||
$this->assertEquals(2, $contactrequestnumber);
|
||||
|
||||
\core_message\api::create_contact_request($user1->id, $user4->id);
|
||||
|
||||
// Web service should ignore sent requests.
|
||||
$contactrequestnumber = core_message_external::get_received_contact_requests_count($user1->id);
|
||||
$contactrequestnumber = external_api::clean_returnvalue(
|
||||
core_message_external::get_received_contact_requests_count_returns(), $contactrequestnumber);
|
||||
$this->assertEquals(2, $contactrequestnumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting the number of received contact requests with no permissions.
|
||||
*/
|
||||
public function test_get_received_contact_requests_count_no_permission() {
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Create some skeleton data just so we can call the WS.
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->setUser($user2);
|
||||
|
||||
// Ensure an exception is thrown.
|
||||
$this->expectException('required_capability_exception');
|
||||
core_message_external::get_received_contact_requests_count($user1->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting the number of received contact requests with messaging disabled.
|
||||
*/
|
||||
public function test_get_received_contact_requests_count_messaging_disabled() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Create some skeleton data just so we can call the WS.
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->setUser($user1);
|
||||
|
||||
// Disable messaging.
|
||||
$CFG->messaging = 0;
|
||||
|
||||
// Ensure an exception is thrown.
|
||||
$this->expectException('moodle_exception');
|
||||
core_message_external::get_received_contact_requests_count($user1->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test creating a contact request.
|
||||
*/
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2018112000.01; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
$version = 2018112000.02; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user