Merge pull request #381 from kijin/pr/new-message-flag-fix

#380 새 메시지 플래그 파일 처리 오류 수정
This commit is contained in:
Kijin Sung 2016-03-16 14:55:39 +09:00
commit f42ba59a22
4 changed files with 70 additions and 40 deletions

View file

@ -9,9 +9,12 @@
class communication extends ModuleObject
{
private $triggers = array(
array('moduleHandler.init', 'communication', 'controller', 'triggerModuleHandlerBefore', 'before'),
array('moduleObject.proc', 'communication', 'controller', 'triggerModuleProcAfter', 'after'),
array('member.getMemberMenu', 'communication', 'controller', 'triggerMemberMenu', 'before')
);
private $delete_triggers = array(
array('moduleHandler.init', 'communication', 'controller', 'triggerModuleHandlerBefore', 'before'),
);
/**
* Implement if additional tasks are necessary when installing
@ -47,6 +50,13 @@ class communication extends ModuleObject
return TRUE;
}
}
foreach($this->delete_triggers as $trigger)
{
if($oModuleModel->getTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]))
{
return TRUE;
}
}
if(!is_dir("./files/member_extra_info/new_message_flags"))
{
@ -72,6 +82,13 @@ class communication extends ModuleObject
$oModuleController->insertTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]);
}
}
foreach($this->delete_triggers as $trigger)
{
if($oModuleModel->getTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]))
{
$oModuleController->deleteTrigger($trigger[0], $trigger[1], $trigger[2], $trigger[3], $trigger[4]);
}
}
if(!is_dir("./files/member_extra_info/new_message_flags"))
{

View file

@ -258,13 +258,7 @@ class communicationController extends communication
$oDB->commit();
// create a flag that message is sent (in file format)
$flag_path = './files/member_extra_info/new_message_flags/' . getNumberingPath($receiver_srl);
FileHandler::makeDir($flag_path);
$flag_file = sprintf('%s%s', $flag_path, $receiver_srl);
$oCommunicationModel = getModel('communication');
$new_message_count = $oCommunicationModel->getNewMessageCount($receiver_srl);
FileHandler::writeFile($flag_file, $new_message_count);
$this->updateFlagFile($receiver_srl);
return new Object(0, 'success_sended');
}
@ -305,7 +299,7 @@ class communicationController extends communication
{
return $output;
}
$this->updateFlagFile($logged_info->member_srl);
$this->setMessage('success_registed');
}
@ -365,7 +359,7 @@ class communicationController extends communication
{
return $output;
}
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');
}
@ -443,7 +437,7 @@ class communicationController extends communication
{
return $output;
}
$this->updateFlagFile($member_srl);
$this->setMessage('success_deleted');
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', 'dispCommunicationMessages', 'message_type', Context::get('message_type'));
@ -778,33 +772,46 @@ class communicationController extends communication
$args->related_srl = $message_srl;
$output = executeQuery('communication.setMessageReaded', $args);
// Renew a flag
$logged_info = Context::get('logged_info');
$flag_path = './files/member_extra_info/new_message_flags/' . getNumberingPath($logged_info->member_srl);
$flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl);
if(file_exists($flag_file))
{
$oCommunicationModel = getModel('communication');
$new_message_count = $oCommunicationModel->getNewMessageCount();
if($new_message_count > 0)
{
FileHandler::writeFile($flag_file, $new_message_count);
}
else
{
FileHandler::removeFile($flag_file);
}
}
// Update flag file
$this->updateFlagFile($logged_info->member_srl);
return $output;
}
/**
* Update flag file
* @param int $member_srl
* @return void
*/
function updateFlagFile($member_srl)
{
$flag_path = \RX_BASEDIR . 'files/member_extra_info/new_message_flags/' . getNumberingPath($member_srl);
$flag_file = $flag_path . $member_srl;
$new_message_count = getModel('communication')->getNewMessageCount($member_srl);
if($new_message_count > 0)
{
FileHandler::writeFile($flag_file, $new_message_count);
}
else
{
FileHandler::removeFile($flag_file);
}
}
function triggerModuleHandlerBefore($obj)
{
return $this->triggerModuleProcAfter($obj);
}
function triggerModuleProcAfter($obj)
{
if(!Context::get('is_logged') || $obj->module == 'member')
{
return new Object();
}
if (starts_with('dispCommunication', Context::get('act')))
{
return new Object();
}
$logged_info = Context::get('logged_info');
$oCommunicationModel = getModel('communication');
@ -833,14 +840,14 @@ class communicationController extends communication
if($config->enable_message == 'Y' && $obj->act != 'dispCommunicationNewMessage')
{
$flag_path = './files/member_extra_info/new_message_flags/' . getNumberingPath($logged_info->member_srl);
$flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl);
$flag_file = $flag_path . $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 = (int) trim(FileHandler::readFile($flag_file));
$new_message_count = (int)trim(FileHandler::readFile($flag_file));
if($new_message_count > 0)
{
$text = preg_replace('@\r?\n@', '\\n', addslashes(lang('alert_new_message_arrived')));
$text = escape_js(lang('alert_new_message_arrived'));
Context::addHtmlFooter("<script>jQuery(function(){ xeNotifyMessage('{$text}','{$new_message_count}'); });</script>");
Context::loadFile(array('./modules/communication/tpl/js/member_communication.js'), true);
}

View file

@ -116,6 +116,9 @@ class communicationView extends communication
$columnList = array('message_srl', 'readed', 'title', 'member.member_srl', 'member.nick_name', 'message.regdate', 'readed_date');
$output = $oCommunicationModel->getMessages($message_type, $columnList);
// Update flag file
getController('communication')->updateFlagFile($logged_info->member_srl);
// set a template file
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);

View file

@ -3,17 +3,20 @@
window.xeNotifyMessage = function(text, count){
$bar = $('div.message.info');
if(!$bar.length) {
$bar = $('<div class="message info" />')
.hide()
.css({
'position' : 'absolute',
'z-index' : '100',
})
.prependTo(document.body);
$bar = jQuery('<div class="message info"></div>').hide().css({
'position' : 'absolute',
'opacity' : 0.7,
'z-index' : 10000,
}).appendTo(document.body);
}
text = text.replace('%d', count);
$bar.html('<p><a href="'+current_url.setQuery('module','').setQuery('act','dispCommunicationNewMessage')+'" onclick="popopen(this.href, \'popup\');xeNotifyMessageClose(); return false;">'+text+'</a></p>').height();
var link = jQuery('<a></a>');
link.attr("href", current_url.setQuery('module','').setQuery('act','dispCommunicationMessages'));
//link.attr("onclick", "popopen(this.href, 'popup');xeNotifyMessageClose(); return false;");
link.text(text);
var para = jQuery('<p></p>');
para.append(link).appendTo($bar);
$bar.show().animate({top:0});
};