app/controllers/blog.php
<?php
/**
* blog controller
* generate blog pages.
*
* @author xero harrison <x@xero.nu>
* @copyright (cc) creative commons - attribution-shareAlike 3.0 unported
* @version 2.14
* @package app
* @subpackage controllers
*/
final class blog extends controller {
/**
* index function
* load the newest blog posts
*/
public function index() {
$page = 0;
if(isset(library::catalog()->url[2])) {
$page = (int)filter_var(library::catalog()->url[2], FILTER_SANITIZE_NUMBER_INT);
}
$content = $this->model("blogModel");
$count = $content->getTotalPostCount();
$limit = library::catalog()->posts_per_page;
$offset = ($page == 0) ? 0 : (($page * $limit) - $limit);
if($page == 0) {
$page++;
}
$total = ceil($count[0]["total"] / $limit);
$posts = $content->getPosts($offset, $limit);
// --- create html array for rendering
$html = array();
$html["selected"] = 'blog';
$html["body"] = '';
$html["script"] = ' SyntaxHighlighter.defaults.toolbar = false;'.PHP_EOL.' SyntaxHighlighter.all();'.PHP_EOL;
$html["script"].= $this->view('initShadowboxJS', array(), true);
$html['jsfiles'] = '<script type="text/javascript" src="'.BASE_URL.'style/js/syntaxHighlighter.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-core-css" href="'.BASE_URL.'style/css/shCoreDefault.css" media="all"/>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-default-css" href="'.BASE_URL.'style/css/shThemeDefault.css" media="all"/>'.PHP_EOL.' <script type="text/javascript" src="'.BASE_URL.'style/js/shadowbox.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="shadow-css" href="'.BASE_URL.'style/css/shadowbox.css" media="screen"/>'.PHP_EOL;
$html["title"] = ($page > 1) ? 'blog page '.$page : 'blog';
$html["sidebar"] = '';
$html["comments"] = false;
$html["canonicalNow"] = ($page == 1) ? '' : 'all posts page : '.$page;
$html["canonicalBack"] = ($page > 1) ? '<a href="'.QOOB_DOMAIN.'blog/page/'.($page-1).'">< < next posts</a>' : '';
$html["canonicalNext"] = ($page == $total) ? '' : '<a href="'.QOOB_DOMAIN.'blog/page/'.($page+1).'">previous posts > > </a>';
$canonicalStartTitle = 'all posts page 1';
$canonicalStartURL = QOOB_DOMAIN.'blog/page/1';
$canonicalBackTitle = 'all posts page '.($page-1);
$canonicalBackURL = ($page > 1) ? QOOB_DOMAIN.'blog/page/'.($page-1) : '';
$canonicalNextTitle = 'all posts page '.($page+1);
$canonicalNextURL = ($page == $total) ? '' : QOOB_DOMAIN.'blog/page/'.($page+1);
$canonicalURL = QOOB_DOMAIN.'blog/page/'.$page;
$html["meta"] = "<link rel='index' title='".QOOB_DOMAIN."blog' href='".QOOB_DOMAIN."blog/' />".PHP_EOL;
$html["meta"].= " <link rel='canonical' href='$canonicalURL' />".PHP_EOL;
$html["meta"].= " <link rel='start' title='$canonicalStartTitle' href='$canonicalStartURL' />".PHP_EOL;
if($canonicalBackURL != '') {
$html["meta"].= " <link rel='prev' title='$canonicalBackTitle' href='$canonicalBackURL' />".PHP_EOL;
}
if($canonicalNextURL != '') {
$html["meta"].= " <link rel='next' title='$canonicalNextTitle' href='$canonicalNextURL' />".PHP_EOL;
}
// --- display page
if(isset($posts[0])) {
for ($i=0; $i<count($posts);$i++) {
$cats = $content->getPostCats($posts[$i]["post_id"]);
$tags = $content->getPostTags($posts[$i]["post_id"]);
if(isset($cats[0])) {
$id = (int)$cats[0]["blog_cat_id"];
$cat = $content->getCatByID($id);
$mainCat = isset($cat[0]) ? $cat[0]["url"] : "uncategorized";
} else {
$mainCat = "uncategorized";
}
$catlist = '';
if(is_array($cats)) {
for ($x = 0; $x < count($cats); $x++) {
$id = (int)$cats[$x]["blog_cat_id"];
if($id != $cats[$x]["blog_cat_id"]) {
$cat = $content->getCatByID($id);
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/" title="view all posts in: '.$cat[0]["name"].'">'.$cat[0]["name"].'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
} else {
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
}
if($x < count($cats)-1) {
$catlist.= ', ';
}
}
}
$taglist = '';
if(is_array($tags)) {
for ($x = 0; $x < count($tags); $x++) {
$taglist.= '<a href="'.QOOB_DOMAIN.'blog/tag/'.$tags[$x]["url"].'" rel="tag">'.$tags[$x]["name"].'</a>';
if($x < count($tags)-1) {
$taglist.= ', ';
}
}
}
$meta = array(
"day" => date("d", $posts[$i]["date"]),
"month" => date("M", $posts[$i]["date"]),
"year" => date("Y", $posts[$i]["date"]),
"cats" => ($catlist == '') ? $mainCat : $catlist,
"tags" => $taglist,
"comments" => $posts[$i]["comments"],
"trackbacks" => "0"
);
$metabox = $this->view("blog/post_meta", $meta, true);
$excerptContent = html_entity_decode($posts[$i]["excerpt"]);
if($posts[$i]["excerpt"] != $posts[$i]["content"]) {
$excerptContent.= '<a class="more" href="'.QOOB_DOMAIN.'blog/'.$posts[$i]["url"].'"><strong>Read:</strong> '.$posts[$i]["title"].' »</a>';
}
$post = array(
'mainCat' => $mainCat,
'url' => 'blog/'.$posts[$i]["url"],
'title' => $posts[$i]["title"],
'subtitle' => $posts[$i]["subtitle"],
'content' => $excerptContent.$metabox,
'comments' => 0
);
$html["body"] .= $this->view("post", $post, true).'<br class="clear" />';
}
$this->library(qoob_types::utility, "paging");
$this->paging->init(array("base_url" => QOOB_DOMAIN."blog/page/",
"total_rows" => $count[0]["total"],
"per_page" => $limit,
"cur_page" => $page,
"num_tag_open" => '<div class="page">',
"num_tag_close" => "</div>",
"cur_tag_open" => '<div class="cur_page">',
"cur_tag_close" => "</div>",
"next_tag_open" => '<div class="next_page">',
"next_tag_close" => "</div>",
"prev_tag_open" => '<div class="prev_page">',
"prev_tag_close" => "</div>",
"first_tag_open" => '<div class="first_page">',
"first_tag_close" => "</div>",
"last_tag_open" => '<div class="last_page">',
"last_tag_close" => "</div>",
"full_tag_open" => '<div id="paging">',
"full_tag_close" => "</div>"));
$html["body"] .= $this->paging->render().'<br class="clear"/><br/>';
//---sidebar
//tag cloud
$tags = $content->getTags();
$this->library(qoob_types::utility, "cloud");
$this->cloud->setMax(175);
$this->cloud->setMin(80);
$cloud = array(
"tags" => $this->cloud->make($tags, QOOB_DOMAIN.'blog/tag/')
);
$html["sidebar"].= $this->view("blog/sidebar_tags", $cloud, true);
//categories
$html["sidebar"].= $this->view("blog/sidebar_categories", array(), true);
//qr code
$html["sidebar"].= $this->view("blog/sidebar_qr", array(), true);
//feeds
$feeds = array(
"showNewest" => true,
"showCat" => false,
"cat" => '',
"showTag" => false,
"tag" => '',
"showComments" => false,
"post" => '',
);
$html["sidebar"].= $this->view("blog/sidebar_feeds", $feeds, true);
// --- no posts
} else {
$html["sidebar"].= $this->view("blog/sidebar_qr", array(), true);
$post = array(
'mainCat' => '',
'url' => '',
'title' => "Blog",
'subtitle' => "",
'content' => "no posts found",
'comments' => 0
);
$html["body"] .= $this->view("post", $post, true).'<br class="clear" />';
}
$this->view("pixelgraff", $html);
}
/**
* category function
* load the blog posts by category/subcategory
*/
public function category() {
$page = 0;
$catid = 0;
$subid = 0;
if(isset(library::catalog()->url[0])) {
$routes = $this->model("blogModel");
$result = $routes->checkCategory(library::catalog()->url[1]);
if (count($result) > 0) {
$catName = $result[0]['name'];
$catURL = $result[0]['url'];
$catid = $result[0]['blog_cat_id'];
}
if(isset(library::catalog()->url[2])) {
if(library::catalog()->url[2] == 'page') {
if(isset(library::catalog()->url[3])) {
$page = (int)filter_var(library::catalog()->url[3], FILTER_SANITIZE_NUMBER_INT);
}
} else {
$result = $routes->checkSubCategory($catid, library::catalog()->url[2]);
if (count($result) > 0) {
$subName = $result[0]['name'];
$subURL = $result[0]['url'];
$subid = $result[0]['blog_cat_id'];
} else {
throw new Exception("invalid sub-category", statusCodes::HTTP_NOT_FOUND);
}
}
}
if(isset(library::catalog()->url[3])) {
if(library::catalog()->url[3] == 'page') {
if(isset(library::catalog()->url[4])) {
$page = (int)filter_var(library::catalog()->url[4], FILTER_SANITIZE_NUMBER_INT);
}
}
}
$content = $this->model("blogModel");
$limit = library::catalog()->posts_per_page;
$offset = ($page == 0) ? 0 : (($page * $limit) - $limit);
if($page == 0) {
$page++;
}
if($subid > 0) {
$posts = $content->getPostsBySubCat($subid, $offset, $limit);
$count = $content->getSubCatPostCount($subid);
$url = QOOB_DOMAIN.'blog/'.library::catalog()->url[1].'/'.library::catalog()->url[2].'/';
} else {
$posts = $content->getPostsByCat($catid, $offset, $limit);
$count = $content->getCatPostCount($catid);
$url = QOOB_DOMAIN.'blog/'.library::catalog()->url[1].'/';
}
$total = ceil($count[0]["total"] / $limit);
// --- create html array for rendering
$html = array();
$html["selected"] = 'blog';
$html["body"] = '';
$html["script"] = ' SyntaxHighlighter.defaults.toolbar = false;'.PHP_EOL.' SyntaxHighlighter.all();'.PHP_EOL;
$html["script"].= $this->view('initShadowboxJS', array(), true);
$html['jsfiles'] = '<script type="text/javascript" src="'.BASE_URL.'style/js/syntaxHighlighter.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-core-css" href="'.BASE_URL.'style/css/shCoreDefault.css" media="all"/>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-default-css" href="'.BASE_URL.'style/css/shThemeDefault.css" media="all"/>'.PHP_EOL.' <script type="text/javascript" src="'.BASE_URL.'style/js/shadowbox.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="shadow-css" href="'.BASE_URL.'style/css/shadowbox.css" media="screen"/>'.PHP_EOL;
$html["sidebar"] = '';
$html["title"] = ($subid > 0) ? 'blog/categories/'.$catName.'/'.$subName.'/' : 'blog/category/'.$catName.'/';
$html["title"].= ($page > 1) ? 'page '.$page : '';
$html["comments"] = false;
$html["canonicalNow"] = ($subid > 0) ? 'category: <a href="'.QOOB_DOMAIN.'blog/'.$catURL.'">'.$catName.'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$catURL.'/'.$subURL.'">'.$subName.'</a>' : 'category: <a href="'.QOOB_DOMAIN.'blog/'.$catURL.'">'.$catName.'</a>';
$html["canonicalBack"] = ($page > 1) ? '<a href="'.$url.'page/'.($page-1).'">< < next posts</a>' : '';
$html["canonicalNext"] = ($page == $total) ? '' : '<a href="'.$url.'page/'.($page+1).'">previous posts > > </a>';
$canonicalStartTitle = 'posts from the category: ';
$canonicalStartTitle .= ($subid > 0) ? $catName.' - '.$subName.' page 1' : $catName.' page 1';
$canonicalStartURL = $url.'page/1';
$canonicalBackTitle = 'posts from the category: ';
$canonicalBackTitle .= ($subid > 0) ? $catName.' - '.$subName.' page '.($page-1) : $catName.' page '.($page-1);
$canonicalBackURL = ($page > 1) ? $url.'page/'.($page-1) : '';
$canonicalNextTitle = 'posts from the category: ';
$canonicalNextTitle = ($subid > 0) ? $catName.' - '.$subName.' page '.($page+1) : $catName.' page '.($page+1);
$canonicalNextURL = ($page == $total) ? '' : $url.'page/'.($page+1);
$canonicalURL = $url.'page/'.$page;
$html["meta"] = "<link rel='index' title='".QOOB_DOMAIN."blog' href='".QOOB_DOMAIN."blog/' />".PHP_EOL;
$html["meta"].= " <link rel='canonical' href='$canonicalURL' />".PHP_EOL;
$html["meta"].= " <link rel='start' title='$canonicalStartTitle' href='$canonicalStartURL' />".PHP_EOL;
if($canonicalBackURL != '') {
$html["meta"].= " <link rel='prev' title='$canonicalBackTitle' href='$canonicalBackURL' />".PHP_EOL;
}
if($canonicalNextURL != '') {
$html["meta"].= " <link rel='next' title='$canonicalNextTitle' href='$canonicalNextURL' />".PHP_EOL;
}
// --- display page
if(isset($posts[0])) {
for ($i=0; $i<count($posts);$i++) {
$cats = $content->getPostCats($posts[$i]["post_id"]);
$tags = $content->getPostTags($posts[$i]["post_id"]);
if(isset($cats[0])) {
$id = (int)$cats[0]["blog_cat_id"];
$cat = $content->getCatByID($id);
$mainCat = isset($cat[0]) ? $cat[0]["url"] : "uncategorized";
} else {
$mainCat = "uncategorized";
}
$catlist = '';
if(is_array($cats)) {
for ($x = 0; $x < count($cats); $x++) {
$id = (int)$cats[$x]["blog_cat_id"];
if($id != $cats[$x]["blog_cat_id"]) {
$cat = $content->getCatByID($id);
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/" title="view all posts in: '.$cat[0]["name"].'">'.$cat[0]["name"].'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
} else {
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
}
if($x < count($cats)-1) {
$catlist.= ', ';
}
}
}
$taglist = '';
if(is_array($tags)) {
for ($x = 0; $x < count($tags); $x++) {
$taglist.= '<a href="'.QOOB_DOMAIN.'blog/tag/'.$tags[$x]["url"].'" rel="tag">'.$tags[$x]["name"].'</a>';
if($x < count($tags)-1) {
$taglist.= ', ';
}
}
}
$meta = array(
"day" => date("d", $posts[$i]["date"]),
"month" => date("M", $posts[$i]["date"]),
"year" => date("Y", $posts[$i]["date"]),
"cats" => ($catlist == '') ? $mainCat : $catlist,
"tags" => $taglist,
"comments" => $posts[$i]["comments"],
"trackbacks" => "0"
);
$metabox = $this->view("blog/post_meta", $meta, true);
$excerptContent = html_entity_decode($posts[$i]["excerpt"]);
if($posts[$i]["excerpt"] != $posts[$i]["content"]) {
$excerptContent.= '<a class="more" href="'.QOOB_DOMAIN.'blog/'.$posts[$i]["url"].'"><strong>Read:</strong> '.$posts[$i]["title"].' »</a>';
}
$post = array(
'mainCat' => $mainCat,
'url' => 'blog/'.$posts[$i]["url"],
'title' => $posts[$i]["title"],
'subtitle' => $posts[$i]["subtitle"],
'content' => $excerptContent.$metabox,
'comments' => 0
);
$html["body"] .= $this->view("post", $post, true).'<br class="clear" />';
}
$this->library(qoob_types::utility, "paging");
$this->paging->init(array("base_url" => $url."page/",
"total_rows" => $count[0]["total"],
"per_page" => $limit,
"cur_page" => $page,
"num_tag_open" => '<div class="page">',
"num_tag_close" => "</div>",
"cur_tag_open" => '<div class="cur_page">',
"cur_tag_close" => "</div>",
"next_tag_open" => '<div class="next_page">',
"next_tag_close" => "</div>",
"prev_tag_open" => '<div class="prev_page">',
"prev_tag_close" => "</div>",
"first_tag_open" => '<div class="first_page">',
"first_tag_close" => "</div>",
"last_tag_open" => '<div class="last_page">',
"last_tag_close" => "</div>",
"full_tag_open" => '<div id="paging">',
"full_tag_close" => "</div>"));
$html["body"] .= $this->paging->render().'<br class="clear"/><br/>';
//---sidebar
//tag cloud
$tags = $content->getTags();
$this->library(qoob_types::utility, "cloud");
$this->cloud->setMax(175);
$this->cloud->setMin(80);
$cloud = array(
"tags" => $this->cloud->make($tags, QOOB_DOMAIN.'blog/tag/')
);
$html["sidebar"].= $this->view("blog/sidebar_tags", $cloud, true);
//categories
$html["sidebar"].= $this->view("blog/sidebar_categories", array(), true);
//qr code
$html["sidebar"].= $this->view("blog/sidebar_qr", array(), true);
//feeds
$feeds = array(
"showNewest" => true,
"showCat" => true,
"cat" => $subid > 0 ? $subURL : $catURL,
"showTag" => false,
"tag" => '',
"showComments" => false,
"post" => '',
);
$html["sidebar"].= $this->view("blog/sidebar_feeds", $feeds, true);
$this->view("pixelgraff", $html);
} else {
throw new Exception("no posts found", statusCodes::HTTP_NOT_FOUND);
}
} else {
throw new Exception("invalid category", statusCodes::HTTP_NOT_FOUND);
}
}
/**
* tag function
* load the blog posts by tag
*/
public function tag() {
$tag = library::catalog()->url[2];
$content = $this->model("blogModel");
$tid = $content->checkTag($tag);
if(isset($tid[0])) {
$name = $tid[0]["name"];
$tid = $tid[0]["tag_id"];
$page = 0;
if(isset(library::catalog()->url[3]) && isset(library::catalog()->url[4])) {
if(library::catalog()->url[3] == 'page') {
$page = (int)filter_var(library::catalog()->url[4], FILTER_SANITIZE_NUMBER_INT);
}
}
$limit = library::catalog()->posts_per_page;
$offset = ($page == 0) ? 0 : (($page * $limit) - $limit);
if($page == 0) {
$page++;
}
$count = $content->getTagPostCount($tid);
$total = ceil($count[0]["total"] / $limit);
$posts = $content->getPostsByTag($tid, $offset, $limit);
// --- create html array for rendering
$html = array();
$html["selected"] = 'blog';
$html["body"] = '';
$html["script"] = ' SyntaxHighlighter.defaults.toolbar = false;'.PHP_EOL.' SyntaxHighlighter.all();'.PHP_EOL;
$html["script"].= $this->view('initShadowboxJS', array(), true);
$html['jsfiles'] = '<script type="text/javascript" src="'.BASE_URL.'style/js/syntaxHighlighter.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-core-css" href="'.BASE_URL.'style/css/shCoreDefault.css" media="all"/>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-default-css" href="'.BASE_URL.'style/css/shThemeDefault.css" media="all"/>'.PHP_EOL.' <script type="text/javascript" src="'.BASE_URL.'style/js/shadowbox.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="shadow-css" href="'.BASE_URL.'style/css/shadowbox.css" media="screen"/>'.PHP_EOL;
$html["sidebar"] = '';
$html["title"] = ($page > 1) ? 'blog/tag/'.$tag.'/page '.$page : 'blog/tag/'.$tag;
$html["comments"] = false;
$html["canonicalNow"] = 'tag : <a href="'.QOOB_DOMAIN.'blog/'.'tag/'.$tag.'">'.$name.'</a>';
$html["canonicalBack"] = ($page > 1) ? '<a href="'.QOOB_DOMAIN.'blog/tag/'.$tag.'/page/'.($page-1).'">< < next posts</a>' : '';
$html["canonicalNext"] = ($page == $total) ? '' : '<a href="'.QOOB_DOMAIN.'blog/tag/'.$tag.'/page/'.($page+1).'">previous posts > > </a>';
$canonicalStartTitle = 'posts tagged: '.$tag.' page 1';
$canonicalStartURL = QOOB_DOMAIN.'blog/tag/'.$tag.'/page/1';
$canonicalBackTitle = 'posts tagged: '.$tag.' page '.($page-1);
$canonicalBackURL = ($page > 1) ? QOOB_DOMAIN.'blog/tag/'.$tag.'/page/'.($page-1) : '';
$canonicalNextTitle = 'posts tagged: '.$tag.' page '.($page+1);
$canonicalNextURL = ($page == $total) ? '' : QOOB_DOMAIN.'blog/tag/'.$tag.'/page/'.($page+1);
$canonicalURL = QOOB_DOMAIN.'blog/tag/'.$tag.'/page/'.$page;
$html["meta"] = "<link rel='index' title='".QOOB_DOMAIN."blog' href='".QOOB_DOMAIN."blog/' />".PHP_EOL;
$html["meta"].= " <link rel='canonical' href='$canonicalURL' />".PHP_EOL;
$html["meta"].= " <link rel='start' title='$canonicalStartTitle' href='$canonicalStartURL' />".PHP_EOL;
if($canonicalBackURL != '') {
$html["meta"].= " <link rel='prev' title='$canonicalBackTitle' href='$canonicalBackURL' />".PHP_EOL;
}
if($canonicalNextURL != '') {
$html["meta"].= " <link rel='next' title='$canonicalNextTitle' href='$canonicalNextURL' />".PHP_EOL;
}
for ($i=0; $i<count($posts);$i++) {
$cats = $content->getPostCats($posts[$i]["post_id"]);
$tags = $content->getPostTags($posts[$i]["post_id"]);
if(isset($cats[0])) {
$id = (int)$cats[0]["blog_cat_id"];
$cat = $content->getCatByID($id);
$mainCat = isset($cat[0]) ? $cat[0]["url"] : "uncategorized";
} else {
$mainCat = "uncategorized";
}
$catlist = '';
if(is_array($cats)) {
for ($x = 0; $x < count($cats); $x++) {
$id = (int)$cats[$x]["blog_cat_id"];
if($id != $cats[$x]["blog_cat_id"]) {
$cat = $content->getCatByID($id);
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/" title="view all posts in: '.$cat[0]["name"].'">'.$cat[0]["name"].'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
} else {
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
}
if($x < count($cats)-1) {
$catlist.= ', ';
}
}
}
$taglist = '';
if(is_array($tags)) {
for ($x = 0; $x < count($tags); $x++) {
$taglist.= '<a href="'.QOOB_DOMAIN.'blog/tag/'.$tags[$x]["url"].'" rel="tag">'.$tags[$x]["name"].'</a>';
if($x < count($tags)-1) {
$taglist.= ', ';
}
}
}
$meta = array(
"day" => date("d", $posts[$i]["date"]),
"month" => date("M", $posts[$i]["date"]),
"year" => date("Y", $posts[$i]["date"]),
"cats" => ($catlist == '') ? $mainCat : $catlist,
"tags" => $taglist,
"comments" => $posts[$i]["comments"],
"trackbacks" => "0"
);
$metabox = $this->view("blog/post_meta", $meta, true);
$excerptContent = html_entity_decode($posts[$i]["excerpt"]);
if($posts[$i]["excerpt"] != $posts[$i]["content"]) {
$excerptContent.= '<a class="more" href="'.QOOB_DOMAIN.'blog/'.$posts[$i]["url"].'"><strong>Read:</strong> '.$posts[$i]["title"].' »</a>';
}
$post = array(
'mainCat' => $mainCat,
'url' => 'blog/'.$posts[$i]["url"],
'title' => $posts[$i]["title"],
'subtitle' => $posts[$i]["subtitle"],
'content' => $excerptContent.$metabox,
'comments' => 0
);
$html["body"] .= $this->view("post", $post, true).'<br class="clear" />';
}
$url = QOOB_DOMAIN.'blog/tag/'.library::catalog()->url[2].'/';
$this->library(qoob_types::utility, "paging");
$this->paging->init(array("base_url" => $url."page/",
"total_rows" => $count[0]["total"],
"per_page" => $limit,
"cur_page" => $page,
"num_tag_open" => '<div class="page">',
"num_tag_close" => "</div>",
"cur_tag_open" => '<div class="cur_page">',
"cur_tag_close" => "</div>",
"next_tag_open" => '<div class="next_page">',
"next_tag_close" => "</div>",
"prev_tag_open" => '<div class="prev_page">',
"prev_tag_close" => "</div>",
"first_tag_open" => '<div class="first_page">',
"first_tag_close" => "</div>",
"last_tag_open" => '<div class="last_page">',
"last_tag_close" => "</div>",
"full_tag_open" => '<div id="paging">',
"full_tag_close" => "</div>"));
$html["body"] .= $this->paging->render().'<br class="clear"/><br/>';
//---sidebar
//tag cloud
$tags = $content->getTags();
$this->library(qoob_types::utility, "cloud");
$this->cloud->setMax(175);
$this->cloud->setMin(80);
$cloud = array(
"tags" => $this->cloud->make($tags, QOOB_DOMAIN.'blog/tag/', $tag),
);
$html["sidebar"].= $this->view("blog/sidebar_tags", $cloud, true);
//categories
$html["sidebar"].= $this->view("blog/sidebar_categories", array(), true);
//qr code
$html["sidebar"].= $this->view("blog/sidebar_qr", array(), true);
//feeds
$feeds = array(
"showNewest" => true,
"showCat" => false,
"cat" => '',
"showTag" => true,
"tag" => $tag,
"showComments" => false,
"post" => '',
);
$html["sidebar"].= $this->view("blog/sidebar_feeds", $feeds, true);
$this->view("pixelgraff", $html);
} else {
throw new Exception("tag not found", statusCodes::HTTP_NOT_FOUND);
}
}
/**
* post function
* load an individual blog posts
*/
public function post() {
$content = $this->model("blogModel");
$posts = $content->getPostByURL(library::catalog()->url[1]);
// --- create html array for rendering
$html = array();
$html["selected"] = 'blog';
$html["body"] = '';
$html["script"] = ' SyntaxHighlighter.defaults.toolbar = false;'.PHP_EOL.' SyntaxHighlighter.all();'.PHP_EOL;
$html["script"].= $this->view('initShadowboxJS', array(), true);
$html['jsfiles'] = '<script type="text/javascript" src="'.BASE_URL.'style/js/syntaxHighlighter.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-core-css" href="'.BASE_URL.'style/css/shCoreDefault.css" media="all"/>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="syntax-default-css" href="'.BASE_URL.'style/css/shThemeDefault.css" media="all"/>'.PHP_EOL.' <script type="text/javascript" src="'.BASE_URL.'style/js/shadowbox.js" charset="utf-8"></script>'.PHP_EOL.' <link rel="stylesheet" type="text/css" id="shadow-css" href="'.BASE_URL.'style/css/shadowbox.css" media="screen"/>'.PHP_EOL;
$html["sidebar"] = '';
$html["title"] = '';
$html["comments"] = true;
$html["canonicalBack"] = '';
$html["canonicalNow"] = '';
$html["canonicalNext"] = '';
// --- display page
if(isset($posts[0])) {
$cats = $content->getPostCats($posts[0]["post_id"]);
$tags = $content->getPostTags($posts[0]["post_id"]);
$html["title"] = 'blog/'.strip_tags($posts[0]["title"]);
if(isset($cats[0])) {
$id = (int)$cats[0]["blog_cat_id"];
$cat = $content->getCatByID($id);
$mainCat = isset($cat[0]) ? $cat[0]["url"] : "uncategorized";
$mainCatName = isset($cat[0]) ? $cat[0]["name"] : "uncategorized";
} else {
$mainCat = "uncategorized";
}
$first = $content->getFirstPost();
$prev = $content->getPrevPost($posts[0]["date"]);
$next = $content->getNextPost($posts[0]["date"]);
$html["canonicalNext"] = isset($prev[0]) ? '<a href="'.QOOB_DOMAIN.'blog/'.$prev[0]["url"].'">previous post > ></a>' : '';
$html["canonicalBack"] = isset($next[0]) ? '<a href="'.QOOB_DOMAIN.'blog/'.$next[0]["url"].'">< < next post </a>' : '';
$html["canonicalNow"] = '<a href="'.QOOB_DOMAIN.'blog/'.$mainCat.'">'.$mainCatName.'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$posts[0]["url"].'">'.$posts[0]["title"].'</a>';
$canonicalStartTitle = isset($first[0]) ? $first[0]["title"] : '';
$canonicalStartURL = isset($first[0]) ? QOOB_DOMAIN.'blog/'.$first[0]["url"] : '';
$canonicalURL = QOOB_DOMAIN.'blog/'.$posts[0]["url"];
$canonicalNextTitle = isset($next[0]) ? $next[0]["title"] : '';
$canonicalNextURL = isset($next[0]) ? QOOB_DOMAIN.'blog/'.$next[0]["url"] : '';
$canonicalBackTitle = isset($prev[0])? $prev[0]["title"] : '';
$canonicalBackURL = isset($prev[0]) ? QOOB_DOMAIN.'blog/'.$prev[0]["url"] : '';
$html["meta"] = "<link rel='index' title='".QOOB_DOMAIN."blog' href='".QOOB_DOMAIN."blog/' />".PHP_EOL;
$html["meta"].= " <link rel='canonical' href='$canonicalURL' />".PHP_EOL;
$html["meta"].= " <link rel='start' title='$canonicalStartTitle' href='$canonicalStartURL' />".PHP_EOL;
if($canonicalBackURL != '') {
$html["meta"].= " <link rel='prev' title='$canonicalBackTitle' href='$canonicalBackURL' />".PHP_EOL;
}
if($canonicalNextURL != '') {
$html["meta"].= " <link rel='next' title='$canonicalNextTitle' href='$canonicalNextURL' />".PHP_EOL;
}
$catlist = '';
if(is_array($cats)) {
for ($x = 0; $x < count($cats); $x++) {
$id = (int)$cats[$x]["blog_cat_id"];
if($id != $cats[$x]["blog_cat_id"]) {
$cat = $content->getCatByID($id);
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/" title="view all posts in: '.$cat[0]["name"].'">'.$cat[0]["name"].'</a> / <a href="'.QOOB_DOMAIN.'blog/'.$cat[0]["url"].'/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
} else {
$catlist.= '<a href="'.QOOB_DOMAIN.'blog/'.$cats[$x]["url"].'/" title="view all posts in: '.$cats[$x]["name"].'">'.$cats[$x]["name"].'</a>';
}
if($x < count($cats)-1) {
$catlist.= ', ';
}
}
}
$taglist = '';
if(is_array($tags)) {
for ($x = 0; $x < count($tags); $x++) {
$taglist.= '<a href="'.QOOB_DOMAIN.'blog/'.'tag/'.$tags[$x]["url"].'" rel="tag">'.$tags[$x]["name"].'</a>';
if($x < count($tags)-1) {
$taglist.= ', ';
}
}
}
$summary = strip_tags($posts[0]["title"].' : '.$posts[0]["subtitle"].'. posted in the categories: '.str_replace(' / ', ', ', $catlist).' and tagged: '.$taglist.'.');
//---post meta
$meta = array(
"day" => date("d", $posts[0]["date"]),
"month" => date("M", $posts[0]["date"]),
"year" => date("Y", $posts[0]["date"]),
"cats" => ($catlist == '') ? $mainCat : $catlist,
"tags" => $taglist,
"comments" => $posts[0]["comments"],
"trackbacks" => "0"
);
$metabox = $this->view("blog/post_meta", $meta, true);
//---post body
$post = array(
'mainCat' => $mainCat,
'url' => 'blog/'.$posts[0]["url"],
'title' => $posts[0]["title"],
'subtitle' => $posts[0]["subtitle"],
'content' => html_entity_decode($posts[0]["content"]).$metabox,
'comments' => 0
);
$html["body"] = $this->view("post", $post, true);
//---sidebar
//meta
$smeta = array(
"title" => '<a href="'.QOOB_DOMAIN.'blog/'.$posts[0]["url"].'">'.$posts[0]["title"].'</a>',
"date" => strtolower(date("l F jS o", $posts[0]["date"])).' at '.date("g:i a", $posts[0]["date"]),
"cats" => ($catlist == '') ? $mainCat : $catlist,
"tags" => $taglist,
"comments" => $posts[0]["comments"]
);
$html["sidebar"].= $this->view("blog/sidebar_meta", $smeta, true);
//tag cloud
$tags = $content->getTags();
$this->library(qoob_types::utility, "cloud");
$this->cloud->setMax(175);
$this->cloud->setMin(80);
$cloud = array(
"tags" => $this->cloud->make($tags, QOOB_DOMAIN.'blog/tag/')
);
$html["sidebar"].= $this->view("blog/sidebar_tags", $cloud, true);
//categories
$html["sidebar"].= $this->view("blog/sidebar_categories", array(), true);
//qr code
$html["sidebar"].= $this->view("blog/sidebar_qr", array(), true);
//feeds
$feeds = array(
"showNewest" => true,
"showCat" => true,
"cat" => $mainCat,
"showTag" => false,
"tag" => '',
"showComments" => $posts[0]["comments"] == 0 ? false : true,
"post" => $posts[0]["url"],
);
$html["sidebar"].= $this->view("blog/sidebar_feeds", $feeds, true);
// --- display 404
} else {
throw new Exception("invalid url", statusCodes::HTTP_NOT_FOUND);
}
$this->view("pixelgraff", $html);
}
}
?>