Example #1
0
    private function renderPage($page, $template = null, $var = null) {
        global $c;
        if (isset($var)) {
            if (is_array($c) && is_array($var)) {
                $c = array_merge($c, $var);
            } else {
                $c = $var;
            }
        }
        if ($c) {
            foreach ($c as $key=>$value) {
                $$key = $value;
            }
        }

        $message = $this->getOutputMessage();
        if (isset($message) && strlen($message) > 0) {
            if (!isset($c[\presentation\BasePresentation::OUTPUT_MESSAGE])) {
                $c[\presentation\BasePresentation::OUTPUT_MESSAGE] = '';
            }
            $c[\presentation\BasePresentation::OUTPUT_MESSAGE] .= $message;
        }

        $pages = array();

        if (isset($page)) {
            if (!file_exists(Config::getWebIncludePagePath().$page)) {
                throw new \Exception('File does not exists - '.$page);
            } else {
                $pages[] = Config::getWebIncludePagePath().$page;
            }
        }

        if ($template) {
            $template = Config::getWebIncludeTemplatePath().$template;
            $regex = '/<\?\/\/{PPK-USE-INSIDE-TEMPLATE-FILE:"(?<value>.+?)"}\?>/';
        } else {
            $template = $pages[0];
            $regex = '/<\?\/\/{PPK-USE-TEMPLATE-FILE:"(?<value>.+?)"}\?>/';
        }

        $fileContent = file_get_contents($template);
        if (preg_match($regex, $fileContent, $matches, PREG_OFFSET_CAPTURE)) {
            if (file_exists(Config::getWebIncludeTemplatePath().$matches['value'][0])) {
                $pages = array_merge(array($template), $pages);
                $template = Config::getWebIncludeTemplatePath().$matches['value'][0];
            }
        }

        $c[\presentation\BasePresentation::TEMPLATE_INNER_FILE] = array_unique($pages);
        if (!file_exists($template))
            throw new \Exception('File does not exists - '.$template);
        require_once($template);
    }