public static function build_permission_groups($group_id) { //Get the modules with permissions \ //if module does not have a permission set for this group //get it from module // module needs to have rules and descriptions $modules = \Modules\Model\Module::with(array('permissions' => function ($query) use($group_id) { $query->where('group_id', '=', $group_id); }))->where('enabled', '=', 1)->get(array('id', 'slug', 'roles', 'name')); // Build permission groups for our view $permissions_groups = array(); foreach ($modules as $module) { //root array $permissions_groups[$module->id]['slug'] = $module->slug; $permissions_groups[$module->id]['name'] = $module->name; if (isset($module->permissions) and !empty($module->permissions)) { //\firephp::getinstance(true)->warn('from permisions'); foreach ($module->permissions as $permission) { $roles = json_decode($permission->roles); if (isset($roles) and !empty($roles)) { foreach ($roles as $role) { $checked = $role->value == 1 ? 'checked="checked"' : ''; $permissions_groups[$module->id]['roles'][] = array('name' => $role->name, 'description' => isset($role->description) ?: 'No description provided for this role.', 'slug' => $role->slug, 'value' => $role->value, 'checked' => $checked); } } else { //failed to decode json $permissions_groups[$module->id]['roles'] = array(); } } } else { if (isset($module->roles) and !empty($module->roles)) { $roles = json_decode($module->roles); if (isset($roles) and !empty($roles)) { foreach ($roles as $role) { $checked = $role->value == 1 ? 'checked="checked"' : ''; $permissions_groups[$module->id]['roles'][] = array('name' => $role->name, 'description' => isset($role->description) ?: 'No description provided for this role.', 'slug' => $role->slug, 'value' => $role->value, 'checked' => $checked); } } else { //failed to decode json $permissions_groups[$module->id]['roles'] = array(); } } } } return $permissions_groups; }