<?php
							 | 
						|
								
							 | 
						|
								namespace App\Repositories;
							 | 
						|
								
							 | 
						|
								use App\Repositories\RepositoryAbstract;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 *  request pages items from directus
							 | 
						|
								 *
							 | 
						|
								 *  @author Björn Hase, Tentakelfabrik
							 | 
						|
								 *  @license http://opensource.org/licenses/MIT The MIT License
							 | 
						|
								 *  @link https://gitea.tentakelfabrik.de/Tentakelfabrik/super-gear-directus
							 | 
						|
								 *
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								class PostRepository extends RepositoryAbstract
							 | 
						|
								{
							 | 
						|
								    /** endpoint */
							 | 
						|
								    protected $endpoint = 'posts';
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *
							 | 
						|
								     */
							 | 
						|
								    public function find($limit = 20)
							 | 
						|
								    {
							 | 
						|
								        return $this->queryBuilder
							 | 
						|
								            ->fields([
							 | 
						|
								                'title',
							 | 
						|
								                'slug',
							 | 
						|
								                'lead',
							 | 
						|
								                'content',
							 | 
						|
								                'view',
							 | 
						|
								                'date_created',
							 | 
						|
								                'published_at',
							 | 
						|
								                'media_teaser.id',
							 | 
						|
								                'media_teaser.description'
							 | 
						|
								            ])
							 | 
						|
								            ->aliases('template', 'view')
							 | 
						|
								            ->filter([
							 | 
						|
								                'status' => 'published',
							 | 
						|
								                'published_at' => [
							 | 
						|
								                    '_nnull' => 'true'
							 | 
						|
								                ]
							 | 
						|
								            ])
							 | 
						|
								            ->sort(['published_at'])
							 | 
						|
								            ->find();
							 | 
						|
								     }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *  find single page with a slug,
							 | 
						|
								     *  page must be published
							 | 
						|
								     *
							 | 
						|
								     *  @param  string $slug
							 | 
						|
								     *  @return array
							 | 
						|
								     */
							 | 
						|
								    public function findOneBySlug($slug)
							 | 
						|
								    {
							 | 
						|
								        return $this->queryBuilder
							 | 
						|
								            ->fields([
							 | 
						|
								                'title',
							 | 
						|
								                'slug',
							 | 
						|
								                'lead',
							 | 
						|
								                'content',
							 | 
						|
								                'view',
							 | 
						|
								                'meta',
							 | 
						|
								                'date_created',
							 | 
						|
								                'published_at',
							 | 
						|
								                'media_teaser.id',
							 | 
						|
								                'media_teaser.description',
							 | 
						|
								                'media_hero.id',
							 | 
						|
								                'media_hero.description',
							 | 
						|
								            ])
							 | 
						|
								            ->aliases('template', 'view')
							 | 
						|
								            ->filter([
							 | 
						|
								                'status' => 'published',
							 | 
						|
								                'published_at' => [
							 | 
						|
								                    '_nnull' => 'true'
							 | 
						|
								                ],
							 | 
						|
								                'slug' => $slug
							 | 
						|
								            ])
							 | 
						|
								            ->findOne();
							 | 
						|
								    }
							 | 
						|
								}
							 |