2022-04-09 10:01:42 +00:00
|
|
|
<?php
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* @package Octoleo CMS
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @created 9th 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
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
|
|
|
|
2022-04-12 19:41:51 +00:00
|
|
|
namespace Octoleo\CMS\Model;
|
2022-04-09 10:01:42 +00:00
|
|
|
|
|
|
|
use Joomla\Database\DatabaseDriver;
|
|
|
|
use Joomla\Database\ParameterType;
|
|
|
|
use Joomla\Model\DatabaseModelInterface;
|
|
|
|
use Joomla\Model\DatabaseModelTrait;
|
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Model class for pages
|
|
|
|
* source: https://github.com/joomla/framework.joomla.org/blob/master/src/Model/PackageModel.php
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
class PageModel implements DatabaseModelInterface
|
2022-04-09 10:01:42 +00:00
|
|
|
{
|
|
|
|
use DatabaseModelTrait;
|
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Array of legal pages
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @var array
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
private $legalPages = ['products', 'blog', 'about-us', 'location', 'contact-us'];
|
2022-04-09 10:01:42 +00:00
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Array of legal details pages
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @var array
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
private $legalDetailsPages = ['yachts', 'ski-boats', 'drones'];
|
2022-04-09 10:01:42 +00:00
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Instantiate the model.
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @param DatabaseDriver $db The database adapter.
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
public function __construct(DatabaseDriver $db)
|
2022-04-09 10:01:42 +00:00
|
|
|
{
|
2022-04-12 19:41:51 +00:00
|
|
|
$this->setDb($db);
|
2022-04-09 10:01:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Get a page's data
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @param string $pageName The page to lookup
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @return string
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
|
|
|
* @throws \RuntimeException
|
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
public function getPage(string $pageName): string
|
2022-04-09 10:01:42 +00:00
|
|
|
{
|
2022-04-12 19:41:51 +00:00
|
|
|
if (!in_array($pageName, $this->legalPages))
|
2022-04-09 10:01:42 +00:00
|
|
|
{
|
2022-04-12 19:41:51 +00:00
|
|
|
throw new \RuntimeException(sprintf('Unable to find page data for the `%s`', $pageName), 404);
|
2022-04-09 10:01:42 +00:00
|
|
|
}
|
|
|
|
|
2022-04-12 19:41:51 +00:00
|
|
|
return $pageName;
|
2022-04-09 10:01:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2022-04-12 19:41:51 +00:00
|
|
|
* Get a page's details data
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @param string $detailsName The page details to lookup
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @return string
|
2022-04-09 10:01:42 +00:00
|
|
|
*
|
2022-04-12 19:41:51 +00:00
|
|
|
* @throws \RuntimeException
|
2022-04-09 10:01:42 +00:00
|
|
|
*/
|
2022-04-12 19:41:51 +00:00
|
|
|
public function getDetails(string $detailsName): string
|
2022-04-09 10:01:42 +00:00
|
|
|
{
|
2022-04-12 19:41:51 +00:00
|
|
|
if (strlen($detailsName) && !in_array($detailsName, $this->legalDetailsPages))
|
|
|
|
{
|
|
|
|
throw new \RuntimeException(sprintf('Unable to find page details data for the `%s`', $detailsName), 404);
|
|
|
|
}
|
2022-04-09 10:01:42 +00:00
|
|
|
|
2022-04-12 19:41:51 +00:00
|
|
|
return $detailsName;
|
2022-04-09 10:01:42 +00:00
|
|
|
}
|
|
|
|
}
|