<!DOCTYPE HTML>
<!--
    Rangitaki Blogging Engine
    Code: https://gitlab.com/mmk2410/rangitaki
    Issus and Project Management: https://phab.mmk2410.org
    Web: https://marcel-kapfer.de/rangitaki
    2015 - 2016 Marcel Kapfer (mmk2410)
    License: MIT
-->
<html>
<?php
/**
 * PHP Version 5.6
 *
 * Rangitaki PHP Blogging engine
 *
 * @category Blogging
 * @package  Rbe
 * @author   Marcel Kapfer (mmk2410) <marcelmichaelkapfer@yahoo.co.nz>
 * @license  MIT https://opensource.org/licenses/MIT
 * @link     https://marcel-kapfer.de/rangitaki
 */
// Getting necessary php files
date_default_timezone_set('UTC');
require __DIR__ . '/vendor/autoload.php'; // loading composer libs

require './res/php/Config.php';
use mmk2410\rbe\config\Config as Config;

$configParser = new Config('config.yaml', 'vendor/autoload.php');

$config = $configParser->getConfig();

require './lang/' . $config["language"] . ".php"; // Language file
require_once 'res/php/ArticleGenerator.php'; // The article generator
require_once './res/php/BlogListGenerator.php'; // and the blog list generator

// Getting some variables ($_GET and $_SERVER)
$getblog = filter_input(INPUT_GET, "blog"); // get the blog variable
$getarticle = filter_input(INPUT_GET, "article"); // get the article variable
$gettag = filter_input(INPUT_GET, "tag"); // getting the tag variable
$url = "http://" . filter_input(INPUT_SERVER, "HTTP_HOST") .
    filter_input(INPUT_SERVER, "REQUEST_URI"); // get the url (used for sharing)
$pagenumber = filter_input(INPUT_GET, "page"); // get the pagenumber

// Pagination algorithm
if ($config["design"]["pagination"] == 0) {
    $config["design"]["pagination"] = false;
} else {
    // pag_max: the newest post to show on a page
    $pag_max = $config["design"]["pagination"] * ( $pagenumber + 1 );
    // pag_min: the oldest post to show on a page
    $pag_min = $pag_max - $config["design"]["pagination"];
    if ($pagenumber > 0) {
        // Disable the blog intro if not on first page
        $config["blog"]["intro"] = "off";
    }
}

// Fetching necessary information about the current article
// Set blog to "main" if on main blog, else to $getblog.
// This variable is needed later
if ($getblog == "") {
    $blog = "main";
} else {
    $blog = $getblog;
}

// generate a variable with the articles directory
$articlesdir = "./articles/$blog/";
// Fetching the articles title
if (isset($getarticle)) {
    $articletitle
        = ArticleGenerator::getTitle($articlesdir, $getarticle . '.md');
}
// Make sure that the entry has a title, because main.md hasn't one
if (empty($config["blog"]["mainname"])) {
    $blogmaintitle = $config["blog"]["title"];
} else {
    $blogmaintitle = $config["blog"]["mainname"];
}
if (isset($getblog)) {
    $subblogtitle = BlogListGenerator::getName('./blogs/' . $getblog . '.md');
} else {
    $subblogtitle = $blogmaintitle;
}
// Generate title for the html head
if (isset($getarticle)) {
    $hd_subblog_title =  $articletitle . ' - ' . $subblogtitle;
} else {
    $hd_subblog_title = $subblogtitle;
}

// url of the feed
$feedurl = $config["blog"]["url"] . "/feed/" . $blog . ".atom";

?>

