403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/backend-accounting.sk/app/app/classes/PagesManagement.php
<?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> &nbsp;
                            <?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);
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit