*/
/**
* @class communicationView
* @author NAVER (developers@xpressengine.com)
* View class of communication module
*/
class communicationView extends communication
{
/**
* Initialization
* @return void
*/
function init()
{
$oCommunicationModel = getModel('communication');
$this->config = $oCommunicationModel->getConfig();
$skin = $this->config->skin;
Context::set('communication_config', $this->config);
$config_parse = explode('|@|', $skin);
if(count($config_parse) > 1)
{
$tpl_path = sprintf('./themes/%s/modules/communication/', $config_parse[0]);
}
else
{
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
}
$this->setTemplatePath($tpl_path);
$oLayoutModel = getModel('layout');
$layout_info = $oLayoutModel->getLayout($this->config->layout_srl);
if($layout_info)
{
$this->module_info->layout_srl = $this->config->layout_srl;
$this->setLayoutPath($layout_info->path);
}
}
/**
* Display message box
* @return object (Object : fail)
*/
function dispCommunicationMessages()
{
if($this->config->enable_message == 'N')
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Error appears if not logged-in
if(!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$logged_info = Context::get('logged_info');
// Set the variables
$message_srl = intval(Context::get('message_srl'));
$message_type = Context::get('message_type');
if(!in_array($message_type, array('R', 'S', 'T', 'N')))
{
$message_type = 'R';
Context::set('message_type', $message_type);
}
// extract contents if message_srl exists
$oCommunicationModel = getModel('communication');
$template_filename = 'messages';
if($message_srl)
{
$columnList = array('message_srl', 'message_type', 'related_srl', 'sender_srl', 'receiver_srl', 'title', 'content', 'readed', 'regdate');
$message = $oCommunicationModel->getSelectedMessage($message_srl, $columnList);
switch($message->message_type)
{
case 'R':
if($message->receiver_srl != $logged_info->member_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
break;
case 'S':
if($message->sender_srl != $logged_info->member_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
break;
case 'T':
if($message->receiver_srl != $logged_info->member_srl && $message->sender_srl != $logged_info->member_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
break;
case 'N':
if($message->receiver_srl != $logged_info->member_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
break;
}
if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl))
{
stripEmbedTagForAdmin($message->content, $message->sender_srl);
Context::set('message', $message);
Context::set('message_files', CommunicationModel::getMessageFiles($message));
if(Mobile::isFromMobilePhone() && file_exists($this->getTemplatePath() . 'read_message.html'))
{
$template_filename = 'read_message';
}
}
else
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
}
// Extract a list
$columnList = array('message_srl', 'message_type', 'related_srl', 'readed', 'title', 'member.member_srl', 'member.nick_name', 'message.regdate', 'readed_date');
$output = $oCommunicationModel->getMessages($message_type, $columnList);
// set a template file
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('message_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
$oSecurity = new Security();
$oSecurity->encodeHTML('message_list..nick_name');
$this->setTemplateFile($template_filename);
}
/**
* display a new message
* @return void|Object (void : success, Object : fail)
*/
function dispCommunicationNewMessage()
{
$this->setLayoutPath('./common/tpl/');
$this->setLayoutFile('popup_layout');
if($this->config->enable_message == 'N')
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Error appears if not logged-in
if(!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$oCommunicationModel = getModel('communication');
// get a new message
$columnList = array('message_srl', 'member_srl', 'nick_name', 'title', 'content', 'sender_srl');
$message = $oCommunicationModel->getNewMessage($columnList);
if($message)
{
stripEmbedTagForAdmin($message->content, $message->sender_srl);
Context::set('message', $message);
}
$this->setTemplateFile('new_message');
}
/**
* Display message sending
* @return void|Object (void : success, Object : fail)
*/
function dispCommunicationSendMessage()
{
if(!Context::get('m'))
{
$this->setLayoutPath('./common/tpl/');
$this->setLayoutFile("popup_layout");
}
if($this->config->enable_message == 'N')
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
if(!getModel('communication')->checkGrant($this->config->grant_send))
{
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
// Fix missing mid (it causes errors when uploading)
if(!Context::get('mid'))
{
Context::set('mid', Context::get('site_module_info')->mid);
}
// Error appears if not logged-in
if(!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$logged_info = Context::get('logged_info');
// get receipient's information
// check inalid request
$receiver_srl = Context::get('receiver_srl');
if(!$receiver_srl)
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// check receiver and sender are same
if($logged_info->member_srl == $receiver_srl)
{
throw new Rhymix\Framework\Exception('msg_cannot_send_to_yourself');
}
$oCommunicationModel = getModel('communication');
$oMemberModel = getModel('member');
// get message_srl of the original message if it is a reply
$message_srl = Context::get('message_srl');
if($message_srl)
{
$source_message = $oCommunicationModel->getSelectedMessage($message_srl);
if($source_message->message_srl == $message_srl && $source_message->sender_srl == $receiver_srl)
{
if(strncasecmp('[re]', $source_message->title, 4) !== 0)
{
$source_message->title = '[re] ' . $source_message->title;
}
$source_message->content = "\r\n
\r\n