<?php
							 | 
						|
								/**
							 | 
						|
								 * Created by PhpStorm.
							 | 
						|
								 * User: mhaaz
							 | 
						|
								 * Date: 11/24/2017
							 | 
						|
								 * Time: 11:02 AM
							 | 
						|
								 */
							 | 
						|
								use Michelf\Markdown;
							 | 
						|
								
							 | 
						|
								function limit_text($text, $limit) {
							 | 
						|
								    if (str_word_count($text, 0) > $limit) {
							 | 
						|
								        $words = str_word_count($text, 2);
							 | 
						|
								        $pos = array_keys($words);
							 | 
						|
								        $text = substr($text, 0, $pos[$limit]) . '...';
							 | 
						|
								    }
							 | 
						|
								    return $text;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* General Blog Functions */
							 | 
						|
								
							 | 
						|
								function get_post_names(){
							 | 
						|
								
							 | 
						|
								    static $_cache = array();
							 | 
						|
								
							 | 
						|
								    if(empty($_cache)){
							 | 
						|
								
							 | 
						|
								        // Get the names of all the
							 | 
						|
								        // posts (newest first):
							 | 
						|
								
							 | 
						|
								        $_cache = array_reverse(glob('posts/*.md'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return $_cache;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function get_posts($page = 1, $perpage = 0){
							 | 
						|
								
							 | 
						|
								    if($perpage == 0){
							 | 
						|
								        $perpage = 6;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    $posts = get_post_names();
							 | 
						|
								
							 | 
						|
								    // Extract a specific page with results
							 | 
						|
								    $posts = array_slice($posts, ($page-1) * $perpage, $perpage);
							 | 
						|
								
							 | 
						|
								    $tmp = array();
							 | 
						|
								
							 | 
						|
								    // Create a new instance of the markdown parser
							 | 
						|
								    $md = new Markdown();
							 | 
						|
								
							 | 
						|
								    foreach($posts as $k=>$v){
							 | 
						|
								
							 | 
						|
								        $post = new stdClass;
							 | 
						|
								
							 | 
						|
								        // Extract the date
							 | 
						|
								        $arr = explode('_', $v);
							 | 
						|
								        $post->date = strtotime(str_replace('posts/','',$arr[0]));
							 | 
						|
								
							 | 
						|
								        // The post URL
							 | 
						|
								        $post->url = '/'.date('Y/m', $post->date).'/'.str_replace('.md','',$arr[1]);
							 | 
						|
								
							 | 
						|
								        // Get the contents and convert it to HTML
							 | 
						|
								        $content = $md->defaultTransform(file_get_contents($v));
							 | 
						|
								
							 | 
						|
								        // Extract the title and body
							 | 
						|
								        $arr = explode('</h1>', $content);
							 | 
						|
								        $post->title = str_replace('<h1>','',$arr[0]);
							 | 
						|
								        $post->body = $arr[1];
							 | 
						|
								
							 | 
						|
								        $tmp[] = $post;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return $tmp;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function find_posts($page = 1, $perpage = 0){
							 | 
						|
								
							 | 
						|
								    if($perpage == 0){
							 | 
						|
								        $perpage = 3;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    $posts = get_post_names();
							 | 
						|
								
							 | 
						|
								    // Extract a specific page with results
							 | 
						|
								    $posts = array_slice($posts, ($page-1) * $perpage, $perpage);
							 | 
						|
								
							 | 
						|
								    $tmp = array();
							 | 
						|
								
							 | 
						|
								    // Create a new instance of the markdown parser
							 | 
						|
								    $md = new Markdown();
							 | 
						|
								
							 | 
						|
								    foreach($posts as $k=>$v){
							 | 
						|
								
							 | 
						|
								        $post = new stdClass;
							 | 
						|
								
							 | 
						|
								        // Extract the date
							 | 
						|
								        $arr = explode('_', $v);
							 | 
						|
								        $post->date = strtotime(str_replace('posts/','',$arr[0]));
							 | 
						|
								
							 | 
						|
								        // The post URL
							 | 
						|
								        $post->url = '/'.date('Y/m', $post->date).'/'.str_replace('.md','',$arr[1]);
							 | 
						|
								
							 | 
						|
								        // Get the contents and convert it to HTML
							 | 
						|
								        $content = $md->defaultTransform(file_get_contents($v));
							 | 
						|
								
							 | 
						|
								        // Extract the title and body
							 | 
						|
								        $arr = explode('</h1>', $content);
							 | 
						|
								        $post->title = str_replace('<h1>','',$arr[0]);
							 | 
						|
								        $post->body = limit_text(strip_tags($arr[1]),30);
							 | 
						|
								
							 | 
						|
								        $tmp[] = $post;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return $tmp;
							 | 
						|
								}
							 | 
						|
								function random_posts(){
							 | 
						|
								    $page = 1;
							 | 
						|
								    $perpage = 10;
							 | 
						|
								    $posts = get_post_names();
							 | 
						|
								    shuffle($posts);
							 | 
						|
								
							 | 
						|
								    // Extract a specific page with results
							 | 
						|
								    $posts = array_slice($posts, 4);
							 | 
						|
								    $tmp = array();
							 | 
						|
								
							 | 
						|
								    // Create a new instance of the markdown parser
							 | 
						|
								    $md = new Markdown();
							 | 
						|
								
							 | 
						|
								    foreach($posts as $k=>$v){
							 | 
						|
								
							 | 
						|
								        $post = new stdClass;
							 | 
						|
								
							 | 
						|
								        // Extract the date
							 | 
						|
								        $arr = explode('_', $v);
							 | 
						|
								        $post->date = strtotime(str_replace('posts/','',$arr[0]));
							 | 
						|
								
							 | 
						|
								        // The post URL
							 | 
						|
								        $post->url = '/'.date('Y/m', $post->date).'/'.str_replace('.md','',$arr[1]);
							 | 
						|
								
							 | 
						|
								        // Get the contents and convert it to HTML
							 | 
						|
								        $content = $md->defaultTransform(file_get_contents($v));
							 | 
						|
								
							 | 
						|
								        // Extract the title and body
							 | 
						|
								        $arr = explode('</h1>', $content);
							 | 
						|
								        $post->title = str_replace('<h1>','',$arr[0]);
							 | 
						|
								
							 | 
						|
								        $tmp[] = $post;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return $tmp;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// Find post by year, month and name
							 | 
						|
								function find_post($year, $month, $name){
							 | 
						|
								
							 | 
						|
								    foreach(get_post_names() as $index => $v){
							 | 
						|
								        if( strpos($v, "$year-$month") !== false && strpos($v, $name.'.md') !== false){
							 | 
						|
								
							 | 
						|
								            // Use the get_posts method to return
							 | 
						|
								            // a properly parsed object
							 | 
						|
								
							 | 
						|
								            $arr = get_posts($index+1,1);
							 | 
						|
								            return $arr[0];
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return false;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// Helper function to determine whether
							 | 
						|
								// to show the pagination buttons
							 | 
						|
								function has_pagination($page = 1){
							 | 
						|
								    $total = count(get_post_names());
							 | 
						|
								    $pages = ceil($total/3);
							 | 
						|
								
							 | 
						|
								    return array(
							 | 
						|
								        'pages'=> $pages
							 | 
						|
								    );
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								// Turn an array of posts into a JSON
							 | 
						|
								function generate_json($posts){
							 | 
						|
								    return json_encode($posts);
							 | 
						|
								}
							 |