Files
website/backend/editor/webservice/requestData.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);
}