예제 #1
0
파일: lib.php 프로젝트: EsdrasCaleb/moodle
/**
 * 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));
}
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
파일: api_test.php 프로젝트: dg711/moodle
 /**
  * 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']);
 }
예제 #4
0
 /**
  * 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;
 }