/** * @return AdminGrid */ protected function createComponentTable() { $_this = $this; $admin = new AdminGrid($this->repository); // columns $table = $admin->getTable(); $table->setModel(new Doctrine($this->repository->createQueryBuilder('a')->addSelect('r')->innerJoin('a.route', 'r')->andWhere('a.extendedPage = :page')->setParameter('page', $this->extendedPage->id), array('name' => 'r.name', 'created' => 'r.created'))); $table->setDefaultSort(array('created' => 'DESC')); $table->addColumnText('name', 'Name')->setCustomRender(function ($entity) { return $entity->route->name; })->setSortable()->getCellPrototype()->width = '70%'; $table->getColumn('name')->setFilterText()->setSuggestion(); $table->addColumnDate('created', 'Created')->setCustomRender(function ($entity) { return $entity->route->created->format('Y-m-d H:i:s'); })->setSortable()->getCellPrototype()->width = '30%'; // actions $table->addAction('publish', 'Published')->setCustomRender(function ($entity, $element) { if ((bool) $entity->route->published) { $element->class[] = 'btn-primary'; } return $element; })->setCustomHref(function ($entity) use($_this) { return $_this->link('publish!', array($entity->id)); })->getElementPrototype()->class[] = 'ajax'; $table->addAction('preview', 'Preview')->setCustomHref(function ($entity) use($_this) { return $_this->link('preview!', array($entity->id)); }); $table->addAction('edit', 'Edit')->getElementPrototype()->class[] = 'ajax'; return $admin; }
public function getRawQueryBuilder($select = 'a') { $dql = $this->repository->createQueryBuilder($select); if ($this->dqlCallback) { $fn = $this->dqlCallback; $fn($dql); } if (count($this->filters) > 0) { foreach ($this->filters as $key => $value) { $dql = $this->columns[$key]->getFilter()->setDql($dql, $value); } } return $dql; }
/** * @return Grid */ protected function createComponentTable() { if ($this->tableFactory) { $grid = Callback::create($this->tableFactory)->invoke(); } else { $grid = new Grid(); $grid->addAction('_groupstart', 'Group start')->setCustomRender(function () { return '<div class="btn-group">'; }); if ($this->repository) { $grid->setModel(new Doctrine($this->repository->createQueryBuilder('a'))); } } return $grid; }
public function authenticate(array $credentials) { if ($this->checkConnection->invoke()) { $data = $this->getData(); try { /** @var $user \CmsModule\Pages\Users\UserEntity */ $user = $this->userRepository->createQueryBuilder('a')->join('a.socialLogins', 's')->where('s.type = :type AND s.uniqueKey = :key')->setParameter('type', $this->getType())->setParameter('key', $data['id'])->getQuery()->getSingleResult(); } catch (\Doctrine\ORM\NoResultException $e) { } if (!isset($user) || !$user) { throw new AuthenticationException($this->translator->translate('User does not exist.'), self::INVALID_CREDENTIAL); } return new Identity($user->email, $user->getRoles()); } }