[pLog-CVS] plog_plugins pluginlinkcategories.class.php,NONE,1.1
Brought to you by:
jondaley
From: <phu...@us...> - 2004-01-20 20:32:28
|
Update of /cvsroot/plog/plog_plugins In directory sc8-pr-cvs1:/tmp/cvs-serv27507 Added Files: pluginlinkcategories.class.php Log Message: nice plugin to show the links under their categories, as it should be... --- NEW FILE: pluginlinkcategories.class.php --- <?php include_once( "pluginbase.class.php" ); include_once( "pluginmanager.class.php" ); include_once( "mylinkscategories.class.php" ); include_once( "mylinks.class.php" ); class NewMyLinksCategory extends MyLinksCategory { var $_linkCategory; var $_links; function NewMyLinksCategory( &$linkCategory ) { $this->_linkCategory = $linkCategory; } function setLinks( $links ) { $this->_links = $links; } function getLinks() { return $this->_links; } /** * this methods have to be "proxied" so that this class looks like * any other MyLinksCategory class! (if anybody cares to know, I think * this is called the "Decorator" patter, btw O:)) */ function getId() { return $this->_linkCategory->getId(); } function getName() { return $this->_linkCategory->getName(); } function getBlogId() { return $this->_linkCategory->getBlogId(); } function getNumLinks() { return $this->_linkCategory->getNumLinks(); } } /** * Gives a print view of the article */ class PluginLinkCategories extends PluginBase { function PluginLinkCategories() { $this->PluginBase(); $this->desc = "This is a little plugin that will allow to show the list of links sorted by category.<br/> <br/> Add the following piece of template code to the place where you would like to show your list of links, classified by categories instead of how it is done by default. One good thing is to replace the old code to show the categories with the following (for example in the 'grey' template set, that's done in the footer.template file):<br/> <br/> {foreach from=\$linkcategories->getLinkCategories() item=linkcategory}<br/> <b>{\$linkcategory->getName()}</b><br/><br/> {foreach from=\$linkcategory->getLinks() item=link}<br/> <a href=\"{\$link->getUrl()}\" title=\"{\$link->getDescription()}\">{\$link->getName()}</a><br/><br/> {/foreach}<br/> {/foreach}<br/> <br/> The methods used are quite self-explanatory and please change the formatting if it doesn't suit your taste :) "; $this->author = "The pLog team"; } /** * @private * * Does all the dirty work for us... * It's probably not the most optimal way to do it but it works for now so * we'll leave it like it is! */ function _getBlogLinksAndCategories() { // blog identifier $blogId = $this->blogInfo->getId(); // connect to the db $this->connectDb(); // get all the link categories $myLinkCategories = new MyLinksCategories(); $linkCategories = $myLinkCategories->getMyLinksCategories( $blogId ); // now, for each category... $result = Array(); $myLinks = new MyLinks(); foreach( $linkCategories as $linkCategory ) { // fetch its links $links = $myLinks->getLinks( $blogId, $linkCategory->getId()); // create the new version of the link category that offers support // for carrying its own links $newLinkCategory = new NewMyLinksCategory( $linkCategory ); $newLinkCategory->setLinks( $links ); array_push( $result, $newLinkCategory ); } return $result; } function getLinkCategories() { return $this->_getBlogLinksAndCategories(); } } PluginManager::registerPlugin( "linkcategories", "PluginLinkCategories" ); ?> |