Hello!
It is code responsible for private message in aac
Some screens:
In main folder add file 'messagesclass.php':
Second file name is 'messages.php':
In index.php add:
In layout.php:
Yours,
Tairens
It is code responsible for private message in aac
Some screens:
In main folder add file 'messagesclass.php':
Code:
<?php
class PrivateMessageList
{
private $list = array();
private $data;
private $db;
private function getMessagesBySender($sender)
{
$this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('ots_messages') . ' WHERE ' . $this->db->fieldName('sender') . ' = ' .(int)$sender)->fetchAll();
}
private function getMessagesByReceiver($receiver)
{
$this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('ots_messages') . ' WHERE ' . $this->db->fieldName('receiver') . ' = ' .(int) $receiver)->fetchAll();
}
public function getMessagesNumberByReadStatus()
{
$number = 0;
foreach($this->list as $message)
{
if(!$message->getReadStatus())
{
$number += 1;
}
}
return $number;
}
public function __construct($id, $receiver = true /*if false reading sender */)
{
$this->db = POT::getInstance()->getDBHandle();
if($receiver)
{
$this->getMessagesBySender($id);
}
else
{
$this->getMessagesByReceiver($id);
}
foreach($this->data as $element)
{
$object = new PrivateMessage();
$object->load($element['id']);
if($object->isLoaded())
{
$this->list[] = $object;
}
}
}
public function reload($id, $receiver = true)
{
return new self($id, $receiver);
}
public function getList()
{
return $this->list;
}
}
class PrivateMessage
{
private $data;
private $db;
public function __construct()
{
$this->db = POT::getInstance()->getDBHandle();
}
public function load($id)
{
$this->data = $this->db->query('SELECT * FROM ' . $this->db->tableName('ots_messages') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch();
}
public function isLoaded()
{
return isset($this->data['id']);
}
public function _get($option)
{
return $this->data[$option];
}
public function setTopic($value)
{
$this->data['topic'] = $value;
}
public function setText($value)
{
$this->data['text'] = $value;
}
public function setDate($value)
{
$this->data['date'] = $value;
}
public function setSender($value)
{
$this->data['sender'] = $value;
}
public function setReceiver($value)
{
$this->data['receiver'] = $value;
}
public function setReadStatus($value)
{
return $this->db->query('UPDATE ' . $this->db->fieldName('ots_messages') . ' SET ' . $this->db->fieldName('status') . ' = ' . (int) $value);
}
public function getTopic()
{
return $this->data['topic'];
}
public function getText()
{
return $this->data['text'];
}
public function getId()
{
return $this->data['id'];
}
public function getDate()
{
return $this->data['date'];
}
public function getSender()
{
return $this->data['sender'];
}
public function getReceiver()
{
return $this->data['receiver'];
}
public function getReadStatus()
{
return $this->data['status'] > 0;
}
public function save()
{
$this->db->query('INSERT INTO ' . $this->db->tableName('ots_messages') . ' (' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('topic') . ', ' . $this->db->fieldName('text') . ', ' . $this->db->fieldName('date') . ', '. $this->db->fieldName('sender') . ', '. $this->db->fieldName('receiver') . ', '. $this->db->fieldName('status') . ') VALUES (' . $this->db->quote($this->getLastInsertId() + 1) . ', ' . $this->db->quote($this->data['topic']) . ', '. $this->db->quote($this->data['text']) . ', '. $this->db->quote($this->data['date']) . ', '. $this->db->quote($this->data['sender']) . ', ' . $this->db->quote($this->data['receiver']) . ', ' . (int)$this->data['status'] . ')');
}
public function delete()
{
$this->db->query('DELETE FROM ' . $this->db->tableName('ots_messages') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']);
}
private function getLastInsertId()
{
$number = $this->db->query('SELECT MAX(id) FROM '.$this->db->tableName('ots_messages').'')->fetchColumn();
if($number > 0)
{
return $number;
}
return 0;
}
}
?>
Code:
<?php
if($logged)
{
$colors = array($config['site']['lightborder'], $config['site']['darkborder']);
include_once('messagesclass.php');
$Action = $_GET['action'];
$main_content .= '<center><h2><a href="?subtopic=messages&action=newMessage">New message</a>|';
$main_content .= '<a href="?subtopic=messages&action=inbox">Inbox</a>|';
$main_content .= '<a href="?subtopic=messages&action=outbox">Outbox</a></h2></center>';
if(empty($Action))
{
$Action = 'inbox';
}
if($Action == 'inbox' || $Action == 'outbox')
{
$newAction = array('outbox' => array('outbox', true), 'inbox' => array('inbox', false));
$newAction = $newAction[$Action];
$Messages = new PrivateMessageList($account_logged->getId(), $newAction[1]);
if(count($Messages->getList()) > 0)
{
$main_content .= '<center><h2>Messages in ' . $newAction[0] . '</h2></center>';
$main_content .= '<table border="1" cellspacing="0" width="100%">';
$main_content .= '<tr bgcolor=' . $colors[1] . '>';
$main_content .= '<td>ID</td><td>Topic</td><td>Date</td><td>From</td><td>Read status</td>';
$main_content .= '</tr>';
foreach($Messages->getList() as $key => $Message)
{
$From = POT::getInstance()->createObject('Account');
$From->load($Message->getSender());
$From = $From->getPlayers();
$main_content .= '<tr bgcolor=' . $colors[$key % 2] . '>';
$main_content .= '<td>' . ($key + 1) . '</td>';
$main_content .= '<td><a href="?subtopic=messages&action=show&id=' . $Message->getId() . '">' . $Message->getTopic() . '</a></td>';
$main_content .= '<td>' . date("D-M-Y", $Message->getDate()) . '</td>';
$main_content .= '<td>' . $From[0] . '</td>';
$main_content .= '<td>' . ($Message->getReadStatus() ? '<font color="green">Read<font>' : '<font color="red">Not read</font>') . '</td>';
$main_content .= '</tr>';
}
$main_content .= '</table>';
}
else
{
$main_content .= 'No messages in ' . $newAction[0] . '.';
}
}
else if($Action == 'newMessage')
{
if(empty($_POST['text']) || empty($_POST['topic']) || empty($_POST['receiver']))
{
$main_content .= '<center><h2>New private message</h2></center>';
$main_content .= '<form action="?subtopic=messages&action=newMessage" method="POST">';
$main_content .= 'Topic:<br><input name="topic" /><br>';
$main_content .= 'Receiver:<br><input name="receiver" /><br>';
$main_content .= 'Message text:<br><textarea name="text" cols="69" rows="10"></textarea>';
$main_content .= '<input type="submit" value="Send"/>';
$main_content .= '<input type="reset" value="Clean"/>';
$main_content .= '</form>';
}
else
{
$Receiver = POT::getInstance()->createObject('Player');
$Receiver->find($_POST['receiver']);
$IDS = array();
foreach($account_logged->getPlayers() as $Player)
{
$IDS[] = $Player->getId();
}
if(in_array($Receiver->getAccount()->getID(), $IDS))
{
$main_content .= 'You cannot send messages to your character!';
}
else
{
if($Receiver->isLoaded())
{
$Message = new PrivateMessage();
$Message->setTopic(htmlspecialchars($_POST['topic']));
$Message->setText(htmlspecialchars($_POST['text']));
$Message->setDate(time());
$Message->setSender($account_logged->getId());
$Message->setReceiver($Receiver->getAccount()->getID());
$Message->save();
$main_content .= 'Message has been sent.';
}
else
{
$main_content .= 'Player not found.';
}
}
}
}
else if($Action == 'show')
{
$Message = new PrivateMessage();
$Message->load($_GET['id']);
if($Message->isLoaded())
{
if($Message->getReceiver() == $account_logged->getId() || $Message->getSender() == $account_logged->getId())
{
if(!$Message->getReadStatus() && $Message->getReceiver() == $account_logged->getId())
{
$Message->setReadStatus(1);
}
$From = POT::getInstance()->createObject('Account');
$From->load($Message->getSender());
$From = $From->getPlayers();
$main_content .= '<center><h2>Message</h2></center>';
$main_content .= '<table border="1" cellspacing="0" width="100%">';
$main_content .= '<tr bgcolor=' . $colors[1] . '>';
$main_content .= '<td>From: </td><td>' . $From[0] . '</td></tr>';
$main_content .= '<tr bgcolor=' . $colors[0] . '>';
$main_content .= '<td>Topic</td><td>' . $Message->getTopic() . '</td></tr>';
$main_content .= '<tr bgcolor=' . $colors[1] . '>';
$main_content .= '<td>Date:</td><td>' . date('D-M-Y', $Message->getDate()) . '</td></tr>';
$main_content .= '</table><table border="0" cellspacing="0" width="100%">';
$main_content .= '<tr bgcolor=' . $colors[0] . '><td>' . $Message->getText() . '</td></tr></table>';
$main_content .= '<br><a href="?subtopic=messages&action=newMessage">Reply</a>|';
$main_content .= '<a href="?subtopic=messages&action=remove&id=' . $Message->getId() . '">Remove</a>|';
$main_content .= '<a href="?subtopic=messages&action=inbox">Inbox</a>|';
$main_content .= '<a href="?subtopic=messages&action=outbox">Outbox</a>';
}
}
else
{
$main_content .= '<center>Cannot show this message.</center>';
}
}
else if($Action == 'remove')
{
$Message = new PrivateMessage();
$Message->load($_GET['id']);
if($Message->isLoaded())
{
if($Message->getReceiver() == $account_logged->getId())
{
$Message->delete();
$main_content .= 'Message deleted.';
}
else
{
$main_content .= 'You cannot remove this message.';
}
}
else
{
$main_content .= '<center>Cannot show this message.</center>';
}
}
}
?>
Code:
case "messages";
$subtopic = "messages";
$topic = "Private messages";
include("mesages.php");
break;
Code:
<?php
if($logged)
{
?>
<a href='?subtopic=messages'>
<div id='submenu_messages' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_accountmanagement' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'>Messages(<?php
$Messages = new PrivateMessageList($account_logged->getId(), false);
echo($Messages->getMessagesNumberByReadStatus());
?>)</div>
<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
</div>
</a>
<?php
}
?>
Tairens
Last edited by a moderator: