Skip to content

Commit

Permalink
changing static permissions to use Civi::
Browse files Browse the repository at this point in the history
  • Loading branch information
alifrumin committed Aug 6, 2018
1 parent 92f5ef6 commit 1580a51
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 13 deletions.
22 changes: 10 additions & 12 deletions CRM/Event/BAO/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -2064,9 +2064,7 @@ public static function checkRegistration($params) {
* 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',
Expand All @@ -2090,14 +2088,14 @@ public static function checkPermission($eventId = NULL, $type = CRM_Core_Permiss
// 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') &&
Expand All @@ -2108,25 +2106,25 @@ public static function checkPermission($eventId = NULL, $type = CRM_Core_Permiss
// 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'];
}

/**
Expand Down
3 changes: 2 additions & 1 deletion tests/phpunit/CRM/Event/BAO/EventPermissionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ public function setUp() {

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);
}

}

0 comments on commit 1580a51

Please sign in to comment.