diff --git a/config.php b/config.php index 2558fb3..af390bf 100644 --- a/config.php +++ b/config.php @@ -1,6 +1,6 @@ + + PicoFeed + Example Blog + https://marcel-kapfer.de/rangitaki/blog/ + 2016-02-16T10:52:47+00:00 + + + + John + + https://marcel-kapfer.de/rangitaki/blog/ + + diff --git a/index.php b/index.php index b21bc7f..d22c4de 100644 --- a/index.php +++ b/index.php @@ -26,11 +26,13 @@ MIT License */ // Getting necessary php files date_default_timezone_set('UTC'); +require __DIR__ . '/vendor/autoload.php'; // loading composer libs + require 'config.php'; // Config file (this must be the first line) require './lang/' . $language . ".php"; // Language file -require_once 'res/php/Parsedown.php'; // The soul of the beast: Parsedown 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 @@ -86,11 +88,15 @@ if (isset($getarticle)) { } else { $hd_subblog_title = $subblogtitle; } + +// url of the feed +$feedurl = $blogurl . "/feed/" . $blog . ".atom"; + ?> - <?php echo $hd_subblog_title; ?> + <?php echo $blogtitle . " ยป " .$hd_subblog_title; ?> @@ -114,6 +120,17 @@ if (isset($getarticle)) { + + + '> + @@ -206,6 +223,13 @@ if ($nav_drawer == "yes") { +
+ '>Feed + * @license MIT License + * @link https://github.com/mmk2410/rangitaki + * + * The MIT License + * + * Copyright 2015 mmk2410. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +date_default_timezone_set('UTC'); + +require "../../vendor/autoload.php"; +require_once "../../config.php"; +require_once "../../res/php/ArticleGenerator.php"; +use PicoFeed\Syndication\Atom; + +session_start(); + +if ($_SESSION['login']) { + + $art_dir = "./../../articles/" . $_GET['blog'] . "/"; + $feed_path = "./../../feed/" . $_GET['blog'] . ".atom"; + + $writer = new Atom(); + + $writer->title = $blogtitle; + $writer->site_url = $blogurl; + $writer->feed_url = $blogurl . "/feed/feed.atom"; + $writer->author = array( + 'name' => $blogauthor, + 'url' => $blogurl, + 'email' => '' + ); + + $articles = scandir($art_dir, 1); + + $amount = 0; + + foreach ($articles as $article) { + if (strlen($article) >= 3 && substr($article, -3) == ".md") { + if ($amount == 10) { + break; + } else { + $writer->items[] = array( + 'title' => ArticleGenerator::getTitle($art_dir, $article), + 'updated' => strtotime( + ArticleGenerator::getDate($art_dir . $article) + ), + 'url' => $blogurl . "./?article=" . + substr($article, 0, strlen($article) - 3), + 'summary'=> ArticleGenerator::getSummary( + $art_dir, $articles + ), + 'content' => "

" . ArticleGenerator::getText( + $art_dir, $articles + ) . "

" + ); + $amount += 1; + } + } + } + + + $feed = $writer->execute(); + + $file = fopen($feed_path, "w"); + if (fwrite($file, $feed) === false) { + echo "-1"; + exit; + } + fclose($file); + echo "0"; +} +?> diff --git a/rcc/index.php b/rcc/index.php index f158887..9657df7 100644 --- a/rcc/index.php +++ b/rcc/index.php @@ -1,30 +1,14 @@ - + Rangitaki Control Center @@ -164,6 +148,23 @@ THE SOFTWARE. +
+
Atom Feed Generator
+

+ +

+ GENERATE +
@@ -182,8 +183,8 @@ THE SOFTWARE.
Rangitaki Control Center

- The Rangitaki Control Center is disabled. You can enable it in your config file. But please read first - the documentation. + The Rangitaki Control Center is disabled. You can enable it in + your config file. But please read first the documentation.

+ diff --git a/rcc/res/atom.js b/rcc/res/atom.js new file mode 100644 index 0000000..b5873c2 --- /dev/null +++ b/rcc/res/atom.js @@ -0,0 +1,28 @@ +/** + * Created by mmk2410 on 2016-02-16. + * + * JavaScript for the ajax request to generate a atom feed + * + * Copyright (c) 2016 by mmk2410 + * License: MIT License + */ + + +function main() { + // listener and function for calling the ajax request to create the + // requested atom feed + $("#generate_atom").click(function () { + var selectedBlog = $("#generate_atom_blog").val(); + $.get("feed/index.php", { + blog: selectedBlog + }, function (data) { + if (data == "0") { + alert("Atom feed sucessfully created."); + } else { + alert("Failed to create atom feed."); + } + }); + }); +} + +$(document).ready(main()); diff --git a/res/php/ArticleGenerator.php b/res/php/ArticleGenerator.php index 1fc5a96..86f4fa5 100644 --- a/res/php/ArticleGenerator.php +++ b/res/php/ArticleGenerator.php @@ -1,5 +1,15 @@ + * @license MIT License + * @link http://marcel-kapfer.de/rangitaki + * * Rangitaki Project * * The MIT License @@ -26,7 +36,8 @@ */ /** - * The article generator class is a collection of functions for generating the article of markdown + * The article generator class is a collection of functions for generating the + * article of markdown * * Since there is no initialize function, I recommend to use the short access syntay * @@ -42,9 +53,11 @@ class ArticleGenerator /** * A function to create one new article * - * @param string $directory The directory where the article files are stored - * @param string $articlefile The name of the article file - * @param string $blog The name of the current blog + * @param string $directory The directory where the article files are stored + * @param string $articlefile The name of the article file + * @param string $blog The name of the current blog + * + * @return Null */ function newArticle($directory, $articlefile, $blog) { @@ -172,6 +185,31 @@ class ArticleGenerator } } + + /** + * A function to get a short summary of a text + * + * @param $directory The directory where the article is stored + * @param $articlefile The name of the article file + * + * @return string + */ + static function getSummary($directory, $articlefile) + { + $text = getText($directory, $articlefile); + + $pos = stripos($text, "."); + + if ($pos) { + $offset = $pos + 1; + $pos = stripos($text, ".", $offset); + $summary = substr($text, 0, $pos) . "."; + return $summary; + } else { + return $text; + } + } + /** * A function to get the author of an article *