<?php
/*
* Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)
- * Copyright (C) 2002-2006 The Nucleus Group
+ * Copyright (C) 2002-2007 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
* SKIN::getAllowedActionsForType($type) method
*
* @license http://nucleuscms.org/license.txt GNU General Public License
- * @copyright Copyright (C) 2002-2006 The Nucleus Group
- * @version $Id: ACTIONS.php,v 1.2 2006-07-20 08:01:52 kimitake Exp $
- * @version $NucleusJP$
+ * @copyright Copyright (C) 2002-2007 The Nucleus Group
+ * @version $Id: ACTIONS.php,v 1.7 2007-03-22 03:30:13 kmorimatsu Exp $
+ * @version $NucleusJP: ACTIONS.php,v 1.6 2007/03/13 05:17:37 shizuki Exp $
*/
class ACTIONS extends BaseActions {
// reference to the skin object for which a part is being parsed
var $skin;
-
// used when including templated forms from the include/ dir. The $formdata var
// contains the values to fill out in there (assoc array name -> value)
var $formdata;
-
// filled out with the number of displayed items after calling one of the
-
// (other)blog/(other)searchresults skinvars.
-
var $amountfound;
+ /**
+ * Constructor for a new ACTIONS object
+ */
function ACTIONS($type) {
// call constructor of superclass first
$this->BaseActions();
$this->linkparams = array('catid' => $catid);
}
+ /**
+ * Set the skin
+ */
function setSkin(&$skin) {
$this->skin =& $skin;
}
+ /**
+ * Set the parser
+ */
function setParser(&$parser) {
$this->parser =& $parser;
}
- /*
- Forms get parsedincluded now, using an extra <formdata> skinvar
+ /**
+ * Forms get parsedincluded now, using an extra <formdata> skinvar
*/
function doForm($filename) {
global $DIR_NUCLEUS;
array_pop($this->parser->actions); // ticket
}
- function parse_ticket() {
- global $manager;
- $manager->addTicketHidden();
- }
-
- function parse_formdata($what) {
- echo $this->formdata[$what];
- }
- function parse_text($which) {
- // constant($which) only available from 4.0.4 :(
- if (defined($which)) {
- eval("echo $which;");
- }
- }
- function parse_callback($eventName, $type)
- {
- global $manager;
- $manager->notify($eventName, array('type' => $type));
- }
- function parse_errordiv() {
- global $errormessage;
- if ($errormessage)
- echo '<div class="error">', htmlspecialchars($errormessage),'</div>';
- }
-
- function parse_skinname() {
- echo $this->skin->getName();
- }
-
/**
* Checks conditions for if statements
*
* @param string $value value of property
*/
function checkCondition($field, $name='', $value = '') {
- global $catid, $blog, $member, $itemidnext, $itemidprev, $manager;
+ global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists;
$condition = 0;
switch($field) {
case 'previtem':
$condition = ($itemidprev != '');
break;
+ case 'archiveprevexists':
+ $condition = ($archiveprevexists == true);
+ break;
+ case 'archivenextexists':
+ $condition = ($archivenextexists == true);
+ break;
case 'skintype':
$condition = ($name == $this->skintype);
break;
return $condition;
}
+ /**
+ * Checks if a plugin exists and call its doIf function
+ */
function _ifPlugin($name, $key = '', $value = '') {
global $manager;
return call_user_func_array(array(&$plugin, 'doIf'), $params);
}
+ /**
+ * Different checks for a category
+ */
function _ifCategory($name = '', $value='') {
global $blog, $catid;
return false;
}
+ /**
+ * Checks if a member is on the team of a blog and return his rights
+ */
function _ifOnTeam($blogName = '') {
global $blog, $member, $manager;
return $member->teamRights($blogid);
}
+ /**
+ * Checks if a member is admin of a blog
+ */
function _ifAdmin($blogName = '') {
global $blog, $member, $manager;
return $member->isBlogAdmin($blogid);
}
-
- function parse_ifcat($text = '') {
- if ($text == '') {
- // new behaviour
- $this->parse_if('category');
- } else {
- // old behaviour
- global $catid, $blog;
- if ($blog->isValidCategory($catid))
- echo $text;
- }
- }
-
- // a link to the today page (depending on selected blog, etc...)
- function parse_todaylink($linktext = '') {
- global $blog, $CONF;
- if ($blog)
- echo $this->_link(createBlogidLink($blog->getID(),$this->linkparams), $linktext);
- else
- echo $this->_link($CONF['SiteUrl'], $linktext);
- }
-
- // a link to the archives for the current blog (or for default blog)
- function parse_archivelink($linktext = '') {
- global $blog, $CONF;
- if ($blog)
- echo $this->_link(createArchiveListLink($blog->getID(),$this->linkparams), $linktext);
- else
- echo $this->_link(createArchiveListLink(), $linktext);
- }
-
- // include itemid of prev item
- function parse_previtem() {
- global $itemidprev;
- echo $itemidprev;
- }
-
- // include itemtitle of prev item
- function parse_previtemtitle($format = '') {
- global $itemtitleprev;
-
- switch ($format) {
- case 'xml':
- echo stringToXML ($itemtitleprev);
- break;
- case 'attribute':
- echo stringToAttribute ($itemtitleprev);
- break;
- case 'raw':
- echo $itemtitleprev;
- break;
- default:
- echo htmlspecialchars($itemtitleprev);
- break;
- }
- }
-
- // include itemid of next item
- function parse_nextitem() {
- global $itemidnext;
- echo $itemidnext;
- }
-
- // include itemtitle of next item
- function parse_nextitemtitle($format = '') {
- global $itemtitlenext;
-
- switch ($format) {
- case 'xml':
- echo stringToXML ($itemtitlenext);
- break;
- case 'attribute':
- echo stringToAttribute ($itemtitlenext);
- break;
- case 'raw':
- echo $itemtitlenext;
- break;
- default:
- echo htmlspecialchars($itemtitlenext);
- break;
- }
- }
-
- function parse_prevarchive() {
- global $archiveprev;
- echo $archiveprev;
- }
-
- function parse_nextarchive() {
- global $archivenext;
- echo $archivenext;
- }
-
- function parse_archivetype() {
- global $archivetype;
- echo $archivetype;
- }
-
- function parse_prevlink($linktext = '', $amount = 10) {
- global $itemidprev, $archiveprev, $startpos;
-
- if ($this->skintype == 'item')
- $this->_itemlink($itemidprev, $linktext);
- else if ($this->skintype == 'search' || $this->skintype == 'index')
- $this->_searchlink($amount, $startpos, 'prev', $linktext);
- else
- $this->_archivelink($archiveprev, $linktext);
- }
-
- function parse_nextlink($linktext = '', $amount = 10) {
- global $itemidnext, $archivenext, $startpos;
- if ($this->skintype == 'item')
- $this->_itemlink($itemidnext, $linktext);
- else if ($this->skintype == 'search' || $this->skintype == 'index')
- $this->_searchlink($amount, $startpos, 'next', $linktext);
- else
- $this->_archivelink($archivenext, $linktext);
- }
-
+
/**
* returns either
* - a raw link (html/xml encoded) when no linktext is provided
$l = $u;
return $l;
}
-
+
/**
* Outputs a next/prev link
*
echo $this->_link($url, $linktext);
}
+ /**
+ * Creates an item link and if no id is given a todaylink
+ */
function _itemlink($id, $linktext = '') {
global $CONF;
if ($id)
$this->parse_todaylink($linktext);
}
+ /**
+ * Creates an archive link and if no id is given a todaylink
+ */
function _archivelink($id, $linktext = '') {
global $CONF, $blog;
if ($id)
$this->parse_todaylink($linktext);
}
+ /**
+ * Helper function that sets the category that a blog will need to use
+ *
+ * @param $blog
+ * An object of the blog class, passed by reference (we want to make changes to it)
+ * @param $catname
+ * The name of the category to use
+ */
+ function _setBlogCategory(&$blog, $catname) {
+ global $catid;
+ if ($catname != '')
+ $blog->setSelectedCategoryByName($catname);
+ else
+ $blog->setSelectedCategory($catid);
+ }
+
+ /**
+ * Notifies the Manager that a PreBlogContent event occurs
+ */
+ function _preBlogContent($type, &$blog) {
+ global $manager;
+ $manager->notify('PreBlogContent',array('blog' => &$blog, 'type' => $type));
+ }
+
+ /**
+ * Notifies the Manager that a PostBlogContent event occurs
+ */
+ function _postBlogContent($type, &$blog) {
+ global $manager;
+ $manager->notify('PostBlogContent',array('blog' => &$blog, 'type' => $type));
+ }
+
+ /**
+ * Parse skinvar additemform
+ */
+ function parse_additemform() {
+ global $blog, $CONF;
+ $this->formdata = array(
+ 'adminurl' => htmlspecialchars($CONF['AdminURL'],ENT_QUOTES),
+ 'catid' => $blog->getDefaultCategory()
+ );
+ $blog->InsertJavaScriptInfo();
+ $this->doForm('additemform');
+ }
+
+ /**
+ * Parse skinvar adminurl
+ * (shortcut for admin url)
+ */
+ function parse_adminurl() {
+ $this->parse_sitevar('adminurl');
+ }
+
+ /**
+ * Parse skinvar archive
+ */
+ function parse_archive($template, $category = '') {
+ global $blog, $archive;
+ // can be used with either yyyy-mm or yyyy-mm-dd
+ sscanf($archive,'%d-%d-%d',$y,$m,$d);
+ $this->_setBlogCategory($blog, $category);
+ $this->_preBlogContent('achive',$blog);
+ $blog->showArchive($template, $y, $m, $d);
+ $this->_postBlogContent('achive',$blog);
- function parse_itemlink($linktext = '') {
- global $itemid;
- $this->_itemlink($itemid, $linktext);
}
/**
echo strftime($format,mktime(0,0,0,$m,$d?$d:1,$y));
}
- function parse_blog($template, $amount = 10, $category = '') {
- global $blog, $startpos;
-
- list($limit, $offset) = sscanf($amount, '%d(%d)');
+ /**
+ * Parse skinvar archivedaylist
+ */
+ function parse_archivedaylist($template, $category = 'all', $limit = 0) {
+ global $blog;
+ if ($category == 'all') $category = '';
+ $this->_preBlogContent('archivelist',$blog);
$this->_setBlogCategory($blog, $category);
- $this->_preBlogContent('blog',$blog);
- $this->amountfound = $blog->readLog($template, $limit, $offset, $startpos);
- $this->_postBlogContent('blog',$blog);
+ $blog->showArchiveList($template, 'day', $limit);
+ $this->_postBlogContent('archivelist',$blog);
}
-
- function parse_otherblog($blogname, $template, $amount = 10, $category = '') {
- global $manager;
-
- list($limit, $offset) = sscanf($amount, '%d(%d)');
-
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_setBlogCategory($b, $category);
- $this->_preBlogContent('otherblog',$b);
- $this->amountfound = $b->readLog($template, $limit, $offset);
- $this->_postBlogContent('otherblog',$b);
- }
-
- // include one item (no comments)
- function parse_item($template) {
- global $blog, $itemid, $highlight;
- $this->_setBlogCategory($blog, ''); // need this to select default category
- $this->_preBlogContent('item',$blog);
- $r = $blog->showOneitem($itemid, $template, $highlight);
- if ($r == 0)
- echo _ERROR_NOSUCHITEM;
- $this->_postBlogContent('item',$blog);
- }
-
- function parse_itemid() {
- global $itemid;
- echo $itemid;
- }
-
-
- // include comments for one item
- function parse_comments($template) {
- global $itemid, $manager, $blog, $highlight;
- $template =& $manager->getTemplate($template);
-
- // create parser object & action handler
- $actions =& new ITEMACTIONS($blog);
- $parser =& new PARSER($actions->getDefinedActions(),$actions);
- $actions->setTemplate($template);
- $actions->setParser($parser);
- $item = ITEM::getitem($itemid, 0, 0);
- $actions->setCurrentItem($item);
-
- $comments =& new COMMENTS($itemid);
- $comments->setItemActions($actions);
- $comments->showComments($template, -1, 1, $highlight); // shows ALL comments
- }
-
- function parse_archive($template, $category = '') {
- global $blog, $archive;
- // can be used with either yyyy-mm or yyyy-mm-dd
- sscanf($archive,'%d-%d-%d',$y,$m,$d);
- $this->_setBlogCategory($blog, $category);
- $this->_preBlogContent('achive',$blog);
- $blog->showArchive($template, $y, $m, $d);
- $this->_postBlogContent('achive',$blog);
-
- }
-
- function parse_otherarchive($blogname, $template, $category = '') {
- global $archive, $manager;
- sscanf($archive,'%d-%d-%d',$y,$m,$d);
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_setBlogCategory($b, $category);
- $this->_preBlogContent('otherachive',$b);
- $b->showArchive($template, $y, $m, $d);
- $this->_postBlogContent('otherachive',$b);
+
+ /**
+ * A link to the archives for the current blog (or for default blog)
+ */
+ function parse_archivelink($linktext = '') {
+ global $blog, $CONF;
+ if ($blog)
+ echo $this->_link(createArchiveListLink($blog->getID(),$this->linkparams), $linktext);
+ else
+ echo $this->_link(createArchiveListLink(), $linktext);
}
function parse_archivelist($template, $category = 'all', $limit = 0) {
$this->_postBlogContent('archivelist',$blog);
}
- function parse_archivedaylist($template, $category = 'all', $limit = 0) {
- global $blog;
- if ($category == 'all') $category = '';
- $this->_preBlogContent('archivelist',$blog);
+ /**
+ * Parse skinvar archivetype
+ */
+ function parse_archivetype() {
+ global $archivetype;
+ echo $archivetype;
+ }
+
+ /**
+ * Parse skinvar blog
+ */
+ function parse_blog($template, $amount = 10, $category = '') {
+ global $blog, $startpos;
+
+ list($limit, $offset) = sscanf($amount, '%d(%d)');
$this->_setBlogCategory($blog, $category);
- $blog->showArchiveList($template, 'day', $limit);
- $this->_postBlogContent('archivelist',$blog);
+ $this->_preBlogContent('blog',$blog);
+ $this->amountfound = $blog->readLog($template, $limit, $offset, $startpos);
+ $this->_postBlogContent('blog',$blog);
}
- function parse_itemtitle($format = '') {
- global $manager, $itemid;
- $item =& $manager->getItem($itemid,0,0);
+ /*
+ * Parse skinvar bloglist
+ * Shows a list of all blogs
+ * bnametype: whether 'name' or 'shortname' is used for the link text
+ */
+ function parse_bloglist($template, $bnametype = '') {
+ BLOG::showBlogList($template, $bnametype);
+ }
- switch ($format) {
- case 'xml':
- echo stringToXML ($item['title']);
+ /**
+ * Parse skinvar blogsetting
+ */
+ function parse_blogsetting($which) {
+ global $blog;
+ switch($which) {
+ case 'id':
+ echo htmlspecialchars($blog->getID(),ENT_QUOTES);
break;
- case 'attribute':
- echo stringToAttribute ($item['title']);
+ case 'url':
+ echo htmlspecialchars($blog->getURL(),ENT_QUOTES);
break;
- case 'raw':
- echo $item['title'];
+ case 'name':
+ echo htmlspecialchars($blog->getName(),ENT_QUOTES);
break;
- default:
- echo htmlspecialchars(strip_tags($item['title']));
+ case 'desc':
+ echo htmlspecialchars($blog->getDescription(),ENT_QUOTES);
+ break;
+ case 'short':
+ echo htmlspecialchars($blog->getShortName(),ENT_QUOTES);
break;
}
}
- function parse_categorylist($template, $blogname = '') {
- global $blog, $manager;
-
- if ($blogname == '') {
- $this->_preBlogContent('categorylist',$blog);
- $blog->showCategoryList($template);
- $this->_postBlogContent('categorylist',$blog);
- } else {
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_preBlogContent('categorylist',$b);
- $b->showCategoryList($template);
- $this->_postBlogContent('categorylist',$b);
- }
+ /**
+ * Parse callback
+ */
+ function parse_callback($eventName, $type)
+ {
+ global $manager;
+ $manager->notify($eventName, array('type' => $type));
}
+ /**
+ * Parse skinvar category
+ */
function parse_category($type = 'name') {
global $catid, $blog;
if (!$blog->isValidCategory($catid))
}
}
- function parse_otherarchivelist($blogname, $template, $category = 'all', $limit = 0) {
- global $manager;
- if ($category == 'all') $category = '';
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_setBlogCategory($b, $category);
- $this->_preBlogContent('otherarchivelist',$b);
- $b->showArchiveList($template, 'month', $limit);
- $this->_postBlogContent('otherarchivelist',$b);
+ /**
+ * Parse categorylist
+ */
+ function parse_categorylist($template, $blogname = '') {
+ global $blog, $manager;
+
+ if ($blogname == '') {
+ $this->_preBlogContent('categorylist',$blog);
+ $blog->showCategoryList($template);
+ $this->_postBlogContent('categorylist',$blog);
+ } else {
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_preBlogContent('categorylist',$b);
+ $b->showCategoryList($template);
+ $this->_postBlogContent('categorylist',$b);
+ }
}
- function parse_otherarchivedaylist($blogname, $template, $category = 'all', $limit = 0) {
- global $manager;
- if ($category == 'all') $category = '';
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_setBlogCategory($b, $category);
- $this->_preBlogContent('otherarchivelist',$b);
- $b->showArchiveList($template, 'day', $limit);
- $this->_postBlogContent('otherarchivelist',$b);
+ /**
+ * Parse skinvar charset
+ */
+ function parse_charset() {
+ echo _CHARSET;
}
- function parse_searchresults($template, $maxresults = 50 ) {
- global $blog, $query, $amount, $startpos;
+ /**
+ * Parse skinvar commentform
+ */
+ function parse_commentform($destinationurl = '') {
+ global $blog, $itemid, $member, $CONF, $manager, $DIR_LIBS, $errormessage;
- $this->_setBlogCategory($blog, ''); // need this to select default category
- $this->_preBlogContent('searchresults',$blog);
- $this->amountfound = $blog->search($query, $template, $amount, $maxresults, $startpos);
- $this->_postBlogContent('searchresults',$blog);
- }
+ // warn when trying to provide a actionurl (used to be a parameter in Nucleus <2.0)
+ if (stristr($destinationurl, 'action.php')) {
+ $args = func_get_args();
+ $destinationurl = $args[1];
+ ACTIONLOG::add(WARNING,'actionurl is not longer a parameter on commentform skinvars. Moved to be a global setting instead.');
+ }
- function parse_othersearchresults($blogname, $template, $maxresults = 50) {
- global $query, $amount, $manager, $startpos;
- $b =& $manager->getBlog(getBlogIDFromName($blogname));
- $this->_setBlogCategory($b, ''); // need this to select default category
- $this->_preBlogContent('othersearchresults',$b);
- $b->search($query, $template, $amount, $maxresults, $startpos);
- $this->_postBlogContent('othersearchresults',$b);
- }
+ $actionurl = $CONF['ActionURL'];
- // includes the search query
- function parse_query() {
- global $query;
- echo htmlspecialchars($query);
+ // if item is closed, show message and do nothing
+ $item =& $manager->getItem($itemid,0,0);
+ if ($item['closed'] || !$blog->commentsEnabled()) {
+ $this->doForm('commentform-closed');
+ return;
+ }
+
+ if (!$destinationurl)
+ {
+ $destinationurl = createLink(
+ 'item',
+ array(
+ 'itemid' => $itemid,
+ 'title' => $item['title'],
+ 'timestamp' => $item['timestamp'],
+ 'extra' => $this->linkparams
+ )
+ );
+
+ // note: createLink returns an HTML encoded URL
+ } else {
+ // HTML encode URL
+ $destinationurl = htmlspecialchars($destinationurl,ENT_QUOTES);
+ }
+
+ // values to prefill
+ $user = cookieVar($CONF['CookiePrefix'] .'comment_user');
+ if (!$user) $user = postVar('user');
+ $userid = cookieVar($CONF['CookiePrefix'] .'comment_userid');
+ if (!$userid) $userid = postVar('userid');
+ $email = cookieVar($CONF['CookiePrefix'] .'comment_email');
+ if (!$email) {
+ $email = postVar('email');
+ }
+ $body = postVar('body');
+
+ $this->formdata = array(
+ 'destinationurl' => $destinationurl, // url is already HTML encoded
+ 'actionurl' => htmlspecialchars($actionurl,ENT_QUOTES),
+ 'itemid' => $itemid,
+ 'user' => htmlspecialchars($user,ENT_QUOTES),
+ 'userid' => htmlspecialchars($userid,ENT_QUOTES),
+ 'email' => htmlspecialchars($email,ENT_QUOTES),
+ 'body' => htmlspecialchars($body,ENT_QUOTES),
+ 'membername' => $member->getDisplayName(),
+ 'rememberchecked' => cookieVar($CONF['CookiePrefix'] .'comment_user')?'checked="checked"':''
+ );
+
+ if (!$member->isLoggedIn()) {
+ $this->doForm('commentform-notloggedin');
+ } else {
+ $this->doForm('commentform-loggedin');
+ }
}
- // include nucleus versionnumber
- function parse_version() {
- global $nucleus;
- echo 'Nucleus CMS ' . $nucleus['version'];
+ /**
+ * Parse skinvar comments
+ * include comments for one item
+ */
+ function parse_comments($template) {
+ global $itemid, $manager, $blog, $highlight;
+ $template =& $manager->getTemplate($template);
+
+ // create parser object & action handler
+ $actions =& new ITEMACTIONS($blog);
+ $parser =& new PARSER($actions->getDefinedActions(),$actions);
+ $actions->setTemplate($template);
+ $actions->setParser($parser);
+ $item = ITEM::getitem($itemid, 0, 0);
+ $actions->setCurrentItem($item);
+
+ $comments =& new COMMENTS($itemid);
+ $comments->setItemActions($actions);
+ $comments->showComments($template, -1, 1, $highlight); // shows ALL comments
}
+ /**
+ * Parse errordiv
+ */
+ function parse_errordiv() {
+ global $errormessage;
+ if ($errormessage)
+ echo '<div class="error">', htmlspecialchars($errormessage),'</div>';
+ }
+ /**
+ * Parse skinvar errormessage
+ */
function parse_errormessage() {
global $errormessage;
echo $errormessage;
}
+ /**
+ * Parse formdata
+ */
+ function parse_formdata($what) {
+ echo $this->formdata[$what];
+ }
- function parse_imagetext() {
- echo htmlspecialchars(requestVar('imagetext'));
+ /**
+ * Parse ifcat
+ */
+ function parse_ifcat($text = '') {
+ if ($text == '') {
+ // new behaviour
+ $this->parse_if('category');
+ } else {
+ // old behaviour
+ global $catid, $blog;
+ if ($blog->isValidCategory($catid))
+ echo $text;
+ }
}
+ /**
+ * Parse skinvar image
+ */
function parse_image($what = 'imgtag') {
global $CONF;
}
}
- // When commentform is not used, to include a hidden field with itemid
- function parse_vars() {
+ /**
+ * Parse skinvar imagetext
+ */
+ function parse_imagetext() {
+ echo htmlspecialchars(requestVar('imagetext'),ENT_QUOTES);
+ }
+
+ /**
+ * Parse skinvar item
+ * include one item (no comments)
+ */
+ function parse_item($template) {
+ global $blog, $itemid, $highlight;
+ $this->_setBlogCategory($blog, ''); // need this to select default category
+ $this->_preBlogContent('item',$blog);
+ $r = $blog->showOneitem($itemid, $template, $highlight);
+ if ($r == 0)
+ echo _ERROR_NOSUCHITEM;
+ $this->_postBlogContent('item',$blog);
+ }
+
+ /**
+ * Parse skinvar itemid
+ */
+ function parse_itemid() {
global $itemid;
- echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
+ echo $itemid;
}
- // include a sitevar
- function parse_sitevar($which) {
- global $CONF;
- switch($which) {
- case 'url':
- echo $CONF['IndexURL'];
- break;
- case 'name':
- echo $CONF['SiteName'];
- break;
- case 'admin':
- echo $CONF['AdminEmail'];
- break;
- case 'adminurl':
- echo $CONF['AdminURL'];
- }
+ /**
+ * Parse skinvar itemlink
+ */
+ function parse_itemlink($linktext = '') {
+ global $itemid;
+ $this->_itemlink($itemid, $linktext);
}
- // shortcut for admin url
- function parse_adminurl() { $this->parse_sitevar('adminurl'); }
+ /**
+ * Parse itemtitle
+ */
+ function parse_itemtitle($format = '') {
+ global $manager, $itemid;
+ $item =& $manager->getItem($itemid,0,0);
- function parse_blogsetting($which) {
- global $blog;
- switch($which) {
- case 'id':
- echo $blog->getID();
- break;
- case 'url':
- echo $blog->getURL();
+ switch ($format) {
+ case 'xml':
+ echo stringToXML ($item['title']);
break;
- case 'name':
- echo $blog->getName();
+ case 'attribute':
+ echo stringToAttribute ($item['title']);
break;
- case 'desc':
- echo $blog->getDescription();
+ case 'raw':
+ echo $item['title'];
break;
- case 'short':
- echo $blog->getShortName();
+ default:
+ echo htmlspecialchars(strip_tags($item['title']),ENT_QUOTES);
break;
}
}
- // includes a member info thingie
+ /**
+ * Parse skinvar loginform
+ */
+ function parse_loginform() {
+ global $member, $CONF;
+ if (!$member->isLoggedIn()) {
+ $filename = 'loginform-notloggedin';
+ $this->formdata = array();
+ } else {
+ $filename = 'loginform-loggedin';
+ $this->formdata = array(
+ 'membername' => $member->getDisplayName(),
+ );
+ }
+ $this->doForm($filename);
+ }
+
+ /**
+ * Parse skinvar member
+ * (includes a member info thingie)
+ */
function parse_member($what) {
global $memberinfo, $member;
switch($what) {
case 'name':
- echo $memberinfo->getDisplayName();
+ echo htmlspecialchars($memberinfo->getDisplayName(),ENT_QUOTES);
break;
case 'realname':
- echo $memberinfo->getRealName();
+ echo htmlspecialchars($memberinfo->getRealName(),ENT_QUOTES);
break;
case 'notes':
- echo $memberinfo->getNotes();
+ echo htmlspecialchars($memberinfo->getNotes(),ENT_QUOTES);
break;
case 'url':
- echo $memberinfo->getURL();
+ echo htmlspecialchars($memberinfo->getURL(),ENT_QUOTES);
break;
case 'email':
- echo $memberinfo->getEmail();
+ echo htmlspecialchars($memberinfo->getEmail(),ENT_QUOTES);
break;
case 'id':
- echo $memberinfo->getID();
+ echo htmlspecialchars($memberinfo->getID(),ENT_QUOTES);
break;
}
}
}
- function parse_preview($template) {
- global $blog, $CONF, $manager;
+ /**
+ * Parse skinvar membermailform
+ */
+ function parse_membermailform($rows = 10, $cols = 40, $desturl = '') {
+ global $member, $CONF, $memberid;
+
+ if ($desturl == '') {
+ if ($CONF['URLMode'] == 'pathinfo')
+ $desturl = createMemberLink($memberid);
+ else
+ $desturl = $CONF['IndexURL'] . createMemberLink($memberid);
+ }
+
+ $message = postVar('message');
+ $frommail = postVar('frommail');
+
+ $this->formdata = array(
+ 'url' => htmlspecialchars($desturl),
+ 'actionurl' => htmlspecialchars($CONF['ActionURL'],ENT_QUOTES),
+ 'memberid' => $memberid,
+ 'rows' => $rows,
+ 'cols' => $cols,
+ 'message' => htmlspecialchars($message,ENT_QUOTES),
+ 'frommail' => htmlspecialchars($frommail,ENT_QUOTES)
+ );
+ if ($member->isLoggedIn()) {
+ $this->doForm('membermailform-loggedin');
+ } else if ($CONF['NonmemberMail']) {
+ $this->doForm('membermailform-notloggedin');
+ } else {
+ $this->doForm('membermailform-disallowed');
+ }
- $template =& $manager->getTemplate($template);
- $row['body'] = '<span id="prevbody"></span>';
- $row['title'] = '<span id="prevtitle"></span>';
- $row['more'] = '<span id="prevmore"></span>';
- $row['itemlink'] = '';
- $row['itemid'] = 0; $row['blogid'] = $blog->getID();
- echo TEMPLATE::fill($template['ITEM_HEADER'],$row);
- echo TEMPLATE::fill($template['ITEM'],$row);
- echo TEMPLATE::fill($template['ITEM_FOOTER'],$row);
}
- function parse_additemform() {
- global $blog, $CONF;
+ /**
+ * Parse skinvar nextarchive
+ */
+ function parse_nextarchive() {
+ global $archivenext;
+ echo $archivenext;
+ }
+
+ /**
+ * Parse skinvar nextitem
+ * (include itemid of next item)
+ */
+ function parse_nextitem() {
+ global $itemidnext;
+ if (isset($itemidnext)) echo (int)$itemidnext;
+ }
+
+ /**
+ * Parse skinvar nextitemtitle
+ * (include itemtitle of next item)
+ */
+ function parse_nextitemtitle($format = '') {
+ global $itemtitlenext;
+
+ switch ($format) {
+ case 'xml':
+ echo stringToXML ($itemtitlenext);
+ break;
+ case 'attribute':
+ echo stringToAttribute ($itemtitlenext);
+ break;
+ case 'raw':
+ echo $itemtitlenext;
+ break;
+ default:
+ echo htmlspecialchars($itemtitlenext,ENT_QUOTES);
+ break;
+ }
+ }
+
+ /**
+ * Parse skinvar nextlink
+ */
+ function parse_nextlink($linktext = '', $amount = 10) {
+ global $itemidnext, $archivenext, $startpos;
+ if ($this->skintype == 'item')
+ $this->_itemlink($itemidnext, $linktext);
+ else if ($this->skintype == 'search' || $this->skintype == 'index')
+ $this->_searchlink($amount, $startpos, 'next', $linktext);
+ else
+ $this->_archivelink($archivenext, $linktext);
+ }
+
+ /**
+ * Parse skinvar nucleusbutton
+ */
+ function parse_nucleusbutton($imgurl = '',
+ $imgwidth = '85',
+ $imgheight = '31') {
+ global $CONF;
+ if ($imgurl == '') {
+ $imgurl = $CONF['AdminURL'] . 'nucleus.gif';
+ } else if (PARSER::getProperty('IncludeMode') == 'skindir'){
+ // when skindit IncludeMode is used: start from skindir
+ $imgurl = $CONF['SkinsURL'] . PARSER::getProperty('IncludePrefix') . $imgurl;
+ }
+
$this->formdata = array(
- 'adminurl' => htmlspecialchars($CONF['AdminURL']),
- 'catid' => $blog->getDefaultCategory()
+ 'imgurl' => $imgurl,
+ 'imgwidth' => $imgwidth,
+ 'imgheight' => $imgheight,
);
- $blog->InsertJavaScriptInfo();
- $this->doForm('additemform');
+ $this->doForm('nucleusbutton');
+ }
+
+ /**
+ * Parse skinvar otherarchive
+ */
+ function parse_otherarchive($blogname, $template, $category = '') {
+ global $archive, $manager;
+ sscanf($archive,'%d-%d-%d',$y,$m,$d);
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_setBlogCategory($b, $category);
+ $this->_preBlogContent('otherachive',$b);
+ $b->showArchive($template, $y, $m, $d);
+ $this->_postBlogContent('otherachive',$b);
+ }
+
+ /**
+ * Parse skinvar otherarchivedaylist
+ */
+ function parse_otherarchivedaylist($blogname, $template, $category = 'all', $limit = 0) {
+ global $manager;
+ if ($category == 'all') $category = '';
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_setBlogCategory($b, $category);
+ $this->_preBlogContent('otherarchivelist',$b);
+ $b->showArchiveList($template, 'day', $limit);
+ $this->_postBlogContent('otherarchivelist',$b);
+ }
+
+ /**
+ * Parse skinvar otherarchivelist
+ */
+ function parse_otherarchivelist($blogname, $template, $category = 'all', $limit = 0) {
+ global $manager;
+ if ($category == 'all') $category = '';
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_setBlogCategory($b, $category);
+ $this->_preBlogContent('otherarchivelist',$b);
+ $b->showArchiveList($template, 'month', $limit);
+ $this->_postBlogContent('otherarchivelist',$b);
+ }
+
+ /**
+ * Parse skinvar otherblog
+ */
+ function parse_otherblog($blogname, $template, $amount = 10, $category = '') {
+ global $manager;
+
+ list($limit, $offset) = sscanf($amount, '%d(%d)');
+
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_setBlogCategory($b, $category);
+ $this->_preBlogContent('otherblog',$b);
+ $this->amountfound = $b->readLog($template, $limit, $offset);
+ $this->_postBlogContent('otherblog',$b);
+ }
+
+ /**
+ * Parse skinvar othersearchresults
+ */
+ function parse_othersearchresults($blogname, $template, $maxresults = 50) {
+ global $query, $amount, $manager, $startpos;
+ $b =& $manager->getBlog(getBlogIDFromName($blogname));
+ $this->_setBlogCategory($b, ''); // need this to select default category
+ $this->_preBlogContent('othersearchresults',$b);
+ $b->search($query, $template, $amount, $maxresults, $startpos);
+ $this->_postBlogContent('othersearchresults',$b);
}
/**
call_user_func_array(array(&$plugin,'doSkinVar'), $params);
}
+ /**
+ * Parse skinvar prevarchive
+ */
+ function parse_prevarchive() {
+ global $archiveprev;
+ echo $archiveprev;
+ }
- function parse_commentform($destinationurl = '') {
- global $blog, $itemid, $member, $CONF, $manager, $DIR_LIBS, $errormessage;
-
- // warn when trying to provide a actionurl (used to be a parameter in Nucleus <2.0)
- if (stristr($destinationurl, 'action.php')) {
- $args = func_get_args();
- $destinationurl = $args[1];
- ACTIONLOG::add(WARNING,'actionurl is not longer a parameter on commentform skinvars. Moved to be a global setting instead.');
- }
-
- $actionurl = $CONF['ActionURL'];
+ /**
+ * Parse skinvar preview
+ */
+ function parse_preview($template) {
+ global $blog, $CONF, $manager;
- // if item is closed, show message and do nothing
- $item =& $manager->getItem($itemid,0,0);
- if ($item['closed'] || !$blog->commentsEnabled()) {
- $this->doForm('commentform-closed');
- return;
- }
+ $template =& $manager->getTemplate($template);
+ $row['body'] = '<span id="prevbody"></span>';
+ $row['title'] = '<span id="prevtitle"></span>';
+ $row['more'] = '<span id="prevmore"></span>';
+ $row['itemlink'] = '';
+ $row['itemid'] = 0; $row['blogid'] = $blog->getID();
+ echo TEMPLATE::fill($template['ITEM_HEADER'],$row);
+ echo TEMPLATE::fill($template['ITEM'],$row);
+ echo TEMPLATE::fill($template['ITEM_FOOTER'],$row);
+ }
- if (!$destinationurl)
- {
- $destinationurl = createLink(
- 'item',
- array(
- 'itemid' => $itemid,
- 'title' => $item['title'],
- 'timestamp' => $item['timestamp'],
- 'extra' => $this->linkparams
- )
- );
+ /*
+ * Parse skinvar previtem
+ * (include itemid of prev item)
+ */
+ function parse_previtem() {
+ global $itemidprev;
+ if (isset($itemidprev)) echo (int)$itemidprev;
+ }
- // note: createLink returns an HTML encoded URL
- } else {
- // HTML encode URL
- $destinationurl = htmlspecialchars($destinationurl);
- }
+ /**
+ * Parse skinvar previtemtitle
+ * (include itemtitle of prev item)
+ */
+ function parse_previtemtitle($format = '') {
+ global $itemtitleprev;
- // values to prefill
- $user = cookieVar($CONF['CookiePrefix'] .'comment_user');
- if (!$user) $user = postVar('user');
- $userid = cookieVar($CONF['CookiePrefix'] .'comment_userid');
- if (!$userid) $userid = postVar('userid');
- $email = cookieVar($CONF['CookiePrefix'] .'comment_email');
- if (!$email) {
- $email = postVar('email');
+ switch ($format) {
+ case 'xml':
+ echo stringToXML ($itemtitleprev);
+ break;
+ case 'attribute':
+ echo stringToAttribute ($itemtitleprev);
+ break;
+ case 'raw':
+ echo $itemtitleprev;
+ break;
+ default:
+ echo htmlspecialchars($itemtitleprev,ENT_QUOTES);
+ break;
}
- $body = postVar('body');
+ }
- $this->formdata = array(
- 'destinationurl' => $destinationurl, // url is already HTML encoded
- 'actionurl' => htmlspecialchars($actionurl),
- 'itemid' => $itemid,
- 'user' => htmlspecialchars($user),
- 'userid' => htmlspecialchars($userid),
- 'email' => htmlspecialchars($email),
- 'body' => htmlspecialchars($body),
- 'membername' => $member->getDisplayName(),
- 'rememberchecked' => cookieVar($CONF['CookiePrefix'] .'comment_user')?'checked="checked"':''
- );
+ /**
+ * Parse skinvar prevlink
+ */
+ function parse_prevlink($linktext = '', $amount = 10) {
+ global $itemidprev, $archiveprev, $startpos;
- if (!$member->isLoggedIn()) {
- $this->doForm('commentform-notloggedin');
- } else {
- $this->doForm('commentform-loggedin');
- }
+ if ($this->skintype == 'item')
+ $this->_itemlink($itemidprev, $linktext);
+ else if ($this->skintype == 'search' || $this->skintype == 'index')
+ $this->_searchlink($amount, $startpos, 'prev', $linktext);
+ else
+ $this->_archivelink($archiveprev, $linktext);
}
- function parse_loginform() {
- global $member, $CONF;
- if (!$member->isLoggedIn()) {
- $filename = 'loginform-notloggedin';
- $this->formdata = array();
- } else {
- $filename = 'loginform-loggedin';
- $this->formdata = array(
- 'membername' => $member->getDisplayName(),
- );
- }
- $this->doForm($filename);
+ /**
+ * Parse skinvar query
+ * (includes the search query)
+ */
+ function parse_query() {
+ global $query;
+ echo htmlspecialchars($query,ENT_QUOTES);
}
-
- function parse_membermailform($rows = 10, $cols = 40, $desturl = '') {
- global $member, $CONF, $memberid;
-
- if ($desturl == '') {
- if ($CONF['URLMode'] == 'pathinfo')
- $desturl = createMemberLink($memberid);
- else
- $desturl = $CONF['IndexURL'] . createMemberLink($memberid);
- }
-
- $message = postVar('message');
- $frommail = postVar('frommail');
-
- $this->formdata = array(
- 'url' => htmlspecialchars($desturl),
- 'actionurl' => htmlspecialchars($CONF['ActionURL']),
- 'memberid' => $memberid,
- 'rows' => $rows,
- 'cols' => $cols,
- 'message' => htmlspecialchars($message),
- 'frommail' => htmlspecialchars($frommail)
- );
- if ($member->isLoggedIn()) {
- $this->doForm('membermailform-loggedin');
- } else if ($CONF['NonmemberMail']) {
- $this->doForm('membermailform-notloggedin');
- } else {
- $this->doForm('membermailform-disallowed');
- }
-
+ /**
+ * Parse skinvar referer
+ */
+ function parse_referer() {
+ echo htmlspecialchars(serverVar('HTTP_REFERER'),ENT_QUOTES);
}
+ /**
+ * Parse skinvar searchform
+ */
function parse_searchform($blogname = '') {
global $CONF, $manager, $maxresults;
if ($blogname) {
// use default blog when no blog is selected
$this->formdata = array(
'id' => $blog?$blog->getID():$CONF['DefaultBlog'],
- 'query' => htmlspecialchars(getVar('query')),
+ 'query' => htmlspecialchars(getVar('query'),ENT_QUOTES),
);
$this->doForm('searchform');
}
- function parse_nucleusbutton($imgurl = '',
- $imgwidth = '85',
- $imgheight = '31') {
- global $CONF;
- if ($imgurl == '') {
- $imgurl = $CONF['AdminURL'] . 'nucleus.gif';
- } else if (PARSER::getProperty('IncludeMode') == 'skindir'){
- // when skindit IncludeMode is used: start from skindir
- $imgurl = $CONF['SkinsURL'] . PARSER::getProperty('IncludePrefix') . $imgurl;
- }
+ /**
+ * Parse skinvar searchresults
+ */
+ function parse_searchresults($template, $maxresults = 50 ) {
+ global $blog, $query, $amount, $startpos;
- $this->formdata = array(
- 'imgurl' => $imgurl,
- 'imgwidth' => $imgwidth,
- 'imgheight' => $imgheight,
- );
- $this->doForm('nucleusbutton');
+ $this->_setBlogCategory($blog, ''); // need this to select default category
+ $this->_preBlogContent('searchresults',$blog);
+ $this->amountfound = $blog->search($query, $template, $amount, $maxresults, $startpos);
+ $this->_postBlogContent('searchresults',$blog);
}
+ /**
+ * Parse skinvar self
+ */
function parse_self() {
global $CONF;
echo $CONF['Self'];
}
- function parse_referer() {
- echo htmlspecialchars(serverVar('HTTP_REFERER'));
+ /**
+ * Parse skinvar sitevar
+ * (include a sitevar)
+ */
+ function parse_sitevar($which) {
+ global $CONF;
+ switch($which) {
+ case 'url':
+ echo $CONF['IndexURL'];
+ break;
+ case 'name':
+ echo $CONF['SiteName'];
+ break;
+ case 'admin':
+ echo $CONF['AdminEmail'];
+ break;
+ case 'adminurl':
+ echo $CONF['AdminURL'];
+ }
}
- function parse_charset() {
- echo _CHARSET;
+ /**
+ * Parse skinname
+ */
+ function parse_skinname() {
+ echo $this->skin->getName();
}
/**
- * Helper function that sets the category that a blog will need to use
- *
- * @param $blog
- * An object of the blog class, passed by reference (we want to make changes to it)
- * @param $catname
- * The name of the category to use
- */
- function _setBlogCategory(&$blog, $catname) {
- global $catid;
- if ($catname != '')
- $blog->setSelectedCategoryByName($catname);
- else
- $blog->setSelectedCategory($catid);
+ * Parse skintype (experimental)
+ */
+ function parse_skintype() {
+ echo $this->skintype;
}
- function _preBlogContent($type, &$blog) {
- global $manager;
- $manager->notify('PreBlogContent',array('blog' => &$blog, 'type' => $type));
+ /**
+ * Parse text
+ */
+ function parse_text($which) {
+ // constant($which) only available from 4.0.4 :(
+ if (defined($which)) {
+ eval("echo $which;");
+ }
}
- function _postBlogContent($type, &$blog) {
+ /**
+ * Parse ticket
+ */
+ function parse_ticket() {
global $manager;
- $manager->notify('PostBlogContent',array('blog' => &$blog, 'type' => $type));
+ $manager->addTicketHidden();
+ }
+
+ /**
+ * Parse skinvar todaylink
+ * A link to the today page (depending on selected blog, etc...)
+ */
+ function parse_todaylink($linktext = '') {
+ global $blog, $CONF;
+ if ($blog)
+ echo $this->_link(createBlogidLink($blog->getID(),$this->linkparams), $linktext);
+ else
+ echo $this->_link($CONF['SiteUrl'], $linktext);
+ }
+
+ /**
+ * Parse vars
+ * When commentform is not used, to include a hidden field with itemid
+ */
+ function parse_vars() {
+ global $itemid;
+ echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
+ }
+
+ /**
+ * Parse skinvar version
+ * (include nucleus versionnumber)
+ */
+ function parse_version() {
+ global $nucleus;
+ echo 'Nucleus CMS ' . $nucleus['version'];
}
}
-?>
+?>
\ No newline at end of file