* This class contains the functions that get called by using\r
* the special tags in the skins\r
*\r
- * The allowed tags for a type of skinpart are defined by the\r
- * Skin::getAllowedActionsForType($type) method\r
- *\r
* @license http://nucleuscms.org/license.txt GNU General Public License\r
* @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: ACTIONS.php 1725 2012-04-07 02:21:32Z sakamocchi $\r
+ * @version $Id: ACTIONS.php 1863 2012-05-19 10:50:27Z sakamocchi $
*/\r
\r
class Actions extends BaseActions\r
{\r
// part of the skin currently being parsed ('index', 'item', 'archive',\r
// 'archivelist', 'member', 'search', 'error', 'imagepopup')\r
- var $skintype;\r
+ private $skintype;\r
\r
// contains an assoc array with parameters that need to be included when\r
// generating links to items/archives/... (e.g. catid)\r
- var $linkparams;\r
- \r
- // reference to the skin object for which a part is being parsed\r
- var $skin;\r
+ private $linkparams;\r
\r
// used when including templated forms from the include/ dir. The $formdata var\r
// contains the values to fill out in there (assoc array name -> value)\r
- var $formdata;\r
+ private $formdata;\r
\r
// filled out with the number of displayed items after calling one of the\r
// (other)blog/(other)searchresults skinvars.\r
- var $amountfound;\r
+ private $amountfound;\r
+ \r
+ /**\r
+ * Actions::$default_actions\r
+ * list of whole action names with which this class can deal\r
+ */\r
+ static private $default_actions = array(\r
+ 'addlink',\r
+ 'addpopupcode',\r
+ 'adminurl',\r
+ 'archivelink',\r
+ 'bloglist',\r
+ 'category',\r
+ 'loginform',\r
+ 'member',\r
+ 'nucleusbutton',\r
+ 'otherarchivedaylist',\r
+ 'otherarchivelist',\r
+ 'otherarchiveyearlist',\r
+ 'otherblog',\r
+ 'plugin',\r
+ 'referer',\r
+ 'searchform',\r
+ 'self',\r
+ 'sitevar',\r
+ 'skinname',\r
+ 'sticky',\r
+ 'todaylink',\r
+ 'version',\r
+ // deprecated (Nucleus v2.0)\r
+ /* TODO: remove this */\r
+ 'ifcat'\r
+ );\r
+ \r
+ /**\r
+ * Actions::$skin_type_friendly_names\r
+ * friendly name for wrapped page types\r
+ */\r
+ static public $default_skin_types = array(\r
+ 'index' => _SKIN_PART_MAIN,\r
+ 'item' => _SKIN_PART_ITEM,\r
+ 'archivelist' => _SKIN_PART_ALIST,\r
+ 'archive' => _SKIN_PART_ARCHIVE,\r
+ 'search' => _SKIN_PART_SEARCH,\r
+ 'error' => _SKIN_PART_ERROR,\r
+ 'member' => _SKIN_PART_MEMBER,\r
+ 'imagepopup' => _SKIN_PART_POPUP\r
+ );\r
+ \r
+ /**\r
+ * Actions::getAvailableSkinTypes()\r
+ * \r
+ * @static\r
+ * @param void\r
+ * @return array list of friendly names for page actions\r
+ */\r
+ static public function getAvailableSkinTypes()\r
+ {\r
+ return self::$default_skin_types;\r
+ }\r
\r
/**\r
* Actions::__construct()\r
global $catid;\r
\r
// call constructor of superclass first\r
- $this->BaseActions();\r
+ parent::__construct();\r
$this->skintype = $type;\r
\r
if ( $catid )\r
}\r
\r
/**\r
- * Actions::setSkin()\r
- * Set the skin\r
- * @param object $skin an instance of Skin class\r
- * @return void\r
- */\r
- public function setSkin(&$skin)\r
- {\r
- $this->skin =& $skin;\r
- return;\r
- }\r
- \r
- /**\r
- * Actions::setParser()\r
- * Set the parser\r
+ * Actions::getAvailableActions()\r
* \r
- * @param object $parser an instance of Parser class\r
- * @return void\r
- */\r
- public function setParser(&$parser)\r
- {\r
- $this->parser =& $parser;\r
- return;\r
+ * @param void\r
+ * @return array allowed actions for the page type\r
+ */\r
+ public function getAvailableActions()\r
+ {\r
+ $extra_actions = array();\r
+ \r
+ switch ( $this->skintype )\r
+ {\r
+ case 'index':\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'blogsetting',\r
+ 'preview',\r
+ 'additemform',\r
+ 'categorylist',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'nextlink',\r
+ 'prevlink'\r
+ );\r
+ break;\r
+ case 'archive':\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'archive',\r
+ 'otherarchive',\r
+ 'categorylist',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'blogsetting',\r
+ 'archivedate',\r
+ 'nextarchive',\r
+ 'prevarchive',\r
+ 'nextlink',\r
+ 'prevlink',\r
+ 'archivetype'\r
+ );\r
+ break;\r
+ case 'archivelist':\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'categorylist',\r
+ 'blogsetting'\r
+ );\r
+ break;\r
+ case 'search':\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'categorylist',\r
+ 'searchresults',\r
+ 'othersearchresults',\r
+ 'blogsetting',\r
+ 'query',\r
+ 'nextlink',\r
+ 'prevlink'\r
+ );\r
+ break;\r
+ case 'imagepopup':\r
+ $extra_actions = array(\r
+ 'image',\r
+ // deprecated (Nucleus v2.0)\r
+ /* TODO: remove this */\r
+ 'imagetext'\r
+ );\r
+ break;\r
+ case 'member':\r
+ $extra_actions = array(\r
+ 'membermailform',\r
+ 'blogsetting',\r
+ 'nucleusbutton',\r
+ 'categorylist'\r
+ );\r
+ break;\r
+ case 'item':\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'item',\r
+ 'comments',\r
+ 'commentform',\r
+ 'vars',\r
+ 'blogsetting',\r
+ 'nextitem',\r
+ 'previtem',\r
+ 'nextlink',\r
+ 'prevlink',\r
+ 'nextitemtitle',\r
+ 'previtemtitle',\r
+ 'categorylist',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'itemtitle',\r
+ 'itemid',\r
+ 'itemlink'\r
+ );\r
+ break;\r
+ case 'error':\r
+ $extra_actions = array(\r
+ 'errormessage',\r
+ 'categorylist'\r
+ );\r
+ break;\r
+ default:\r
+ $extra_actions = array(\r
+ 'blog',\r
+ 'blogsetting',\r
+ 'preview',\r
+ 'additemform',\r
+ 'categorylist',\r
+ 'archivelist',\r
+ 'archivedaylist',\r
+ 'archiveyearlist',\r
+ 'nextlink',\r
+ 'prevlink',\r
+ 'membermailform',\r
+ 'nucleusbutton',\r
+ 'categorylist'\r
+ );\r
+ break;\r
+ }\r
+ \r
+ $defined_actions = array_merge(self::$default_actions, $extra_actions);\r
+ \r
+ return array_merge($defined_actions, parent::getAvailableActions());\r
}\r
\r
/**\r
public function doForm($filename)\r
{\r
global $DIR_NUCLEUS;\r
- array_push($this->parser->actions,'formdata','text','callback','errordiv','ticket');\r
+ array_push($this->parser->actions,'formdata', 'callback','errordiv','ticket');\r
\r
$oldIncludeMode = Parser::getProperty('IncludeMode');\r
$oldIncludePrefix = Parser::getProperty('IncludePrefix');\r
\r
array_pop($this->parser->actions); // errordiv\r
array_pop($this->parser->actions); // callback\r
- array_pop($this->parser->actions); // text\r
array_pop($this->parser->actions); // formdata\r
array_pop($this->parser->actions); // ticket\r
return;\r
* @param string $value value of property\r
* @return boolean condition\r
*/\r
- public function checkCondition($field, $name='', $value = '')\r
+ protected function checkCondition($field, $name='', $value = '')\r
{\r
global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists;\r
\r
case 'admin':\r
$condition = $member->isLoggedIn() && $this->ifAdmin($name);\r
break;\r
- case 'superadmin':\r
- $condition = $member->isLoggedIn() && $member->isAdmin();\r
- break;\r
- case 'allowloginedit':\r
- $condition = $member->isLoggedIn() && ($CONF['AllowLoginEdit'] || $member->isAdmin());\r
- break;\r
case 'nextitem':\r
$condition = ($itemidnext != '');\r
break;\r
case 'hasplugin':\r
$condition = $this->ifHasPlugin($name, $value);\r
break;\r
- case 'adminaction':\r
- $condition = ($this->objAdmin->action == $name);\r
- break;\r
- case 'adminoldaction':\r
- $condition = ($this->objAdmin->action == $name);\r
- break;\r
- case 'addresschange':\r
- $condition = ($this->_ifAddresscange());\r
- break;\r
- case 'bechangepass':\r
- $condition = ($this->_beChangePassword());\r
- break;\r
- case 'skincandidates':\r
- $condition = ($this->_ifSkincandidates());\r
- break;\r
- case 'nameclashes':\r
- $condition = requestVar('nameclashes');\r
- break;\r
- case 'existsnewplugin':\r
- $condition = ($this->_existsNewPlugin());\r
- break;\r
default:\r
$condition = $manager->pluginInstalled("NP_{$field}") && $this->ifPlugin($field, $name, $value);\r
break;\r
}\r
\r
// check category name\r
- if ( $name == 'catname' )\r
+ else if ( $name == 'catname' )
{\r
$value = $blog->getCategoryIdFromName($value);\r
if ( $value == $catid )\r
}\r
\r
// check category id\r
- if ( ($name == 'catid') && ($value == $catid) )\r
+ else if ( ($name == 'catid') && ($value == $catid) )
{\r
return $blog->isValidCategory($catid);\r
}\r
// TODO: Move request uri to linkparams. this is ugly. sorry for that.\r
$startpos = (integer) $startpos;\r
$parsed = parse_url(serverVar('REQUEST_URI'));\r
- $path = $parsed['path'];\r
- $parsed = $parsed['query'];\r
+ $path = ( in_array('path', $parsed) ) ? $parsed['path'] : '';\r
+ $parsed = ( in_array('query', $parsed) ) ? $parsed['query'] : '';\r
$url = '';\r
\r
if ( $direction == 'prev' )\r
{\r
$url = $CONF['SearchURL'];\r
}\r
- $url .= '?' . alterQueryStr($parsed,'startpos',$startpos);\r
+ $url .= '?' . alterQueryStr($parsed, 'startpos', $startpos);\r
}\r
}\r
else if ( $direction == 'next' )\r
}\r
if ( $sqlquery )\r
{\r
- $iAmountOnPage = intval(quickQuery($sqlquery)) - intval($startpos);\r
+ $iAmountOnPage = intval(DB::getValue($sqlquery)) - intval($startpos);\r
}\r
}\r
\r
}\r
\r
/**\r
- * Actions::parse_charset()\r
- * Parse skinvar charset\r
- * \r
- * @param void\r
- * @return void\r
- */\r
- public function parse_charset()\r
- {\r
- echo i18n::get_current_charset();\r
- return;\r
- }\r
- \r
- /**\r
* Actions::parse_commentform()\r
* Parse skinvar commentform\r
* \r
*/\r
public function parse_comments($template)\r
{\r
- global $itemid, $manager, $blog, $highlight;\r
+ global $manager, $blog, $highlight, $itemid;\r
+ \r
$template =& $manager->getTemplate($template);\r
+ $item =& $manager->getitem($itemid, 0, 0);\r
\r
// create parser object & action handler\r
- $actions = new ItemActions($blog);\r
- $parser = new Parser($actions->getDefinedActions(),$actions);\r
- $actions->setTemplate($template);\r
- $actions->setParser($parser);\r
- $item = Item::getitem($itemid, 0, 0);\r
- $actions->setCurrentItem($item);\r
+ $handler = new ItemActions($blog);\r
+ $handler->setTemplate($template);\r
+ $handler->setCurrentItem($item);\r
+ \r
+ $parser = new Parser($handler);\r
\r
$comments = new Comments($itemid);\r
- $comments->setItemActions($actions);\r
+ $comments->setItemActions($handler);\r
// shows ALL comments\r
$comments->showComments($template, -1, 1, $highlight);\r
return;\r
*/\r
public function parse_skinname()\r
{\r
- echo $this->skin->getName();\r
+ echo $this->parser->skin->getName();\r
return;\r
}\r
\r
}\r
\r
/**\r
- * Actions::parse_text()\r
- * Parse text\r
- * \r
- * @param void\r
- * @return void\r
- */\r
- public function parse_text($which)\r
- {\r
- // constant($which) only available from 4.0.4 :(\r
- if ( defined($which) )\r
- {\r
- eval("echo $which;");\r
- }\r
- return;\r
- }\r
- \r
- /**\r
* Actions::parse_ticket()\r
* Parse ticket\r
* \r