| Server IP : 37.9.174.138 / Your IP : 216.73.216.117 Web Server : Apache System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64 User : ftpuser ( 1001) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/backend-accounting.sk/app/app/classes/ |
Upload File : |
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace app\classes;
/**
* Description of PagesManagement
*
* @author Maroš
*/
class PagesManagement {
private static $instance;
private $app;
private $staticPagesSort;
private $modulePagesSort;
private $pageElements;
private $page;
private $db;
private $pagesTemplates = [];
protected function __construct() {
$this->app = \App::getInstance();
$this->db = PDODatabase::getInstance();
$this->staticPagesSort = $this->app->getConfig(\app\constants\Config::SORT_STATIC_PAGE);
$this->modulePagesSort = $this->app->getConfig(\app\constants\Config::SORT_MODULE_PAGE);
}
/**
* @return PagesManagement
*/
public static function getInstance() {
if (PagesManagement::$instance == NULL) {
PagesManagement::$instance = new PagesManagement();
}
return PagesManagement::$instance;
}
public function addPageToSort($type, $id) {
if ($type === \app\constants\PageType::MODULE_PAGE) {
$this->modulePagesSort[] = array("id" => $id);
$this->app->setConfig(\app\constants\Config::SORT_MODULE_PAGE, $this->modulePagesSort);
} else {
$this->staticPagesSort[] = array("id" => $id);
$this->app->setConfig(\app\constants\Config::SORT_STATIC_PAGE, $this->staticPagesSort);
}
}
public function setPagesSort($type, array $sort) {
$this->app->setConfig($type === \app\constants\PageType::MODULE_PAGE ? \app\constants\Config::SORT_MODULE_PAGE : \app\constants\Config::SORT_STATIC_PAGE, $sort);
array_walk_recursive($sort, function($item, $key, $type) {
$this->db->updateRecord("pages", array("type" => $type), $item, "id");
}, $type);
}
public function renderPagesList($type, array $pages) {
$this->pages = $pages;
if (($type === \app\constants\PageType::STATIC_PAGE && count($this->staticPagesSort) === 0) || ($type === \app\constants\PageType::MODULE_PAGE && count($this->modulePagesSort) === 0)) {
echo '<div class="dd-empty"></div>';
} else {
$this->printPage($type === \app\constants\PageType::STATIC_PAGE ? $this->staticPagesSort : $this->modulePagesSort);
}
}
public function renderPageElements(Page $page) {
$this->page = $page;
$elements = $page->getElements()->toArray();
$this->pageElements = $elements;
$elementsSort = $page->getMetadata(Page::ELEMENTS_SORT);
?>
<ol class="dd-list">
<?php
array_walk($elementsSort, function($item) {
if (isset($this->pageElements[$item["id"]])) {
$element = $this->pageElements[$item["id"]];
?>
<li class="dd-item dd3-item" data-id="<?php echo $element["id"] ?>">
<div class="dd-handle dd3-handle"><i class="glyphicon glyphicon-move"></i></div><div class="dd3-content">
<?php echo $element["name"] ?>
<div class="dd3-buttons">
<i data-toggle="tooltip" title="<?php echo str_replace(array(\app\constants\PageState::ACTIVE, \app\constants\PageState::HIDDEN, \app\constants\PageState::DISABLED), array("Aktívne", "Skryté", "Vypnuté"), $element["state"]); ?>" class="fa fa-<?php echo str_replace(array(\app\constants\PageState::ACTIVE, \app\constants\PageState::HIDDEN, \app\constants\PageState::DISABLED), array("eye", "eye-slash", "eye-slash"), $element["state"]); ?>"></i>
<?php if ($element["type"] !== \app\constants\PageElementType::MAIN_CONTENT) { ?>
<span onclick="openEditModal(<?php echo $element["id"] ?>);" data-toggle="tooltip" title="Upraviť" class="btn btn-xs btn-primary"><i class="fa fa-edit"></i></span>
<span onclick="duplicate(<?php echo $element["id"] ?>);" data-toggle="tooltip" title="Duplikovať" class="btn btn-xs btn-warning"><i class="fa fa-clone"></i></span>
<span onclick="deleteItem(<?php echo $element["id"] ?>);" data-toggle="tooltip" title="Zmazať" class="btn btn-xs btn-danger"><i class="fa fa-trash"></i></span>
<?php } ?>
</div>
</div>
</li>
<?php
}
}
);
?>
</ol>
<?php
}
private function printPage($sortElements) {
?>
<ol class="dd-list">
<?php
array_walk($sortElements, function($item) {
if (isset($this->pages[$item["id"]])) {
$page = $this->pages[$item["id"]];
?>
<li class="dd-item dd3-item" data-id="<?php echo $page["id"] ?>">
<div class="dd-handle dd3-handle"><i class="glyphicon glyphicon-move"></i></div><div class="dd3-content">
<?php if (strlen(trim($page["logo"])) !== 0) { ?>
<i class=" <?php echo $page["logo"] ?>"></i>
<?php } ?>
<?php echo $page["name"] ?>
<div class="dd3-buttons">
<?php if (intval($page["requires_login"]) === 1) { ?>
<i data-toggle="tooltip" title="Vyžaduje prihlásenie" class="fa fa-key"></i>
<?php } ?>
<i data-toggle="tooltip" title="<?php echo str_replace(array(\app\constants\PageState::ACTIVE, \app\constants\PageState::HIDDEN, \app\constants\PageState::DISABLED), array("Aktívne", "Skryté", "Vypnuté"), $page["state"]); ?>" class="fa fa-<?php echo str_replace(array(\app\constants\PageState::ACTIVE, \app\constants\PageState::HIDDEN, \app\constants\PageState::DISABLED), array("eye", "eye-slash", "lock"), $page["state"]); ?>"></i>
<a href="/admin/pages/manage/<?php echo $page["id"] ?>/" data-toggle="tooltip" title="Obsah" class="btn btn-xs btn-info"><i class="fa fa-clone"></i></a>
<span onclick="openEditModal(<?php echo $page["id"] ?>);" data-toggle="tooltip" title="Upraviť" class="btn btn-xs btn-primary"><i class="fa fa-edit"></i></span>
<span onclick="deleteItem(<?php echo $page["id"] ?>);" data-toggle="tooltip" title="Zmazať" class="btn btn-xs btn-danger"><i class="fa fa-trash"></i></span>
</div>
</div>
<?php
if (isset($item["children"])) {
$this->printPage($item["children"]);
}
?>
</li>
<?php
}
});
?>
</ol>
<?php
}
public function findSubPages($type, $pageId) {
return $type === \app\constants\PageType::MODULE_PAGE ? $this->findSubpagesInSort($this->modulePagesSort, $pageId) : $this->findSubpagesInSort($this->staticPagesSort, $pageId);
}
private function findSubpagesInSort($sort, $pageId) {
foreach ($sort as $page) {
if (intval($page["id"]) === intval($pageId) && isset($page["children"])) {
return $page["children"];
} else if (isset($page["children"])) {
$childSearch = $this->findSubpagesInSort($page["children"], $pageId);
if (count($childSearch) > 0) {
return $childSearch;
}
}
}
return array();
}
public function getPagesTemplates() {
$path = DOCUMENT_ROOT . "templates/templates";
if (count($this->pagesTemplates) === 0) {
foreach (scandir($path) as $template) {
if ($template === "." || $template === "..") {
continue;
}
$template = substr($template, 0, strlen($template) - 4);
$this->pagesTemplates[$template] = $template;
}
}
return $this->pagesTemplates;
}
public function pageTemplateExists($name) {
$templates = $this->getPagesTemplates();
return key_exists($name, $templates);
}
}