|
|
- <?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);
- }
|