Page MenuHomeIn-Portal Phabricator

D222.id522.diff
No OneTemporary

File Metadata

Created
Sat, Apr 19, 11:53 AM

D222.id522.diff

Index: core/kernel/db/cat_event_handler.php
===================================================================
--- core/kernel/db/cat_event_handler.php
+++ core/kernel/db/cat_event_handler.php
@@ -117,15 +117,15 @@
}
if ( !$ids ) {
- // no items left for editing -> no permission
- return $perm_helper->finalizePermissionCheck($event, false);
+ // No items left for editing -> no permission.
+ return false;
}
$perm_value = true;
$event->setEventParam('ids', $ids); // will be used later by "kDBEventHandler::StoreSelectedIDs" method
}
- return $perm_helper->finalizePermissionCheck($event, $perm_value);
+ return $perm_value;
}
$export_events = Array ('OnSaveSettings', 'OnResetSettings', 'OnExportBegin');
@@ -259,13 +259,13 @@
*/
function _checkPastePermission($event)
{
+ /** @var kPermissionsHelper $perm_helper */
$perm_helper = $this->Application->recallObject('PermissionsHelper');
- /* @var $perm_helper kPermissionsHelper */
-
$category_id = $this->Application->GetVar('m_cat_id');
- if ($perm_helper->AddCheckPermission($category_id, $event->Prefix) == 0) {
- // no items left for editing -> no permission
- return $perm_helper->finalizePermissionCheck($event, false);
+
+ if ( $perm_helper->AddCheckPermission($category_id, $event->Prefix) == 0 ) {
+ // No items left for editing -> no permission.
+ return false;
}
return true;
Index: core/kernel/managers/request_manager.php
===================================================================
--- core/kernel/managers/request_manager.php
+++ core/kernel/managers/request_manager.php
@@ -146,14 +146,23 @@
$event->SetRedirectParam('opener', 's'); // stay on same page after event is called
$event->setEventParam('top_prefix', $this->Application->GetTopmostPrefix($event->Prefix, true));
+ $has_permission = $this->Application->RecallVar('user_id') == USER_ROOT;
- $event_handler = $this->Application->recallObject($event->Prefix . '_EventHandler');
- /* @var $event_handler kEventHandler */
+ if ( !$has_permission ) {
+ /** @var kEventHandler $event_handler */
+ $event_handler = $this->Application->recallObject($event->Prefix . '_EventHandler');
+ $has_permission = $event_handler->CheckPermission($event);
+ }
- if ( ($this->Application->RecallVar('user_id') == USER_ROOT) || $event_handler->CheckPermission($event) ) {
+ if ( $has_permission ) {
$this->Application->HandleEvent($event);
$this->Application->notifyEventSubscribers($event);
}
+ else {
+ /** @var kPermissionsHelper $perm_helper */
+ $perm_helper = $this->Application->recallObject('PermissionsHelper');
+ $perm_helper->finalizePermissionCheck($event, false);
+ }
return $event;
}
@@ -475,4 +484,4 @@
$opener_stack->push($template, $params, $index_file);
$opener_stack->save();
}
-}
\ No newline at end of file
+}
Index: core/units/categories/categories_event_handler.php
===================================================================
--- core/units/categories/categories_event_handler.php
+++ core/units/categories/categories_event_handler.php
@@ -68,14 +68,8 @@
public function CheckPermission(kEvent $event)
{
if ( $event->Name == 'OnResetCMSMenuCache' ) {
- // events from "Tools -> System Tools" section are controlled via that section "edit" permission
-
- $perm_helper = $this->Application->recallObject('PermissionsHelper');
- /* @var $perm_helper kPermissionsHelper */
-
- $perm_value = $this->Application->CheckPermission('in-portal:service.edit');
-
- return $perm_helper->finalizePermissionCheck($event, $perm_value);
+ // Events from "Tools -> System Tools" section are controlled via that section "edit" permission.
+ return $this->Application->CheckPermission('in-portal:service.edit');
}
if ( !$this->Application->isAdmin ) {
@@ -113,15 +107,15 @@
}
if ( !$ids ) {
- // no items left for editing -> no permission
- return $perm_helper->finalizePermissionCheck($event, false);
+ // No items left for editing -> no permission.
+ return false;
}
$perm_value = true;
$event->setEventParam('ids', $ids); // will be used later by "kDBEventHandler::StoreSelectedIDs" method
}
- return $perm_helper->finalizePermissionCheck($event, $perm_value);
+ return $perm_value;
}
if ( $event->Name == 'OnRecalculatePriorities' ) {
@@ -1188,13 +1182,13 @@
*/
function _checkPastePermission($event)
{
+ /** @var kPermissionsHelper $perm_helper */
$perm_helper = $this->Application->recallObject('PermissionsHelper');
- /* @var $perm_helper kPermissionsHelper */
-
$category_id = $this->Application->GetVar('m_cat_id');
- if ($perm_helper->AddCheckPermission($category_id, $event->Prefix) == 0) {
- // no items left for editing -> no permission
- return $perm_helper->finalizePermissionCheck($event, false);
+
+ if ( $perm_helper->AddCheckPermission($category_id, $event->Prefix) == 0 ) {
+ // No items left for editing -> no permission.
+ return false;
}
return true;
Index: core/units/content/content_eh.php
===================================================================
--- core/units/content/content_eh.php
+++ core/units/content/content_eh.php
@@ -32,9 +32,8 @@
// user can change top category
$top_category = $this->Application->getBaseCategory();
- $perm_status = $perm_helper->CheckUserPermission($user_id, 'CATEGORY.MODIFY', 0, $top_category);
- return $perm_helper->finalizePermissionCheck($event, $perm_status);
+ return $perm_helper->CheckUserPermission($user_id, 'CATEGORY.MODIFY', 0, $top_category);
}
/**
Index: core/units/helpers/permissions_helper.php
===================================================================
--- core/units/helpers/permissions_helper.php
+++ core/units/helpers/permissions_helper.php
@@ -129,12 +129,12 @@
// how to get id here
}
- if ($perm_status) {
+ if ( $perm_status ) {
return $perm_status;
}
}
- return $this->finalizePermissionCheck($event, $perm_status);
+ return $perm_status;
}
/**
@@ -238,7 +238,7 @@
}
if ( isset($check_status) ) {
- return $this->finalizePermissionCheck($event, $check_status);
+ return $check_status;
}
// specific permission check for pending & owner permissions: end
@@ -276,7 +276,7 @@
}
}
- return $this->finalizePermissionCheck($event, $perm_status);
+ return $perm_status;
}
/**
@@ -395,7 +395,7 @@
$perm_status = $perm_status && $this->Application->IsTempMode($event->Prefix, $event->Special);
}
- return $this->finalizePermissionCheck($event, $perm_status);
+ return $perm_status;
}
function TagPermissionCheck($params, $is_owner = false)
@@ -844,4 +844,4 @@
return 0;
}
- }
\ No newline at end of file
+ }
Index: core/units/page_revisions/page_revision_eh.php
===================================================================
--- core/units/page_revisions/page_revision_eh.php
+++ core/units/page_revisions/page_revision_eh.php
@@ -33,19 +33,13 @@
return $this->Application->isAdminUser;
}
- $perm_helper = $this->Application->recallObject('PermissionsHelper');
- /* @var $perm_helper kPermissionsHelper */
-
if ( $event->Name == 'OnSave' ) {
- $perm_status = $this->Application->CheckPermission('CATEGORY.REVISION.ADD', 0) || $this->Application->CheckPermission('CATEGORY.REVISION.ADD.PENDING', 0);
-
- return $perm_helper->finalizePermissionCheck($event, $perm_status);
+ return $this->Application->CheckPermission('CATEGORY.REVISION.ADD', 0)
+ || $this->Application->CheckPermission('CATEGORY.REVISION.ADD.PENDING', 0);
}
if ( $event->Name == 'OnPublish' || $event->Name == 'OnDecline' ) {
- $perm_status = $this->Application->CheckPermission('CATEGORY.REVISION.MODERATE', 0);
-
- return $perm_helper->finalizePermissionCheck($event, $perm_status);
+ return $this->Application->CheckPermission('CATEGORY.REVISION.MODERATE', 0);
}
return parent::CheckPermission($event);

Event Timeline