/** * Create transitions from database. * * @param Workflow $workflow The current workflow. * * @throws DefinitionException If a target step is defined which does not exiss. * * @return void */ private function createTransitions(Workflow $workflow) { $collection = TransitionModel::findByWorkflow($workflow->getConfigValue('id')); if (!$collection) { return; } while ($collection->next()) { /** @var TransitionModel $model */ $model = $collection->current(); $transition = new Transition($model->name, $model->label, array_merge($collection->row(), array(Definition::SOURCE => Definition::SOURCE_DATABASE))); if (!isset($this->steps[$model->stepTo])) { throw new DefinitionException(sprintf('Transition "%s" refers to step "%s" which does not exists.', $transition->getName(), $model->stepTo)); } $transition->setStepTo($this->steps[$model->stepTo]); if ($model->limitPermission) { $transition->setPermission(Permission::fromString($model->permission)); } $workflow->addTransition($transition); $event = new CreateTransitionEvent($transition); $this->getServiceContainer()->getEventDispatcher()->dispatch($event::NAME, $event); $this->transitions[$model->id] = $transition; } }
/** * Create frontend member role. * * @param User $user The security user. * @param \User $contaoUser The contao user. * * @return void */ private function createFrontendMemberRole(User $user, \User $contaoUser) { $roleName = 'fe_member'; $roles = array(); $permissions = $this->getMemberPermissions($contaoUser); foreach ($permissions as $permissionName) { $permission = Permission::fromString($permissionName); $this->addPermissionToRole($roles, $roleName, $permission, $contaoUser, $user); } if (FE_USER_LOGGED_IN !== true) { $workflows = WorkflowModel::findAll(); if ($workflows->next()) { $permission = Permission::forWorkflowName($workflows->name, 'contao-guest'); $this->addPermissionToRole($roles, $roleName, $permission, $contaoUser, $user); } } }