198 lines
3.6 KiB
PHP
198 lines
3.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Created by CS medien- & kommunikationssysteme.
|
|
* @author Christian Steinle
|
|
* @date 03.08.2016
|
|
*
|
|
* @copyright CS medien- & kommunikationssysteme (http://www.steinle-computer.de)
|
|
*/
|
|
|
|
namespace Model;
|
|
|
|
|
|
use Helper\Database;
|
|
|
|
class NavigationModel extends Database
|
|
{
|
|
|
|
const TBL_NAME = TBL_FRONT_NAVIGATION;
|
|
|
|
const PRIMARY_KEY = 'navID';
|
|
|
|
const ORDER_BY = 'ORDER BY navSort ASC';
|
|
|
|
static $filter = 'navActive = "yes"';
|
|
|
|
protected static $navigationPath = array();
|
|
|
|
protected static $activeNavID = 0;
|
|
|
|
protected static $title = '';
|
|
|
|
protected static $keyVisual = array();
|
|
|
|
protected static $headline = '';
|
|
|
|
protected static $contents = array();
|
|
|
|
|
|
/**
|
|
* Setzt später benötigte Variablen für den FrontendController, so dass die Datenmodelle und die Views instanziiert werden können
|
|
* @param array $routeParts
|
|
* @param bool $isEditable
|
|
*/
|
|
public static function init(array $routeParts, $isEditable = false)
|
|
{
|
|
self::getIndex();
|
|
if ($isEditable)
|
|
{
|
|
self::initBackend($routeParts[0], false);
|
|
}
|
|
else
|
|
{
|
|
self::initFrontend($routeParts);
|
|
}
|
|
}
|
|
|
|
|
|
protected static function initBackend($siteID, $depth)
|
|
{
|
|
foreach (self::$data as $navID => $navItem)
|
|
{
|
|
if ($navID == $siteID && $depth === false)
|
|
{
|
|
self::$activeNavID = $navItem['navID'];
|
|
self::$title = $navItem['navTitle'];
|
|
self::$headline = $navItem['navHeadline'];
|
|
self::initKeyVisual($navItem['navKeyVisual']);
|
|
self::initContent($navItem['navContent']);
|
|
self::buildNavigationPath();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $navKeyVisual
|
|
*/
|
|
protected static function initKeyVisual($navKeyVisual)
|
|
{
|
|
if (is_null($navKeyVisual))
|
|
{
|
|
return;
|
|
}
|
|
if (is_array(json_decode($navKeyVisual, true)))
|
|
{
|
|
self::$keyVisual = json_decode($navKeyVisual, true);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $navContents
|
|
*/
|
|
protected static function initContent($navContents)
|
|
{
|
|
if (is_null($navContents))
|
|
{
|
|
return;
|
|
}
|
|
if (is_array(json_decode($navContents, true)))
|
|
{
|
|
self::$contents = json_decode($navContents, true);
|
|
}
|
|
}
|
|
|
|
protected static function buildNavigationPath()
|
|
{
|
|
$navStart = $navStartPath[] = self::$activeNavID;
|
|
while ($navStart !== '0' && !is_null($navStart))
|
|
{
|
|
$navStart = $navStartPath[] = self::$data[$navStart]['navStart'];
|
|
}
|
|
array_pop($navStartPath);
|
|
self::$navigationPath = array_reverse($navStartPath);
|
|
}
|
|
|
|
protected static function initFrontend(array $routeParts)
|
|
{
|
|
$navStart = 0;
|
|
foreach ($routeParts as $navLink)
|
|
{
|
|
foreach (self::$data as $navID => $navItem)
|
|
{
|
|
if ($navItem['navStart'] == $navStart && $navItem['navLink'] == $navLink)
|
|
{
|
|
$navStart = $navItem['navID'];
|
|
self::$navigationPath[] = self::$activeNavID = $navItem['navID'];
|
|
self::$title = $navItem['navTitle'];
|
|
self::initKeyVisual($navItem['navKeyVisual']);
|
|
self::$headline = $navItem['navHeadline'];
|
|
self::initContent($navItem['navContent']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function getNavigationPath()
|
|
{
|
|
return self::$navigationPath;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public static function getActiveNavID()
|
|
{
|
|
return self::$activeNavID;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getTitle()
|
|
{
|
|
return self::$title;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function getKeyVisual()
|
|
{
|
|
return self::$keyVisual;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getHeadline()
|
|
{
|
|
return self::$headline;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function getContents()
|
|
{
|
|
return self::$contents;
|
|
}
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public static function getData()
|
|
{
|
|
return self::$data;
|
|
}
|
|
} |