211 lines
6.7 KiB
PHP
211 lines
6.7 KiB
PHP
<?php
|
|
function saveContentIdData() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$filePath = $path . $_SESSION['page_url'] . ".page.php";
|
|
$data = $_POST['saveContentIdData'] ?? '';
|
|
$file = simplexml_load_file($filePath);
|
|
$langNode = $file->content->{$_SESSION['lng']};
|
|
|
|
$file->content->{$_SESSION['lng']} = '';
|
|
$node = dom_import_simplexml($langNode);
|
|
$doc = $node->ownerDocument;
|
|
|
|
if ($node->appendChild($doc->createCDATASection("\n" . $data . "\n")) && $file->asXML($filePath)) {
|
|
return ['result' => 1];
|
|
}
|
|
return ['result' => 0];
|
|
}
|
|
|
|
function floatsBlock() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$filePath = $path . $_SESSION['page_url'] . ".page.php";
|
|
$file = simplexml_load_file($filePath);
|
|
|
|
$data = json_decode($_POST['floatsBlock'], true);
|
|
$left = $data['left'] ?? [];
|
|
$right = $data['right'] ?? [];
|
|
|
|
unset($file->lblock->block);
|
|
unset($file->rblock->block);
|
|
|
|
foreach ($left as $b) {
|
|
$n = $file->lblock->addChild('block');
|
|
$n->addAttribute('url', htmlspecialchars($b['pluginUrl'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('title', htmlspecialchars($b['title'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('tclass', htmlspecialchars($b['tclass'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('bclass', htmlspecialchars($b['bclass'], ENT_QUOTES, 'UTF-8'));
|
|
}
|
|
|
|
foreach ($right as $b) {
|
|
$n = $file->rblock->addChild('block');
|
|
$n->addAttribute('url', htmlspecialchars($b['pluginUrl'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('title', htmlspecialchars($b['title'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('tclass', htmlspecialchars($b['tclass'], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('bclass', htmlspecialchars($b['bclass'], ENT_QUOTES, 'UTF-8'));
|
|
}
|
|
|
|
$dom = new DOMDocument('1.0', 'UTF-8');
|
|
$dom->preserveWhiteSpace = false;
|
|
$dom->formatOutput = true;
|
|
$dom->loadXML($file->asXML());
|
|
|
|
return ['result' => $dom->save($filePath) ? 1 : 0];
|
|
}
|
|
|
|
function newTitle() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$title = htmlspecialchars($_POST['newTitle'] ?? '', ENT_QUOTES, 'UTF-8');
|
|
$filePath = $path . "data/filepath." . $_SESSION['lng'] . ".php";
|
|
$file = simplexml_load_file($filePath);
|
|
|
|
$p = rtrim($config['REQUEST_URI'], '.html');
|
|
$parts = explode('/', $p);
|
|
$node = $file->index;
|
|
|
|
foreach ($parts as $n) {
|
|
if ($n !== '') {
|
|
if (isset($node->$n)) {
|
|
$node = $node->$n;
|
|
} else {
|
|
return ['error' => "Node not found: $n"];
|
|
}
|
|
}
|
|
}
|
|
|
|
$node['title'] = $title;
|
|
|
|
if ($file->asXML($filePath)) {
|
|
return ['result' => 'ok'];
|
|
}
|
|
return ['error' => 'Save failed'];
|
|
}
|
|
|
|
function saveContentIdDataHow() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$_SESSION['page_url'] = $_POST['page_url'] . str_replace('.page.php', '', $_POST['nameFile']);
|
|
$filePath = $path . $_POST['page_url'] . $_POST['nameFile'];
|
|
$content = $_POST['saveContentIdData'] ?? '';
|
|
$file = simplexml_load_file($filePath);
|
|
|
|
$langNode = $file->content->{$_SESSION['lng']};
|
|
$file->content->{$_SESSION['lng']} = '';
|
|
$node = dom_import_simplexml($langNode);
|
|
$doc = $node->ownerDocument;
|
|
$node->appendChild($doc->createCDATASection("\n" . $content . "\n"));
|
|
|
|
$file->rblock = '';
|
|
$file->lblock = '';
|
|
$blocks = $_POST['floatsBlock'] ?? [];
|
|
$titles = $_POST['title'] ?? [];
|
|
$urls = $_POST['pluginUrl'] ?? [];
|
|
$tclasses = $_POST['tclass'] ?? [];
|
|
$bclasses = $_POST['bclass'] ?? [];
|
|
|
|
foreach ($blocks as $i => $blockName) {
|
|
$n = $file->$blockName->addChild('block');
|
|
$n->addAttribute('url', htmlspecialchars($urls[$i], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('title', htmlspecialchars($titles[$i], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('tclass', htmlspecialchars($tclasses[$i], ENT_QUOTES, 'UTF-8'));
|
|
$n->addAttribute('bclass', htmlspecialchars($bclasses[$i], ENT_QUOTES, 'UTF-8'));
|
|
}
|
|
|
|
$dom = new DOMDocument('1.0','UTF-8');
|
|
$dom->preserveWhiteSpace = false;
|
|
$dom->formatOutput = true;
|
|
$dom->loadXML($file->asXML());
|
|
|
|
return ['result' => $dom->save($filePath) ? 1 : 0];
|
|
}
|
|
|
|
function createNewFile() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$_SESSION['page_url'] = $_POST['page_url'] . str_replace('.page.php', '', $_POST['nameFile']);
|
|
$savePath = $path . $_POST['page_url'] . $_POST['nameFile'];
|
|
$template = $path . "data/template.page.php";
|
|
$data = $_POST['saveContentIdData'] ?? '';
|
|
|
|
if (!file_exists($template)) return ['result' => 0];
|
|
if (file_put_contents($savePath, file_get_contents($template)) === false) return ['result' => 0];
|
|
|
|
$file = simplexml_load_file($savePath);
|
|
$node = $file->content->{$_SESSION['lng']};
|
|
$file->content->{$_SESSION['lng']} = '';
|
|
$dom = dom_import_simplexml($node)->ownerDocument;
|
|
dom_import_simplexml($node)->appendChild($dom->createCDATASection("\n".$data."\n"));
|
|
return ['result' => $file->asXML($savePath) ? 1 : 0];
|
|
}
|
|
|
|
function checkFileExists() {
|
|
global $path;
|
|
$f = $path . ($_POST['page_url'] ?? '') . ($_POST['nameFile'] ?? '');
|
|
return ['exists' => file_exists($f) ? 1 : 0];
|
|
}
|
|
|
|
function managerPlugin() {
|
|
$a = $_POST['action'];
|
|
$n = $_POST['pluginName'] ?? '';
|
|
$d = __DIR__ . '/../../plugin/';
|
|
switch ($a) {
|
|
case 'check':
|
|
return ['status' => (is_dir($d.$n) ? 'exists' : 'not_exists')];
|
|
case 'create':
|
|
if (!file_exists($d.$n)) {
|
|
umask(0);
|
|
mkdir($d.$n, 0777, true);
|
|
file_put_contents($d.$n.'/plug.php', "<?php\n echo '<div class=\"pluginEditable\" contenteditable=\"true\"></div>'; \n?>");
|
|
return ['status' => 'created', 'plugin' => $n];
|
|
}
|
|
return ['status' => 'already_exists'];
|
|
case 'add':
|
|
$list = array_map('basename', array_filter(glob($d.'*'), 'is_dir'));
|
|
return ['plugins' => $list];
|
|
case 'save':
|
|
$url = $_POST['pluginUrlSave'] ?? '';
|
|
$html = $_POST['pluginInnerHtml'] ?? '';
|
|
$name = basename(parse_url($url, PHP_URL_PATH));
|
|
$file = $d.$name.'/plug.php';
|
|
$res = file_put_contents($file, "<?php\n echo '<div class=\"pluginEditable\" contenteditable=\"true\">".$html."</div>';\n?>");
|
|
return ['status' => $res !== false ? 'saved' : 'error'];
|
|
}
|
|
return ['error' => 'Unknown action'];
|
|
}
|
|
|
|
function loadPlugin() {
|
|
$name = $_POST['pluginName2'] ?? '';
|
|
$dir = __DIR__ . '/../../plugin/' . $name . '/plug.php';
|
|
if (!file_exists($dir)) return ['error' => 'not_found'];
|
|
ob_start();
|
|
include($dir);
|
|
return ['html' => ob_get_clean()];
|
|
}
|
|
|
|
function uploadUserImage() {
|
|
global $config, $path, $_SESSION;
|
|
|
|
$dir = 'img/users_img/' . $_SESSION['username'] . "/";
|
|
$f = $_FILES['userImg']['name'];
|
|
$b = pathinfo($f, PATHINFO_FILENAME);
|
|
$e = pathinfo($f, PATHINFO_EXTENSION);
|
|
|
|
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
|
$n = $b;
|
|
$i = 1;
|
|
while (file_exists($dir . $n . '.' . $e)) $n = $b . '_' . ++$i;
|
|
$target = $dir . $n . '.' . $e;
|
|
|
|
if (move_uploaded_file($_FILES['userImg']['tmp_name'], $target)) {
|
|
return ['path' => str_replace('\\', '/', $target)];
|
|
}
|
|
return ['error' => 'upload_failed'];
|
|
}
|
|
|
|
function nameUser() {
|
|
global $config;
|
|
return ['user' => $config['User']];
|
|
}
|
|
?>
|