original_string: public static function add($message, $level = null) {
          global $PAGE, $SESSION;
  
          if ($PAGE && $PAGE->state === \moodle_page::STATE_IN_BODY) {
              // Currently in the page body - just render and exit immediately.
              // We insert some code to immediately insert this into the user-notifications created by the header.
              $id = uniqid();
              echo \html_writer::span(
                  $PAGE->get_renderer('core')->render(new \core\output\notification($message, $level)),
                  '', array('id' => $id));
  
              // Insert this JS here using a script directly rather than waiting for the page footer to load to avoid
              // ensure that the message is added to the user-notifications section as soon as possible after it is created.
              echo \html_writer::script(
                      "(function() {" .
                          "var notificationHolder = document.getElementById('user-notifications');" .
                          "if (!notificationHolder) { return; }" .
                          "var thisNotification = document.getElementById('{$id}');" .
                          "if (!thisNotification) { return; }" .
                          "notificationHolder.appendChild(thisNotification.firstChild);" .
                          "thisNotification.remove();" .
                      "})();"
                  );
              return;
          }
  
          // Add the notification directly to the session.
          // This will either be fetched in the header, or by JS in the footer.
          if (!isset($SESSION->notifications) || !array($SESSION->notifications)) {
              // Initialise $SESSION if necessary.
              if (!is_object($SESSION)) {
                  $SESSION = new stdClass();
              }
              $SESSION->notifications = [];
          }
          $SESSION->notifications[] = (object) array(
              'message'   => $message,
              'type'      => $level,
          );
      }
code: public static function add($message, $level = null) {
          global $PAGE, $SESSION;
  
          if ($PAGE && $PAGE->state === \moodle_page::STATE_IN_BODY) {
              // Currently in the page body - just render and exit immediately.
              // We insert some code to immediately insert this into the user-notifications created by the header.
              $id = uniqid();
              echo \html_writer::span(
                  $PAGE->get_renderer('core')->render(new \core\output\notification($message, $level)),
                  '', array('id' => $id));
  
              // Insert this JS here using a script directly rather than waiting for the page footer to load to avoid
              // ensure that the message is added to the user-notifications section as soon as possible after it is created.
              echo \html_writer::script(
                      "(function() {" .
                          "var notificationHolder = document.getElementById('user-notifications');" .
                          "if (!notificationHolder) { return; }" .
                          "var thisNotification = document.getElementById('{$id}');" .
                          "if (!thisNotification) { return; }" .
                          "notificationHolder.appendChild(thisNotification.firstChild);" .
                          "thisNotification.remove();" .
                      "})();"
                  );
              return;
          }
  
          // Add the notification directly to the session.
          // This will either be fetched in the header, or by JS in the footer.
          if (!isset($SESSION->notifications) || !array($SESSION->notifications)) {
              // Initialise $SESSION if necessary.
              if (!is_object($SESSION)) {
                  $SESSION = new stdClass();
              }
              $SESSION->notifications = [];
          }
          $SESSION->notifications[] = (object) array(
              'message'   => $message,
              'type'      => $level,
          );
      }
code_tokens: public static function add ( $ message , $ level = null ) { global $ PAGE , $ SESSION ; if ( $ PAGE && $ PAGE -> state === \ moodle_page :: STATE_IN_BODY ) { // Currently in the page body - just render and exit immediately. // We insert some code to immediately insert this into the user-notifications created by the header. $ id = uniqid ( ) ; echo \ html_writer :: span ( $ PAGE -> get_renderer ( 'core' ) -> render ( new \ core \ output \ notification ( $ message , $ level ) ) , '' , array ( 'id' => $ id ) ) ; // Insert this JS here using a script directly rather than waiting for the page footer to load to avoid // ensure that the message is added to the user-notifications section as soon as possible after it is created. echo \ html_writer :: script ( "(function() {" . "var notificationHolder = document.getElementById('user-notifications');" . "if (!notificationHolder) { return; }" . "var thisNotification = document.getElementById('{$id}');" . "if (!thisNotification) { return; }" . "notificationHolder.appendChild(thisNotification.firstChild);" . "thisNotification.remove();" . "})();" ) ; return ; } // Add the notification directly to the session. // This will either be fetched in the header, or by JS in the footer. if ( ! isset ( $ SESSION -> notifications ) || ! array ( $ SESSION -> notifications ) ) { // Initialise $SESSION if necessary. if ( ! is_object ( $ SESSION ) ) { $ SESSION = new stdClass ( ) ; } $ SESSION -> notifications = [ ] ; } $ SESSION -> notifications [ ] = ( object ) array ( 'message' => $ message , 'type' => $ level , ) ; }
docstring: Add a message to the session notification stack.
  
  @param string $message The message to add to the stack
  @param string $level   The type of message to add to the stack
docstring_tokens: Add a message to the session notification stack .