Merge branch 'MDL-64180_master' of git://github.com/markn86/moodle

This commit is contained in:
Damyon Wiese
2018-11-23 12:21:13 +08:00
6 changed files with 154 additions and 12 deletions
+9
View File
@@ -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',
+4 -4
View File
@@ -2504,14 +2504,14 @@ class api {
}
/**
* Count how many contact requests the user has received.
* Returns the number of contact requests the user has received.
*
* @param \stdClass $user The user to fetch contact requests for
* @param int $userid The ID of the user we want to return the number of received contact requests for
* @return int The count
*/
public static function count_received_contact_requests(\stdClass $user) : int {
public static function get_received_contact_requests_count(int $userid) : int {
global $DB;
return $DB->count_records('message_contact_requests', ['requesteduserid' => $user->id]);
return $DB->count_records('message_contact_requests', ['requesteduserid' => $userid]);
}
/**
+54
View File
@@ -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.
*
+2 -2
View File
@@ -805,7 +805,7 @@ function core_message_render_navbar_output(\renderer_base $renderer) {
// Add the messages popover.
if (!empty($CFG->messaging)) {
$unreadcount = \core_message\api::count_unread_conversations($USER);
$requestcount = \core_message\api::count_received_contact_requests($USER);
$requestcount = \core_message\api::get_received_contact_requests_count($USER->id);
$context = [
'userid' => $USER->id,
'unreadcount' => $unreadcount + $requestcount
@@ -840,7 +840,7 @@ function core_message_standard_after_main_region_html() {
$individualconversationcount = $conversationcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL];
$groupconversationcount = $conversationcounts['types'][\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP];
$favouriteconversationcount = $conversationcounts['favourites'];
$requestcount = \core_message\api::count_received_contact_requests($USER);
$requestcount = \core_message\api::get_received_contact_requests_count($USER->id);
$contactscount = \core_message\api::count_contacts($USER->id);
$choices = [];
+6 -6
View File
@@ -4895,27 +4895,27 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
}
/**
* Test the count_received_contact_requests() function.
* Test the get_received_contact_requests_count() function.
*/
public function test_count_received_contact_requests() {
public function test_get_received_contact_requests_count() {
$user1 = self::getDataGenerator()->create_user();
$user2 = self::getDataGenerator()->create_user();
$user3 = self::getDataGenerator()->create_user();
$user4 = self::getDataGenerator()->create_user();
$this->assertEquals(0, \core_message\api::count_received_contact_requests($user1));
$this->assertEquals(0, \core_message\api::get_received_contact_requests_count($user1->id));
\core_message\api::create_contact_request($user2->id, $user1->id);
$this->assertEquals(1, \core_message\api::count_received_contact_requests($user1));
$this->assertEquals(1, \core_message\api::get_received_contact_requests_count($user1->id));
\core_message\api::create_contact_request($user3->id, $user1->id);
$this->assertEquals(2, \core_message\api::count_received_contact_requests($user1));
$this->assertEquals(2, \core_message\api::get_received_contact_requests_count($user1->id));
\core_message\api::create_contact_request($user1->id, $user4->id);
// Function should ignore sent requests.
$this->assertEquals(2, \core_message\api::count_received_contact_requests($user1));
$this->assertEquals(2, \core_message\api::get_received_contact_requests_count($user1->id));
}
/**
+79
View File
@@ -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.
*/