MediaWiki REL1_35
CachedAction Class Reference

Abstract action class with scaffolding for caching HTML and other values in a single blob. More...

Inheritance diagram for CachedAction:
Collaboration diagram for CachedAction:

Public Member Functions

 addCachedHTML ( $computeFunction, $args=[], $key=null)
 Add some HTML to be cached.
 
 getCachedValue ( $computeFunction, $args=[], $key=null)
 Get a cached value if available or compute it if not and then cache it if possible.
 
 onCacheInitialized ( $hasCached)
 Gets called after the cache got initialized.
 
 saveCache ()
 Saves the HTML to the cache in case it got recomputed.
 
 setCacheEnabled ( $cacheEnabled)
 Sets if the cache should be enabled or not.
 
 setExpiry ( $cacheExpiry)
 Sets the time to live for the cache, in seconds or a unix timestamp indicating the point of expiry.
 
 startCache ( $cacheExpiry=null, $cacheEnabled=null)
 Initializes the caching.
 
- Public Member Functions inherited from FormlessAction
 onView ()
 Show something on GET request.
 
 show ()
 Stable to override.
 
- Public Member Functions inherited from Action
 __construct (Page $page, IContextSource $context=null)
 Only public since 1.21.
 
 addHelpLink ( $to, $overrideBaseUrl=false)
 Adds help link with an icon via page indicators.
 
 doesWrites ()
 Indicates whether this action may perform database writes.
 
 getArticle ()
 Get a Article object.
 
 getContext ()
 Get the IContextSource in use here.
 
 getLanguage ()
 Shortcut to get the user Language being used for this instance.
 
 getName ()
 Return the name of the action this object responds to.
 
 getOutput ()
 Get the OutputPage being used for this instance.
 
 getRequest ()
 Get the WebRequest being used for this instance.
 
 getRestriction ()
 Get the permission required to perform this action.
 
 getSkin ()
 Shortcut to get the Skin being used for this instance.
 
 getTitle ()
 Shortcut to get the Title object from the page.
 
 getUser ()
 Shortcut to get the User being used for this instance.
 
 getWikiPage ()
 Get a WikiPage object.
 
 msg ( $key,... $params)
 Get a Message object with context set Parameters are the same as wfMessage()
 
 needsReadRights ()
 Indicates whether this action requires read rights.
 
 requiresUnblock ()
 Whether this action can still be executed by a blocked user.
 
 requiresWrite ()
 Whether this action requires the wiki not to be locked.
 

Protected Member Functions

 getCacheKey ()
 Returns the variables used to constructed the cache key in an array.
 
- Protected Member Functions inherited from Action
 checkCanExecute (User $user)
 Checks if the given user (identified by an object) can perform this action.
 
 getDescription ()
 Returns the description that goes below the \<h1\> tag.
 
 getHookContainer ()
 
 getHookRunner ()
 
 getPageTitle ()
 Returns the name that goes in the \<h1\> page title.
 
 setHeaders ()
 Set output headers for noindexing etc.
 
 useTransactionalTimeLimit ()
 Call wfTransactionalTimeLimit() if this request was POSTed.
 

Protected Attributes

bool $cacheEnabled = true
 If the cache is enabled or not.
 
CacheHelper $cacheHelper
 CacheHelper object to which we forward the non-SpecialPage specific caching work.
 
- Protected Attributes inherited from Action
IContextSource $context
 IContextSource if specified; otherwise we'll use the Context from the Page.
 
array $fields
 The fields used to create the HTMLForm.
 
WikiPage Article ImagePage CategoryPage Page $page
 Page on which we're performing the action.
 

Additional Inherited Members

- Static Public Member Functions inherited from Action
static exists (string $name)
 Check if a given action is recognised, even if it's disabled.
 
static factory (?string $action, Page $article, IContextSource $context=null)
 Get an appropriate Action subclass for the given action.
 
static getActionName (IContextSource $context)
 Get the action that will be executed, not necessarily the one passed passed through the "action" request parameter.
 

