public function getOne(Criteria $criteria) { // overwrite config defaults? $mode = $criteria->getMode() ? $criteria->getMode() : $this->mode; // criteria $criteria->setMode($mode); // get all scribbles $allScribbles = $this->getDirectory()->load()->getScribbles(); // filter and paginate $filter = new Filter(); $scribbles = $filter->apply($allScribbles, $criteria)->getScribbles(); return $scribbles->first(); }
public function indexAction(Request $request, $template, $slug) { $criteria = new Criteria(); $criteria->setSlug($slug); $repository = $this->getServices()->get('page.repository'); $scribble = $repository->getOne($criteria); if (!$scribble) { throw new NotFoundHttpException(); } $view = $this->getServices()->get('view'); $vars = array('request' => $request, 'services' => $this->getServices(), 'scribble' => $scribble); return new Response($view->render($template, $vars)); }
public function demoAction(Request $request, $template, $slug) { $criteria = new Criteria(); $criteria->setSlug($slug); $repository = $this->getServices()->get('scribble.repository'); $scribble = $repository->getOne($criteria); if (!$scribble) { throw new NotFoundHttpException(); } $loader = new FilesystemLoader(array($this->getServices()->get('theme')->getTemplateDir() . '/%name%', $scribble->getDir() . '/%name%')); $view = new PhpEngine(new TemplateNameParser(), $loader); $vars = array('request' => $request, 'services' => $this->getServices(), 'scribble' => $scribble); return new Response($view->render($template, $vars)); }
public function indexAction(Request $request) { $criteria = new Criteria(); $criteria->setFind($request->query->get('find')); $params = array('page' => $request->query->get('page'), 'sorting' => 'created', 'descending' => true); $repository = $this->getServices()->get('scribble.repository'); $scribbles = $repository->getList($criteria, $params); $scribbles->getPaginator()->setPageParam('page'); $scribbles->getPaginator()->setBaseUrl($this->getServices()->get('urler')->generate('frontendScribbleIndex', array(), true)); $scribbles->getPaginator()->addParam('find', $criteria->getFind()); $data = array(); foreach ($scribbles->getScribbles() as $scribble) { $data[] = array('title' => $scribble->getTitle(), 'lede' => $scribble->getLede(), 'url' => $this->getServices()->get('urler')->generate('frontendScribbleDetail', array('slug' => $scribble->getSlug()), true), 'created' => $scribble->getCreated()->format('c'), 'modified' => $scribble->getModified()->format('c')); } $response = new Response(); $response->setContent(json_encode($data)); $response->headers->set('Content-Type', 'application/json'); return $response; }
protected function matchesCriteria(ScribbleFile $scribble, Criteria $criteria) { if (!$scribble) { return false; } if ($criteria->getSlug() !== null) { if ($scribble->getSlug() !== $criteria->getSlug()) { return false; } } // unpublished scribbles only if ($criteria->getMode() === Criteria::MODE_UNPUBLISHED) { if ($scribble->isPublished()) { return false; } } else { if ($criteria->getMode() === Criteria::MODE_ALL) { } else { if (!$scribble->isPublished()) { return false; } } } foreach ($criteria->getTags() as $key => $tag) { if (!$scribble->getTags()->containsKey($key)) { return false; } } if ($criteria->getFind() && !$scribble->find($criteria->getFind())) { return false; } return true; }
public function testDefaultMode() { $criteria = new Criteria(); $filter = new Filter(); $filter->apply($this->scribbles, $criteria); $this->assertSame(3, $filter->getScribbles()->count()); $criteria = new Criteria(); $criteria->setMode(Criteria::MODE_PUBLISHED); $filter = new Filter(); $filter->apply($this->scribbles, $criteria); $this->assertSame(3, $filter->getScribbles()->count()); $criteria = new Criteria(); $criteria->setMode(Criteria::MODE_UNPUBLISHED); $filter = new Filter(); $filter->apply($this->scribbles, $criteria); $this->assertSame(1, $filter->getScribbles()->count()); $criteria = new Criteria(); $criteria->setMode(Criteria::MODE_ALL); $filter = new Filter(); $filter->apply($this->scribbles, $criteria); $this->assertSame(4, $filter->getScribbles()->count()); }
public function testTags() { $criteria = new Criteria(); $criteria->setTags(array('abc*""def', '123')); $this->assertFalse(in_array('abc*""def', $criteria->getTags()->toArray())); }