<head>
    <meta charset="utf-8">
    <title><?php echo $config["blog"]["title"] . " » " .$hd_subblog_title; ?></title>
    <!--Metatags-->
    <meta name="author"
        content="<?php echo $config["blog"]["author"]; // Set the blog author ?>"/>
    <meta name="description"
        content="<?php echo $config["blog"]["description"]; // the blog description ?>"/>
    <!-- Meta tag for responsive ui-->
    <meta name='viewport'
        content='width=device-width, initial-scale=1.0,
            maximum-scale=1.0, user-scalable=0'/>
    <!-- OpenGraph meta tags -->
    <meta property="og:title" content="<?php echo $hd_subblog_title; ?>"/>
    <meta property="og:type" content="website"/>
    <meta property="og:url" content="<?php echo $url; ?>"/>
    <meta property="og:image" content="<?php echo $config['design']['favicon']; ?>"/>
    <meta property="og:description" content="<?php echo $config['blog']['description']; ?>"/>
    <meta property="og:locale:alternate" content="<?php echo $lang; ?>"/>
    <!-- Twitter meta tags -->
    <meta name="twitter:card" content="summary"/>
    <meta name="twitter:site" content="<?php echo $twitter; ?>"/>
    <meta name="twitter:title" content="<?php echo $hd_subblog_title; ?>"/>
    <meta name="twitter:description" content="<?php echo $config['blog']['description']; ?>"/>
    <meta name="twitter:image" content="<?php echo $config['design']['favicon']; ?>"/>
    <meta name="twitter:url" content="<?php echo $url; ?>"/>
    <!-- atom feed -->
    <?php
    if (file_exists("feed/" . $blog . ".atom")) {
    ?>
    <link rel='alternate' type='application/atom+xml' title='Atom 0.3' href=
    '<?php
        echo $feedurl;
    ?>'>
    <?php
    }
    ?>
    <!--CSS files-->
    <link rel="stylesheet" type="text/css" href="res/css/rangitaki.css"/>
    <!-- stylesheet for code highlighting-->
    <link rel="stylesheet" href="./res/css/github-gist.css">
    <link rel="stylesheet" type="text/css"
        href="themes/<?php echo $config['design']['theme']; // getting the theme stylesheet?>.css"/>
    <?php
    // Checking if the drawer is enabled
    if ($config["design"]["drawer"] != 'on') {
        // Loading additional stylesheet for disabling the drawer?>
        <link rel="stylesheet" type="text/css" href="res/css/no-nav.css"/>
        <?php
    }
    ?>
    <link href='//fonts.googleapis.com/css?family=Roboto:400,500,700,300,
        400italic,100,100italic,900' rel='stylesheet'
          type='text/css'> <!--Font-->
    <!--Favicons-->
    <link rel="shortcut icon" type="image/x-icon"
        href="<?php echo $config['design']['favicon']; ?>"/>
    <link rel="apple-touch-icon-precomposed" href="<?php echo $config['design']['favicon']; ?>">
    <!-- JavaScript Pt. 1: HightlightJS (get and load): Code highlighting-->
    <script src="./res/js/highlight.pack.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
</head>

