237 lines
6.9 KiB
PHP
237 lines
6.9 KiB
PHP
<?php
|
|
/**
|
|
* Created by CS medien- & kommunikationssysteme.
|
|
* @author Christian Steinle
|
|
* @date 05.10.2016
|
|
*
|
|
* @copyright CS medien- & kommunikationssysteme (http://www.steinle-computer.de)
|
|
*/
|
|
//file_put_contents(__DIR__ . '/request.log', var_export($_POST, true) . "\n\n", FILE_APPEND);
|
|
/**
|
|
* Fehlende Authentifizierung abfangen
|
|
*/
|
|
if (!isset($_POST['token']) || !is_string($_POST['token']) || empty($_POST['token']))
|
|
{
|
|
die();
|
|
}
|
|
$token = $_POST['token'];
|
|
unset($_POST['token']);
|
|
|
|
/**
|
|
* Fehlende SESSION abfangen
|
|
*/
|
|
session_start($token);
|
|
if (!isset($_SESSION['userID']) || !is_numeric($_SESSION['userID']) || $_SESSION['userID'] < 1)
|
|
{
|
|
die();
|
|
}
|
|
if (!isset($_SESSION['isLoggedIn']) || $_SESSION['isLoggedIn'] !== true)
|
|
{
|
|
die();
|
|
}
|
|
|
|
/**
|
|
* Fehlende Variablen abfangen
|
|
*/
|
|
if (!isset($_POST['request']) || $_POST['request'] === '')
|
|
{
|
|
die();
|
|
}
|
|
$request = $_POST['request'];
|
|
unset($_POST['request']);
|
|
|
|
$pathRoot = dirname(dirname(dirname(__DIR__))) . '/';
|
|
|
|
require_once($pathRoot . '.config/config_global.php');
|
|
require_once(dirname(__DIR__) . '/.config/editor_config.php');
|
|
$loader = require PATH_ROOT . '/vendor/autoload.php';
|
|
|
|
$registry = Helper\Registry::getInstance();
|
|
$registry->editorConfig = $editor;
|
|
if (isset($_POST['navID']))
|
|
{
|
|
$registry->navID = $_POST['navID'];
|
|
}
|
|
|
|
$modelData = array();
|
|
$dbData = $_POST;
|
|
switch ($request)
|
|
{
|
|
case 'getText':
|
|
$modelData = Model\TextModel::getItem($dbData['ID']);
|
|
break;
|
|
|
|
case 'updateText':
|
|
$dbData['text'] = Helper\Text::prepareText($dbData['text']);
|
|
$modelData = Model\TextModel::update($dbData);
|
|
break;
|
|
|
|
case 'getSubline':
|
|
$modelData = Model\SublineModel::getItem($dbData['ID']);
|
|
break;
|
|
|
|
case 'updateSubline':
|
|
$dbData['text'] = trim(str_replace(array('<h2>', '</h2>'), '', $dbData['text']));
|
|
$modelData = Model\SublineModel::update($dbData);
|
|
break;
|
|
|
|
case 'getImageText':
|
|
$modelData = Model\ImageTextModel::getItem($dbData['ID']);
|
|
break;
|
|
|
|
case 'updateImageText':
|
|
$dbData['text'] = Helper\Text::prepareText($dbData['text']);
|
|
$modelData = Model\ImageTextModel::update($dbData);
|
|
break;
|
|
|
|
case 'getNavigation':
|
|
Model\NavigationModel::setFilter('1=1');
|
|
$modelData = Model\NavigationModel::getStructuredIndex();
|
|
break;
|
|
|
|
case 'updateNavigation':
|
|
$modelData = Model\NavigationModel::update($dbData);
|
|
break;
|
|
|
|
case 'insertNavigation':
|
|
$dbData['navLink'] = Model\NavigationModel::getUniqueNavLink($dbData['navStart'], $dbData['navName']);
|
|
$dbData['navHeadline'] = $dbData['navName'];
|
|
$dbData['navID'] = Model\NavigationModel::insert($dbData);
|
|
|
|
$mediaPath = $registry->editorConfig['mediaPath'] . $dbData['navID'] . '/';
|
|
$imageName = end(explode('/', $registry->editorConfig['imageDimension']['keyVisual']['standardImage']));
|
|
Model\ImageModel::copyStandardImage($mediaPath, $imageName, 'keyVisual');
|
|
|
|
$modelData = Model\NavigationModel::updateSortAfterInsert($dbData);
|
|
break;
|
|
|
|
case 'updateNavigationSort':
|
|
$sortData = explode(',', $dbData['sortOrder']);
|
|
$modelData = Model\NavigationModel::updateSort($sortData);
|
|
break;
|
|
|
|
case 'getHeadline':
|
|
$modelData = Model\NavigationModel::getItem($dbData['ID']);
|
|
break;
|
|
|
|
case 'updateHeadline':
|
|
$dbData['navHeadline'] = trim(str_replace(array('<h1>', '</h1>'), '', $dbData['navHeadline']));
|
|
$modelData = Model\NavigationModel::update($dbData);
|
|
break;
|
|
|
|
case 'insertContent':
|
|
$sortData = explode(',', $dbData['sortOrder']);
|
|
|
|
$navData = array();
|
|
foreach ($sortData as $key => $contentElement)
|
|
{
|
|
$contentData = explode('_', $contentElement);
|
|
$contentData[1] = intval($contentData[1]);
|
|
if ($contentData[1] === 0)
|
|
{
|
|
switch ($contentData[0])
|
|
{
|
|
case 'Text':
|
|
$newID = $modelData = Model\TextModel::insert(array('text' => 'Text'));
|
|
$contentData[1] = $newID;
|
|
break;
|
|
|
|
case 'Subline':
|
|
$newID = $modelData = Model\SublineModel::insert(array('text' => 'Überschrift'));
|
|
$contentData[1] = $newID;
|
|
break;
|
|
|
|
case 'ImageText':
|
|
$newID = $modelData = Model\ImageTextModel::insert(array('text' => 'Text', 'type' => 'small', 'navID' => $dbData['navID']));
|
|
$contentData[1] = $newID;
|
|
break;
|
|
}
|
|
}
|
|
$navData[] = array('Controller' => $contentData[0], 'ID' => $contentData[1]);
|
|
}
|
|
$navContent = json_encode($navData);
|
|
|
|
Model\NavigationModel::update(array('navID' => $dbData['navID'], 'navContent' => $navContent));
|
|
break;
|
|
|
|
case 'updateContentSort':
|
|
$sortData = explode(',', $dbData['sortOrder']);
|
|
|
|
$navData = array();
|
|
foreach ($sortData as $key => $contentElement)
|
|
{
|
|
$contentData = explode('_', $contentElement);
|
|
$navData[] = array('Controller' => $contentData[0], 'ID' => $contentData[1]);
|
|
}
|
|
$navContent = json_encode($navData);
|
|
|
|
$modelData = Model\NavigationModel::update(array('navID' => $dbData['navID'], 'navContent' => $navContent));
|
|
break;
|
|
|
|
case 'deleteContentElement':
|
|
Model\NavigationModel::init(array($dbData['navID']), true);
|
|
|
|
$navContent = Model\NavigationModel::getContents();
|
|
foreach ($navContent as $key => $contentElement)
|
|
{
|
|
if ($contentElement['Controller'] === $dbData['editorType'] && $contentElement['ID'] === intval($dbData['editorDataID']))
|
|
{
|
|
unset($navContent[$key]);
|
|
}
|
|
}
|
|
|
|
$newNavData = array_values($navContent);
|
|
$navContent = json_encode($newNavData);
|
|
$modelData = Model\NavigationModel::update(array('navID' => $dbData['navID'], 'navContent' => $navContent));
|
|
|
|
switch ($dbData['editorType'])
|
|
{
|
|
case 'Subline':
|
|
Model\SublineModel::delete($dbData['editorDataID']);
|
|
break;
|
|
case 'Text':
|
|
Model\TextModel::delete($dbData['editorDataID']);
|
|
break;
|
|
case 'ImageText':
|
|
Model\ImageTextModel::delete($dbData['editorDataID']);
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case 'getKeyVisual':
|
|
Model\NavigationModel::init(array($dbData['ID']), true);
|
|
$keyVisualContent = Model\NavigationModel::getKeyVisual();
|
|
Model\ImageModel::setFilter('imageID IN (' . implode(', ', $keyVisualContent['IDs']) . ')');
|
|
$images = Model\ImageModel::getIndex();
|
|
$modelData = $keyVisualContent;
|
|
$modelData['images'] = $images;
|
|
break;
|
|
|
|
case 'updateKeyVisual':
|
|
Model\NavigationModel::init(array($dbData['navID']), true);
|
|
$keyVisualContent = Model\NavigationModel::getKeyVisual();
|
|
$keyVisualContent['Type'] = $dbData['Type'];
|
|
$keyVisualJSON = json_encode($keyVisualContent, JSON_UNESCAPED_UNICODE);
|
|
$modelData = Model\NavigationModel::update(array('navID' => $dbData['navID'], 'navKeyVisual' => $keyVisualJSON));
|
|
break;
|
|
|
|
case 'updateImage':
|
|
$modelData = Model\ImageModel::update($dbData);
|
|
break;
|
|
|
|
case 'appendKeyVisual':
|
|
$imageID = Model\ImageModel::insert($dbData);
|
|
Model\NavigationModel::init(array($dbData['navID']), true);
|
|
$keyVisualContent = Model\NavigationModel::getKeyVisual();
|
|
$keyVisualContent['IDs'][] = $imageID;
|
|
$keyVisualJSON = json_encode($keyVisualContent, JSON_UNESCAPED_UNICODE);
|
|
$modelData = Model\NavigationModel::update(array('navID' => $dbData['navID'], 'navKeyVisual' => $keyVisualJSON));
|
|
break;
|
|
}
|
|
|
|
if (!empty($modelData))
|
|
{
|
|
echo json_encode($modelData);
|
|
}
|
|
|