WEBD-325-45/week-06/project/libraries/src/Model/Util/SitePageTrait.php

104 lines
2.1 KiB
PHP

<?php
/**
* @package Octoleo CMS
*
* @created 18th April 2022
* @author Llewellyn van der Merwe <https://git.vdm.dev/Llewellyn>
* @git WEBD-325-45 <https://git.vdm.dev/Llewellyn/WEBD-325-45>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Octoleo\CMS\Model\Util;
use Joomla\Database\ParameterType;
/**
* Trait for getting page data
*
* @since 1.0.0
*/
trait SitePageTrait
{
/**
* Get page data
*
* @param string $path The page path
*
* @return \stdClass
*
* @throws \RuntimeException
*/
public function getPageItemByPath(string $path): \stdClass
{
$db = $this->getDb();
$query = $db->getQuery(true)
->select('i.*')
->select($db->quoteName(array('m.id'), array('menu_id')))
->from($db->quoteName('#__menu', 'm'))
->join('INNER', $db->quoteName('#__item', 'i'), 'm.item_id = i.id')
->where($db->quoteName('i.state') . ' >= 1')
->where($db->quoteName('m.published') . ' = 1')
->where($db->quoteName('m.path') . ' = :path')
->bind(':path', $path)
->setLimit(1);
try
{
$page = $db->setQuery($query)->loadObject();
}
catch (\RuntimeException $e)
{
return new \stdClass();
}
if ($page)
{
return $page;
}
return new \stdClass();
}
/**
* Get page data
*
* @param int $item The item id
*
* @return \stdClass
*
* @throws \RuntimeException
*/
public function getPageItemById(int $item): \stdClass
{
$db = $this->getDb();
$query = $db->getQuery(true)
->select('i.*')
->select($db->quoteName(array('m.id'), array('menu_id')))
->from($db->quoteName('#__item', 'i'))
->join('INNER', $db->quoteName('#__menu', 'm'), 'i.id = m.item_id')
->where($db->quoteName('m.published') . ' = 1')
->where($db->quoteName('i.state') . ' >= 1')
->where($db->quoteName('i.id') . ' = :id')
->bind(':id', $item, ParameterType::INTEGER)
->setLimit(1);
try
{
$page = $db->setQuery($query)->loadObject();
}
catch (\RuntimeException $e)
{
return new \stdClass();
}
if ($page)
{
return $page;
}
return new \stdClass();
}
}