In this repo i store all my websites, each in a different branch
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

186 lines
4.3 KiB

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