diff --git a/acptemplate/messageLog.tpl b/acptemplate/messageLog.tpl new file mode 100644 index 0000000..97c6341 --- /dev/null +++ b/acptemplate/messageLog.tpl @@ -0,0 +1,77 @@ +{include file='header' pageTitle='chat.acp.log.title'} + +
+

{lang}{@$pageTitle}{/lang}

+
+ +
+
+
+ {lang}wcf.global.filter{/lang} + +
+
+
+ +
+
+ + +
+
+ + {if $errorField == 'date'} + + {lang}chat.acp.log.date.error.{$errorType}{/lang} + + {/if} +
+ +
+
+ +
+ +
+
+ +{if $messages|count == 0} + {if $errorField === ""} +

{lang}wcf.global.noItems{/lang}

+ {/if} +{else} +
+
+

{lang}chat.acp.log.title{/lang} {#$messages|count}

+
+ + + + + + + + + + + + + {foreach from=$messages item='message'} + + + + + + + + {/foreach} + +
{lang}wcf.global.objectID{/lang}{lang}chat.general.time{/lang}{lang}wcf.user.username{/lang}{lang}chat.acp.log.message{/lang}
{$message->messageID}{$message->time|date:'H:i:s'}

{@$message->getUserProfile()->getAvatar()->getImageTag(24)}

{$message->username}{@$message->getFormattedMessage('text/simplified-html')}
+
+{/if} + +{include file='footer'} diff --git a/file/lib/acp/page/MessageLogPage.class.php b/file/lib/acp/page/MessageLogPage.class.php new file mode 100644 index 0000000..ccfc254 --- /dev/null +++ b/file/lib/acp/page/MessageLogPage.class.php @@ -0,0 +1,144 @@ + + * @package be.bastelstu.chat + * @subpackage acp.page + */ +class MessageLogPage extends \wcf\page\AbstractPage { + /** + * @see \wcf\page\AbstractPage::$activeMenuItem + */ + public $activeMenuItem = 'chat.acp.menu.link.log'; + + /** + * @see \wcf\page\AbstractPage::$neededPermissions + */ + public $neededPermissions = array( + 'mod.chat.canReadLog' + ); + + /** + * name of error field + * @var string + */ + public $errorField = ''; + + /** + * error type + * @var string + */ + public $errorType = ''; + + /** + * messages for the given day + * + * @var array<\chat\data\message\Message> + */ + public $messages = array(); + + /** + * given roomID + * + * @var integer + */ + public $roomID = 0; + + /** + * given date + * + * @var integer + */ + public $date = 0; + + /** + * active room + * + * @var \chat\data\room\Room + */ + public $room = null; + + /** + * available rooms + * + * @var array<\chat\data\room\Room> + */ + public $rooms = array(); + + /** + * @see \wcf\page\IPage::readData() + */ + public function readData() { + parent::readData(); + + try { + if($this->date > TIME_NOW) { + throw new \wcf\system\exception\UserInputException('date', 'inFuture'); + } + } catch(\wcf\system\exception\UserInputException $e) { + $this->errorField = $e->getField(); + $this->errorType = $e->getType(); + return; + } + + try { + if($this->date < strtotime('today 00:00:00 -'.ceil(CHAT_LOG_ARCHIVETIME / 1440).'day')) { + throw new \wcf\system\exception\UserInputException('date', 'tooLongAgo'); + } + } catch(\wcf\system\exception\UserInputException $e) { + $this->errorField = $e->getField(); + $this->errorType = $e->getType(); + return; + } + + $this->messages = \chat\data\message\ViewableMessageList::getMessagesBetween($this->room, $this->date, $this->date + 86399); + } + + /** + * @see \wcf\page\IPage::readParameters() + */ + public function readParameters() { + parent::readParameters(); + + $this->rooms = \chat\data\room\RoomCache::getInstance()->getRooms(); + + foreach($this->rooms as $id => $room) { + if (!$room->permanent) + unset($this->rooms[$key]); + } + + if (isset($_REQUEST['id'])) $this->roomID = intval($_REQUEST['id']); + else $this->roomID = reset($this->rooms)->roomID; + + $this->room = \chat\data\room\RoomCache::getInstance()->getRoom($this->roomID); + + if (!$this->room) throw new \wcf\system\exception\IllegalLinkException(); + + if (isset($_REQUEST['date'])) $date = $_REQUEST['date'].' 00:00:00'; + else $date = 'today 00:00:00'; + $this->date = @strtotime($date); + if ($this->date === false) throw new \wcf\system\exception\IllegalLinkException(); + } + + /** + * @see wcf\page\IPage::assignVariables() + */ + public function assignVariables() { + parent::assignVariables(); + + WCF::getTPL()->assign(array( + 'messages' => $this->messages, + 'rooms' => $this->rooms, + 'room' => $this->room, + 'date' => $this->date, + 'errorField' => $this->errorField, + 'errorType' => $this->errorType + )); + } +}