BaseActions(); } function setCurrentItem(&$item) { $this->currentItem =& $item; global $currentitemid; $currentitemid = $this->currentItem->itemid; } function setTemplate($template) { $this->template =& $template; } function getDefinedActions() { return array('image', 'media', 'popup', 'plugin', 'if', 'else', 'endif', 'elseif', 'ifnot', 'elseifnot'); } function parse_plugin($pluginName) { global $manager; // should be already tested from the parser (PARSER.php) // 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); // add item reference (array_unshift didn't work) $params = array_merge(array(&$this->currentItem),$params); call_user_func_array(array(&$plugin,'doItemVar'), $params); } function parse_image() { // image/popup calls have arguments separated by | $args = func_get_args(); $args = explode('|',implode($args,', ')); call_user_func_array(array(&$this,'createImageCode'),$args); } function createImageCode($filename, $width, $height, $text = '') { global $CONF; // select private collection when no collection given if (!strstr($filename,'/')) { $filename = $this->currentItem->authorid . '/' . $filename; } $windowwidth = $width; $windowheight = $height; $vars['link'] = htmlspecialchars($CONF['MediaURL']. $filename ,ENT_QUOTES); $vars['text'] = htmlspecialchars($text ,ENT_QUOTES); $vars['image'] = '' . $vars['text'] . ''; $vars['width'] = $width; $vars['height'] = $height; $vars['media'] = '' . $vars['text'] . ''; echo TEMPLATE::fill($this->template['IMAGE_CODE'],$vars);; } function parse_media() { // image/popup calls have arguments separated by | $args = func_get_args(); $args = explode('|',implode($args,', ')); call_user_func_array(array(&$this,'createMediaCode'),$args); } function createMediaCode($filename, $text = '') { global $CONF; // select private collection when no collection given if (!strstr($filename,'/')) { $filename = $this->currentItem->authorid . '/' . $filename; } $vars['link'] = htmlspecialchars($CONF['MediaURL'] . $filename ,ENT_QUOTES); $vars['text'] = htmlspecialchars($text ,ENT_QUOTES); $vars['media'] = '' . $vars['text'] . ''; echo TEMPLATE::fill($this->template['MEDIA_CODE'],$vars);; } function parse_popup() { // image/popup calls have arguments separated by | $args = func_get_args(); $args = explode('|',implode($args,', ')); call_user_func_array(array(&$this,'createPopupCode'),$args); } function createPopupCode($filename, $width, $height, $text = '') { global $CONF; // select private collection when no collection given if (!strstr($filename,'/')) { $filename = $this->currentItem->authorid . '/' . $filename; } $windowwidth = $width; $windowheight = $height; $vars['rawpopuplink'] = $CONF['Self'] . "?imagepopup=" . htmlspecialchars($filename,ENT_QUOTES) . "&width=$width&height=$height&imagetext=" . urlencode(htmlspecialchars($text)); $vars['popupcode'] = "window.open(this.href,'imagepopup','status=no,toolbar=no,scrollbars=no,resizable=yes,width=$windowwidth,height=$windowheight');return false;"; $vars['popuptext'] = htmlspecialchars($text,ENT_QUOTES); $vars['popuplink'] = '' . $vars['popuptext'] . ''; $vars['width'] = $width; $vars['height'] = $height; $vars['text'] = $text; $vars['link'] = htmlspecialchars($CONF['MediaURL'] . $filename ,ENT_QUOTES); $vars['media'] = '' . $vars['popuptext'] . ''; echo TEMPLATE::fill($this->template['POPUP_CODE'],$vars); } // function to enable if-else-elseif-elseifnot-ifnot-endif to item 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->currentItem->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; $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid)); // when no parameter is defined, just check if author is current visitor if (($name != 'isadmin' && $name != 'name') || ($name == 'name' && $value == '')) { return (intval($member->getID()) > 0 && intval($member->getID()) == intval($this->currentItem->authorid)); } // check author name if ($name == 'name') { $value = strtolower($value); if ($value == strtolower($this->currentItem->author)) return true; } // check if author is admin if (($name == 'isadmin')) { $aid = intval($this->currentItem->authorid); $blogid = intval($b->getID()); $amember =& $manager->getMember($aid); if ($amember->isAdmin()) return true; return $amember->isBlogAdmin($blogid); } return false; } /** * Different checks for a category */ function _ifItemCategory($name = '', $value='') { global $catid, $manager; $b =& $manager->getBlog(getBlogIDFromItemID($this->currentItem->itemid)); // when no parameter is defined, just check if a category is selected if (($name != 'catname' && $name != 'catid') || ($value == '')) return $b->isValidCategory($catid); $icatid = $this->currentItem->catid; //$icategory = $this->currentItem->category; // 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; // when no blog found if (($blogName == '') && (!is_object($blog))) return 0; // explicit blog selection if ($blogName != '') $blogid = getBlogIDFromName($blogName); if (($blogName == '') || !$manager->existsBlogID($blogid)) // use current blog $blogid = $blog->getID(); return $member->teamRights($blogid); } /** * Checks if a member is admin of a blog */ function _ifAdmin($blogName = '') { global $blog, $member, $manager; // when no blog found if (($blogName == '') && (!is_object($blog))) return 0; // explicit blog selection if ($blogName != '') $blogid = getBlogIDFromName($blogName); if (($blogName == '') || !$manager->existsBlogID($blogid)) // use current blog $blogid = $blog->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) = 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); } } ?>