/** * Add action method * * @return void */ public function add() { $this->prepareView('members/admin/add.phtml'); $this->view->title = 'Members Admin : Add'; $fields = $this->application->config()['forms']['Phire\\Members\\Form\\MembersAdmin']; $roles = \Phire\Table\Roles::findAll(); foreach ($roles->rows() as $role) { $dupe = Table\Members::findBy(['role_id' => $role->id]); if (!isset($dupe->id)) { $fields[0]['role_id']['value'][$role->id] = $role->name; } } $fields[1]['name']['attributes']['onkeyup'] = "phire.createSlug('/' + this.value, '#uri');"; $this->view->form = new Form\MembersAdmin($fields); if ($this->request->isPost()) { $this->view->form->addFilter('htmlentities', [ENT_QUOTES, 'UTF-8'])->setFieldValues($this->request->getPost()); if ($this->view->form->isValid()) { $this->view->form->clearFilters()->addFilter('html_entity_decode', [ENT_QUOTES, 'UTF-8'])->filter(); $member = new Model\MembersAdmin(); $member->save($this->view->form->getFields()); $this->view->id = $member->id; $this->sess->setRequestValue('saved', true); $this->redirect(BASE_PATH . APP_URI . '/members/edit/' . $member->id); } } $this->send(); }
/** * Bootstrap the module * * @param Application $application * @return void */ public static function bootstrap(Application $application) { $path = BASE_PATH . APP_URI; if ($path == '') { $path = '/'; } $cookie = Cookie::getInstance(['path' => $path]); if (isset($cookie->phire)) { $phire = (array) $cookie->phire; if (!isset($phire['fields_media_library'])) { $phire['fields_media_library'] = $application->module('phire-fields')->config()['media_library']; } $cookie->set('phire', $phire); } $modules = $application->modules(); $roles = \Phire\Table\Roles::findAll(); foreach ($roles->rows() as $role) { if (isset($modules['phire-fields']) && isset($modules['phire-fields']->config()['models']) && isset($modules['phire-fields']->config()['models']['Phire\\Model\\User']) && isset($modules['phire-fields']->config()['models']['Phire\\Model\\Role'])) { $models = $modules['phire-fields']->config()['models']; $models['Phire\\Model\\User'][] = ['type_field' => 'role_id', 'type_value' => $role->id, 'type_name' => $role->name]; $models['Phire\\Model\\Role'][] = ['type_field' => 'id', 'type_value' => $role->id, 'type_name' => $role->name]; $application->module('phire-fields')->mergeConfig(['models' => $models]); } } foreach ($modules as $module => $config) { if ($module != 'phire-fields' && isset($config['models'])) { $application->module('phire-fields')->mergeConfig(['models' => $config['models']]); } } }
/** * Constructor * * Instantiate the form object * * @param int $id * @param array $fields * @param string $action * @param string $method * @return SessionConfig */ public function __construct($id = null, array $fields, $action = null, $method = 'post') { $configs = \Phire\Sessions\Table\UserSessionConfig::findAll(); $configsAry = []; foreach ($configs->rows() as $config) { $configsAry[] = $config->role_id; } $roles = Table\Roles::findAll(); $roleValues = ['----' => '----']; foreach ($roles->rows() as $role) { if (!in_array($role->id, $configsAry) || $id == $role->id) { $roleValues[$role->id] = $role->name; } } $fields[0]['role_id']['value'] = $roleValues; parent::__construct($fields, $action, $method); $this->setAttribute('id', 'session-form'); $this->setIndent(' '); }
/** * Determine if roles are available to create configs for * * @return int */ public function rolesAvailable() { return Table\UserSessionConfig::findAll()->count() < \Phire\Table\Roles::findAll()->count(); }
/** * Get all user roles * * @return array */ public function getRoles() { $roles = Table\Roles::findAll()->rows(); $rolesAry = []; foreach ($roles as $role) { $rolesAry[$role->id] = $role->name; } $rolesAry[0] = '[Blocked]'; return $rolesAry; }
/** * Get count of user roles * * @return int */ public function getCount() { return Table\Roles::findAll()->count(); }
/** * Initialize the ACL service * * @return Module */ public function initAcl() { $roles = Table\Roles::findAll()->rows(); $resources = $this->application->config()['resources']; foreach ($roles as $role) { $roleName = str_replace(' ', '-', strtolower($role->name)); $resources['role-' . $role->id . '|role-' . $roleName] = ['edit', 'remove']; $resources['users-of-role-' . $role->id . '|users-of-role-' . $roleName] = ['index', 'add', 'edit', 'remove']; } $this->application->mergeConfig(['resources' => $resources]); foreach ($this->application->config()['resources'] as $resource => $permissions) { if (strpos($resource, '|') !== false) { $resource = substr($resource, 0, strpos($resource, '|')); } $this->application->getService('acl')->addResource(new Resource($resource)); } $allRoles = []; foreach ($roles as $role) { $r = new Role($role->name); $allRoles[$role->id] = $r; $this->application->getService('acl')->addRole($r); if (null !== $role->permissions) { $role->permissions = unserialize($role->permissions); } if (null === $role->permissions || is_array($role->permissions) && count($role->permissions) == 0) { $this->application->getService('acl')->allow($role->name); } else { if (count($role->permissions['allow']) > 0) { foreach ($role->permissions['allow'] as $allow) { $this->application->getService('acl')->allow($role->name, $allow['resource'], $allow['permission']); } } else { $this->application->getService('acl')->allow($role->name); } if (count($role->permissions['deny']) > 0) { foreach ($role->permissions['deny'] as $deny) { $this->application->getService('acl')->deny($role->name, $deny['resource'], $deny['permission']); } } } } // Set up parent/child roles foreach ($allRoles as $id => $child) { $r = \Phire\Table\Roles::findById($id); if (isset($r->id) && null !== $r->parent_id && isset($allRoles[$r->parent_id])) { $child->setParent($allRoles[$r->parent_id]); } } // Set the acl in the main nav object $this->application->getService('nav.phire')->setAcl($this->application->getService('acl')); return $this; }