글작성시에 알림 기능 추가. 알림 체크시 댓글/엮인글이 첨부되면 쪽지로 발송함

git-svn-id: http://xe-core.googlecode.com/svn/trunk@2015 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-07-25 10:44:22 +00:00
parent 812283e33a
commit 94227a556d
22 changed files with 134 additions and 24 deletions

View file

@ -47,7 +47,7 @@
</tr>
<tr>
<th scope="row">{$lang->admin_id}</th>
<td>{implode(",",$module_info->admin_id)}</td>
<td><!--@if(is_array($module_info->admin_id))-->{implode(",",$module_info->admin_id)}<!--@end--></td>
</tr>
</table>

View file

@ -64,6 +64,11 @@
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($oDocument->allowTrackback())-->checked="checked"<!--@end--> id="allow_trackback" />
<label for="allow_trackback">{$lang->allow_trackback}</label>
<!--@if($is_logged)-->
<input type="checkbox" name="notify_message" value="Y" <!--@if($oDocument->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
</td>
</tr>
<tr>

View file

@ -63,6 +63,12 @@
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($oDocument->allowTrackback())-->checked="checked"<!--@end--> id="allow_trackback" />
<label for="allow_trackback">{$lang->allow_trackback}</label>
</dd>
<!--@if($is_logged)-->
<dd>
<input type="checkbox" name="notify_message" value="Y" <!--@if($oDocument->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
</dd>
<!--@end-->
</dl>
<div>{$editor}</div>

View file

@ -63,6 +63,12 @@
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($oDocument->allowTrackback())-->checked="checked"<!--@end--> id="allow_trackback" />
<label for="allow_trackback">{$lang->allow_trackback}</label>
</dd>
<!--@if($is_logged)-->
<dd>
<input type="checkbox" name="notify_message" value="Y" <!--@if($oDocument->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
</dd>
<!--@end-->
</dl>
<div>{$editor}</div>

View file

@ -63,6 +63,12 @@
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($oDocument->allowTrackback())-->checked="checked"<!--@end--> id="allow_trackback" />
<label for="allow_trackback">{$lang->allow_trackback}</label>
</dd>
<!--@if($is_logged)-->
<dd>
<input type="checkbox" name="notify_message" value="Y" <!--@if($oDocument->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
</dd>
<!--@end-->
</dl>
<div>{$editor}</div>

View file

@ -35,10 +35,10 @@
// 원본글을 가져옴
if(!$manual_inserted) {
$document = $oDocumentModel->getDocument($document_srl);
$oDocument = $oDocumentModel->getDocument($document_srl);
if($document_srl != $document->document_srl) return new Object(-1,'msg_invalid_document');
if($document->lock_comment=='Y') return new Object(-1,'msg_invalid_request');
if($document_srl != $oDocument->document_srl) return new Object(-1,'msg_invalid_document');
if($oDocument->isLocked()) return new Object(-1,'msg_invalid_request');
if($obj->password) $obj->password = md5($obj->password);
if($obj->homepage && !eregi('^http:\/\/',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage;
@ -95,6 +95,9 @@
// commit
$oDB->commit();
// 원본글에 알림(notify_message)가 설정되어 있으면 메세지 보냄
if(!$manual_inserted) $oDocument->notify(Context::getLang('comment'), $obj->content);
$output->add('comment_srl', $obj->comment_srl);
return $output;
}

View file

@ -38,6 +38,11 @@
**/
if(!$oDB->isColumnExists("documents","extra_vars20")) return true;
/**
* 2007. 7. 25 : 알림 필드(notify_message) 추가
**/
if(!$oDB->isColumnExists("documents","notify_message")) return true;
return false;
}
@ -45,10 +50,11 @@
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oDB = &DB::getInstance();
/**
* 2007. 7. 23 : 확장변수(extra_vars1~20까지 추가)
**/
$oDB = &DB::getInstance();
if(!$oDB->isColumnExists("documents","extra_vars20")) {
for($i=1;$i<=20;$i++) {
$column_name = "extra_vars".$i;
@ -56,6 +62,13 @@
}
}
/**
* 2007. 7. 25 : 알림 필드(notify_message) 추가
**/
if(!$oDB->isColumnExists("documents","notify_message")) {
$oDB->addColumn('documents',"notify_message","char",1);
}
return new Object(0,'success_updated');
}

View file

@ -36,6 +36,7 @@
if($obj->lock_comment!='Y') $obj->lock_comment = 'N';
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
if($obj->homepage && !eregi('^http:\/\/',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage;
if($obj->notify_message != "Y") $obj->notify_message = "N";
// 자동저장용 필드 제거
unset($obj->_saved_doc_srl);
@ -127,6 +128,7 @@
if($obj->lock_comment!='Y') $obj->lock_comment = 'N';
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
if($obj->homepage && !eregi('^http:\/\/',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage;
if($obj->notify_message != "Y") $obj->notify_message = "N";
// 자동저장용 필드 제거
unset($obj->_saved_doc_srl);

View file

@ -95,6 +95,32 @@
function isNotice() {
return $this->get('is_notice') == 'Y' ? true : false;
}
function useNotify() {
return $this->get('notify_message')=='Y' ? true : false;
}
function notify($type, $content) {
// useNotify가 아니면 return
if(!$this->useNotify()) return;
// 글쓴이가 로그인 유저가 아니면 패스~
if(!$this->get('member_srl')) return;
// 현재 로그인한 사용자와 글을 쓴 사용자를 비교하여 동일하면 return
$logged_info = Context::get('logged_info');
if($logged_info->member_srl == $this->get('member_srl')) return;
// 변수 정리
$title = sprintf("[%s] %s", $type, cut_str(strip_tags($content), 10, '...') );
$content = sprintf('%s<br /><br />from : <a href="%s" onclick="window.open(this.href);return false;">%s</a>',$content, $this->getPermanentUrl(), $this->getPermanentUrl());
$receiver_srl = $this->get('member_srl');
$sender_member_srl = $logged_info->member_srl;
// 쪽지 발송
$oMemberController = &getController('member');
$oMemberController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false);
}
function getUserID() {
return htmlspecialchars($this->get('user_id'));

View file

@ -31,6 +31,7 @@
<column name="allow_comment" var="allow_comment" default="Y" />
<column name="lock_comment" var="lock_comment" default="N" />
<column name="allow_trackback" var="allow_trackback" default="Y" />
<column name="notify_message" var="notify_message" default="N" />
<column name="extra_vars1" var="extra_vars1" />
<column name="extra_vars2" var="extra_vars2" />
<column name="extra_vars3" var="extra_vars3" />

View file

@ -24,6 +24,7 @@
<column name="allow_comment" var="allow_comment" default="Y" />
<column name="lock_comment" var="lock_comment" default="N" />
<column name="allow_trackback" var="allow_trackback" default="Y" />
<column name="notify_message" var="notify_message" default="N" />
<column name="extra_vars1" var="extra_vars1" />
<column name="extra_vars2" var="extra_vars2" />
<column name="extra_vars3" var="extra_vars3" />

View file

@ -31,6 +31,7 @@
<column name="allow_comment" type="char" size="1" default="Y" notnull="notnull" />
<column name="lock_comment" type="char" size="1" default="N" notnull="notnull" />
<column name="allow_trackback" type="char" size="1" default="Y" notnull="notnull" />
<column name="notify_message" type="char" size="1" default="N" notnull="notnull" />
<column name="extra_vars1" type="text" />
<column name="extra_vars2" type="text" />
<column name="extra_vars3" type="text" />

View file

@ -139,8 +139,10 @@
// 변수 검사
$receiver_srl = Context::get('receiver_srl');
if(!$receiver_srl) return new Object(-1, 'msg_not_exists_member');
$title = trim(Context::get('title'));
if(!$title) return new Object(-1, 'msg_title_is_null');
$content = trim(Context::get('content'));
if(!$content) return new Object(-1, 'msg_content_is_null');
@ -156,37 +158,49 @@
return new object(-1, 'msg_disallow_message');
}
$oDB = &DB::getInstance();
$oDB->begin();
// 쪽지 발송
return $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
}
// 발송하는 회원의 쪽지함에 넣을 쪽지
$sender_args->message_srl = getNextSequence();
$sender_args->related_srl = getNextSequence();
$sender_args->list_order = getNextSequence()*-1;
$sender_args->sender_srl = $logged_info->member_srl;
function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = true) {
// 보내는 사용자의 쪽지함에 넣을 쪽지
$sender_args->sender_srl = $sender_srl;
$sender_args->receiver_srl = $receiver_srl;
$sender_args->message_type = 'S';
$sender_args->title = $title;
$sender_args->content = $content;
$sender_args->readed = 'N';
$sender_args->regdate = date("YmdHis");
$output = executeQuery('member.sendMessage', $sender_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
$sender_args->related_srl = getNextSequence();
$sender_args->message_srl = getNextSequence();
$sender_args->list_order = getNextSequence()*-1;
// 받는 회원의 쪽지함에 넣을 쪽지
$receiver_args->message_srl = $sender_args->related_srl;
$receiver_args->related_srl = 0;
$receiver_args->list_order = $sender_args->related_srl*-1;
$receiver_args->sender_srl = $logged_info->member_srl;
$receiver_args->sender_srl = $sender_srl;
if(!$receiver_args->sender_srl) $receiver_args->sender_srl = $receiver_srl;
$receiver_args->receiver_srl = $receiver_srl;
$receiver_args->message_type = 'R';
$receiver_args->title = $title;
$receiver_args->content = $content;
$receiver_args->readed = 'N';
$receiver_args->regdate = date("YmdHis");
$oDB = &DB::getInstance();
$oDB->begin();
// 발송하는 회원의 쪽지함에 넣을 쪽지
if($sender_srl && $sender_log) {
$output = executeQuery('member.sendMessage', $sender_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
}
// 받을 회원의 쪽지함에 넣을 쪽지
$output = executeQuery('member.sendMessage', $receiver_args);
if(!$output->toBool()) {
$oDB->rollback();
@ -201,7 +215,7 @@
$oDB->commit();
$this->setMessage('success_sended');
return new Object(0,'success_sended');
}
/**

View file

@ -37,7 +37,7 @@
.list td.registDate { font:.8em Tahoma; color:#999999; text-align:center;}
.list td.num { font:.8em Tahoma; color:#999999; text-align:center;}
.list td.check { text-align:center;}
.list td.user { color:#333333; font-size:.9em;}
.list td.user { color:#333333; font-size:.9em; text-align:left;}
.list td.user a { color:#333333;}
.list td.userId { font:.9em Tahoma;}
.list td.userNick { font-size:.9em; color:#999999;}

View file

@ -11,14 +11,21 @@
<div class="messageHeader">
<h4>{$message->title}</h4>
<address>
<em>{$message->nick_name} ({$message->user_id}) <span class="date">{zdate($message->regdate, "Y.m.d H:i:s")}</span></em>
<em>
<!--@if($message->member_srl == $logged_info->member_srl)-->
&nbsp;
<!--@else-->
{$message->nick_name} ({$message->user_id})
<!--@end-->
<span class="date">{zdate($message->regdate, "Y.m.d H:i:s")}</span>
</em>
</address>
</div>
<div class="messageBody">{$message->content}</div>
<div class="deleteOrKeep tCenter">
<!--@if($message->message_type != "S")-->
<!--@if($message->message_type != "S" && $message->member_srl != $logged_info->member_srl)-->
<a href="#" onclick="doSendMessage('{$message->sender_srl}');return false;" class="button"><span>{$lang->cmd_reply}</span></a>
<!--@end-->
<!--@if($message->message_type == "R")-->
@ -70,7 +77,13 @@
<!--@foreach($message_list as $no => $val)-->
<tr class="bg{($no+1)%2+1}">
<td class="check"><input name="message_srl_list" type="checkbox" value="{$val->message_srl}" /></td>
<td class="user"><div class="member_{$val->member_srl}">{$val->nick_name} ({$val->user_id})</div></td>
<td class="user">
<!--@if($val->member_srl == $logged_info->member_srl)-->
&nbsp;
<!--@else-->
<div class="member_{$val->member_srl}">{$val->nick_name} ({$val->user_id})</div></td>
<!--@end-->
</td>
<td class="title">
<!--@if($val->readed=='Y')-->
<a href="{getUrl('message_srl',$val->message_srl)}">{$val->title}</a>

View file

@ -12,10 +12,12 @@
<table cellspacing="0" class="leftHeaderType">
<col width="100" />
<col />
<!--@if($message->member_srl != $logged_info->member_srl)-->
<tr>
<th scope="row">{$lang->sender}</th>
<td><div class="member_{$message->member_srl}">{$message->nick_name} ({$message->user_id})</div></td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->title}</th>
<td>{htmlspecialchars($message->title)}</td>
@ -27,7 +29,9 @@
</div>
<div class="tCenter help">
<a href="#" onclick="doSendMessage('{$message->sender_srl}');return false;" class="button"><span>{$lang->cmd_reply_message}</span></a>
<!--@if($message->member_srl != $logged_info->member_srl)-->
<a href="#" onclick="doSendMessage('{$message->sender_srl}');return false;" class="button"><span>{$lang->cmd_reply_message}</span></a>
<!--@end-->
<a href="#" onclick="doDeleteMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
<a href="#" onclick="doStoreMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_store}</span></a>
<a href="#" onclick="location.href=location.href;return false;" class="button"><span>{$lang->cmd_next}</span></a>

View file

@ -70,6 +70,10 @@
if(!$output->toBool()) return $output;
}
// 원본글에 알림(notify_message)가 설정되어 있으면 메세지 보냄
if(!$manual_inserted) $oDocument->notify(Context::getLang('trackback'), $obj->excerpt);
return new Object();
}