* @license MIT License * @link http://marcel-kapfer.de/rangitaki * * Rangitaki Project * * 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. */ /** * 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 * * @category Articles * @package RangitakiPHP * @author mmk2410 * @license MIT License * @link http://marcel-kapfer.de/rangitaki */ 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 * * @return Null */ function newArticle($directory, $articlefile, $blog, $excerpt, $readmore) { $article = file_get_contents($directory . $articlefile); // get the file echo "
"; if (substr($article, 0, 6) == "%TITLE") { // if a title is in the first line $title = substr($article, 8, strpos($article, "\n") - 8); // get this title if ($blog == "") { // if one main blog $link = "./?article=" . substr($articlefile, 0, -3); // create link to article } else { // if not on main blog $link = "./?blog=$blog&article=" . substr($articlefile, 0, -3); // create link to article at specific blog } echo "$title"; // print link (as a headline) $article = substr($article, strpos($article, "\n") + 1); // remove title tag from $article (the variable, not the document) } if (substr($article, 0, 5) == "%DATE") { // if now a date is in the first line $date = substr($article, 7, strpos($article, "\n") - 7); // get this date echo "$date"; // print the date $article = substr($article, strpos($article, "\n") + 1); // remove this line } if (substr($article, 0, 7) == "%AUTHOR") { // if a author is now in the first line $author = substr($article, 9, strpos($article, "\n") - 9); // get the author $article = substr($article, strpos($article, "\n") + 1); // remove the line } if (substr($article, 0, 5) == "%TAGS") { // if tags are now at the beginning $tags = substr($article, 7, strpos($article, "\n") - 7); // get tags $tags = explode(", ", $tags); // split them into an array $article = substr($article, strpos($article, "\n") + 1); // remove this line } echo "
"; // print only a excerpt of the post // with at least 200 characters if possible. if ( $excerpt == 'on' ) { $emptyline = strpos($article, "\n\n"); if ( $emptyline !== false ) { if ( $emptyline < 200) { $emptyline2 = strpos($article, "\n\n", $emptyline); if ( $emptyline2 !== false ) { $article = substr($article, 0, $emptyline2); } else { $article = substr($article, 0, $emptyline); } } else { $article = substr($article, 0, $emptyline); } } else { // correct $excerpt for use in line 127. $excerpt = 'off'; } } echo Parsedown::instance() ->setBreaksEnabled(true) ->text($article); // print now the article text as html echo "
"; if ( $excerpt == 'on' ) { echo ""; } if (isset($author)) { echo "$author"; // print the author } if (isset($tags)) { foreach ($tags as $tag) { $blogurl = filter_input(INPUT_GET, "blog"); if ($blogurl == "") { // on main blog. no ?blog= echo "$tag "; } else { // not on main blog echo "$tag "; } } } echo "
" . "\n"; } /** * A function to get an articles tags as an array * * @param string $directory The directory where the article files are stored * @param string $articlefile The name of the article file * @return array */ static function getTags($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); // get the article if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%DATE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 7) == "%AUTHOR") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%TAGS") { // detect the tags $tags = substr($article, 7, strpos($article, "\n") - 7); // get the tags $tags = explode(", ", $tags); // split them into an array } return $tags; // remove that array } /** * A function to get an article title as a string * * @param string $directory The directory where the article files are stored * @param string $articlefile The name of the article file * @return string */ static function getTitle($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); // get the article if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title $title = substr($article, 8, strpos($article, "\n") - 8); // get this title return $title; // remove that array } } /** * A function to get the date of an article * * @param $directory The directory where the article is stored * @param $articlefile The name of the article file * @return string */ static function getDate($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%DATE") { // detect and remove the title $date = substr($article, 7, strpos($article, "\n") - 7); return $date; } } /** * 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 = ArticleGenerator::getText($directory, $articlefile); $pos = stripos($text, "\n\n"); if ($pos !== false) { $offset = $pos; $pos = stripos($text, ".", $offset); $summary = substr($text, 0, $pos) . "."; return trim($summary); } else { return $text; } } /** * A function to get the author of an article * * @param $directory The directory where the article is stored * @param $articlefile The name of the article file * @return string */ static function getAuthor($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%DATE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 7) == "%AUTHOR") { // detect and remove the title $author = substr($article, 9, strpos($article, "\n") - 9); return $author; } } /** * A function to get the text of an article * * @param $directory The directory where the article is stored * @param $articlefile The name of the article file * @return string */ static function getText($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%DATE") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 7) == "%AUTHOR") { // detect and remove the title $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%TAGS") { // detect the tags $article = substr($article, strpos($article, "\n") + 1); // remove the tags } return $article; } /** * A function to get a array of the article * * @param $directory The directory where the article is stored * @param $articlefile The name of the article file * @return string */ public function getArray($directory, $articlefile) { $article = file_get_contents($directory . $articlefile); $title = ""; $date = ""; $author = ""; $tags = array(); if (substr($article, 0, 6) == "%TITLE") { // get and remove the title $title = substr($article, 8, strpos($article, "\n") - 8); $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%DATE") { // get and remove the title $date = substr($article, 7, strpos($article, "\n") - 7); $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 7) == "%AUTHOR") { // get and remove the title $author = substr($article, 9, strpos($article, "\n") - 9); $article = substr($article, strpos($article, "\n") + 1); } if (substr($article, 0, 5) == "%TAGS") { // get and remove the tags $tags = substr($article, 7, strpos($article, "\n") - 7); // get the tags $tags = explode(", ", $tags); // split them into an array $article = substr($article, strpos($article, "\n") + 1); } $data = array( "title" => $title, "date" => $date, "author" => $author, "tags" => $tags, "text" => $article ); return $data; } }