Esempio n. 1
0
 protected function doCreateQuery(Kdyby\Persistence\Queryable $repository)
 {
     $qb = $repository->createQueryBuilder()->select('a, b, c, d')->from(Model\CMS\Entity\Article::getClassName(), 'a')->leftJoin('a.category', 'b')->leftJoin('a.tags', 'c')->leftJoin('a.authors', 'd');
     $this->applyFilters($qb);
     $qb->addOrderBy('a.createdAt', 'DESC');
     $query = $qb->getQuery()->useResultCache(TRUE, NULL, Model\CMS\Service\ArticleService::CACHE_TAG);
     return $query;
 }
Esempio n. 2
0
 public function formSuccess(Form $form, $values)
 {
     if ($form->submitted === $form['footer-saveArticle']) {
         // Fill entity
         $this->binder->formToEntity($form['main'], $this->article);
         $this->binder->formToEntity($form['pic'], $this->article);
         $this->binder->formToEntity($form['sidebar'], $this->article);
         $this->binder->formToEntity($form['options'], $this->article);
         // Save image config
         $conf = $this->article->imageConfig;
         $formConf = $values->picConfig;
         $this->article->setImageConfig(['visible' => Arrays::cblToBool($conf['visible'], $formConf->displayImg), 'open' => Arrays::cblToBool($conf['open'], $formConf->displayImgOpen), 'styles' => ['root' => $formConf->displayImgStyleRoot, 'list' => $formConf->displayImgStyleList, 'detail' => $formConf->displayImgStyleDetail]]);
         // Process tags
         $tags = Arrays::stringToObjects($values->main->tagsList, function ($tag) {
             return $this->tagService->getOrCreateTag($tag);
         });
         $this->article->setTags($tags);
         // Authors
         $authors = Arrays::stringToObjects($values->main->authorsList, function ($author) {
             return $this->authorService->getOrCreateAuthor($author);
         });
         $this->article->setAuthors($authors);
         $this->articleService->persist($this->article);
         $this->articleService->flush();
         // Process delete image
         if (isset($values->pic->deleteImg) && $values->pic->deleteImg) {
             $this->deleteImage($this->article->image);
             $this->article->image = NULL;
             $this->articleService->persist($this->article);
             $this->articleService->flush();
         }
         // Process upload image
         if ($values->pic->img instanceof Nette\Http\FileUpload && $values->pic->img->isOk()) {
             $this->article->image = $this->processImageUpload($values->pic->img, 'article', $this->article->id . '-' . $this->article->slug);
             $this->articleService->persist($this->article);
             $this->articleService->flush();
         }
         // Article category
         if ($this->article->category->image !== NULL && $values->pic->useCategoryImage) {
             $this->article->image = $this->article->category->image;
             $this->articleService->persist($this->article);
             $this->articleService->flush();
         }
         // Set as main
         if ($this->article->isMain) {
             $qb = $this->articleService->getEntityManager()->createQueryBuilder();
             $qb->update(Model\CMS\Entity\Article::getClassName(), 'a')->set('a.isMain', $qb->expr()->literal(FALSE))->where('a.id != :self')->setParameter('self', $this->article->id)->getQuery()->execute();
         }
         // Invalidate cache
         $this->articleService->invalidateCache();
         // Tadaaaa!!
         $this->flashMessage('article.alert.articleSaved', 'success');
         $this->presenter->redirect('Blog:article', ['article-slug' => $this->article->slug, 'article-view' => 'Default']);
     }
 }