Detailed Description

Abstract action class with scaffolding for caching HTML and other values in a single blob.

Before using any of the caching functionality, call startCache. After the last call to either getCachedValue or addCachedHTML, call saveCache.

To get a cached value or compute it, use getCachedValue like this: $this->getCachedValue( $callback );

To add HTML that should be cached, use addCachedHTML like this: $this->addCachedHTML( $callback );

The callback function is only called when needed, so do all your expensive computations here. This function should returns the HTML to be cached. It should not add anything to the PageOutput object!

Definition at line 46 of file CachedAction.php.

Member Function Documentation

◆ addCachedHTML()

CachedAction::addCachedHTML (   $computeFunction,
  $args = [],
  $key = null 
)

Add some HTML to be cached.

This is done by providing a callback function that should return the HTML to be added. It will only be called if the item is not in the cache yet or when the cache has been invalidated.

Since
1.20
Parameters
callable$computeFunction
array$args
string | null$key

Definition at line 135 of file CachedAction.php.

References $args, and Action\getOutput().

◆ getCachedValue()

CachedAction::getCachedValue (   $computeFunction,
  $args = [],
  $key = null 
)

Get a cached value if available or compute it if not and then cache it if possible.

The provided $computeFunction is only called when the computation needs to happen and should return a result value. $args are arguments that will be passed to the compute function when called.

Since
1.20
Parameters
callable$computeFunction
array | mixed$args
string | null$key
Returns
mixed

Implements ICacheHelper.

Definition at line 119 of file CachedAction.php.

References $args.

◆ getCacheKey()

CachedAction::getCacheKey ( )
protected

Returns the variables used to constructed the cache key in an array.

Since
1.20
Returns
array

Definition at line 169 of file CachedAction.php.

References Action\getArticle(), Action\getLanguage(), and Action\getName().

Referenced by startCache().

◆ onCacheInitialized()

CachedAction::onCacheInitialized (   $hasCached)

Gets called after the cache got initialized.

Since
1.20
Parameters
bool$hasCached

Definition at line 184 of file CachedAction.php.

References Action\getOutput().

◆ saveCache()

CachedAction::saveCache ( )

Saves the HTML to the cache in case it got recomputed.

Should be called after the last time anything is added via addCachedHTML.

Since
1.20

Implements ICacheHelper.

Definition at line 146 of file CachedAction.php.

◆ setCacheEnabled()

CachedAction::setCacheEnabled (   $cacheEnabled)

Sets if the cache should be enabled or not.

Since
1.20
Parameters
bool$cacheEnabled

Implements ICacheHelper.

Definition at line 71 of file CachedAction.php.

References $cacheEnabled.

◆ setExpiry()

CachedAction::setExpiry (   $cacheExpiry)

Sets the time to live for the cache, in seconds or a unix timestamp indicating the point of expiry.

Since
1.20
Parameters
int$cacheExpiry

Implements ICacheHelper.

Definition at line 158 of file CachedAction.php.

◆ startCache()

CachedAction::startCache (   $cacheExpiry = null,
  $cacheEnabled = null 
)

Initializes the caching.

Should be called before the first time anything is added via addCachedHTML.

Since
1.20
Parameters
int | null$cacheExpirySets the cache expiry, either ttl in seconds or unix timestamp.
bool | null$cacheEnabledSets if the cache should be enabled or not.

Implements ICacheHelper.

Definition at line 84 of file CachedAction.php.

References $cacheEnabled, getCacheKey(), and Action\getRequest().

Member Data Documentation

◆ $cacheEnabled

bool CachedAction::$cacheEnabled = true
protected

If the cache is enabled or not.

Since
1.20

Definition at line 63 of file CachedAction.php.

Referenced by setCacheEnabled(), and startCache().

◆ $cacheHelper

CacheHelper CachedAction::$cacheHelper
protected

CacheHelper object to which we forward the non-SpecialPage specific caching work.

Initialized in startCache.

Since
1.20

Definition at line 55 of file CachedAction.php.


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