[pLog-svn] r2245 - in plog/branches/plog-1.0.2/plugins: .
categorybrowser
Oscar Renalias
oscar at renalias.net
Sat Jun 18 09:38:19 GMT 2005
Did you also document the plugin in the wiki, in the plugin
repository section?
http://wiki.plogworld.net/index.php/PLog_1.0/Plugin_Repository
Thanks :)
Oscar
On 17 Jun 2005, at 18:16, Jon Daley wrote:
> oops. wrong tree.
>
> On Fri, 17 Jun 2005 jondaley at devel.plogworld.net wrote:
>
>
>> Author: jondaley
>> Date: 2005-06-17 14:58:05 +0000 (Fri, 17 Jun 2005)
>> New Revision: 2245
>>
>> Added:
>> plog/branches/plog-1.0.2/plugins/categorybrowser/
>> plog/branches/plog-1.0.2/plugins/categorybrowser/README.txt
>> plog/branches/plog-1.0.2/plugins/categorybrowser/locale/
>> plog/branches/plog-1.0.2/plugins/categorybrowser/
>> plugincategorybrowser.class.php
>> Log:
>> new plugin, first,prev,next,last buttons for each post, stays
>> within given category
>>
>> Added: plog/branches/plog-1.0.2/plugins/categorybrowser/README.txt
>> ===================================================================
>> --- plog/branches/plog-1.0.2/plugins/categorybrowser/README.txt
>> 2005-06-16 15:51:34 UTC (rev 2244)
>> +++ plog/branches/plog-1.0.2/plugins/categorybrowser/README.txt
>> 2005-06-17 14:58:05 UTC (rev 2245)
>> @@ -0,0 +1,71 @@
>> +Category Browser plugin for pLog.
>> +Author: Jon Daley
>> +URL: http://limedaley.com/
>> +
>> +Example URL using this plugin: http://limedaley.com/~jondaley/plog/
>> +
>> +The default getNext and getPrev post do not obey category
>> boundaries,
>> +and you might have readers who are only interested in certain
>> +categories.
>> +
>> +This plugin has four functions to get the first, previous, next, and
>> +latest posts in any given category.
>> +
>> +Here are the available functions:
>> +{assign var="postInCategoryFirst"
>> + value=$categorybrowser->getFirstArticle($categoryId, $blogId)}
>> +{assign var="postInCategoryPrev"
>> + value=$categorybrowser->getPrevArticle($post, $categoryId,
>> $blogId)}
>> +{assign var="postInCategoryNext"
>> + value=$categorybrowser->getNextArticle($post, $categoryId,
>> $blogId)}
>> +{assign var="postInCategoryLast"
>> + value=$categorybrowser->getLastArticle($categoryId, $blogId)}
>> +
>> +
>> +
>> +Here is the code I use in my template, it might be fancier that you
>> +want, but I think this looks pretty good.
>> +
>> +Category
>> + {foreach name=categories from=$post->getCategories()
>> + item=postCategory}
>> + {assign var=categoryName value=$postCategory->getName()}
>> + {assign var="blogId" value=$blog->getId()}
>> + {assign var="categoryId" value=$postCategory->getId()}
>> + {assign var="postInCategoryFirst"
>> + value=$categorybrowser->getFirstArticle($categoryId,
>> $blogId)}
>> + {assign var="postInCategoryPrev"
>> + value=$categorybrowser->getPrevArticle($post,
>> $categoryId, $blogId)}
>> + {assign var="postInCategoryNext"
>> + value=$categorybrowser->getNextArticle($post,
>> $categoryId, $blogId)}
>> + {assign var="postInCategoryLast"
>> + value=$categorybrowser->getLastArticle($categoryId,
>> $blogId)}
>> +
>> + <a href="{$url->categoryLink($postCategory)}">{$categoryName}
>> </a>:
>> + <span class="nodisplay">
>> + {if $postInCategoryFirst &&
>> + ($postInCategoryFirst->getId() != $post->getId())}
>> + </span>[<a
>> + href="{$url->postPermalink($postInCategoryFirst)}">first</
>> a>]<span
>> + class="nodisplay">
>> + {/if}
>> + {if $postInCategoryPrev &&
>> + ($postInCategoryPrev->getId() != $postInCategoryFirst-
>> >getId())}
>> + </span>[<a
>> + href="{$url->postPermalink
>> ($postInCategoryPrev)}">previous</a>]<span
>> + class="nodisplay">
>> + {/if}
>> + {if $postInCategoryNext &&
>> + ($postInCategoryNext->getId() != $postInCategoryLast-
>> >getId())}
>> + </span>[<a
>> + href="{$url->postPermalink($postInCategoryNext)}">next</
>> a>]<span
>> + class="nodisplay">
>> + {/if}
>> + {if $postInCategoryLast &&
>> + ($postInCategoryLast->getId() != $post->getId())}
>> + </span>[<a
>> + href="{$url->postPermalink($postInCategoryLast)}">newest</
>> a>]<span
>> + class="nodisplay">
>> + {/if}
>> + </span>
>> + {/foreach}
>>
>> Added: plog/branches/plog-1.0.2/plugins/categorybrowser/
>> plugincategorybrowser.class.php
>> ===================================================================
>> --- plog/branches/plog-1.0.2/plugins/categorybrowser/
>> plugincategorybrowser.class.php 2005-06-16 15:51:34 UTC (rev 2244)
>> +++ plog/branches/plog-1.0.2/plugins/categorybrowser/
>> plugincategorybrowser.class.php 2005-06-17 14:58:05 UTC (rev 2245)
>> @@ -0,0 +1,132 @@
>> +<?php
>> +
>> +include_once( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );
>> +include_once( PLOG_CLASS_PATH."class/plugin/
>> pluginmanager.class.php" );
>> +include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" );
>> +include_once( PLOG_CLASS_PATH."class/dao/article.class.php" );
>> +
>> + /*
>> + * Plugin that offers features to return links to the next
>> and previous articles
>> + * within the current category
>> + */
>> +class PluginCategoryBrowser extends PluginBase
>> +{
>> + var $_articles;
>> + var $_prefix;
>> +
>> + function PluginCategoryBrowser(){
>> + $this->author = "Jon Daley";
>> + $this->desc = "This plugin adds the ability to have next
>> + and previous buttons that stay within the same
>> category as the
>> + current post<br/>Usage:<br/>Functions:<br/>
>> + getPrevArticle(currArticle, blogId)<br/>
>> + getNextArticle(currArticle, blogId)<br/>
>> + getFirstArticle(categoryId, blogId) and<br/>
>> + getLastArticle(categoryId, blogId)<br/>
>> + Given an article the Prev and Next functions will
>> + return the previous and next posts in the same
>> + category as the given article.<br/>
>> + Given a category id, the First and Last functions
>> + will return the first and last posts in the same
>> + category.<br/>
>> + They will return false if it doesn't exist, or an
>> Article
>> + object if it does.<br/>";
>> +
>> + $this->PluginBase();
>> + $this->db =& Db::getDb();
>> + $config =& Config::getConfig();
>> + $this->_prefix = $config->getValue('db_prefix');
>> + $this->id = "categorybrowser";
>> + $this->$_articles = new Articles();
>> + }
>> +
>> + function getPrevArticle($article, $categoryId, $blogId){
>> + // gets the article that is just before this one in
>> + // the same category
>> + $query = "SELECT id FROM " . $this->_prefix .
>> + "articles, " . $this-
>> >_prefix."article_categories_link" .
>> + " WHERE date < '" . $article->getDate() .
>> + "' AND status=1 AND blog_id = " . $blogId .
>> + " AND category_id = " . $categoryId .
>> + " and article_id = id" .
>> + " ORDER BY date DESC LIMIT 1;";
>> +
>> + $result = $this->db->Execute($query);
>> + if(!$result || ($result->RecordCount() == 0))
>> + return false;
>> +
>> + // get the information from the article
>> + $row = $result->FetchRow();
>> +
>> + // fetch the article
>> + return $this->$_articles->getBlogArticle($row["id"],
>> $blogId);
>> + }
>> +
>> + function getNextArticle($article, $categoryId, $blogId){
>> + // gets the article that is just after this one in
>> + // the same category
>> + $query = "SELECT id FROM " . $this->_prefix .
>> + "articles, " . $this-
>> >_prefix."article_categories_link" .
>> + " WHERE date > '" . $article->getDate() .
>> + "' AND status=1 AND blog_id = " . $blogId .
>> + " AND category_id = " . $categoryId .
>> + " and article_id = id" .
>> + " ORDER BY date LIMIT 1;";
>> +
>> + $result = $this->db->Execute($query);
>> + if(!$result || ($result->RecordCount() == 0)){
>> + return false;
>> + }
>> +
>> + // get the information from the article
>> + $row = $result->FetchRow();
>> + print $row["id"];
>> +
>> +
>> + // fetch the article
>> + return $this->$_articles->getBlogArticle($row["id"],
>> $blogId);
>> + }
>> +
>> + function getFirstArticle($categoryId, $blogId){
>> + // gets the first article in the category
>> + $query = "SELECT id FROM " . $this->_prefix .
>> + "articles, " . $this-
>> >_prefix."article_categories_link" .
>> + " WHERE status=1 AND blog_id = " . $blogId .
>> + " AND category_id = " . $categoryId .
>> + " and article_id = id" .
>> + " ORDER BY date LIMIT 1;";
>> +
>> + $result = $this->db->Execute($query);
>> + if(!$result || ($result->RecordCount() == 0))
>> + return false;
>> +
>> + // get the information from the article
>> + $row = $result->FetchRow();
>> +
>> + // fetch the article
>> + return $this->$_articles->getBlogArticle($row["id"],
>> $blogId);
>> + }
>> +
>> + function getLastArticle($categoryId, $blogId){
>> + // gets the last article in the category
>> + $query = "SELECT id FROM " . $this->_prefix .
>> + "articles, " . $this-
>> >_prefix."article_categories_link" .
>> + " WHERE status=1 AND blog_id = " . $blogId .
>> + " AND category_id = " . $categoryId .
>> + " and article_id = id" .
>> + " ORDER BY date DESC LIMIT 1;";
>> +
>> + $result = $this->db->Execute($query);
>> + if(!$result || ($result->RecordCount() == 0))
>> + return false;
>> +
>> + // get the information from the article
>> + $row = $result->FetchRow();
>> +
>> + // fetch the article
>> + return $this->$_articles->getBlogArticle($row["id"],
>> $blogId);
>> + }
>> +}
>> +
>> +
>> +?>
>>
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.plogworld.net
>> http://devel.plogworld.net/mailman/listinfo/plog-svn
>>
>>
>
> **************************************************************
> * Jonathan M. Daley * Become a fixer, not just a *
> * jondaley at snurgle.org * fixture. *
> * www.snurgle.org/~jondaley * -- Anthony D'Angelo *
> **************************************************************
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.plogworld.net
> http://devel.plogworld.net/mailman/listinfo/plog-svn
>
>
More information about the pLog-svn
mailing list