<body>
<?php
// Checking if the navigation drawer is enabled. If not -> skip it
if ($config["design"]["drawer"] == "on") {
    ?>
    <!--
    Darken the background when fading the drawer in. See also the JS file
    -->
    <div class="overlay"></div>
    <div class="nav">
        <div class="nav-close">
            <img src="./res/img/close-dark.svg" class="nav-close-img"
                alt="Close"/>
        </div>
        <div class="divider"></div>
        <?php
        // Getting everything from the blog directory
        $blogs = scandir("./blogs/");
        // Checking if not in article or tag view and if there are more the one
        // blog. The 3 is for these three array entries: 'main.md', '.', '..'
        if (!isset($getarticle) && !isset($gettag) && sizeof($blogs) > 3) {
            echo "<section>";
            // 1. Set localized string 2. Set blogtitle
            echo "<div class='nav-item-static'>" .
                $BLOGLANG['Blogs on'] . " " . $config["blog"]["title"] .
                ":</div>";
            // iterating through the blogs/ directory
            foreach ($blogs as $navblog) {
                // check if filename is larger than three chars and if the
                // file ends with ".md"
                if (strlen($navblog) >= 3 && substr($navblog, -3) == ".md") {
                    if ($getblog == "") { // Run when on main blog
                        if ($navblog != "main.md") { // excluding main blog
                            // creating navigation item
                            BlogListGenerator::listBlog(
                                "./blogs/", $navblog, $config["blog"]["title"]
                            );
                        }
                    } else {
                        // Check if $blog is current blog
                        // -> this blog will be excluded
                        if ($getblog . ".md" != $navblog) {
                            // creating navigation item
                            BlogListGenerator::listBlog(
                                "./blogs/", $navblog, $blogmaintitle
                            );
                        }
                    }
                }
            }
            echo "</section>";
        } elseif (isset($getarticle) || isset($gettag)) {
            // If viewing a blog or a tag
            ?>
            <!-- Set a back item instead of the blogs. -->
            <a class="nav-item" onclick="history.go(-1);">Go back</a>
            <?php
        }
        if ($config["blog"]["home"] == "on") { // If a blog home is existend
            ?>
            <div class="divider"></div>
            <a class="nav-item" href="<?php echo $config['blog']['homeurl']; ?>">
                <?php echo $config['blog']['homename']; ?>
            </a>
            <?php
        }
        if (file_exists("feed/" . $blog . ".atom")) { ?>
            <div class="divider"></div>
            <a class="nav-item" href=
            '<?php
                echo $feedurl;
        ?>'>Feed</a><?php
        }
        ?>
    </div> <!-- End of the navigation drawer-->
    <?php
} // Endif from line 97; Yes, I really should think about alternative syntax...

