Open Journal Systems  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  $userRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
38 
39  $showSitePlugins = false;
40  if (in_array(ROLE_ID_SITE_ADMIN, $userRoles)) {
41  $showSitePlugins = true;
42  }
43 
44  if ($showSitePlugins) {
45  return $plugins;
46  } else {
47  $contextLevelPlugins = array();
48  foreach ($plugins as $plugin) {
49  if (!$plugin->isSitePlugin()) {
50  $contextLevelPlugins[$plugin->getName()] = $plugin;
51  }
52  unset($plugin);
53  }
54  return $contextLevelPlugins;
55  }
56  }
57 
58  //
59  // Overridden template methods.
60  //
64  protected function getRowInstance() {
65  import('lib.pkp.controllers.grid.plugins.PluginGridRow');
66  return new PluginGridRow($this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES));
67  }
68 
72  function authorize($request, &$args, $roleAssignments) {
73  $categoryName = $request->getUserVar('category');
74  $pluginName = $request->getUserVar('plugin');
75  if ($categoryName && $pluginName) {
76  import('lib.pkp.classes.security.authorization.PluginAccessPolicy');
77  switch ($request->getRequestedOp()) {
78  case 'enable':
79  case 'disable':
80  case 'manage':
81  $accessMode = ACCESS_MODE_MANAGE;
82  break;
83  default:
84  $accessMode = ACCESS_MODE_ADMIN;
85  break;
86  }
87  $this->addPolicy(new PluginAccessPolicy($request, $args, $roleAssignments, $accessMode));
88  } else {
89  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
90  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
91  }
92  return parent::authorize($request, $args, $roleAssignments);
93  }
94 }
95 
96 
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
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:64
SettingsPluginGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SettingsPluginGridHandler.inc.php:72
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157