Wiki source for UserCommentsAction


Show raw source

===== ""UserComments"" Action =====
{{lastedit}}

>>**See also:**
AdminModules
>><<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.<< ::c::


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)
<?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
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki