Last edited by
JavaWoman:
Modified links pointing to docs server
This action is meant as a module for the
UserAdmin tool.
To use it as a standalone action simply add:
{{usercomments user="UserName"}} in the page body.
This action displays a list of pages commented by the current user or by any other registered user specified either via a
user action parameter of via a
user GET variable . If no user is specified and the current user is logged in it displays a list of comments by the current user.
Save the code below as
actions/usercomments.php.
The action
Current version: 0.4
Changes:
- Added documentation header;
- Initialized variables;
- User is checked in the following order: GET parameter, action parameter, current user;
To do:
- (Optionally) create a config option allowing admins to decide whether users can display a list of comments posted by other users;
actions/usercomments.php
<?php
/**
* Display a list of recent comments posted by a user.
*
* This action can be used to display a list of comments posted by a specific user. It
* accepts a user value both as an action parameter and as a GET parameter. The
* specified user must be an existing user. If no user parameter is specified
* or the specified user is invalid, an error message is printed. If no user parameter
* is specified or the specified user is invalid, and the current user is logged in,
* the action will display a list of comments recently posted by the current user.
*
* @package Actions
* @name Usercomments
*
* @author {@link http://web.archive.org/web/20040616194824/http://www.wakkawiki.com/CarloZottmann Carlo Zottmann} (original code)
* @author {@link http://wikka.jsnx.com/DarTar Dario Taraborelli} (modified action)
* @version 0.4
* @since Wikka 1.1.X.X
* @output list of comments recently posted by the specified user
* @input string $user optional: a valid user name;
* default: current user, if user is logged in;
* the default can be overridden by providing a URL parameter 'user';
* @todo
* - (Optionally) create a config option allowing admins to decide whether users can
* display a list of comments by other users;
*/
$author =
'';
#initializing variable
switch(true) {
case (isset($_GET['user']) &&
$this->
LoadUser($_GET['user'])):
# a valid user is specified as an URL parameter
$author =
$_GET['user'];
break;
case (isset($user) &&
$this->
LoadUser($user)):
# a valid user parameter is used
$author =
$user;
break;
case ($this->
GetUser()):
$author =
$this->
GetUserName();
break;
}
$page =
$this->
GetPageTag();
if ($author)
{
$user_comments_count =
0;
if ($_GET["alpha"] ==
1)
{
echo $this->
Format("== Pages commented by [[".
$author.
"]] == --- --- ");
print("This is a list of pages commented by ".
$this->
Link($author).
", along with the time of the comment (<a href=\"".
$this->
Href("",
"",
"user=".
$author.
"&date=1&action=comments").
"\">order by date</a>).<br /><br />\n");
if ($comments =
$this->
LoadAll("SELECT id, page_tag, time FROM ".
$this->
config["table_prefix"].
"comments WHERE user =
'".mysql_real_escape_string
($author).
"' ORDER BY page_tag ASC, time DESC"))
{
foreach ($comments as $comment)
{
if ($last_tag !=
$comment["page_tag"]) {
$last_tag =
$comment["page_tag"];
$firstChar =
strtoupper($comment["page_tag"][0]);
if (!
preg_match("/[A-Z,a-z]/",
$firstChar)) {
$firstChar =
"#";
}
if ($firstChar !=
$curChar) {
if ($curChar) print("<br />\n");
print("<strong>$firstChar</strong><br />\n");
$curChar =
$firstChar;
}
// print entry
print(" (".
$comment["time"].
") <a href=\"".
$this->
href("",
$comment["page_tag"],
"show_comments=1").
"#".
$comment["id"].
"\">".
$comment["page_tag"].
"</a><br />\n");
$user_comments_count++;
}
}
if ($user_comments_count ==
0)
{
print("<em>User has not commented any pages yet.</em>");
}
}
else
{
print("<em>No comments found.</em>");
}
}
else
{
echo $this->
Format("== Pages commented by [[".
$author.
"]] == --- --- ");
print("This is a list of pages commented by ".
$this->
Link($author).
", ordered by the time of the comment (<a href=\"".
$this->
Href("",
"",
"user=".
$author.
"&alpha=1&action=comments").
"\">order alphabetically</a>).<br /><br />\n");
if ($comments =
$this->
LoadAll("SELECT id, page_tag, time FROM ".
$this->
config["table_prefix"].
"comments WHERE user =
'".mysql_real_escape_string
($author).
"' ORDER BY time ASC, page_tag ASC"))
{
foreach ($comments as $comment)
{
$commented_pages[$comment["page_tag"]] =
$comment["time"];
}
$commented_pages =
array_reverse($commented_pages);
foreach ($commented_pages as $comment["page_tag"] =>
$comment["time"])
{
// day header
list
($day,
$time) =
explode(" ",
$comment["time"]);
if ($day !=
$curday)
{
if ($curday) print("<br />\n");
print("<strong>$day:</strong><br />\n");
$curday =
$day;
}
// print entry
print(" (".
$time.
") <a href=\"".
$this->
href("",
$comment["page_tag"],
"show_comments=1").
"#".
$comment["id"].
"\">".
$comment["page_tag"].
"</a><br />\n");
$user_comments_count++;
}
if ($user_comments_count ==
0)
{
print("<em>User has not commented any pages yet.</em>");
}
}
else
{
print("<em>No comments found.</em>");
}
}
}
else
{
print("<em>No user specified</em>");
}
?>
CategoryDevelopmentActions CategoryDevelopmentAdmin