?>
<div class="main"> <!-- Main page with content -->
    <div class="header">
        <!--
        Action Bar, but since there isn't much action I call it header.
        One day a search feature would be nice...
        -->
        <!-- Ham,ham,hamburger-->
        <img src="./res/img/menu.svg" class="nav-img"/>
        <!-- Blog title with subblog title and links to each one-->
        <!-- link to main blog-->
        <nobr><span class="title"><a href="./"><?php echo $config["blog"]["title"]; ?>
                    <?php
                    if (empty($getblog)) { // if not on a subblog
                        if (!empty($config['blog']['mainname'])) {
                            // If you see a › (square) here : This is not a bug,
                            // but a missing sign in your font
                            echo "›" . $config['blog']['mainname'];
                        }
                    } else { // On subblog: set also a link to the subblog
                    ?>
                </a>
                            › <a href="<?php echo "./?blog=$getblog" ?>">
                    <?php
                        // get the blog name
                        echo BlogListGenerator::getName("./blogs/$getblog.md");
                    }
                    ?>
                </a>
                    </span>
        </nobr>
        <div class="fadeout"></div>
        <!--
        if the blog name is to long (especially on mobile devices), a fadeout
        fades the text out at the end of the header
        -->
    </div>
    <?php
    // Blog Intro text
    if (file_exists("blogs/$blog.md")
        && $getarticle == ""
        && $config["blog"]["intro"] == "on"
        && $gettag == ""
    ) {
        // only shown if not in article or tag view
        // and if the blogintro is enabled
        // get content of the blog file
        $file = file_get_contents("blogs/$blog.md");
        // add a line break. necessary if the editor didn't make
        // one while saving
        $file = $file . "\n";
        // basically removing the first line, which contains the blog title
        $file = substr($file, strpos($file, "\n"));
        if (strlen($file) > 3) { // if there is no content, don't show the intro
            ?>
            <section class="card" id="intro">
                <div class="articletext">
            <?php // generate the html text from the markdown file
            $intro = Parsedown::instance()
                ->setBreaksEnabled(true)// with linebreaks
                ->text($file);
            echo $intro; // PRINTS THE SH****
                    ?>
                </div>
            </section>
            <?php
        }
    }
    // TAG VIEW
    if (isset($gettag)) { // if there's a tag -> tag view
        // save the content of the directory in the articles variable
        $articles = scandir($articlesdir, 1);
        // iterate through all articles
        foreach ($articles as $article) {
            // get the article tags
            $tags = ArticleGenerator::getTags($articlesdir, $article);
            // if the article has the requested tag
            if (in_array($gettag, $tags)) {
                // check if the file is a article file
                if (strlen($article) >= 3 && substr($article, -3) == ".md") {
                    // generate the article
                    ArticleGenerator::newArticle(
                        $articlesdir, $article, $getblog
                    );
                }
            }
        }
    } elseif ($getarticle == "") {
        // NORMAL VIEW if there's no article request -> normal view
        // save the content of the directory in the articles variable
        $articles = scandir($articlesdir, 1);
        // iterate through this variable
        $posts_amount = 0;
        foreach ($articles as $article) {
            // check if the file is a article file
            if (strlen($article) >= 3 && substr($article, -3) == ".md") {
                // generate the article
                if ($config["design"]["pagination"]) {
                    if ($posts_amount < $pag_max && $posts_amount >= $pag_min) {
                        ArticleGenerator::newArticle(
                            $articlesdir, $article, $getblog
                        );
                    }
                } else {
                    ArticleGenerator::newArticle(
                        $articlesdir, $article, $getblog
                    );
                }
            }
            $posts_amount++;
        }
        if ($config["design"]["pagination"]) {
            include './res/php/Pagination.php';
        }
    } elseif (isset($getarticle)) { // ARTICLE VIEW
        // generate the requested article
        ArticleGenerator::newArticle(
            $articlesdir, $getarticle . ".md", $getblog
        );
        include './res/php/Disqus.php'; // include disques
    } else { // SOMETHING STRANGE: THIS SHOULDN'T HAPPEN
        echo "Some error occured, please go back.";
    }
    ?>
    <div class="footer">
        <?php echo $config["blog"]["footer"]; //print the blog footer?>
    </div>
    <?php
    // show the fab if it's enabled
    if ($config["design"]["fab"] == "on") {
        ?>
        <div class="fabmenu">
            <div class="subfab"><!--Email subfab-->
                <a href='mailto:?subject=<?php
                    echo $config["blog"]["title"];
                ?>&body=<?php
                    echo $BLOGLANG['Check out this blog'];
                ?>: <?php
                    echo $url;
                ?>' target="blank">
                    <img src="./res/img/email.svg" class="subfab-img"/>
                </a>
            </div>
            <div class="subfab"><!--twitter subfav-->
                <a href='https://twitter.com/intent/tweet?text=<?php
                    echo $BLOGLANG['Check out'];
                ?>: <?php
                    echo $url;
                ?>&original_referer=' target="blank">
                    <img src="./res/img/twitter.svg" class="subfab-img"/>
                </a>
            </div>
            <div class="subfab"><!--gplus subfab-->
                <a href='https://plus.google.com/share?url=<?php
                    echo $url;
                ?>&hl=en-US' target="blank">
                    <img src="./res/img/gplus.svg" class="subfab-img"/>
                </a>
            </div>
            <div class="subfab"><!--facebook subfab-->
                <a href='https://www.facebook.com/sharer/sharer.php?u=<?php
                    echo $url;
                ?>&t=<?php
                    echo "echo " . $config["blog"]["title"];
                ?>' target="blank">
                    <img src="./res/img/facebook.svg" class="subfab-img"/>
                </a>
            </div>
            <div class="fab"><!-- share fab-->
                <img src="./res/img/share.svg" class="fab-img" alt="Share"/>
            </div>
        </div>
        <?php
    }
    ?>
</div>
<script src="./res/js/jquery-2.1.4.min.js"></script> <!-- include jquery-->
<script src="./res/js/app.js"></script> <!--include main javascript-->
<!-- JS extension support -->
<?php
    if(file_exists("./extensions")) {
        $extensions = scandir('./extensions');
        foreach ($extensions as $extension) {
            if (substr($extension, -3) == ".js") {
                echo "<script src='./extensions/$extension'></script>";
            }
        }
    }
?>
<?php
require './res/php/GoogleAnalytics.php'; // include google analytics
?>
</body>
</html>