From 1580a51eee0137ce006b597816a1db69ca73b342 Mon Sep 17 00:00:00 2001 From: Alice Frumin Date: Mon, 6 Aug 2018 14:28:27 -0400 Subject: [PATCH] changing static permissions to use Civi:: --- CRM/Event/BAO/Event.php | 22 +++++++++---------- .../CRM/Event/BAO/EventPermissionsTest.php | 3 ++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/CRM/Event/BAO/Event.php b/CRM/Event/BAO/Event.php index 5d23c7cebc..abf9a6bd1f 100644 --- a/CRM/Event/BAO/Event.php +++ b/CRM/Event/BAO/Event.php @@ -2064,9 +2064,7 @@ WHERE ce.loc_block_id = $locBlockId"; * the permission that the user has (or null) */ public static function checkPermission($eventId = NULL, $type = CRM_Core_Permission::VIEW) { - static $permissions = NULL; - - if (empty($permissions)) { + if (!isset(Civi::$statics[__CLASS__]['permissions'])) { $params = array( 'check_permissions' => 1, 'return' => 'title', @@ -2090,14 +2088,14 @@ WHERE ce.loc_block_id = $locBlockId"; // Note: for a multisite setup, a user with edit all events, can edit all events // including those from other sites if (CRM_Core_Permission::check('edit all events')) { - $permissions[CRM_Core_Permission::EDIT] = array_keys($allEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT] = array_keys($allEvents); } else { - $permissions[CRM_Core_Permission::EDIT] = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_event', $allEvents, $createdEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT] = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_event', $allEvents, $createdEvents); } if (CRM_Core_Permission::check('edit all events')) { - $permissions[CRM_Core_Permission::VIEW] = array_keys($allEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] = array_keys($allEvents); } else { if (CRM_Core_Permission::check('access CiviEvent') && @@ -2108,25 +2106,25 @@ WHERE ce.loc_block_id = $locBlockId"; // at the same time also allow any hook to override if needed. $createdEvents = array_keys($allEvents); } - $permissions[CRM_Core_Permission::VIEW] = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, $createdEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, $createdEvents); } - $permissions[CRM_Core_Permission::DELETE] = array(); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::DELETE] = array(); if (CRM_Core_Permission::check('delete in CiviEvent')) { // Note: we want to restrict the scope of delete permission to // events that are editable/viewable (usecase multisite). // We can remove array_intersect once we have ACL support for delete functionality. - $permissions[CRM_Core_Permission::DELETE] = array_intersect($permissions[CRM_Core_Permission::EDIT], - $permissions[CRM_Core_Permission::VIEW] + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::DELETE] = array_intersect(Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT], + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] ); } } if ($eventId) { - return in_array($eventId, $permissions[$type]) ? TRUE : FALSE; + return in_array($eventId, Civi::$statics[__CLASS__]['permissions'][$type]) ? TRUE : FALSE; } - return $permissions; + return Civi::$statics[__CLASS__]['permissions']; } /** diff --git a/tests/phpunit/CRM/Event/BAO/EventPermissionsTest.php b/tests/phpunit/CRM/Event/BAO/EventPermissionsTest.php index 93c43d91af..84828e16dd 100644 --- a/tests/phpunit/CRM/Event/BAO/EventPermissionsTest.php +++ b/tests/phpunit/CRM/Event/BAO/EventPermissionsTest.php @@ -42,8 +42,9 @@ class CRM_Event_BAO_EventPermissionsTest extends CiviUnitTestCase { public function testEditOwnEvent() { CRM_Core_Config::singleton()->userPermissionTemp = ['access civievent', 'access CiviCRM', 'view event info']; + unset(\Civi::$statics['CRM_Event_BAO_Event']['permissions']); $permissions = CRM_Event_BAO_Event::checkPermission($this->_eventId, CRM_Core_Permission::EDIT); - $this->assertEquals($permissions, TRUE); + $this->assertTrue($permissions); } } -- 2.25.1