Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.

Differences Between: [Versions 310 and 400] [Versions 311 and 400] [Versions 39 and 400]

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * Contains a base class for extension by message processors
  19   *
  20   * @package   core_message
  21   * @copyright Luis Rodrigues
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  /**
  26   * Base message processor class for extension by message processors
  27   *
  28   * @package   core_message
  29   * @copyright 2008 Luis Rodrigues
  30   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  31   */
  32  abstract class message_output {
  33      /**
  34       * Process a message received by a user
  35       *
  36       * @see message_send()
  37       * @param stdClass $message The event data submitted by the message provider to message_send() plus $eventdata->savedmessageid
  38       */
  39      public abstract function send_message($message);
  40  
  41      /**
  42       * Load the config data from database to put on the config form on the messaging preferences page
  43       *
  44       * @param array $preferences Array of user preferences
  45       * @param int $userid The user ID
  46       */
  47      public abstract function load_data(&$preferences, $userid);
  48  
  49      /**
  50       * Create necessary fields in the config form on the messaging preferences page
  51       *
  52       * @param array $preferences An array of user preferences
  53       */
  54      public abstract function config_form($preferences);
  55  
  56      /**
  57       * Parse the submitted form and save data into an array of user preferences
  58       *
  59       * @param stdClass $form preferences form class
  60       * @param array $preferences preferences array
  61       */
  62      public abstract function process_form($form, &$preferences);
  63  
  64      /**
  65       * Are the message processor's system settings configured?
  66       *
  67       * @return bool True if all necessary config settings been entered
  68       */
  69      public function is_system_configured() {
  70          return true;
  71      }
  72  
  73      /**
  74       * Are the message processor's user specific settings configured?
  75       *
  76       * @param  stdClass $user the user object, defaults to $USER.
  77       * @return bool True if the user has all necessary settings in their messaging preferences
  78       */
  79      public function is_user_configured($user = null) {
  80          return true;
  81      }
  82  
  83      /**
  84       * Returns the message processors default settings
  85       * Should the processor be enabled in users by default?
  86       * Is enabling it disallowed, permitted or forced?
  87       *
  88       * @return int The Default message output settings expressed as a bit mask
  89       *         MESSAGE_DEFAULT_ENABLED + MESSAGE_PERMITTED
  90       */
  91      public function get_default_messaging_settings() {
  92          return MESSAGE_PERMITTED;
  93      }
  94  
  95      /**
  96       * Returns true if message can be sent to fake/internal user as well.
  97       * If message_output support message to be sent to fake user, then it should return true, like email.
  98       *
  99       * @return bool
 100       */
 101      public function can_send_to_any_users() {
 102          return false;
 103      }
 104  
 105      /**
 106       * Returns true if this processor has configurable message preferences. This is
 107       * distinct from notification preferences.
 108       *
 109       * @return bool
 110       */
 111      public function has_message_preferences() {
 112          return true;
 113      }
 114  
 115      /**
 116       * Determines if this processor should process a message regardless of user preferences or site settings.
 117       *
 118       * @return bool
 119       */
 120      public function force_process_messages() {
 121          return false;
 122      }
 123  
 124      /**
 125       * Allow processors to perform cleanup tasks for all notifications by overriding this method
 126       *
 127       * @since Moodle 3.9
 128       * @param int $notificationdeletetime
 129       * @return void
 130       */
 131      public function cleanup_all_notifications(int $notificationdeletetime): void {
 132          return;
 133      }
 134  
 135      /**
 136       * Allow processors to perform cleanup tasks for read notifications by overriding this method
 137       *
 138       * @since Moodle 3.9
 139       * @param int $notificationdeletetime
 140       * @return void
 141       */
 142      public function cleanup_read_notifications(int $notificationdeletetime): void {
 143          return;
 144      }
 145  }