From 1486cdc83837916361d04a7727f56a02cc390e42 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Wed, 12 Jul 2006 13:16:03 +0000 Subject: [PATCH] Allow document actions to declare whether they are mutators (ie, they change an aspect of the document), and whether changes should be available to users in admin mode even if the document is immutable. --- lib/actions/documentaction.inc.php | 17 +++++++++++++++-- plugins/ktcore/KTDocumentActions.php | 7 +++++++ plugins/ktcore/document/Rename.php | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/actions/documentaction.inc.php b/lib/actions/documentaction.inc.php index e587ad8..6ece23d 100644 --- a/lib/actions/documentaction.inc.php +++ b/lib/actions/documentaction.inc.php @@ -42,6 +42,9 @@ class KTDocumentAction extends KTStandardDispatcher { var $sSection = "view_details"; + var $_bMutator = false; + var $_bMutationAllowedByAdmin = true; + function KTDocumentAction($oDocument = null, $oUser = null, $oPlugin = null) { $this->oDocument =& $oDocument; $this->oUser =& $oUser; @@ -64,7 +67,18 @@ class KTDocumentAction extends KTStandardDispatcher { function _show() { if (is_null($this->_sShowPermission)) { return true; - } + } + $oFolder = Folder::get($this->oDocument->getFolderId()); + + if ($this->_bMutator && $this->oDocument->getImmutable()) { + if ($this->_bMutationAllowedByAdmin === true) { + if (!KTBrowseUtil::inAdminMode($this->oUser, $oFolder)) { + return false; + } + } else { + return false; + } + } if ($this->_bAdminAlwaysAvailable) { if (Permission::userIsSystemAdministrator($this->oUser->getId())) { @@ -86,7 +100,6 @@ class KTDocumentAction extends KTStandardDispatcher { if (($status == DELETED) || ($status == ARCHIVED)) { return false; } if ($this->bAllowInAdminMode) { // check if this user is in admin mode - $oFolder = Folder::get($this->oDocument->getFolderId()); if (KTBrowseUtil::inAdminMode($this->oUser, $oFolder)) { return true; } diff --git a/plugins/ktcore/KTDocumentActions.php b/plugins/ktcore/KTDocumentActions.php index 69e5d94..1b91696 100644 --- a/plugins/ktcore/KTDocumentActions.php +++ b/plugins/ktcore/KTDocumentActions.php @@ -96,6 +96,9 @@ class KTDocumentCheckOutAction extends KTDocumentAction { var $_sShowPermission = "ktcore.permissions.write"; + var $_bMutator = true; + var $_bMutationAllowedByAdmin = false; + function getDisplayName() { return _kt('Checkout'); } @@ -381,6 +384,7 @@ class KTDocumentEditAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.edit'; var $_sShowPermission = "ktcore.permissions.write"; + var $_bMutator = true; function getInfo() { if ($this->oDocument->getIsCheckedOut()) { @@ -404,6 +408,7 @@ class KTDocumentDeleteAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.delete'; var $_sShowPermission = "ktcore.permissions.delete"; + var $_bMutator = true; function getDisplayName() { return _kt('Delete'); @@ -480,6 +485,7 @@ class KTDocumentMoveAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.move'; var $_sShowPermission = "ktcore.permissions.write"; + var $_bMutator = true; function getDisplayName() { return _kt('Move'); @@ -867,6 +873,7 @@ class KTDocumentVersionHistoryAction extends KTDocumentAction { class KTDocumentArchiveAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.archive'; var $_sShowPermission = "ktcore.permissions.write"; + var $_bMutator = true; function getDisplayName() { return _kt('Archive'); diff --git a/plugins/ktcore/document/Rename.php b/plugins/ktcore/document/Rename.php index 9a45e5f..60c4d05 100644 --- a/plugins/ktcore/document/Rename.php +++ b/plugins/ktcore/document/Rename.php @@ -42,6 +42,7 @@ class KTDocumentRenameAction extends KTDocumentAction { var $sName = 'ktcore.actions.document.rename'; var $_sShowPermission = "ktcore.permissions.write"; + var $_bMutator = true; function getDisplayName() { return _kt('Rename'); -- libgit2 0.21.4