UserChanges Action
This action is meant as a module to integrate the MyChanges action into the UserAdmin tool.
To use it as a standalone action simply add:
{{userchanges user="UserName"}} in the page body.
To use it as a standalone action simply add:
{{userchanges user="UserName"}} in the page body.
This is an upgraded version of the MyChanges action. It allows not only to display pages edited by current user but also by any other registered user specified either via a user action parameter or via a user GET variable.
Save the code below as actions/userchanges.php.
The action
Current version: 0.4Changes:
- 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 pages modified by other users;
actions/userchanges.php
<?php
/**
* Display a list of recent changes made by a user.
*
* This action can be used to display a list of pages modified 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 pages recently changed by the current user.
*
* @package Actions
* @name Userchanges
*
* @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 pages recently modified 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 pages modified 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_edits_count = 0;
if ($_GET["alpha"] == 1)
{
echo $this->Format("== Pages modified by [[".$author."]] == --- --- ");
print("This is a list of pages edited by ".$this->Link($author).", along with the time of the last edit (<a
href=\"".$this->Href("", "", "user=".$author."&date=1&action=changes")."\">order by date</a>).<br /><br />\n");
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user =
'".mysql_real_escape_string($author)."' ORDER BY tag ASC, time DESC"))
{
foreach ($pages as $page)
{
if ($last_tag != $page["tag"]) {
$last_tag = $page["tag"];
$firstChar = strtoupper($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(" (".$page["time"].") (".$this->Link($page["tag"], "revisions", "history", 0).") ".$this->Link($page["tag"], "", "", 0)."<br />\n");
$user_edits_count++;
}
}
if ($user_edits_count == 0)
{
print("<em>User has not edited any pages yet.</em>");
}
}
else
{
print("<em>No pages found.</em>");
}
}
else
{
echo $this->Format("== Pages modified by [[".$author."]] == --- --- ");
print("This is a list of pages edited by ".$this->Link($author).", ordered by the time of last edit (<a
href=\"".$this->Href("", "", "user=".$author."&alpha=1&action=changes")."\">order alphabetically</a>).<br /><br />\n");
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user =
'".mysql_real_escape_string($author)."' ORDER BY time ASC, tag ASC"))
{
foreach ($pages as $page)
{
$edited_pages[$page["tag"]] = $page["time"];
}
$edited_pages = array_reverse($edited_pages);
foreach ($edited_pages as $page["tag"] => $page["time"])
{
// day header
list($day, $time) = explode(" ", $page["time"]);
if ($day != $curday)
{
if ($curday) print("<br />\n");
print("<strong>$day:</strong><br />\n");
$curday = $day;
}
// print entry
print(" ($time) (".$this->Link($page["tag"], "revisions", "history", 0).") ".$this->Link($page["tag"], "", "", 0)."<br />\n");
$user_edits_count++;
}
if ($user_edits_count == 0)
{
print("<em>User has not edited any pages yet.</em>");
}
}
else
{
print("<em>No pages found.</em>");
}
}
}
else
{
print("<em>No user specified</em>");
}
?>
/**
* Display a list of recent changes made by a user.
*
* This action can be used to display a list of pages modified 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 pages recently changed by the current user.
*
* @package Actions
* @name Userchanges
*
* @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 pages recently modified 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 pages modified 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_edits_count = 0;
if ($_GET["alpha"] == 1)
{
echo $this->Format("== Pages modified by [[".$author."]] == --- --- ");
print("This is a list of pages edited by ".$this->Link($author).", along with the time of the last edit (<a
href=\"".$this->Href("", "", "user=".$author."&date=1&action=changes")."\">order by date</a>).<br /><br />\n");
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user =
'".mysql_real_escape_string($author)."' ORDER BY tag ASC, time DESC"))
{
foreach ($pages as $page)
{
if ($last_tag != $page["tag"]) {
$last_tag = $page["tag"];
$firstChar = strtoupper($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(" (".$page["time"].") (".$this->Link($page["tag"], "revisions", "history", 0).") ".$this->Link($page["tag"], "", "", 0)."<br />\n");
$user_edits_count++;
}
}
if ($user_edits_count == 0)
{
print("<em>User has not edited any pages yet.</em>");
}
}
else
{
print("<em>No pages found.</em>");
}
}
else
{
echo $this->Format("== Pages modified by [[".$author."]] == --- --- ");
print("This is a list of pages edited by ".$this->Link($author).", ordered by the time of last edit (<a
href=\"".$this->Href("", "", "user=".$author."&alpha=1&action=changes")."\">order alphabetically</a>).<br /><br />\n");
if ($pages = $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user =
'".mysql_real_escape_string($author)."' ORDER BY time ASC, tag ASC"))
{
foreach ($pages as $page)
{
$edited_pages[$page["tag"]] = $page["time"];
}
$edited_pages = array_reverse($edited_pages);
foreach ($edited_pages as $page["tag"] => $page["time"])
{
// day header
list($day, $time) = explode(" ", $page["time"]);
if ($day != $curday)
{
if ($curday) print("<br />\n");
print("<strong>$day:</strong><br />\n");
$curday = $day;
}
// print entry
print(" ($time) (".$this->Link($page["tag"], "revisions", "history", 0).") ".$this->Link($page["tag"], "", "", 0)."<br />\n");
$user_edits_count++;
}
if ($user_edits_count == 0)
{
print("<em>User has not edited any pages yet.</em>");
}
}
else
{
print("<em>No pages found.</em>");
}
}
}
else
{
print("<em>No user specified</em>");
}
?>
CategoryDevelopmentActions CategoryDevelopmentAdmin