MDL-48719 messages: New WS core_message_get_blocked_users

This commit is contained in:
Juan Leyva
2015-01-29 13:04:43 +01:00
parent 4c27f52d91
commit 60ab2e1bc4
3 changed files with 112 additions and 2 deletions
+12 -1
View File
@@ -772,6 +772,15 @@ $functions = array(
'capabilities' => '',
),
'core_message_get_blocked_users' => array(
'classname' => 'core_message_external',
'methodname' => 'get_blocked_users',
'classpath' => 'message/externallib.php',
'description' => 'Retrieve a list of users blocked',
'type' => 'read',
'capabilities' => '',
),
// === notes related functions ===
'moodle_notes_create_notes' => array(
@@ -975,7 +984,9 @@ $services = array(
'core_message_block_contacts',
'core_message_unblock_contacts',
'core_message_get_contacts',
'core_message_search_contacts'),
'core_message_search_contacts',
'core_message_get_blocked_users'
),
'enabled' => 0,
'restrictedusers' => 0,
'shortname' => MOODLE_OFFICIAL_MOBILE_SERVICE,
+99
View File
@@ -829,6 +829,105 @@ class core_message_external extends external_api {
);
}
/**
* Get blocked users parameters description.
*
* @return external_function_parameters
* @since 2.9
*/
public static function get_blocked_users_parameters() {
return new external_function_parameters(
array(
'userid' => new external_value(PARAM_INT,
'the user whose blocked users we want to retrieve',
VALUE_REQUIRED),
)
);
}
/**
* Retrieve a list of users blocked
*
* @param int $userid the user whose blocked users we want to retrieve
* @return external_description
* @since 2.9
*/
public static function get_blocked_users($userid) {
global $CFG, $USER;
require_once($CFG->dirroot . "/message/lib.php");
// Warnings array, it can be empty at the end but is mandatory.
$warnings = array();
// Validate params.
$params = array(
'userid' => $userid
);
$params = self::validate_parameters(self::get_blocked_users_parameters(), $params);
$userid = $params['userid'];
// Validate context.
$context = context_system::instance();
self::validate_context($context);
// Check if private messaging between users is allowed.
if (empty($CFG->messaging)) {
throw new moodle_exception('disabled', 'message');
}
$user = core_user::get_user($userid, 'id', MUST_EXIST);
// Check if we have permissions for retrieve the information.
if ($userid != $USER->id and !has_capability('moodle/site:readallmessages', $context)) {
throw new moodle_exception('accessdenied', 'admin');
}
// Now, we can get safely all the blocked users.
$users = message_get_blocked_users($user);
$blockedusers = array();
foreach ($users as $user) {
$newuser = array(
'id' => $user->id,
'fullname' => fullname($user),
);
$newuser['profileimageurl'] = moodle_url::make_webservice_pluginfile_url(
context_user::instance($user->id)->id, 'user', 'icon', null, '/', 'f1')->out(false);
$blockedusers[] = $newuser;
}
$results = array(
'users' => $blockedusers,
'warnings' => $warnings
);
return $results;
}
/**
* Get blocked users return description.
*
* @return external_single_structure
* @since 2.9
*/
public static function get_blocked_users_returns() {
return new external_single_structure(
array(
'users' => new external_multiple_structure(
new external_single_structure(
array(
'id' => new external_value(PARAM_INT, 'User ID'),
'fullname' => new external_value(PARAM_NOTAGS, 'User full name'),
'profileimageurl' => new external_value(PARAM_URL, 'User picture URL', VALUE_OPTIONAL)
)
),
'List of blocked users'
),
'warnings' => new external_warnings()
)
);
}
}
/**
+1 -1
View File
@@ -29,7 +29,7 @@
defined('MOODLE_INTERNAL') || die();
$version = 2015012900.00; // YYYYMMDD = weekly release date of this DEV branch.
$version = 2015012900.01; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.