OSDN Git Service

Merge branch 'skinnable-master' of ssh://shizuki@git.sourceforge.jp/gitroot/nucleus...
[nucleus-jp/nucleus-next.git] / nucleus / libs / COMMENTACTIONS.php
index f2e385c..dd469f0 100644 (file)
-<?php
-/*
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2009 The Nucleus Group
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- * (see nucleus/documentation/index.html#license for more info)
- */
-/**
- * This class is used when parsing comment templates
- *
- * @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2009 The Nucleus Group
- * @version $Id: COMMENTACTIONS.php 1626 2012-01-09 15:46:54Z sakamocchi $
- */
-
-class COMMENTACTIONS extends BaseActions {
-
-       // ref to COMMENTS object which is using this object to handle
-       // its templatevars
-       var $commentsObj;
-
-       // template to use to parse the comments
-       var $template;
-
-       // comment currenlty being handled (mysql result assoc array; see COMMENTS::showComments())
-       var $currentComment;
-
-       function COMMENTACTIONS(&$comments) {
-               // call constructor of superclass first
-               $this->BaseActions();
-
-               // reference to the comments object
-               $this->setCommentsObj($comments);
-       }
-
-       function getDefinedActions() {
-               return array(
-                       'blogurl',
-                       'commentcount',
-                       'commentword',
-                       'email',
-                       'itemlink',
-                       'itemid',
-                       'itemtitle',
-                       'date',
-                       'time',
-                       'commentid',
-                       'body',
-                       'memberid',
-                       'timestamp',
-                       'host',
-                       'ip',
-                       'blogid',
-                       'authtext',
-                       'user',
-                       'userid',
-                       'userlinkraw',
-                       'userlink',
-                       'useremail',
-                       'userwebsite',
-                       'userwebsitelink',
-                       'excerpt',
-                       'short',
-                       'skinfile',
-                       'set',
-                       'plugin',
-                       'include',
-                       'phpinclude',
-                       'parsedinclude',
-                       'if',
-                       'else',
-                       'endif',
-                       'elseif',
-                       'ifnot',
-                       'elseifnot'
-               );
-       }
-
-       function setParser(&$parser) {
-               $this->parser =& $parser;
-       }
-
-       function setCommentsObj(&$commentsObj) {
-               $this->commentsObj =& $commentsObj;
-       }
-
-       function setTemplate($template) {
-               $this->template =& $template;
-       }
-
-       function setCurrentComment(&$comment) {
-
-               global $manager;
-
-               // begin if: member comment
-               if ($comment['memberid'] != 0)
-               {
-                       $comment['authtext'] = $template['COMMENTS_AUTH'];
-
-                       $mem =& $manager->getMember($comment['memberid']);
-                       $comment['user'] = $mem->getDisplayName();
-
-                       // begin if: member URL exists, set it as the userid
-                       if ($mem->getURL() )
-                       {
-                               $comment['userid'] = $mem->getURL();
-                       }
-                       // else: set the email as the userid
-                       else
-                       {
-                               $comment['userid'] = $mem->getEmail();
-                       } // end if
-
-                       $comment['userlinkraw'] = createLink(
-                                                                               'member',
-                                                                               array(
-                                                                                       'memberid' => $comment['memberid'],
-                                                                                       'name' => $mem->getDisplayName(),
-                                                                                       'extra' => $this->commentsObj->itemActions->linkparams
-                                                                               )
-                                                                       );
-
-               }
-               // else: non-member comment
-               else
-               {
-
-                       // create smart links
-
-                       // begin if: comment userid is not empty
-                       if (!empty($comment['userid']) )
-                       {
-
-                               // begin if: comment userid has either "http://" or "https://" at the beginning
-                               if ( (i18n::strpos($comment['userid'], 'http://') === 0) || (i18n::strpos($comment['userid'], 'https://') === 0) )
-                               {
-                                       $comment['userlinkraw'] = $comment['userid'];
-                               }
-                               // else: prepend the "http://" (backwards compatibility before rev 1471)
-                               else
-                               {
-                                       $comment['userlinkraw'] = 'http://' . $comment['userid'];
-                               } // end if
-
-                       }
-                       // else if: comment email is valid
-                       else if (isValidMailAddress($comment['email']) )
-                       {
-                               $comment['userlinkraw'] = 'mailto:' . $comment['email'];
-                       }
-                       // else if: comment userid is a valid email
-                       else if (isValidMailAddress($comment['userid']) )
-                       {
-                               $comment['userlinkraw'] = 'mailto:' . $comment['userid'];
-                       } // end if
-
-               } // end if
-
-               $this->currentComment =& $comment;
-               global $currentcommentid, $currentcommentarray;
-               $currentcommentid = $comment['commentid'];
-               $currentcommentarray = $comment;
-       }
-
-       /**
-        * Parse templatevar authtext
-        */
-       function parse_authtext() {
-               if ($this->currentComment['memberid'] != 0)
-                       $this->parser->parse($this->template['COMMENTS_AUTH']);
-       }
-
-       /**
-        * Parse templatevar blogid
-        */
-       function parse_blogid() {
-               echo $this->currentComment['blogid'];
-       }
-
-       /**
-        * Parse templatevar blogurl
-        */
-       function parse_blogurl() {
-               global $manager;
-               $blogid = getBlogIDFromItemID($this->commentsObj->itemid);
-               $blog =& $manager->getBlog($blogid);
-               echo $blog->getURL();
-       }
-
-       /**
-        * Parse templatevar body
-        */
-       function parse_body() {
-               echo $this->highlight($this->currentComment['body']);
-       }
-
-       /**
-        * Parse templatevar commentcount
-        */
-       function parse_commentcount() {
-                       echo $this->commentsObj->commentcount;
-       }
-
-       /**
-        * Parse templatevar commentid
-        */
-       function parse_commentid() {
-               echo $this->currentComment['commentid'];
-       }
-
-       /**
-        * Parse templatevar commentword
-        */
-       function parse_commentword() {
-               if ($this->commentsObj->commentcount == 1)
-                       echo $this->template['COMMENTS_ONE'];
-               else
-                       echo $this->template['COMMENTS_MANY'];
-       }
-
-       /**
-        * Parse templatevar date
-        */
-       function parse_date($format = '') {
-               echo formatDate($format, $this->currentComment['timestamp'], $this->template['FORMAT_DATE'], $this->commentsObj->itemActions->blog);
-       }
-
-       /**
-        * Parse templatevar email
-        */
-       function parse_email() {
-               $email = $this->currentComment['email'];
-               $email = str_replace('@', ' (at) ', $email);
-               $email = str_replace('.', ' (dot) ', $email);
-               echo $email;
-       }
-
-       /**
-        * Parse templatevar excerpt
-        */
-       function parse_excerpt() {
-               echo stringToXML(shorten($this->currentComment['body'], 60, '...'));
-       }
-
-       /**
-        * Parse templatevar host
-        */
-       function parse_host() {
-               echo $this->currentComment['host'];
-       }
-
-       /**
-        * Parse templatevar ip
-        */
-       function parse_ip() {
-               echo $this->currentComment['ip'];
-       }
-
-       /**
-        * Parse templatevar itemid
-        */
-       function parse_itemid() {
-               echo $this->commentsObj->itemid;
-       }
-
-       /**
-        * Parse templatevar itemlink
-        */
-       function parse_itemlink() {
-               echo createLink(
-                       'item',
-                       array(
-                               'itemid' => $this->commentsObj->itemid,
-                               'timestamp' => $this->commentsObj->itemActions->currentItem->timestamp,
-                               'title' => $this->commentsObj->itemActions->currentItem->title,
-                               'extra' => $this->commentsObj->itemActions->linkparams
-                       )
-               );
-       }
-
-       /**
-        * Parse templatevar itemtitle
-        */
-       function parse_itemtitle($maxLength = 0) {
-               if ($maxLength == 0)
-                       $this->commentsObj->itemActions->parse_title();
-               else
-                       $this->commentsObj->itemActions->parse_syndicate_title($maxLength);
-       }
-
-       /**
-        * Parse templatevar memberid
-        */
-       function parse_memberid() {
-               echo $this->currentComment['memberid'];
-       }
-
-       /**
-        * Parse templatevar short
-        */
-       function parse_short() {
-               $tmp = strtok($this->currentComment['body'],"\n");
-               $tmp = str_replace('<br />','',$tmp);
-               echo $tmp;
-               if ($tmp != $this->currentComment['body'])
-                       $this->parser->parse($this->template['COMMENTS_CONTINUED']);
-       }
-
-       /**
-        * Parse templatevar time
-        */
-       function parse_time($format = '') {
-               echo i18n::strftime(
-                               ($format == '') ? $this->template['FORMAT_TIME'] : $format,
-                               $this->currentComment['timestamp']
-                       );
-       }
-
-       /**
-        * Parse templatevar timestamp
-        */
-       function parse_timestamp() {
-               echo $this->currentComment['timestamp'];
-       }
-
-       /**
-         * Executes a plugin templatevar
-         *
-         * @param pluginName name of plugin (without the NP_)
-         *
-         * extra parameters can be added
-         */
-       function parse_plugin($pluginName) {
-               global $manager;
-
-               // only continue when the plugin is really installed
-               if (!$manager->pluginInstalled('NP_' . $pluginName))
-                       return;
-
-               $plugin =& $manager->getPlugin('NP_' . $pluginName);
-               if (!$plugin) return;
-
-               // get arguments
-               $params = func_get_args();
-
-               // remove plugin name
-               array_shift($params);
-
-               // pass info on current item and current comment as well
-               $params = array_merge(array(&$this->currentComment),$params);
-               $params = array_merge(array(&$this->commentsObj->itemActions->currentItem),$params);
-
-               call_user_func_array(array(&$plugin,'doTemplateCommentsVar'), $params);
-       }
-
-       /**
-        * Parse templatevar user
-        * @param string $mode
-        */
-       function parse_user($mode = '')
-       {
-               global $manager;
-
-               if ( $mode == 'realname' && $this->currentComment['memberid'] > 0 )
-               {
-                       $member =& $manager->getMember($this->currentComment['memberid']);
-                       echo $member->getRealName();
-               }
-               else
-               {
-                       echo i18n::hsc($this->currentComment['user']);
-               }
-       }
-
-       /**
-        * Parse templatevar useremail
-        */
-       function parse_useremail() {
-               global $manager;
-               if ($this->currentComment['memberid'] > 0)
-               {
-                       $member =& $manager->getMember($this->currentComment['memberid']);
-
-                       if ($member->email != '')
-                               echo $member->email;
-               }
-               else
-               {
-                       if (isValidMailAddress($this->currentComment['email']))
-                               echo $this->currentComment['email'];
-                       elseif (isValidMailAddress($this->currentComment['userid']))
-                               echo $this->currentComment['userid'];
-//                     if (!(i18n::strpos($this->currentComment['userlinkraw'], 'mailto:') === false))
-//                             echo str_replace('mailto:', '', $this->currentComment['userlinkraw']);
-               }
-       }
-
-       /**
-        * Parse templatevar userid
-        */
-       function parse_userid() {
-                       echo $this->currentComment['userid'];
-       }
-
-
-       /**
-        * Parse templatevar userlink
-        */
-       function parse_userlink() {
-               if ($this->currentComment['userlinkraw']) {
-                       echo '<a href="'.$this->currentComment['userlinkraw'].'" rel="nofollow">'.$this->currentComment['user'].'</a>';
-               } else {
-                       echo $this->currentComment['user'];
-               }
-       }
-
-       /**
-        * Parse templatevar userlinkraw
-        */
-       function parse_userlinkraw() {
-               echo $this->currentComment['userlinkraw'];
-       }
-
-       /**
-        * Parse templatevar userwebsite
-        */
-       function parse_userwebsite() {
-               if (!(i18n::strpos($this->currentComment['userlinkraw'], 'http://') === false))
-                       echo $this->currentComment['userlinkraw'];
-       }
-
-       /**
-        * Parse templatevar userwebsitelink
-        */
-       function parse_userwebsitelink() {
-               if (!(i18n::strpos($this->currentComment['userlinkraw'], 'http://') === false)) {
-                       echo '<a href="'.$this->currentComment['userlinkraw'].'" rel="nofollow">'.$this->currentComment['user'].'</a>';
-               } else {
-                       echo $this->currentComment['user'];
-               }
-       }
-
-       // function to enable if-else-elseif-elseifnot-ifnot-endif to comment template fields
-
-       /**
-        * Checks conditions for if statements
-        *
-        * @param string $field type of <%if%>
-        * @param string $name property of field
-        * @param string $value value of property
-        */
-       function checkCondition($field, $name='', $value = '') {
-               global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists;
-
-               $condition = 0;
-               switch($field) {
-                       case 'category':
-                               $condition = ($blog && $this->_ifCategory($name,$value));
-                               break;
-                       case 'itemcategory':
-                               $condition = ($this->_ifItemCategory($name,$value));
-                               break;
-                       case 'blogsetting':
-                               $condition = ($blog && ($blog->getSetting($name) == $value));
-                               break;
-                       case 'itemblogsetting':
-                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
-                               $condition = ($b && ($b->getSetting($name) == $value));
-                               break;
-                       case 'loggedin':
-                               $condition = $member->isLoggedIn();
-                               break;
-                       case 'onteam':
-                               $condition = $member->isLoggedIn() && $this->_ifOnTeam($name);
-                               break;
-                       case 'admin':
-                               $condition = $member->isLoggedIn() && $this->_ifAdmin($name);
-                               break;
-                       case 'author':
-                               $condition = ($this->_ifAuthor($name,$value));
-                               break;
-/*                     case 'nextitem':
-                               $condition = ($itemidnext != '');
-                               break;
-                       case 'previtem':
-                               $condition = ($itemidprev != '');
-                               break;
-                       case 'archiveprevexists':
-                               $condition = ($archiveprevexists == true);
-                               break;
-                       case 'archivenextexists':
-                               $condition = ($archivenextexists == true);
-                               break;
-                       case 'skintype':
-                               $condition = ($name == $this->skintype);
-                               break; */
-                       case 'hasplugin':
-                               $condition = $this->_ifHasPlugin($name, $value);
-                               break;
-                       default:
-                               $condition = $manager->pluginInstalled('NP_' . $field) && $this->_ifPlugin($field, $name, $value);
-                               break;
-               }
-               return $condition;
-       }
-
-       /**
-        *  Different checks for a category
-        */
-       function _ifCategory($name = '', $value='') {
-               global $blog, $catid;
-
-               // when no parameter is defined, just check if a category is selected
-               if (($name != 'catname' && $name != 'catid') || ($value == ''))
-                       return $blog->isValidCategory($catid);
-
-               // check category name
-               if ($name == 'catname') {
-                       $value = $blog->getCategoryIdFromName($value);
-                       if ($value == $catid)
-                               return $blog->isValidCategory($catid);
-               }
-
-               // check category id
-               if (($name == 'catid') && ($value == $catid))
-                       return $blog->isValidCategory($catid);
-
-               return false;
-       }
-
-
-       /**
-        *  Different checks for an author
-        */
-       function _ifAuthor($name = '', $value='') {
-               global $member, $manager;
-
-               if ($this->currentComment['memberid'] == 0) return false;
-
-               $mem =& $manager->getMember($this->currentComment['memberid']);
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
-               $citem =& $manager->getItem($this->currentComment['itemid'],1,1);
-
-               // when no parameter is defined, just check if item author is current visitor
-               if (($name != 'isadmin' && $name != 'name' && $name != 'isauthor' && $name != 'isonteam')) {
-                       return (intval($member->getID()) > 0 && intval($member->getID()) == intval($citem['authorid']));
-               }
-
-               // check comment author name
-               if ($name == 'name') {
-                       $value = trim(strtolower($value));
-                       if ($value == '')
-                               return false;
-                       if ($value == strtolower($mem->getDisplayName()))
-                               return true;
-               }
-
-               // check if comment author is admin
-               if ($name == 'isadmin') {
-                       $blogid = intval($b->getID());
-                       if ($mem->isAdmin())
-                               return true;
-
-                       return $mem->isBlogAdmin($blogid);
-               }
-
-               // check if comment author is item author
-               if ($name == 'isauthor') {
-                       return (intval($citem['authorid']) == intval($this->currentComment['memberid']));
-               }
-
-               // check if comment author is on team
-               if ($name == 'isonteam') {
-                       return $mem->teamRights(intval($b->getID()));
-               }
-
-               return false;
-       }
-
-       /**
-        *  Different checks for a category
-        */
-       function _ifItemCategory($name = '', $value='') {
-               global $catid, $manager;
-
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
-               $citem =& $manager->getItem($this->currentComment['itemid'],1,1);
-               $icatid = $citem['catid'];
-
-               // when no parameter is defined, just check if a category is selected
-               if (($name != 'catname' && $name != 'catid') || ($value == ''))
-                       return $b->isValidCategory($icatid);
-
-               // check category name
-               if ($name == 'catname') {
-                       $value = $b->getCategoryIdFromName($value);
-                       if ($value == $icatid)
-                               return $b->isValidCategory($icatid);
-               }
-
-               // check category id
-               if (($name == 'catid') && ($value == $icatid))
-                       return $b->isValidCategory($icatid);
-
-               return false;
-       }
-
-
-       /**
-        *  Checks if a member is on the team of a blog and return his rights
-        */
-       function _ifOnTeam($blogName = '') {
-               global $blog, $member, $manager;
-
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
-
-               // when no blog found
-               if (($blogName == '') && (!is_object($b)))
-                       return 0;
-
-               // explicit blog selection
-               if ($blogName != '')
-                       $blogid = getBlogIDFromName($blogName);
-
-               if (($blogName == '') || !$manager->existsBlogID($blogid))
-                       // use current blog
-                       $blogid = $b->getID();
-
-               return $member->teamRights($blogid);
-       }
-
-       /**
-        *  Checks if a member is admin of a blog
-        */
-       function _ifAdmin($blogName = '') {
-               global $blog, $member, $manager;
-
-               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));
-
-               // when no blog found
-               if (($blogName == '') && (!is_object($b)))
-                       return 0;
-
-               // explicit blog selection
-               if ($blogName != '')
-                       $blogid = getBlogIDFromName($blogName);
-
-               if (($blogName == '') || !$manager->existsBlogID($blogid))
-                       // use current blog
-                       $blogid = $b->getID();
-
-               return $member->isBlogAdmin($blogid);
-       }
-
-
-       /**
-        *      hasplugin,PlugName
-        *         -> checks if plugin exists
-        *      hasplugin,PlugName,OptionName
-        *         -> checks if the option OptionName from plugin PlugName is not set to 'no'
-        *      hasplugin,PlugName,OptionName=value
-        *         -> checks if the option OptionName from plugin PlugName is set to value
-        */
-       function _ifHasPlugin($name, $value) {
-               global $manager;
-               $condition = false;
-               // (pluginInstalled method won't write a message in the actionlog on failure)
-               if ($manager->pluginInstalled('NP_'.$name)) {
-                       $plugin =& $manager->getPlugin('NP_' . $name);
-                       if ($plugin != NULL) {
-                               if ($value == "") {
-                                       $condition = true;
-                               } else {
-                                       list($name2, $value2) = i18n::explode('=', $value, 2);
-                                       if ($value2 == "" && $plugin->getOption($name2) != 'no') {
-                                               $condition = true;
-                                       } else if ($plugin->getOption($name2) == $value2) {
-                                               $condition = true;
-                                       }
-                               }
-                       }
-               }
-               return $condition;
-       }
-
-       /**
-        * Checks if a plugin exists and call its doIf function
-        */
-       function _ifPlugin($name, $key = '', $value = '') {
-               global $manager;
-
-               $plugin =& $manager->getPlugin('NP_' . $name);
-               if (!$plugin) return;
-
-               $params = func_get_args();
-               array_shift($params);
-
-               return call_user_func_array(array(&$plugin, 'doIf'), $params);
-       }
-
-}
-?>
+<?php\r
+/*\r
+ * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
+ * Copyright (C) 2002-2009 The Nucleus Group\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * (see nucleus/documentation/index.html#license for more info)\r
+ */\r
+/**\r
+ * This class is used when parsing comment templates\r
+ *\r
+ * @license http://nucleuscms.org/license.txt GNU General Public License\r
+ * @copyright Copyright (C) 2002-2009 The Nucleus Group\r
+ * @version $Id: CommentActions.php 1626 2012-01-09 15:46:54Z sakamocchi $\r
+ */\r
+\r
+class CommentActions extends BaseActions\r
+{\r
+       /**\r
+        * CommentsActions::$commentsObj\r
+        * ref to COMMENTS object which is using this object to handle its templatevars\r
+        */\r
+       private $commentsObj;\r
+       \r
+       /**\r
+        * CommentsActions::$template\r
+        * template to use to parse the comments\r
+        */\r
+       private $template;\r
+       \r
+       /**\r
+        * CommentsActions::$currentComment\r
+        * comment currenlty being handled (mysql result assoc array; see Comments::showComments())\r
+        */\r
+       private $currentComment;\r
+       \r
+       /**\r
+        * CommentsActions::$defined_actions\r
+        * defined actions in this class\r
+        */\r
+       static private $defined_actions = array(\r
+               'authtext',
+               'blogid',
+               'blogurl',\r
+               'body',
+               'commentcount',\r
+               'commentid',
+               'commentword',\r
+               'date',
+               'email',\r
+               'excerpt',
+               'host',
+               'ip',
+               'itemid',
+               'itemlink',\r
+               'itemtitle',\r
+               'memberid',
+               'plugin',
+               'short',
+               'time',\r
+               'timestamp',\r
+               'user',\r
+               'useremail',
+               'userid',\r
+               'userlink',
+               'userlinkraw',\r
+               'userwebsite',\r
+               'userwebsitelink'
+       );\r
+       \r
+       /**\r
+        * CommentActions::__construct()\r
+        * \r
+        * @param       object  $comments       instance of Comments class\r
+        * @return      void\r
+        */\r
+       public function __construct(&$comments)\r
+       {\r
+               // call constructor of superclass first\r
+               parent::__construct();
+               \r
+               // reference to the comments object\r
+               $this->setCommentsObj($comments);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::getAvailableActions()\r
+        * \r
+        * @param       void\r
+        * @return array        actions array\r
+        */\r
+       public function getAvailableActions()\r
+       {\r
+               return array_merge(self::$defined_actions, parent::getAvailableActions());\r
+       }\r
+       \r
+       /**\r
+        * \r
+        * CommentActions::setCommentsObj()\r
+        * \r
+        * @param       object  $commentsObj    instance of Comments class\r
+        * @return      void\r
+        */\r
+       public function setCommentsObj(&$commentsObj)\r
+       {\r
+               $this->commentsObj =& $commentsObj;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::setTemplate()\r
+        * \r
+        * @param       array   $template       array includes templates\r
+        * @return      void\r
+        */\r
+       public function setTemplate($template)\r
+       {\r
+               $this->template =& $template;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::setCurrentComment()\r
+        * Set $currentcommentid and $currentcommentarray\r
+        * \r
+        * @param       array   $comment        associated array includes comment information\r
+        * @return      void\r
+        */\r
+       public function setCurrentComment(&$comment)\r
+       {\r
+               global $currentcommentid, $currentcommentarray, $manager;\r
+               \r
+               if ( $comment['memberid'] != 0 )\r
+               {\r
+                       if ( !array_key_exists('COMMENTS_AUTH', $this->template) )\r
+                       {\r
+                               $comment['authtext'] = '';\r
+                       }\r
+                       else\r
+                       {\r
+                               $comment['authtext'] = $this->template['COMMENTS_AUTH'];\r
+                       }\r
+                       \r
+                       $mem =& $manager->getMember($comment['memberid']);\r
+                       $comment['user'] = $mem->getDisplayName();\r
+                       \r
+                       if ( $mem->getURL() )\r
+                       {\r
+                               $comment['userid'] = $mem->getURL();\r
+                       }\r
+                       else\r
+                       {\r
+                               $comment['userid'] = $mem->getEmail();\r
+                       }\r
+                       \r
+                       $data = array(\r
+                               'memberid'      => $comment['memberid'],\r
+                               'name'          => $mem->getDisplayName(),\r
+                               'extra'         => $this->commentsObj->itemActions->linkparams\r
+                       );\r
+                       \r
+                       $comment['userlinkraw'] = Link::create_link('member', $data);\r
+               }\r
+               else\r
+               {\r
+                       // create smart links\r
+                       if ( !array_key_exists('userid', $comment) || !empty($comment['userid']) )\r
+                       {\r
+                               if ( (i18n::strpos($comment['userid'], 'http://') === 0) || (i18n::strpos($comment['userid'], 'https://') === 0) )\r
+                               {\r
+                                       $comment['userlinkraw'] = $comment['userid'];\r
+                               }\r
+                               else\r
+                               {\r
+                                       $comment['userlinkraw'] = 'http://' . $comment['userid'];\r
+                               }\r
+                       }\r
+                       else if ( NOTIFICATION::address_validation($comment['email']) )\r
+                       {\r
+                               $comment['userlinkraw'] = 'mailto:' . $comment['email'];\r
+                       }\r
+                       else if ( NOTIFICATION::address_validation($comment['userid']) )\r
+                       {\r
+                               $comment['userlinkraw'] = 'mailto:' . $comment['userid'];\r
+                       }\r
+               }\r
+               \r
+               $this->currentComment =& $comment;\r
+               $currentcommentid = $comment['commentid'];\r
+               $currentcommentarray = $comment;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_authtext()\r
+        * Parse templatevar authtext\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_authtext()\r
+       {\r
+               if ( $this->currentComment['memberid'] != 0 )\r
+               {\r
+                       $this->parser->parse($this->template['COMMENTS_AUTH']);\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_blogid()\r
+        * Parse templatevar blogid\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_blogid() {\r
+               echo $this->currentComment['blogid'];\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_blogurl()\r
+        * Parse templatevar blogurl\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_blogurl()\r
+       {\r
+               global $manager;\r
+               $blogid = getBlogIDFromItemID($this->commentsObj->itemid);\r
+               $blog =& $manager->getBlog($blogid);\r
+               echo $blog->getURL();\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_body()\r
+        * Parse templatevar body\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_body() {\r
+               echo $this->highlight($this->currentComment['body']);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_commentcount()\r
+        * Parse templatevar commentcount\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_commentcount()\r
+       {\r
+               echo $this->commentsObj->commentcount;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_commentid()\r
+        * Parse templatevar commentid\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_commentid()\r
+       {\r
+               echo $this->currentComment['commentid'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_commentword()\r
+        * Parse templatevar commentword\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_commentword()\r
+       {\r
+               if ( $this->commentsObj->commentcount == 1 )\r
+               {\r
+                       echo $this->template['COMMENTS_ONE'];\r
+               }\r
+               else\r
+               {\r
+                       echo $this->template['COMMENTS_MANY'];\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_date()\r
+        * Parse templatevar date\r
+        * \r
+        * @format      String  $format Date format according to PHP\r
+        * @return      void\r
+        */\r
+       public function parse_date($format = '')\r
+       {\r
+               if ( $format !== '' )\r
+               {\r
+                       /* do nothing */\r
+                       ;\r
+               }\r
+               else if ( !array_key_exists('FORMAT_DATE', $this->template) || $this->template['FORMAT_DATE'] === '' )\r
+               {\r
+                       $format = '%X';\r
+               }\r
+               else\r
+               {\r
+                       $format = $this->template['FORMAT_DATE'];\r
+               }\r
+               \r
+               $offset = $this->commentsObj->itemActions->blog->getTimeOffset() * 3600;\r
+               \r
+               echo i18n::formatted_datetime($format, $this->currentComment['timestamp'], $offset);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_excerpt()\r
+        * Parse templatevar email\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_email()\r
+       {\r
+               $email = $this->currentComment['email'];\r
+               $email = str_replace('@', ' (at) ', $email);\r
+               $email = str_replace('.', ' (dot) ', $email);\r
+               echo $email;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_excerpt()\r
+        * Parse templatevar excerpt\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_excerpt()\r
+       {\r
+               echo Entity::hen(Entity::shorten($this->currentComment['body'], 60, '...'));\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_host()\r
+        * Parse templatevar host\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_host()\r
+       {\r
+               echo $this->currentComment['host'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_ip()\r
+        * Parse templatevar ip\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_ip()\r
+       {\r
+               echo $this->currentComment['ip'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_itemid()\r
+        * Parse templatevar itemid\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_itemid()\r
+       {\r
+               echo $this->commentsObj->itemid;\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_itemlink()\r
+        * Parse templatevar itemlink\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_itemlink()\r
+       {\r
+               $data = array(\r
+                       'itemid'        => $this->commentsObj->itemid,\r
+                       'timestamp'     => $this->commentsObj->itemActions->currentItem['timestamp'],\r
+                       'title'         => $this->commentsObj->itemActions->currentItem['title'],\r
+                       'extra'         => $this->commentsObj->itemActions->linkparams\r
+               );\r
+               \r
+               echo Link::create_link('item', $data);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_itemtitle()\r
+        * Parse templatevar itemtitle\r
+        * \r
+        * @param       integer $maxLength      maximum length for item title\r
+        * @return      void\r
+        */\r
+       public function parse_itemtitle($maxLength = 0)\r
+       {\r
+               if ( $maxLength == 0 )\r
+               {\r
+                       $this->commentsObj->itemActions->parse_title();\r
+               }\r
+               else\r
+               {\r
+                       $this->commentsObj->itemActions->parse_syndicate_title($maxLength);\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_memberid()\r
+        * Parse templatevar memberid\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_memberid()\r
+       {\r
+               echo $this->currentComment['memberid'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_short()\r
+        * Parse templatevar short\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_short()\r
+       {\r
+               $tmp = strtok($this->currentComment['body'], "\n");\r
+               $tmp = str_replace('<br />', '', $tmp);\r
+               echo $tmp;\r
+               if ( $tmp != $this->currentComment['body'] )\r
+               {\r
+                       $this->parser->parse($this->template['COMMENTS_CONTINUED']);\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_time()\r
+        * Parse templatevar time\r
+        * \r
+        * @param       string  $format datetime format referring to strftime() in PHP's built-in function\r
+        * @return      void\r
+        */\r
+       public function parse_time($format = '')\r
+       {\r
+               if ( $format !== '' )
+               {\r
+                       /* do nothing */\r
+                       ;\r
+               }\r
+               else if ( !array_key_exists('FORMAT_TIME', $this->template) || $this->template['FORMAT_TIME'] === '' )\r
+               {\r
+                       $format = '%x';\r
+               }\r
+               else\r
+               {\r
+                       $format = $this->template['FORMAT_TIME'];\r
+               }\r
+               \r
+               echo i18n::formatted_datetime($format, $this->currentComment['timestamp']);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_timestamp()\r
+        * Parse templatevar timestamp\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        * \r
+        */\r
+       public function parse_timestamp()\r
+       {\r
+               echo $this->currentComment['timestamp'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_plugin()\r
+        * Executes a plugin templatevar\r
+        *\r
+        * @param       string  $pluginName     name of plugin (without the NP_)\r
+        * @param       extra parameters can be added\r
+        * @return      void\r
+        */\r
+       public function parse_plugin($pluginName)\r
+       {\r
+               global $manager;\r
+               \r
+               // only continue when the plugin is really installed\r
+               if ( !$manager->pluginInstalled("NP_{$pluginName}") )\r
+               {\r
+                       return;\r
+               }\r
+               \r
+               $plugin =& $manager->getPlugin("NP_{$pluginName}");\r
+               if ( !$plugin )\r
+               {\r
+                       return;\r
+               }\r
+               \r
+               // get arguments\r
+               $params = func_get_args();\r
+               \r
+               // remove plugin name\r
+               array_shift($params);\r
+               \r
+               // pass info on current item and current comment as well\r
+               $params = array_merge(array(&$this->currentComment), $params);\r
+               $params = array_merge(array(&$this->commentsObj->itemActions->currentItem), $params);\r
+               \r
+               call_user_func_array(array(&$plugin,'doTemplateCommentsVar'), $params);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_user()\r
+        * Parse templatevar user\r
+        * \r
+        * @param       string  $mode   realname or else\r
+        * @return      void\r
+        */\r
+       public function parse_user($mode = '')\r
+       {\r
+               global $manager;\r
+               \r
+               if ( $mode == 'realname' && $this->currentComment['memberid'] > 0 )\r
+               {\r
+                       $member =& $manager->getMember($this->currentComment['memberid']);\r
+                       echo $member->getRealName();\r
+               }\r
+               else\r
+               {\r
+                       echo Entity::hsc($this->currentComment['user']);\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_useremail()\r
+        * Output mail address\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_useremail() {\r
+               global $manager;\r
+               if ( $this->currentComment['memberid'] > 0 )\r
+               {\r
+                       $member =& $manager->getMember($this->currentComment['memberid']);\r
+                       \r
+                       if ( $member->email != '' )\r
+                       {\r
+                               echo $member->email;\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       if ( NOTIFICATION::address_validation($this->currentComment['email']) )\r
+                       {\r
+                               echo $this->currentComment['email'];\r
+                       }\r
+                       elseif ( NOTIFICATION::address_validation($this->currentComment['userid']) )\r
+                       {\r
+                               echo $this->currentComment['userid'];\r
+                       }\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_userid()\r
+        * Parse templatevar userid\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_userid()\r
+       {\r
+               echo $this->currentComment['userid'];\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_userlink()\r
+        * Parse templatevar userlink\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_userlink()\r
+       {\r
+               if ( $this->currentComment['userlinkraw'] )\r
+               {\r
+                       echo '<a href="'.$this->currentComment['userlinkraw'].'" rel="nofollow">'.$this->currentComment['user'].'</a>';\r
+               }\r
+               else\r
+               {\r
+                       echo $this->currentComment['user'];\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_userlinkraw()\r
+        * Parse templatevar userlinkraw\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_userlinkraw()\r
+       {\r
+               echo (array_key_exists('userlinkraw', $this->currentComment) && !empty($this->currentComment['userlinkraw'])) ? $this->currentComment['userlinkraw'] : '';\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_userwebsite()\r
+        * Parse templatevar userwebsite\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_userwebsite()\r
+       {\r
+               if ( !(i18n::strpos($this->currentComment['userlinkraw'], 'http://') === false) )\r
+               {\r
+                       echo $this->currentComment['userlinkraw'];\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::parse_userwebsitelink()\r
+        * Parse templatevar userwebsitelink\r
+        * \r
+        * @param       void\r
+        * @return      void\r
+        */\r
+       public function parse_userwebsitelink()\r
+       {\r
+               if ( !(i18n::strpos($this->currentComment['userlinkraw'], 'http://') === false) )\r
+               {\r
+                       echo '<a href="'.$this->currentComment['userlinkraw'].'" rel="nofollow">'.$this->currentComment['user'].'</a>';\r
+               }\r
+               else\r
+               {\r
+                       echo $this->currentComment['user'];\r
+               }\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::checkCondition()\r
+        * Checks conditions for if statements\r
+        *\r
+        * @param       string  $field  type of <%if%>\r
+        * @param       string  $name   property of field\r
+        * @param       string  $value  value of property\r
+        * @return      boolean\r
+        */\r
+       protected function checkCondition($field, $name='', $value = '') {\r
+               global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists;\r
+               $condition = 0;\r
+               switch ( $field )\r
+               {\r
+                       case 'category':\r
+                               $condition = ($blog && $this->ifCategory($name,$value));\r
+                               break;\r
+                       case 'itemcategory':\r
+                               $condition = ($this->ifItemCategory($name,$value));\r
+                               break;\r
+                       case 'blogsetting':\r
+                               $condition = ($blog && ($blog->getSetting($name) == $value));\r
+                               break;\r
+                       case 'itemblogsetting':\r
+                               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));\r
+                               $condition = ($b && ($b->getSetting($name) == $value));\r
+                               break;\r
+                       case 'loggedin':\r
+                               $condition = $member->isLoggedIn();\r
+                               break;\r
+                       case 'onteam':\r
+                               $condition = $member->isLoggedIn() && $this->ifOnTeam($name);\r
+                               break;\r
+                       case 'admin':\r
+                               $condition = $member->isLoggedIn() && $this->ifAdmin($name);\r
+                               break;\r
+                       case 'author':\r
+                               $condition = ($this->ifAuthor($name,$value));\r
+                               break;\r
+                       case 'hasplugin':\r
+                               $condition = $this->ifHasPlugin($name, $value);\r
+                               break;\r
+                       default:\r
+                               $condition = $manager->pluginInstalled('NP_' . $field) && $this->ifPlugin($field, $name, $value);\r
+                       break;\r
+               }\r
+               return $condition;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifCategory()\r
+        * Different checks for a category\r
+        * \r
+        * @param       string  $key    key of category\r
+        * @param       string  $value  value for key of category\r
+        * @return      boolean\r
+        */\r
+       private function ifCategory($key = '', $value = '')\r
+       {\r
+               global $blog, $catid;\r
+               \r
+               // when no parameter is defined, just check if a category is selected\r
+               if ( ($key != 'catname' && $key != 'catid') || ($value == '') )\r
+               {\r
+                       return $blog->isValidCategory($catid);\r
+               }\r
+               \r
+               // check category name\r
+               if ( $key == 'catname' )\r
+               {\r
+                       $value = $blog->getCategoryIdFromName($value);\r
+                       if ($value == $catid)\r
+                       return $blog->isValidCategory($catid);\r
+               }\r
+               \r
+               // check category id\r
+               if ( ($key == 'catid') && ($value == $catid) )\r
+               {\r
+                       return $blog->isValidCategory($catid);\r
+               }\r
+               return FALSE;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifAuthor()\r
+        * Different checks for an author\r
+        *\r
+        * @param       string  $key    key of data for author\r
+        * @param       string  $value  value of data for author\r
+        * @return      boolean correct or not\r
+        */\r
+       private function ifAuthor($key = '', $value = '')\r
+       {\r
+               global $member, $manager;\r
+               \r
+               if ( $this->currentComment['memberid'] == 0 )\r
+               {\r
+                       return FALSE;\r
+               }\r
+               \r
+               $mem =& $manager->getMember($this->currentComment['memberid']);\r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));\r
+               $citem =& $manager->getItem($this->currentComment['itemid'], 1, 1);\r
+               \r
+               // when no parameter is defined, just check if item author is current visitor\r
+               if (($key != 'isadmin' && $key != 'name' && $key != 'isauthor' && $key != 'isonteam')) {\r
+                       return (intval($member->getID()) > 0 && intval($member->getID()) == intval($citem['authorid']));\r
+               }\r
+               \r
+               // check comment author name\r
+               if ( $key == 'name' )\r
+               {\r
+                       $value = trim(strtolower($value));\r
+                       if ( $value == '' )\r
+                       {\r
+                               return FALSE;\r
+                       }\r
+                       if ( $value == strtolower($mem->getDisplayName()) )\r
+                       {\r
+                               return TRUE;\r
+                       }\r
+               }\r
+               \r
+               // check if comment author is admin\r
+               if ( $key == 'isadmin' )\r
+               {\r
+                       $blogid = intval($b->getID());\r
+                       if ( $mem->isAdmin() )\r
+                       {\r
+                               return TRUE;\r
+                       }\r
+                       return $mem->isBlogAdmin($blogid);\r
+               }\r
+               \r
+               // check if comment author is item author\r
+               if ( $key == 'isauthor' )\r
+               {\r
+                       return (intval($citem['authorid']) == intval($this->currentComment['memberid']));\r
+               }\r
+               \r
+               // check if comment author is on team\r
+               if ( $key == 'isonteam' )\r
+               {\r
+                       return $mem->teamRights(intval($b->getID()));\r
+               }\r
+               return FALSE;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifItemCategory()\r
+        * Different checks for a category\r
+        *\r
+        * @param       string  $key    key of data for category to which item belongs\r
+        * @param       string  $value  value of data for category to which item belongs\r
+        * @return boolean      correct or not\r
+        */\r
+       private function ifItemCategory($key = '', $value = '')\r
+       {\r
+               global $catid, $manager;\r
+       \r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));\r
+               $citem =& $manager->getItem($this->currentComment['itemid'],1,1);\r
+               $icatid = $citem['catid'];\r
+       \r
+               // when no parameter is defined, just check if a category is selected\r
+               if ( ($key != 'catname' && $key != 'catid') || ($value == '') )\r
+               {\r
+                       return $b->isValidCategory($icatid);\r
+               }\r
+       \r
+               // check category name\r
+               if ( $key == 'catname' )\r
+               {\r
+                       $value = $b->getCategoryIdFromName($value);\r
+                       if ( $value == $icatid )\r
+                       {\r
+                               return $b->isValidCategory($icatid);\r
+                       }\r
+               }\r
+       \r
+               // check category id\r
+               if ( ($key == 'catid') && ($value == $icatid) )\r
+               {\r
+                       return $b->isValidCategory($icatid);\r
+               }\r
+               return FALSE;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifOnTeam()\r
+        * Checks if a member is on the team of a blog and return his rights\r
+        * \r
+        * @param       string  $blogName       name of weblog\r
+        * @return      boolean correct or not\r
+        */\r
+       private function ifOnTeam($blogName = '')\r
+       {\r
+               global $blog, $member, $manager;\r
+               \r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));\r
+               \r
+               // when no blog found\r
+               if ( ($blogName == '') && (!is_object($b)) )\r
+               {\r
+                       return 0;\r
+               }\r
+               \r
+               // explicit blog selection\r
+               if ( $blogName != '' )\r
+               {\r
+                       $blogid = getBlogIDFromName($blogName);\r
+               }\r
+               \r
+               // use current blog\r
+               if ( ($blogName == '') || !$manager->existsBlogID($blogid) )\r
+               {\r
+                       $blogid = $b->getID();\r
+               }\r
+               \r
+               return $member->teamRights($blogid);\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifAdmin()\r
+        * Checks if a member is admin of a blog\r
+        * \r
+        * @param       string  $blogName       name of weblog\r
+        * @return      boolean correct or not\r
+        */\r
+       private function ifAdmin($blogName = '')\r
+       {\r
+               global $blog, $member, $manager;\r
+               \r
+               $b =& $manager->getBlog(getBlogIDFromItemID($this->currentComment['itemid']));\r
+               \r
+               // when no blog found\r
+               if ( ($blogName == '') && (!is_object($b)) )\r
+               {\r
+                       return 0;\r
+               }\r
+               \r
+               // explicit blog selection\r
+               if ( $blogName != '' )\r
+               {\r
+                       $blogid = getBlogIDFromName($blogName);\r
+               }\r
+               \r
+               // use current blog\r
+               if ( ($blogName == '') || !$manager->existsBlogID($blogid) )\r
+               {\r
+                       $blogid = $b->getID();\r
+               }\r
+               \r
+               return $member->isBlogAdmin($blogid);\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifHasPlugin()\r
+        *      hasplugin,PlugName\r
+        *         -> checks if plugin exists\r
+        *      hasplugin,PlugName,OptionName\r
+        *         -> checks if the option OptionName from plugin PlugName is not set to 'no'\r
+        *      hasplugin,PlugName,OptionName=value\r
+        *         -> checks if the option OptionName from plugin PlugName is set to value\r
+        *\r
+        * @param       string  $name   name of plugin\r
+        * @param       string  $value  key (and value) of plugin option\r
+        * @return      boolean correct or not\r
+        */\r
+       private function ifHasPlugin($name, $value)\r
+       {\r
+               global $manager;\r
+               $condition = FALSE;\r
+               \r
+               // (pluginInstalled method won't write a message in the actionlog on failure)\r
+               if ( $manager->pluginInstalled('NP_'.$name) )\r
+               {\r
+                       $plugin =& $manager->getPlugin("NP_{$name}");\r
+                       if ( $plugin != NULL )\r
+                       {\r
+                               if ( $value == "" )\r
+                               {\r
+                                       $condition = true;\r
+                               }\r
+                               else\r
+                               {\r
+                                       list($name2, $value2) = preg_split('#=#', $value, 2);\r
+                                       if ( $value2 == "" && $plugin->getOption($name2) != 'no' )\r
+                                       {\r
+                                               $condition = true;\r
+                                       }\r
+                                       else if ( $plugin->getOption($name2) == $value2 )\r
+                                       {\r
+                                               $condition = true;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               return $condition;\r
+       }\r
+       \r
+       /**\r
+        * CommentActions::ifPlugin()\r
+        * Checks if a plugin exists and call its doIf function\r
+        * \r
+        * @param       string  $name   name of plugin\r
+        * @param       string  $key    key of plugin option\r
+        * @param       string  $value  value of plugin option\r
+        * @return      boolean callback output from plugin\r
+        */\r
+       private function ifPlugin($name, $key = '', $value = '')\r
+       {\r
+               global $manager;\r
+               \r
+               $plugin =& $manager->getPlugin("NP_{$name}");\r
+               if ( !$plugin )\r
+               {\r
+                       return;\r
+               }\r
+               \r
+               $params = func_get_args();\r
+               array_shift($params);\r
+               \r
+               return call_user_func_array(array(&$plugin, 'doIf'), $params);\r
+       }\r
+}\r