/** * Handles displaying processor settings in a fragment. * * @param array $args * @return bool|string * @throws moodle_exception */ function message_output_fragment_processor_settings($args = []) { global $PAGE; if (!isset($args['type'])) { throw new moodle_exception('Must provide a processor type'); } if (!isset($args['userid'])) { throw new moodle_exception('Must provide a userid'); } $type = $args['type']; $userid = $args['userid']; $user = core_user::get_user($userid, '*', MUST_EXIST); $processor = get_message_processor($type); $providers = message_get_providers_for_user($userid); $processorwrapper = new stdClass(); $processorwrapper->object = $processor; $preferences = \core_message\api::get_all_message_preferences([$processorwrapper], $providers, $user); $processoroutput = new \core_message\output\preferences\processor($processor, $preferences, $user, $type); $renderer = $PAGE->get_renderer('core', 'message'); return $renderer->render_from_template('core_message/preferences_processor', $processoroutput->export_for_template($renderer)); }
/** * Get the notification preferences for a given user. * * @param int $userid id of the user, 0 for current user * @return external_description * @throws moodle_exception * @since 3.2 */ public static function get_user_message_preferences($userid = 0) { global $PAGE; $params = self::validate_parameters(self::get_user_message_preferences_parameters(), array('userid' => $userid)); $user = self::validate_preferences_permissions($params['userid']); // Filter out enabled, available system_configured and user_configured processors only. $readyprocessors = array_filter(get_message_processors(), function ($processor) { return $processor->enabled && $processor->configured && $processor->object->is_user_configured() && $processor->object->has_message_preferences(); }); $providers = array_filter(message_get_providers_for_user($user->id), function ($provider) { return $provider->component === 'moodle'; }); $preferences = \core_message\api::get_all_message_preferences($readyprocessors, $providers, $user); $notificationlistoutput = new \core_message\output\preferences\message_notification_list($readyprocessors, $providers, $preferences, $user); $renderer = $PAGE->get_renderer('core_message'); $result = array('warnings' => array(), 'preferences' => $notificationlistoutput->export_for_template($renderer), 'blocknoncontacts' => get_user_preferences('message_blocknoncontacts', '', $user->id) ? true : false); return $result; }
/** * Tests deleting a conversation. */ public function test_get_all_message_preferences() { $user = self::getDataGenerator()->create_user(); $this->setUser($user); // Set a couple of preferences to test. set_user_preference('message_provider_mod_assign_assign_notification_loggedin', 'popup', $user); set_user_preference('message_provider_mod_assign_assign_notification_loggedoff', 'email', $user); $processors = get_message_processors(); $providers = message_get_providers_for_user($user->id); $prefs = \core_message\api::get_all_message_preferences($processors, $providers, $user); $this->assertEquals(1, $prefs->mod_assign_assign_notification_loggedin['popup']); $this->assertEquals(1, $prefs->mod_assign_assign_notification_loggedoff['email']); }
/** * Get the notification preferences for a given user. * * @param int $userid id of the user, 0 for current user * @return external_description * @throws moodle_exception * @since 3.2 */ public static function get_user_notification_preferences($userid = 0) { global $USER, $PAGE; $params = self::validate_parameters(self::get_user_notification_preferences_parameters(), array('userid' => $userid)); if (empty($params['userid'])) { $user = $USER; } else { $user = core_user::get_user($params['userid'], '*', MUST_EXIST); core_user::require_active_user($user); } $systemcontext = context_system::instance(); self::validate_context($systemcontext); // Check access control. if ($user->id == $USER->id) { // Editing own message profile. require_capability('moodle/user:editownmessageprofile', $systemcontext); } else { // Teachers, parents, etc. $personalcontext = context_user::instance($user->id); require_capability('moodle/user:editmessageprofile', $personalcontext); } $processors = get_message_processors(); $providers = message_get_providers_for_user($user->id); $preferences = \core_message\api::get_all_message_preferences($processors, $providers, $user); $notificationlist = new \core_message\output\preferences\notification_list($processors, $providers, $preferences, $user); $renderer = $PAGE->get_renderer('core_message'); $result = array('warnings' => array(), 'preferences' => $notificationlist->export_for_template($renderer)); return $result; }