mirror of
https://github.com/silverstripe/silverstripe-reports
synced 2024-10-22 11:05:53 +02:00
MINOR Added caching to SiteTree->getStatusFlags(), as its called twice for every node now in LeftAndMain->SiteTreeAsUL() (see #7410)
This commit is contained in:
parent
bc2fb3c900
commit
e50936fe9f
@ -195,11 +195,13 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
* See {@link batch_permission_check()} for details.
|
* See {@link batch_permission_check()} for details.
|
||||||
*/
|
*/
|
||||||
public static $cache_permissions = array();
|
public static $cache_permissions = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var boolean
|
* @var boolean
|
||||||
*/
|
*/
|
||||||
protected static $enforce_strict_hierarchy = true;
|
protected static $enforce_strict_hierarchy = true;
|
||||||
|
|
||||||
|
protected $_cache_statusFlags = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if the system should avoid orphaned pages
|
* Determines if the system should avoid orphaned pages
|
||||||
@ -1493,6 +1495,11 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
|
|
||||||
parent::onAfterDelete();
|
parent::onAfterDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function flushCache($persistent = true) {
|
||||||
|
parent::flushCache($persistent);
|
||||||
|
$this->_cache_statusFlags = null;
|
||||||
|
}
|
||||||
|
|
||||||
function validate() {
|
function validate() {
|
||||||
$result = parent::validate();
|
$result = parent::validate();
|
||||||
@ -2469,38 +2476,43 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid
|
|||||||
*
|
*
|
||||||
* Example (with optional title attribute):
|
* Example (with optional title attribute):
|
||||||
* "deletedonlive" => array('text' => "Deleted", 'title' => 'This page has been deleted')
|
* "deletedonlive" => array('text' => "Deleted", 'title' => 'This page has been deleted')
|
||||||
*
|
*
|
||||||
|
* @param Boolean $cached
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function getStatusFlags() {
|
function getStatusFlags($cached = true) {
|
||||||
$flags = array();
|
if(!$this->_cache_statusFlags || !$cached) {
|
||||||
if($this->IsDeletedFromStage) {
|
$flags = array();
|
||||||
if($this->ExistsOnLive) {
|
if($this->IsDeletedFromStage) {
|
||||||
$flags['removedfromdraft'] = array(
|
if($this->ExistsOnLive) {
|
||||||
'text' => _t('SiteTree.REMOVEDFROMDRAFTSHORT', 'Removed from draft'),
|
$flags['removedfromdraft'] = array(
|
||||||
'title' => _t('SiteTree.REMOVEDFROMDRAFTHELP', 'Page is published, but has been deleted from draft'),
|
'text' => _t('SiteTree.REMOVEDFROMDRAFTSHORT', 'Removed from draft'),
|
||||||
|
'title' => _t('SiteTree.REMOVEDFROMDRAFTHELP', 'Page is published, but has been deleted from draft'),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$flags['deletedonlive'] = array(
|
||||||
|
'text' => _t('SiteTree.DELETEDPAGESHORT', 'Deleted'),
|
||||||
|
'title' => _t('SiteTree.DELETEDPAGEHELP', 'Page is no longer published'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else if($this->IsAddedToStage) {
|
||||||
|
$flags['addedtodraft'] = array(
|
||||||
|
'text' => _t('SiteTree.ADDEDTODRAFTSHORT', 'Draft'),
|
||||||
|
'title' => _t('SiteTree.ADDEDTODRAFTHELP', "Page has not been published yet")
|
||||||
);
|
);
|
||||||
} else {
|
} else if($this->IsModifiedOnStage) {
|
||||||
$flags['deletedonlive'] = array(
|
$flags['modified'] = array(
|
||||||
'text' => _t('SiteTree.DELETEDPAGESHORT', 'Deleted'),
|
'text' => _t('SiteTree.MODIFIEDONDRAFTSHORT', 'Modified'),
|
||||||
'title' => _t('SiteTree.DELETEDPAGEHELP', 'Page is no longer published'),
|
'title' => _t('SiteTree.MODIFIEDONDRAFTHELP', 'Page has unpublished changes'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if($this->IsAddedToStage) {
|
|
||||||
$flags['addedtodraft'] = array(
|
|
||||||
'text' => _t('SiteTree.ADDEDTODRAFTSHORT', 'Draft'),
|
|
||||||
'title' => _t('SiteTree.ADDEDTODRAFTHELP', "Page has not been published yet")
|
|
||||||
);
|
|
||||||
} else if($this->IsModifiedOnStage) {
|
|
||||||
$flags['modified'] = array(
|
|
||||||
'text' => _t('SiteTree.MODIFIEDONDRAFTSHORT', 'Modified'),
|
|
||||||
'title' => _t('SiteTree.MODIFIEDONDRAFTHELP', 'Page has unpublished changes'),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->extend('updateStatusFlags', $flags);
|
$this->extend('updateStatusFlags', $flags);
|
||||||
|
|
||||||
|
$this->_cache_statusFlags = $flags;
|
||||||
|
}
|
||||||
|
|
||||||
return $flags;
|
return $this->_cache_statusFlags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -956,8 +956,8 @@ class SiteTreeTest_NotRoot extends Page implements TestOnly {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SiteTreeTest_StageStatusInherit extends SiteTree implements TestOnly {
|
class SiteTreeTest_StageStatusInherit extends SiteTree implements TestOnly {
|
||||||
function getStatusFlags(){
|
function getStatusFlags($cached = true){
|
||||||
$flags = parent::getStatusFlags();
|
$flags = parent::getStatusFlags($cached);
|
||||||
$flags['inherited-class'] = "InheritedTitle";
|
$flags['inherited-class'] = "InheritedTitle";
|
||||||
return $flags;
|
return $flags;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user