UserComments Action

Last edited by JavaWoman:
Modified links pointing to docs server
Mon, 28 Jan 2008 00:14 UTC [diff]


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.
 



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:

To do:



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://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
There is one comment on this page. [Display comment]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki