Source of file RestrictedGroupExtension.php
Size: 1,477 Bytes - Last Modified: 2021-12-23T10:34:03+00:00
/var/www/docs.ssmods.com/process/src/code/extensions/RestrictedGroupExtension.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | <?php /** * Extension to enable the overriding of the grid field delete-relation * action so that user removal from a group will trigger a permission * purge * * @author marcus */ class RestrictedGroupExtension extends DataExtension { public function updateCMSFields(FieldList $fields) { $grid = $fields->dataFieldByName('Members'); if ($grid) { $grid->getConfig()->removeComponentsByType('GridFieldDeleteAction'); $grid->getConfig()->addComponent(new MemberGroupDeleteAction(true)); } } public function onBeforeWrite() { // if we're moving groups around, we need to just get rid of all cached stuff, as // it's too expensive to try and figure out what is what. if ($this->owner->ID && $this->owner->isChanged('ParentID')) { singleton('PermissionService')->purgePermissionCache(); } } } class MemberGroupDeleteAction extends GridFieldDeleteAction { public function handleAction(\GridField $gridField, $actionName, $arguments, $data) { $item = $gridField->getList()->byID($arguments['RecordID']); if (!$item) { return; } parent::handleAction($gridField, $actionName, $arguments, $data); $item->extend('onUnlinkFromGroup', $gridField); $group = $gridField->getForm()->getRecord(); if ($group) { $group->updateGroupCache(); } } } |