diff --git a/modules/communication/communication.class.php b/modules/communication/communication.class.php
index 559e2f28b..a4b2518d3 100644
--- a/modules/communication/communication.class.php
+++ b/modules/communication/communication.class.php
@@ -9,8 +9,10 @@
class communication extends ModuleObject
{
private $triggers = array(
- array('moduleHandler.init', 'communication', 'controller', 'triggerModuleHandlerAfter', 'after')
+ array('moduleHandler.init', 'communication', 'controller', 'triggerModuleHandlerBefore', 'before'),
+ array('member.getMemberMenu', 'communication', 'controller', 'triggerMemberMenu', 'before')
);
+
/**
* Implement if additional tasks are necessary when installing
* @return Object
@@ -18,6 +20,7 @@ class communication extends ModuleObject
function moduleInstall()
{
$oModuleController = getController('module');
+
foreach($this->triggers as $trigger)
{
$oModuleController->insertTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]);
@@ -25,6 +28,7 @@ class communication extends ModuleObject
// Create a temporary file storage for one new private message notification
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
+
return new Object();
}
@@ -34,28 +38,8 @@ class communication extends ModuleObject
*/
function checkUpdate()
{
- if(!is_dir("./files/member_extra_info/new_message_flags"))
- {
- return TRUE;
- }
-
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('message');
-
- if($config->skin)
- {
- $config_parse = explode('.', $config->skin);
- if(count($config_parse) > 1)
- {
- $template_path = sprintf('./themes/%s/modules/communication/', $config_parse[0]);
- if(is_dir($template_path))
- {
- return TRUE;
- }
- }
- }
-
$oModuleModel = getModel('module');
+
foreach($this->triggers as $trigger)
{
if(!$oModuleModel->getTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]))
@@ -63,6 +47,12 @@ class communication extends ModuleObject
return TRUE;
}
}
+
+ if(!is_dir("./files/member_extra_info/new_message_flags"))
+ {
+ return TRUE;
+ }
+
return FALSE;
}
@@ -72,13 +62,9 @@ class communication extends ModuleObject
*/
function moduleUpdate()
{
- if(!is_dir("./files/member_extra_info/new_message_flags"))
- {
- FileHandler::makeDir('./files/member_extra_info/new_message_flags');
- }
-
$oModuleModel = getModel('module');
$oModuleController = getController('module');
+
foreach($this->triggers as $trigger)
{
if(!$oModuleModel->getTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]))
@@ -86,24 +72,10 @@ class communication extends ModuleObject
$oModuleController->insertTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]);
}
}
- $config = $oModuleModel->getModuleConfig('message');
- if(!is_object($config))
+
+ if(!is_dir("./files/member_extra_info/new_message_flags"))
{
- $config = new stdClass();
- }
-
- if($config->skin)
- {
- $config_parse = explode('.', $config->skin);
- if(count($config_parse) > 1)
- {
- $template_path = sprintf('./themes/%s/modules/communication/', $config_parse[0]);
- if(is_dir($template_path))
- {
- $config->skin = implode('|@|', $config_parse);
- $oModuleController->updateModuleConfig('communication', $config);
- }
- }
+ FileHandler::makeDir('./files/member_extra_info/new_message_flags');
}
return new Object(0, 'success_updated');
diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php
index 452c61afc..248f04632 100644
--- a/modules/communication/communication.controller.php
+++ b/modules/communication/communication.controller.php
@@ -777,14 +777,9 @@ class communicationController extends communication
return executeQuery('communication.setMessageReaded', $args);
}
- function triggerModuleHandlerAfter($module)
+ function triggerModuleHandlerBefore($obj)
{
- if(!Context::get('is_logged') && isCrawler())
- {
- return new Object();
- }
-
- if($module->module == 'admin')
+ if(!Context::get('is_logged') || $obj->module == 'member')
{
return new Object();
}
@@ -796,60 +791,78 @@ class communicationController extends communication
{
return new Object();
}
- $act = Context::get('act');
- if($module->module != 'member')
- {
- $oMemberController = getController('member');
- $oMemberController->addMemberMenu('dispCommunicationFriend', 'cmd_view_friend');
- $oMemberController->addMemberMenu('dispCommunicationMessages', 'cmd_view_message_box');
+ $logged_info = Context::get('logged_info');
+
+ // Add menus on the member login information
+ $oMemberController = getController('member');
+ $oMemberController->addMemberMenu('dispCommunicationFriend', 'cmd_view_friend');
+ $oMemberController->addMemberMenu('dispCommunicationMessages', 'cmd_view_message_box');
+
+ $flag_file = './files/member_extra_info/new_message_flags/' . getNumberingPath($logged_info->member_srl) . $logged_info->member_srl;
+ if(file_exists($flag_file))
+ {
// Pop-up to display messages if a flag on new message is set
- $new_message_count = $oCommunicationModel->getNewMessageCount();
- if($new_message_count > 0)
- {
- Context::loadFile('./modules/communication/tpl/js/member_communication.js');
- $text = preg_replace('@\r?\n@', '\\n', addslashes(Context::getLang('alert_new_message_arrived')));
- Context::addHtmlHeader("");
- }
-
+ $new_message_count = (int) trim(FileHandler::readFile($flag_file));
+ $text = preg_replace('@\r?\n@', '\\n', addslashes(Context::getLang('alert_new_message_arrived')));
+ Context::addHtmlFooter("");
+ Context::loadFile(array('./modules/communication/tpl/js/member_communication.js'), true);
+
+ FileHandler::removeFile($flag_file);
}
- elseif($act == 'getMemberMenu')
+ }
+
+ function triggerMemberMenu()
+ {
+ if(!Context::get('is_logged'))
{
- $member_srl = Context::get('target_srl');
- $oCommunicationModel = getModel('communication');
- $logged_info = Context::get('logged_info');
- // Add a feature to display own message box.
- if($logged_info->member_srl == $member_srl)
- {
- $mid = Context::get('cur_mid');
- $oMemberController = getController('member');
- // Add your own viewing Note Template
- $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationMessages'), 'cmd_view_message_box', '', 'self');
- // Display a list of friends
- $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationFriend'), 'cmd_view_friend', '', 'self');
- // If not, Add menus to send message and to add friends
- }
- else
- {
- // Get member information
- $oMemberModel = getModel('member');
- $target_member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
- if(!$target_member_info->member_srl)
- {
- return new Object();
- }
+ return new Object();
+ }
+
+ $oCommunicationModel = getModel('communication');
+ $config = $oCommunicationModel->getConfig();
- $oMemberController = getController('member');
- // Add a menu for sending message
- if($logged_info->is_admin == 'Y' || $target_member_info->allow_message == 'Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl)))
- {
- $oMemberController->addMemberPopupMenu(getUrl('', 'mid', Context::get('cur_mid'), 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup');
- }
- // Add a menu for listing friends (if a friend is new)
- if(!$oCommunicationModel->isAddedFriend($member_srl))
- {
- $oMemberController->addMemberPopupMenu(getUrl('', 'mid', Context::get('cur_mid'), 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup');
- }
+ if($config->member_menu != 'Y')
+ {
+ return new Object();
+ }
+
+ $mid = Context::get('cur_mid');
+ $member_srl = Context::get('target_srl');
+ $logged_info = Context::get('logged_info');
+ $oMemberController = getController('member');
+
+ // Add a feature to display own message box.
+ if($logged_info->member_srl == $member_srl)
+ {
+ // Add your own viewing Note Template
+ $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationMessages'), 'cmd_view_message_box', '', 'self');
+
+ // Display a list of friends
+ $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationFriend'), 'cmd_view_friend', '', 'self');
+
+ }
+ // If not, Add menus to send message and to add friends
+ else
+ {
+ // Get member information
+ $oMemberModel = getModel('member');
+ $target_member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
+ if(!$target_member_info->member_srl)
+ {
+ return new Object();
+ }
+
+ // Add a menu for sending message
+ if($logged_info->is_admin == 'Y' || $target_member_info->allow_message == 'Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl)))
+ {
+ $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup');
+ }
+
+ // Add a menu for listing friends (if a friend is new)
+ if(!$oCommunicationModel->isAddedFriend($member_srl))
+ {
+ $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup');
}
}
}