Open Monograph Press  3.3.0
SettingsPluginGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.plugins.PluginGridHandler');
17 
22  function __construct() {
23  $roles = array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER);
24  $this->addRoleAssignment($roles, array('manage'));
25  parent::__construct($roles);
26  }
27 
28 
29  //
30  // Extended methods from PluginGridHandler
31  //
35  function loadCategoryData($request, &$categoryDataElement, $filter = null) {
36  $plugins = parent::loadCategoryData($request, $categoryDataElement, $filter);
37 
38  $pressDao = DAORegistry::getDAO('PressDAO'); /* @var $pressDao PressDAO */
39  $presses = $pressDao->getAll();
40  $singlePress = false;
41  if ($presses->getCount() == 1) {
42  $singlePress = true;
43  }
44 
45  $userRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
46 
47  $showSitePlugins = false;
48  if ($singlePress && in_array(ROLE_ID_SITE_ADMIN, $userRoles)) {
49  $showSitePlugins = true;
50  }
51 
52  if ($showSitePlugins) {
53  return $plugins;
54  } else {
55  $contextLevelPlugins = array();
56  foreach ($plugins as $plugin) {
57  if (!$plugin->isSitePlugin()) {
58  $contextLevelPlugins[$plugin->getName()] = $plugin;
59  }
60  unset($plugin);
61  }
62  return $contextLevelPlugins;
63  }
64  }
65 
66  //
67  // Overriden template methods.
68  //
72  function getRowInstance() {
73  import('lib.pkp.controllers.grid.plugins.PluginGridRow');
74  return new PluginGridRow($this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES));
75  }
76 
80  function authorize($request, &$args, $roleAssignments) {
81  $categoryName = $request->getUserVar('category');
82  $pluginName = $request->getUserVar('plugin');
83 
84  if ($categoryName && $pluginName) {
85  import('lib.pkp.classes.security.authorization.PluginAccessPolicy');
86  switch ($request->getRequestedOp()) {
87  case 'enable':
88  case 'disable':
89  case 'manage':
90  $accessMode = ACCESS_MODE_MANAGE;
91  break;
92  default:
93  $accessMode = ACCESS_MODE_ADMIN;
94  break;
95  }
96  $this->addPolicy(new PluginAccessPolicy($request, $args, $roleAssignments, $accessMode));
97  } else {
98  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
99  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
100  }
101  return parent::authorize($request, $args, $roleAssignments);
102  }
103 }
104 
105 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
SettingsPluginGridHandler\loadCategoryData
loadCategoryData($request, &$categoryDataElement, $filter=null)
Definition: SettingsPluginGridHandler.inc.php:35
ContextAccessPolicy
Class to control access to PKP applications' setup components.
Definition: ContextAccessPolicy.inc.php:17
PluginGridHandler
Handle plugins grid requests.
Definition: PluginGridHandler.inc.php:20
SettingsPluginGridHandler\__construct
__construct()
Definition: SettingsPluginGridHandler.inc.php:22
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PluginGridRow
Plugin grid row definition.
Definition: PluginGridRow.inc.php:18
PluginAccessPolicy
Class to control access to plugins.
Definition: PluginAccessPolicy.inc.php:23
SettingsPluginGridHandler
Handle plugin grid requests.
Definition: SettingsPluginGridHandler.inc.php:18
SettingsPluginGridHandler\getRowInstance
getRowInstance()
Definition: SettingsPluginGridHandler.inc.php:72
SettingsPluginGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SettingsPluginGridHandler.inc.php:80
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157