BUGFIX Wrong usage of Member::currentUser() in SiteTree->canEdit()

ENHANCEMENT Allowing to explicitly check SiteTree->can*() actions for a non-existing member without triggering Member::currentUser() fallback for better testability

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@66672 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2008-11-25 22:23:47 +00:00
parent 501cd2b70d
commit 47a67a5a4e

View File

@ -616,10 +616,9 @@ class SiteTree extends DataObject {
} }
// check for any logged-in users // check for any logged-in users
if( if($this->CanViewType == 'LoggedInUsers' && $member) {
$this->CanViewType == 'LoggedInUsers' return true;
&& Member::currentUser() }
) return true;
// check for specific groups // check for specific groups
if( if(
@ -691,7 +690,7 @@ class SiteTree extends DataObject {
* @return boolean True if the current user can create pages on this class. * @return boolean True if the current user can create pages on this class.
*/ */
public function canCreate($member = null) { public function canCreate($member = null) {
if(!isset($member)) $member = Member::currentUser(); if(!$member && $member !== FALSE) $member = Member::currentUser();
if(Permission::checkMember($member, "ADMIN")) return true; if(Permission::checkMember($member, "ADMIN")) return true;
@ -723,11 +722,11 @@ class SiteTree extends DataObject {
* @uses EditorGroups() * @uses EditorGroups()
* @uses DataObjectDecorator->canEdit() * @uses DataObjectDecorator->canEdit()
* *
* @param Member $member * @param Member $member Set to FALSE if you want to explicitly test permissions without a valid user (useful for unit tests)
* @return boolean True if the current user can edit this page. * @return boolean True if the current user can edit this page.
*/ */
public function canEdit($member = null) { public function canEdit($member = null) {
if(!$member) $member = Member::currentUser(); if(!$member && $member !== FALSE) $member = Member::currentUser();
if(Permission::checkMember($member, "ADMIN")) return true; if(Permission::checkMember($member, "ADMIN")) return true;
@ -775,7 +774,7 @@ class SiteTree extends DataObject {
* @return boolean True if the current user can publish this page. * @return boolean True if the current user can publish this page.
*/ */
public function canPublish($member = null) { public function canPublish($member = null) {
if(!$member) $member = Member::currentUser(); if(!$member && $member !== FALSE) $member = Member::currentUser();
if(Permission::checkMember($member, "ADMIN")) return true; if(Permission::checkMember($member, "ADMIN")) return true;