File: D:/HostingSpaces/SBogers96/smilefotografie.nl/app/Komma/Pages/PageRepository.php
<?php
namespace Komma\Pages;
class PageRepository
{
/**
* Return all pages
*
* @param array $in
* @param array $with
* @return mixed
*/
public function pages($in = [], $with = [])
{
// Get pages with translations and routes
$pages = \DB::table('pages')
->leftJoin(
'page_translations',
'page_translations.page_id', '=', 'pages.id')
->leftJoin('routes', function($join){
$join->on('page_translations.id', '=', 'routes.routable_id')
->where('routes.routable_type', '=', 'Komma\Kms\Pages\Models\PageTranslation');
})
->orderBy('pages.lft','asc');
// With images
if(in_array('images',$with))
{
$pages = $pages->leftJoin('images', function($join){
$join->on('pages.id', '=', 'images.imageble_id')
->where('images.imageble_type', '=', 'Komma\Kms\Pages\Models\Page');
});
}
// Get a selection
if( ! empty($in))
{
$pages = $pages->whereIn('pages.code_name',$in);
}
return $pages->get();
}
/**
* Return a page by its id
*
* @param $id
* @return mixed
*/
public function page($id)
{
return \DB::table('pages')
// Join translations
->leftJoin(
'page_translations',
'page_translations.page_id', '=', 'pages.id')
// Join images
->leftJoin('images', function($join){
$join->on('pages.id', '=', 'images.imageble_id')
->where('images.imageble_type', '=', 'Komma\Kms\Pages\Models\Page');
})
->leftJoin('routes', function($join){
$join->on('page_translations.id', '=', 'routes.routable_id')
->where('routes.routable_type', '=', 'Komma\Kms\Pages\Models\PageTranslation');
})
->where('pages.id','=',$id)
->first();
}
/**
* Return a page by its slug
*
* @param $id
* @return mixed
*/
public function pageByCodeName($codeName)
{
return \DB::table('pages')
// Join translations
->leftJoin(
'page_translations',
'page_translations.page_id', '=', 'pages.id')
// Join images
->leftJoin('images', function($join){
$join->on('pages.id', '=', 'images.imageble_id')
->where('images.imageble_type', '=', 'Komma\Kms\Pages\Models\Page');
})
->leftJoin('routes', function($join){
$join->on('page_translations.id', '=', 'routes.routable_id')
->where('routes.routable_type', '=', 'Komma\Kms\Pages\Models\PageTranslation');
})
->where('pages.code_name','=',$codeName)
->first();
}
/**
* Return a page by its id
*
* @param $id
* @return mixed
*/
public function imagesByPageId($id)
{
return \DB::table('images')
->where('images.imageble_type', '=', 'Komma\Kms\Pages\Models\Page')
->where('images.imageble_id','=',$id)
->orderBy('sort_order','asc')
->get();
}
}