Moodle APIs 3.9
Moodle 3.9.13+ (Build: 20220325)
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
bootstrap_renderer Class Reference

This class solves the problem of how to initialise $OUTPUT. More...

Public Member Functions

 __call ($method, $arguments)
 Constructor - to be used by core code only. More...
 
 has_started ()
 Have we started output yet? More...
 

Static Public Member Functions

static early_error ($message, $moreinfourl, $link, $backtrace, $debuginfo=null, $errorcode=null)
 This function should only be called by this class, or from exception handlers. More...
 
static early_error_content ($message, $moreinfourl, $link, $backtrace, $debuginfo=null)
 Returns nicely formatted error message in a div box. More...
 
static early_notification ($message, $classes='notifyproblem')
 Early notification message. More...
 
static early_redirect_message ($encodedurl, $message, $delay)
 Early redirection page, used before full init of $PAGE global. More...
 
static plain_page ($title, $content, $meta='')
 Output basic html page. More...
 
static plain_redirect_message ($encodedurl)
 Page should redirect message. More...
 

Protected Attributes

boolean $initialising = false
 Handles re-entrancy. More...
 

Detailed Description

This class solves the problem of how to initialise $OUTPUT.

The problem is caused be two factors

  1. On the one hand, we cannot be sure when output will start. In particular, an error, which needs to be displayed, could be thrown at any time.
  2. On the other hand, we cannot be sure when we will have all the information necessary to correctly initialise $OUTPUT. $OUTPUT depends on the theme, which (potentially) depends on the current course, course categories, and logged in user. It also depends on whether the current page requires HTTPS.

So, it is hard to find a single natural place during Moodle script execution, which we can guarantee is the right time to initialise $OUTPUT. Instead we adopt the following strategy

  1. We will initialise $OUTPUT the first time it is used.
  2. If, after $OUTPUT has been initialised, the script tries to change something that $OUTPUT depends on, we throw an exception making it clear that the script did something wrong.

The only problem with that is, how do we initialise $OUTPUT on first use if, it is going to be used like $OUTPUT->somthing(...)? Well that is where this class comes in. Initially, we set up $OUTPUT = new bootstrap_renderer(). Then, when any method is called on that object, we initialise $OUTPUT, and pass the call on.

Note that this class is used before lib/outputlib.php has been loaded, so we must be careful referring to classes/functions from there, they may not be defined yet, and we must avoid fatal errors.

License
http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
Since
Moodle 2.0

Member Function Documentation

◆ __call()

bootstrap_renderer::__call (   $method,
  $arguments 
)

Constructor - to be used by core code only.

Parameters
string$methodThe method to call
array$argumentsArguments to pass to the method being called
Return values
string

◆ early_error()

static bootstrap_renderer::early_error (   $message,
  $moreinfourl,
  $link,
  $backtrace,
  $debuginfo = null,
  $errorcode = null 
)
static

This function should only be called by this class, or from exception handlers.

Parameters
string$messageerror message
string$moreinfourl(ignored in early errors)
string$link(ignored in early errors)
array$backtrace
string$debuginfoextra information for developers
Return values
string

◆ early_error_content()

static bootstrap_renderer::early_error_content (   $message,
  $moreinfourl,
  $link,
  $backtrace,
  $debuginfo = null 
)
static

Returns nicely formatted error message in a div box.

Parameters
string$messageerror message
string$moreinfourl(ignored in early errors)
string$link(ignored in early errors)
array$backtrace
string$debuginfo
Return values
string

◆ early_notification()

static bootstrap_renderer::early_notification (   $message,
  $classes = 'notifyproblem' 
)
static

Early notification message.

Parameters
string$message
string$classesusually notifyproblem or notifysuccess
Return values
string

◆ early_redirect_message()

static bootstrap_renderer::early_redirect_message (   $encodedurl,
  $message,
  $delay 
)
static

Early redirection page, used before full init of $PAGE global.

Parameters
string$encodedurlredirect url
string$messageredirect message
int$delaytime in seconds
Return values
stringredirect page

◆ has_started()

bootstrap_renderer::has_started ( )

Have we started output yet?

Return values
booleantrue if the header has been printed.

◆ plain_page()

static bootstrap_renderer::plain_page (   $title,
  $content,
  $meta = '' 
)
static

Output basic html page.

Parameters
string$titlepage title
string$contentpage content
string$metameta tag
Return values
stringhtml page

◆ plain_redirect_message()

static bootstrap_renderer::plain_redirect_message (   $encodedurl)
static

Page should redirect message.

Parameters
string$encodedurlredirect url
Return values
string

Member Data Documentation

◆ $initialising

boolean bootstrap_renderer::$initialising = false
protected

Handles re-entrancy.

Without this, errors or debugging output that occur during the initialisation of $OUTPUT, cause infinite recursion.


The documentation for this class was generated from the following file: