folderaction.inc.php
3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
require_once(KT_LIB_DIR . '/actions/actionregistry.inc.php');
class KTFolderAction {
var $sName;
var $sDescription;
var $sDisplayName;
var $_sShowPermission;
var $_sDisablePermission;
var $_bDisabled;
var $_sDisabledText = null;
function KTFolderAction($oFolder, $oUser) {
$this->oFolder = $oFolder;
$this->oUser = $oUser;
}
function _show() {
if (is_null($this->_sShowPermission)) {
return true;
}
$oPermission =& KTPermission::getByName($this->_sShowPermission);
if (PEAR::isError($oPermission)) {
return true;
}
return KTPermissionUtil::userHasPermissionOnItem($this->oUser, $oPermission, $this->oFolder);
}
function _disable() {
if ($this->_bDisabled === true) {
return true;
}
if (is_null($this->_sDisablePermission)) {
return false;
}
$oPermission =& KTPermission::getByName($this->_sDisablePermission);
if (PEAR::isError($oPermission)) {
return false;
}
$bResult = KTPermissionUtil::userHasPermissionOnItem($this->oUser, $oPermission, $this->oFolder);
if ($bResult === false) {
$this->_sDisabledText = "Insufficient privileges";
}
return !$bResult;
}
function getURL() {
return sprintf("/plugin.php/%s?fFolderID=%d", $this->sName, $this->oFolder->getID());
}
function getInfo() {
if ($this->_show() === false) {
return null;
}
$aInfo = array(
'disabled' => $this->_disable(),
'description' => $this->sDescription,
'name' => $this->sDisplayName,
'url' => generateLink($this->getURL(), ""),
'disabled_text' => $this->_sDisabledText,
);
return $this->customiseInfo($aInfo);
}
function customiseInfo($aInfo) {
return $aInfo;
}
}
class KTFolderActionUtil {
function getFolderActions() {
$oRegistry =& KTActionRegistry::getSingleton();
return $oRegistry->getActions('folderaction');
}
function &getFolderActionsForFolder($oFolder, $oUser) {
$aObjects = array();
foreach (KTFolderActionUtil::getFolderActions() as $aAction) {
list($sClassName, $sPath) = $aAction;
if (!empty($sPath)) {
// require_once(KT_DIR .
// Or something...
}
$aObjects[] =& new $sClassName($oFolder, $oUser);
}
return $aObjects;
}
}
class KTBuiltInFolderAction extends KTFolderAction {
var $sBuildInAction;
function getURL() {
return sprintf("/control.php?action=%s&fFolderID=%d", $this->sBuiltInAction, $this->oFolder->getID());
}
}
class KTBuiltInFolderActionSingle extends KTBuiltInFolderAction {
function getURL() {
return sprintf("/control.php?action=%s&fFolderIDs[]=%d&fReturnFolderID=%d", $this->sBuiltInAction, $this->oFolder->getID(), $this->oFolder->getID());
}
}
?>