diff --git a/code/LiveChatAdmin.php b/code/LiveChatAdmin.php
index 0963d80..df76f14 100644
--- a/code/LiveChatAdmin.php
+++ b/code/LiveChatAdmin.php
@@ -1,106 +1,113 @@
'handleAction'
- );
-
- public function init() {
- parent::init();
- Requirements::css(LIVECHAT_DIR . '/css/live-chat.css');
- Requirements::block(FRAMEWORK_DIR . '/javascript/HtmlEditorField.js');
- Requirements::block(FRAMEWORK_DIR . '/thirdparty/jquery-ui/jquery-ui.min.js');
- Requirements::javascript(LIVECHAT_DIR . '/javascript/LiveChatAdmin.js');
- }
-
- /**
- * Has the user been granted access to view the Live Chat tab?
- * @param Member|null $member
- * @return boolean
- */
- public function canView($member = null) {
- if (!$member && $member !== FALSE)
- $member = Member::currentUser();
- return Permission::checkMember($member, "CMS_ACCESS_LiveChatAdmin");
- }
-
- /**
- * Returns the Breadcrumbs for the LiveChatAdmin
- * @return ArrayList
- */
- public function Breadcrumbs($unlinked = false) {
- return new ArrayList(array(
- new ArrayData(array(
- 'Title' => 'live chat',
- 'Link' => '/admin/' . self::$tree_class
- ))
- ));
- return parent::Breadcrumbs($unlinked);
- }
-
- /**
- * Returns the link to the report admin section, or the specific report that is currently displayed
- * @return String
- */
- public function Link($action = null) {
- return self::join_links(parent::Link('index'), $action);
- }
-
- public function providePermissions() {
- $title = _t("LiveChatAdmin.MENUTITLE", LeftAndMain::menu_title_for_class($this->class));
- return array(
- "CMS_ACCESS_LiveChatAdmin" => array(
- 'name' => _t('CMSMain.ACCESS', "Access to '{title}' section", array('title' => $title)),
- 'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access')
- )
- );
- }
-
- public function getEditForm($id = null, $fields = null) {
- $fields = new FieldList();
- $tabMesg = new Tab('MessageView', "New Message"); // this is a blank template for messages
- $tabChat = new Tab('NewChatView', "Start new chat");
-
- $tabs = new TabSet('Root', $tabChat, $tabMesg);
-
- $fields->push($tabs);
-
- $fields->addFieldsToTab('Root.NewChatView', array(
- TextField::create('Name', 'Find a Member to start chat'),
- LiteralField::create('StartChat', '')
- ));
-
- $msgfrom = '';
- $msgfrom .= '
';
- $msgfrom .= '
';
- $msgfrom .= '
'.Member::currentUser()->getTitle().'
';
- $msgfrom .= '
';
- $msgfrom .= '';
-
- $fields->addFieldsToTab('Root.MessageView', array(
- FieldGroup::create($title = '', array(
- LiteralField::create('SubmitNewMessage', $msgfrom)
- )),
- FieldGroup::create($title = 'Your message', array(
- TextareaField::create('NewMessageContent', '')->setColumns(80),
- LiteralField::create('SubmitNewMessage', '')
- ))
- ));
-
- $actions = new FieldList();
- $form = new Form($this, "LiveChatForm", $fields, $actions);
- $form->addExtraClass('cms-edit-form cms-panel-padded center ' . $this->BaseCSSClasses());
- $form->loadDataFrom($this->request->getVars());
-
- $this->extend('updateEditForm', $form);
-
- return $form;
- }
-
+class LiveChatAdmin extends LeftAndMain implements PermissionProvider
+{
+
+ private static $url_segment = 'livechat';
+ private static $url_rule = '/$LiveChatClass/$Action';
+ private static $menu_title = 'Live Chat';
+ private static $template_path = null; // defaults to (project)/templates/email
+ private static $tree_class = 'LiveChat';
+ private static $url_handlers = array(
+ '$LiveChatClass/$Action' => 'handleAction'
+ );
+
+ public function init()
+ {
+ parent::init();
+ Requirements::css(LIVECHAT_DIR . '/css/live-chat.css');
+ Requirements::block(FRAMEWORK_DIR . '/javascript/HtmlEditorField.js');
+ Requirements::block(FRAMEWORK_DIR . '/thirdparty/jquery-ui/jquery-ui.min.js');
+ Requirements::javascript(LIVECHAT_DIR . '/javascript/LiveChatAdmin.js');
+ }
+
+ /**
+ * Has the user been granted access to view the Live Chat tab?
+ * @param Member|null $member
+ * @return boolean
+ */
+ public function canView($member = null)
+ {
+ if (!$member && $member !== false) {
+ $member = Member::currentUser();
+ }
+ return Permission::checkMember($member, "CMS_ACCESS_LiveChatAdmin");
+ }
+
+ /**
+ * Returns the Breadcrumbs for the LiveChatAdmin
+ * @return ArrayList
+ */
+ public function Breadcrumbs($unlinked = false)
+ {
+ return new ArrayList(array(
+ new ArrayData(array(
+ 'Title' => 'live chat',
+ 'Link' => '/admin/' . self::$tree_class
+ ))
+ ));
+ return parent::Breadcrumbs($unlinked);
+ }
+
+ /**
+ * Returns the link to the report admin section, or the specific report that is currently displayed
+ * @return String
+ */
+ public function Link($action = null)
+ {
+ return self::join_links(parent::Link('index'), $action);
+ }
+
+ public function providePermissions()
+ {
+ $title = _t("LiveChatAdmin.MENUTITLE", LeftAndMain::menu_title_for_class($this->class));
+ return array(
+ "CMS_ACCESS_LiveChatAdmin" => array(
+ 'name' => _t('CMSMain.ACCESS', "Access to '{title}' section", array('title' => $title)),
+ 'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access')
+ )
+ );
+ }
+
+ public function getEditForm($id = null, $fields = null)
+ {
+ $fields = new FieldList();
+ $tabMesg = new Tab('MessageView', "New Message"); // this is a blank template for messages
+ $tabChat = new Tab('NewChatView', "Start new chat");
+
+ $tabs = new TabSet('Root', $tabChat, $tabMesg);
+
+ $fields->push($tabs);
+
+ $fields->addFieldsToTab('Root.NewChatView', array(
+ TextField::create('Name', 'Find a Member to start chat'),
+ LiteralField::create('StartChat', '')
+ ));
+
+ $msgfrom = '';
+ $msgfrom .= '';
+ $msgfrom .= '
';
+ $msgfrom .= '
'.Member::currentUser()->getTitle().'
';
+ $msgfrom .= '
';
+ $msgfrom .= '';
+
+ $fields->addFieldsToTab('Root.MessageView', array(
+ FieldGroup::create($title = '', array(
+ LiteralField::create('SubmitNewMessage', $msgfrom)
+ )),
+ FieldGroup::create($title = 'Your message', array(
+ TextareaField::create('NewMessageContent', '')->setColumns(80),
+ LiteralField::create('SubmitNewMessage', '')
+ ))
+ ));
+
+ $actions = new FieldList();
+ $form = new Form($this, "LiveChatForm", $fields, $actions);
+ $form->addExtraClass('cms-edit-form cms-panel-padded center ' . $this->BaseCSSClasses());
+ $form->loadDataFrom($this->request->getVars());
+
+ $this->extend('updateEditForm', $form);
+
+ return $form;
+ }
}
diff --git a/code/LiveChatController.php b/code/LiveChatController.php
index fab674b..b6acf95 100644
--- a/code/LiveChatController.php
+++ b/code/LiveChatController.php
@@ -3,304 +3,314 @@
/**
* handles polling, deleting, creation, fetching of live chat messages
*/
-class LiveChat_Controller extends Controller {
+class LiveChat_Controller extends Controller
+{
- private static $url_handlers = array(
- 'member-search' => 'member_search',
- 'poll' => 'get_poll',
- 'openchats' => 'get_openchats',
- 'messages' => 'get_messages',
- 'message' => 'set_message',
- 'delete' => 'delete_message'
- );
- private static $allowed_actions = array(
- 'member_search',
- 'get_openchats', // returns list of chats to/from a user
- 'get_poll',
- 'get_messages',
- 'set_message',
- 'delete_message' // removes messages to/from a user
- );
+ private static $url_handlers = array(
+ 'member-search' => 'member_search',
+ 'poll' => 'get_poll',
+ 'openchats' => 'get_openchats',
+ 'messages' => 'get_messages',
+ 'message' => 'set_message',
+ 'delete' => 'delete_message'
+ );
+ private static $allowed_actions = array(
+ 'member_search',
+ 'get_openchats', // returns list of chats to/from a user
+ 'get_poll',
+ 'get_messages',
+ 'set_message',
+ 'delete_message' // removes messages to/from a user
+ );
- /**
- * Use to find a user. returns AJAX
- * @param GET 'query' a search string for a user
- * @param SS_HTTPRequest $request
- */
- public function member_search(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
+ /**
+ * Use to find a user. returns AJAX
+ * @param GET 'query' a search string for a user
+ * @param SS_HTTPRequest $request
+ */
+ public function member_search(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
- if ($request->getVar('query')) {
- $query = Convert::raw2sql($request->getVar('query'));
+ if ($request->getVar('query')) {
+ $query = Convert::raw2sql($request->getVar('query'));
- //Search for our query - Pretty basic example here
- $Results = DataObject::get('Member', "FirstName LIKE '%$query%' OR Surname LIKE '%$query%'");
+ //Search for our query - Pretty basic example here
+ $Results = DataObject::get('Member', "FirstName LIKE '%$query%' OR Surname LIKE '%$query%'");
- //For AutoComplete
- $Members = $Results->map('ID', 'Name');
+ //For AutoComplete
+ $Members = $Results->map('ID', 'Name');
- $Suggestions = json_encode($Members->toArray());
+ $Suggestions = json_encode($Members->toArray());
- header('Content-Type: application/json');
- die('{"query" : "' . $query . '","suggestions" : ' . $Suggestions . '}');
- }
- header("HTTP/1.0 400 Bad Request");
- die('No member found');
- }
+ header('Content-Type: application/json');
+ die('{"query" : "' . $query . '","suggestions" : ' . $Suggestions . '}');
+ }
+ header("HTTP/1.0 400 Bad Request");
+ die('No member found');
+ }
- /**
- * Polls the message queue. Will return a map of senders with the lastest message ID
- * @see http://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results
- * @param GET 'lastid' the highest ID in you message queue
- * @param SS_HTTPRequest $request
- */
- public function get_poll(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
- if (!$request->getVar('lastid')) {
- header("HTTP/1.0 400 Bad Request");
- die('No last id supplied');
- }
+ /**
+ * Polls the message queue. Will return a map of senders with the lastest message ID
+ * @see http://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results
+ * @param GET 'lastid' the highest ID in you message queue
+ * @param SS_HTTPRequest $request
+ */
+ public function get_poll(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
+ if (!$request->getVar('lastid')) {
+ header("HTTP/1.0 400 Bad Request");
+ die('No last id supplied');
+ }
- // find the messages that have been sent to you
- $query = new SQLQuery("*", "LiveChatMessage", "ToID = " . (int) Member::currentUserID());
- $query->addWhere("ID >= '" . (int) $request->getVar('lastid') . "'");
- $query->addWhere("ClassName = 'LiveChatMessage'");
- $query->addOrderBy("ID DESC");
+ // find the messages that have been sent to you
+ $query = new SQLQuery("*", "LiveChatMessage", "ToID = " . (int) Member::currentUserID());
+ $query->addWhere("ID >= '" . (int) $request->getVar('lastid') . "'");
+ $query->addWhere("ClassName = 'LiveChatMessage'");
+ $query->addOrderBy("ID DESC");
- $result = $query->execute();
-
- $returnar = array();
+ $result = $query->execute();
+
+ $returnar = array();
- // add the names to the array
- foreach ($result as $id) {
- $member = Member::get()->byID($id['FromID']);
- $returnar[$id['ID']] = array(
- "Name" => $member ? $member->getName() : $id['FromName'],
- "FromID" => $id['FromID'] ? $id['FromID'] : md5($id['FromName']),
- "Read" => $id['Read'],
- "Message" => $id['Message']
- );
- }
+ // add the names to the array
+ foreach ($result as $id) {
+ $member = Member::get()->byID($id['FromID']);
+ $returnar[$id['ID']] = array(
+ "Name" => $member ? $member->getName() : $id['FromName'],
+ "FromID" => $id['FromID'] ? $id['FromID'] : md5($id['FromName']),
+ "Read" => $id['Read'],
+ "Message" => $id['Message']
+ );
+ }
- foreach ($result as $mesg) {
- // only update the ones that havn't been read, and the ones coming to you
- if (!$mesg['Read'] && $mesg['ToID'] == Member::currentUserID()) {
- $mymsg = LiveChatMessage::get()->byID($mesg['ID']);
- $mymsg->Read = true;
- $mymsg->write();
- }
- }
+ foreach ($result as $mesg) {
+ // only update the ones that havn't been read, and the ones coming to you
+ if (!$mesg['Read'] && $mesg['ToID'] == Member::currentUserID()) {
+ $mymsg = LiveChatMessage::get()->byID($mesg['ID']);
+ $mymsg->Read = true;
+ $mymsg->write();
+ }
+ }
- header('Content-Type: application/json');
- die(json_encode($returnar));
- }
+ header('Content-Type: application/json');
+ die(json_encode($returnar));
+ }
- /**
- * Polls the message queue. Will return a map of senders with the lastest message ID
- * @see http://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results
- * @param SS_HTTPRequest $request
- */
- public function get_openchats(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
+ /**
+ * Polls the message queue. Will return a map of senders with the lastest message ID
+ * @see http://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results
+ * @param SS_HTTPRequest $request
+ */
+ public function get_openchats(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
- // find the messages that have been sent to you
- $query1 = new SQLQuery("*", "LiveChatMessage", "ToID = " . (int) Member::currentUserID());
- $query1->addOrderBy("ID DESC");
- $query1->addWhere("ClassName = 'LiveChatMessage'");
+ // find the messages that have been sent to you
+ $query1 = new SQLQuery("*", "LiveChatMessage", "ToID = " . (int) Member::currentUserID());
+ $query1->addOrderBy("ID DESC");
+ $query1->addWhere("ClassName = 'LiveChatMessage'");
- $query2 = new SQLQuery("ID, FromID, FromName", '(' . $query1->sql() . ') x');
- $query2->addGroupBy("FromID, FromName");
+ $query2 = new SQLQuery("ID, FromID, FromName", '(' . $query1->sql() . ') x');
+ $query2->addGroupBy("FromID, FromName");
- // only select the largest ID, unique for each sender
- $result = $query2->execute();
- $returnar = array();
+ // only select the largest ID, unique for each sender
+ $result = $query2->execute();
+ $returnar = array();
- // add the names to the array
- foreach ($result as $id) {
- $member = Member::get()->byID($id['FromID']);
- $returnar[$id['ID']] = array(
- "Name" => $member ? $member->getName() : $id['FromName'],
- "FromID" => $id['FromID'] ? $id['FromID'] : md5($id['FromName'])
- );
- }
+ // add the names to the array
+ foreach ($result as $id) {
+ $member = Member::get()->byID($id['FromID']);
+ $returnar[$id['ID']] = array(
+ "Name" => $member ? $member->getName() : $id['FromName'],
+ "FromID" => $id['FromID'] ? $id['FromID'] : md5($id['FromName'])
+ );
+ }
- header('Content-Type: application/json');
- die(json_encode($returnar));
- }
+ header('Content-Type: application/json');
+ die(json_encode($returnar));
+ }
- /**
- * sends a message to user
- * @param POST 'Message'
- * @param POST 'To'
- * @param SS_HTTPRequest $request
- */
- public function set_message(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
+ /**
+ * sends a message to user
+ * @param POST 'Message'
+ * @param POST 'To'
+ * @param SS_HTTPRequest $request
+ */
+ public function set_message(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
- if (!$request->postVar('Message')) {
- header("HTTP/1.0 400 Bad Request");
- die('No Message found');
- }
+ if (!$request->postVar('Message')) {
+ header("HTTP/1.0 400 Bad Request");
+ die('No Message found');
+ }
- if (!$request->postVar('To')) {
- header("HTTP/1.0 400 Bad Request");
- die('No target user ID found');
- }
- // redirecting one user to another
- if (substr($request->postVar('Message'), 0, 9) == '/redirect') {
- $this->redirectChatToUser($request->postVar('To'), substr($request->postVar('Message'), 10));
- die();
- }
+ if (!$request->postVar('To')) {
+ header("HTTP/1.0 400 Bad Request");
+ die('No target user ID found');
+ }
+ // redirecting one user to another
+ if (substr($request->postVar('Message'), 0, 9) == '/redirect') {
+ $this->redirectChatToUser($request->postVar('To'), substr($request->postVar('Message'), 10));
+ die();
+ }
- LiveChatMessage::create(array(
- 'Message' => htmlentities($request->postVar('Message')),
- 'ToID' => is_numeric($request->postVar('To')) ? $request->postVar('To') : 0,
- 'Read' => false,
- 'FromID' => Member::currentUserID(),
- 'FromIP' => $request->getIP(),
- 'FromName' => is_numeric($request->postVar('To')) ? "" : $request->postVar('To')
- ))->write();
+ LiveChatMessage::create(array(
+ 'Message' => htmlentities($request->postVar('Message')),
+ 'ToID' => is_numeric($request->postVar('To')) ? $request->postVar('To') : 0,
+ 'Read' => false,
+ 'FromID' => Member::currentUserID(),
+ 'FromIP' => $request->getIP(),
+ 'FromName' => is_numeric($request->postVar('To')) ? "" : $request->postVar('To')
+ ))->write();
- die(); // success
- }
+ die(); // success
+ }
- /**
- * returns all messages from and to yourself and another user
- * @param GET ID Id of the target person
- * @param GET FromName name of the target person
- * @param SS_HTTPRequest $request
- */
- public function get_messages(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
- if (!$request->getVar('ID')) {
- header("HTTP/1.0 400 Bad Request");
- die('No Message found');
- }
- $returnar = null;
- if (is_numeric($request->getVar('ID'))) {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromID\" = " . (int) $_GET['ID'] . ' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $_GET['ID']);
- })->sort('ID');
- } else {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($_GET['ID']) . '\' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($_GET['ID']) . '\'');
- })->sort('ID');
- }
- $returnar->filter(array('ClassName'=>'LiveChatMessage'));
-
- header('Content-Type: application/json');
+ /**
+ * returns all messages from and to yourself and another user
+ * @param GET ID Id of the target person
+ * @param GET FromName name of the target person
+ * @param SS_HTTPRequest $request
+ */
+ public function get_messages(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
+ if (!$request->getVar('ID')) {
+ header("HTTP/1.0 400 Bad Request");
+ die('No Message found');
+ }
+ $returnar = null;
+ if (is_numeric($request->getVar('ID'))) {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromID\" = " . (int) $_GET['ID'] . ' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $_GET['ID']);
+ })->sort('ID');
+ } else {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($_GET['ID']) . '\' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($_GET['ID']) . '\'');
+ })->sort('ID');
+ }
+ $returnar->filter(array('ClassName'=>'LiveChatMessage'));
+
+ header('Content-Type: application/json');
- // update the messages as being read
- foreach ($returnar as &$mesg) {
- // only update the ones that havn't been read, and the ones coming to you
- if (!$mesg->Read && $mesg->ToID == Member::currentUserID()) {
- $mymsg = LiveChatMessage::get()->byID($mesg->ID);
- $mymsg->Read = true;
- $mymsg->write();
- }
- }
- die(json_encode($returnar->toNestedArray()));
- }
+ // update the messages as being read
+ foreach ($returnar as &$mesg) {
+ // only update the ones that havn't been read, and the ones coming to you
+ if (!$mesg->Read && $mesg->ToID == Member::currentUserID()) {
+ $mymsg = LiveChatMessage::get()->byID($mesg->ID);
+ $mymsg->Read = true;
+ $mymsg->write();
+ }
+ }
+ die(json_encode($returnar->toNestedArray()));
+ }
- /**
- * deletes all your messages, given an ID or a FromName
- * @param GET ID Id of the target person
- * @param GET FromName name of the target person
- * @param SS_HTTPRequest $request
- */
- public function delete_message(SS_HTTPRequest $request) {
- if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
- header("HTTP/1.0 403 Forbidden");
- die('You do not have permission to use the live chat module');
- }
- if (!$request->getVar('ID')) {
- header("HTTP/1.0 400 Bad Request");
- die('No Message found');
- }
- $returnar = array();
- if (is_numeric($request->getVar('ID'))) {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromID\" = " . (int) $_GET['ID'] . ' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $_GET['ID']);
- });
- } else {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($_GET['ID']) . '\' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($_GET['ID']) . '\'');
- });
- }
- $returnar->filter(array('ClassName'=>'LiveChatMessage'));
+ /**
+ * deletes all your messages, given an ID or a FromName
+ * @param GET ID Id of the target person
+ * @param GET FromName name of the target person
+ * @param SS_HTTPRequest $request
+ */
+ public function delete_message(SS_HTTPRequest $request)
+ {
+ if (!Permission::checkMember(Member::currentUser(), "CMS_ACCESS_LiveChatAdmin")) {
+ header("HTTP/1.0 403 Forbidden");
+ die('You do not have permission to use the live chat module');
+ }
+ if (!$request->getVar('ID')) {
+ header("HTTP/1.0 400 Bad Request");
+ die('No Message found');
+ }
+ $returnar = array();
+ if (is_numeric($request->getVar('ID'))) {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromID\" = " . (int) $_GET['ID'] . ' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $_GET['ID']);
+ });
+ } else {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($_GET['ID']) . '\' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($_GET['ID']) . '\'');
+ });
+ }
+ $returnar->filter(array('ClassName'=>'LiveChatMessage'));
- header('Content-Type: application/json');
- foreach ($returnar as &$mesg) {
- $mesg->setClassName('LiveChatMessageArchive');
- $mesg->write();
- }
- die();
- }
-
- /**
- * Changes all messages from a user, to a nother user.
- * @param int|string $from either a string or an ID
- * @param int $to ID of user to transfeer to
- */
- public function redirectChatToUser($from, $to) {
- $GLOBALS['LIVE_CHAT_FROM_TARGET'] = $from;
- $GLOBALS['LIVE_CHAT_TO_TARGET'] = $to;
- $returnar = array();
- if (is_numeric($from)) {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromID\" = " . (int) $GLOBALS['LIVE_CHAT_FROM_TARGET'] . ' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $GLOBALS['LIVE_CHAT_FROM_TARGET']);
- });
- } else {
- $returnar = LiveChatMessage::get()->alterDataQuery(function($query, $list) {
- $subquery = $query->disjunctiveGroup();
- $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($GLOBALS['LIVE_CHAT_FROM_TARGET']) . '\' AND "ToID" = ' . Member::currentUserID());
- $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($GLOBALS['LIVE_CHAT_FROM_TARGET']) . '\'');
- });
- }
- $returnar->filter(array('ClassName'=>'LiveChatMessage'));
-
- foreach ($returnar as &$mesg) {
- if ($mesg->FromID == Member::currentUserID()) {
- $mesg->FromID = $to;
- } else {
- $mesg->ToID = $to;
- }
- $mesg->write();
- }
- }
- public function canView($member = null) {
- return true;
- }
- public function canEdit($member = null) {
- return true;
- }
- public function canDelete($member = null) {
- return true;
- }
+ header('Content-Type: application/json');
+ foreach ($returnar as &$mesg) {
+ $mesg->setClassName('LiveChatMessageArchive');
+ $mesg->write();
+ }
+ die();
+ }
+ /**
+ * Changes all messages from a user, to a nother user.
+ * @param int|string $from either a string or an ID
+ * @param int $to ID of user to transfeer to
+ */
+ public function redirectChatToUser($from, $to)
+ {
+ $GLOBALS['LIVE_CHAT_FROM_TARGET'] = $from;
+ $GLOBALS['LIVE_CHAT_TO_TARGET'] = $to;
+ $returnar = array();
+ if (is_numeric($from)) {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromID\" = " . (int) $GLOBALS['LIVE_CHAT_FROM_TARGET'] . ' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "ToID" = ' . (int) $GLOBALS['LIVE_CHAT_FROM_TARGET']);
+ });
+ } else {
+ $returnar = LiveChatMessage::get()->alterDataQuery(function ($query, $list) {
+ $subquery = $query->disjunctiveGroup();
+ $subquery->whereAny("\"FromName\" = '" . Convert::raw2sql($GLOBALS['LIVE_CHAT_FROM_TARGET']) . '\' AND "ToID" = ' . Member::currentUserID());
+ $subquery->whereAny("\"FromID\" = " . Member::currentUserID() . ' AND "FromName" = \'' . Convert::raw2sql($GLOBALS['LIVE_CHAT_FROM_TARGET']) . '\'');
+ });
+ }
+ $returnar->filter(array('ClassName'=>'LiveChatMessage'));
+
+ foreach ($returnar as &$mesg) {
+ if ($mesg->FromID == Member::currentUserID()) {
+ $mesg->FromID = $to;
+ } else {
+ $mesg->ToID = $to;
+ }
+ $mesg->write();
+ }
+ }
+ public function canView($member = null)
+ {
+ return true;
+ }
+ public function canEdit($member = null)
+ {
+ return true;
+ }
+ public function canDelete($member = null)
+ {
+ return true;
+ }
}
diff --git a/code/LiveChatMessage.php b/code/LiveChatMessage.php
index afd1a06..e4e5323 100644
--- a/code/LiveChatMessage.php
+++ b/code/LiveChatMessage.php
@@ -3,15 +3,16 @@
/**
* A single message sent to an individual
*/
-class LiveChatMessage extends DataObject {
- public static $db = array(
- 'Message' => 'Text',
- "FromIP" => 'Text',
- "FromName" => 'Text', // name for anonymous conversations. Must not be numeric.
- 'Read' => 'Boolean'
- );
- public static $has_one = array(
- "From" => "Member",
- "To" => "Member"
- );
-}
\ No newline at end of file
+class LiveChatMessage extends DataObject
+{
+ public static $db = array(
+ 'Message' => 'Text',
+ "FromIP" => 'Text',
+ "FromName" => 'Text', // name for anonymous conversations. Must not be numeric.
+ 'Read' => 'Boolean'
+ );
+ public static $has_one = array(
+ "From" => "Member",
+ "To" => "Member"
+ );
+}
diff --git a/code/LiveChatMessageArchive.php b/code/LiveChatMessageArchive.php
index 98979e6..f65d874 100644
--- a/code/LiveChatMessageArchive.php
+++ b/code/LiveChatMessageArchive.php
@@ -3,5 +3,6 @@
/**
* A backup of a live chat message. Used when the orginal message is deleted.
*/
-class LiveChatMessageArchive extends LiveChatMessage {
-}
\ No newline at end of file
+class LiveChatMessageArchive extends LiveChatMessage
+{
+}