Source of file DefaultGroupsHelper.php
Size: 1,966 Bytes - Last Modified: 2021-12-23T10:51:56+00:00
/var/www/docs.ssmods.com/process/src/code/DefaultGroupsHelper.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?php /** * Default Groups Helper * * Read more here: * http://doc.silverstripe.org/framework/en/topics/access-control * http://doc.silverstripe.org/framework/en/reference/permission * http://doc.silverstripe.org/framework/en/reference/member * * * @author Anselm Christophersen <ac@anselm.dk> * @date July 2015 */ class DefaultGroupsHelper { /** * Check for default group, and if it doesn't exist, create it * Should be run under "requireDefaultRecords" * @param string $code * @param string $title * @param string $parent * @param array $permissions */ public static function default_group($code, $title, $parentCode = null, $permissions = array()) { $group = null; $action = null; if (!DataObject::get_one('Group', "Code = '" . $code . "'")) { $action = 'create'; $group = new Group(); } else { $action = 'update'; $group = DataObject::get_one('Group', "Code = '" . $code . "'"); } $group->Title = $title; $group->Code = $code; if ($parentCode) { $parentObj = DataObject::get_one("Group", "Code = '" . $parentCode . "'"); $group->ParentID = $parentObj->ID; } $group->write(); //TODO currently already granted permissions are not removed programatically if (!empty($permissions)) { foreach ($permissions as $p) { if (!$group->Permissions()->filter('Code', $p)->count() > 0) { Permission::grant($group->ID, $p); } } } if ($action == 'create') { DB::alteration_message('Group ' . $title . ' (' . $code . ') has been created.', "created"); } if ($action == 'update') { DB::alteration_message('Group ' . $title . ' (' . $code . ') has been updated.', "updated"); } return $group; } } |