From 7eaa7bb8f98bdd8b23b8ecafff6e0df0e661a60c Mon Sep 17 00:00:00 2001 From: ovclas Date: Fri, 16 Nov 2012 01:30:37 +0000 Subject: [PATCH] issue 2662 comment git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@12238 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.admin.controller.php | 442 ++--- modules/comment/comment.admin.view.php | 201 ++- modules/comment/comment.class.php | 287 +-- modules/comment/comment.controller.php | 1695 +++++++++--------- modules/comment/comment.model.php | 1348 +++++++------- modules/comment/comment.view.php | 91 +- 6 files changed, 2109 insertions(+), 1955 deletions(-) diff --git a/modules/comment/comment.admin.controller.php b/modules/comment/comment.admin.controller.php index 31372da78..61570971a 100644 --- a/modules/comment/comment.admin.controller.php +++ b/modules/comment/comment.admin.controller.php @@ -1,25 +1,26 @@ procCommentAdminChangeStatus(); - + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispCommentAdminList', 'search_keyword', ''); $this->setRedirectUrl($returnUrl); } - + /** - * Change comment status - * @return void|object - */ + * Change comment status + * @return void|object + */ function procCommentAdminChangeStatus() { $will_publish = Context::get('will_publish'); @@ -89,7 +90,7 @@ $comment = $oCommentModel->getComment($comment_srl); if($comment->comment_srl != $comment_srl) return new Object(-1, 'msg_invalid_request'); $document_srl = $comment->document_srl; - if (!in_array($document_srl,$updated_documents_arr)) + if(!in_array($document_srl,$updated_documents_arr)) { $updated_documents_arr[] = $document_srl; // update the number of comments @@ -115,17 +116,18 @@
Comment content: ".$comment->content."
- "; + "; $oMail->setContent($mail_content); $oMail->setSender($logged_info->user_name, $logged_info->email_address); $document_author_email = $oDocument->variables['email_address']; //mail to author of thread - START - if($document_author_email != $comment->email_address && $logged_info->email_address != $document_author_email) { - $oMail->setReceiptor($document_author_email, $document_author_email); - $oMail->send(); - $already_sent[] = $document_author_email; + if($document_author_email != $comment->email_address && $logged_info->email_address != $document_author_email) + { + $oMail->setReceiptor($document_author_email, $document_author_email); + $oMail->send(); + $already_sent[] = $document_author_email; } //mail to author of thread - STOP @@ -133,10 +135,12 @@ if($module_info->admin_mail) { $target_mail = explode(',',$module_info->admin_mail); - for($i=0;$isetReceiptor($email_address, $email_address); $oMail->send(); } @@ -150,227 +154,235 @@ // call a trigger for calling "send mail to subscribers" (for moment just for forum) ModuleHandler::triggerCall("comment.procCommentAdminChangeStatus","after",$comment_srl_list); } - } - - /** - * Delete the selected comment from the administrator page - * @return void - */ - function procCommentAdminDeleteChecked() { - $isTrash = Context::get('is_trash'); - // Error display if none is selected - $cart = Context::get('cart'); - if(!$cart) return $this->stop('msg_cart_is_null'); - if(!is_array($cart)) $comment_srl_list= explode('|@|', $cart); - else $comment_srl_list = $cart; - $comment_count = count($comment_srl_list); - if(!$comment_count) return $this->stop('msg_cart_is_null'); + /** + * Delete the selected comment from the administrator page + * @return void + */ + function procCommentAdminDeleteChecked() + { + $isTrash = Context::get('is_trash'); - $oCommentController = &getController('comment'); - // begin transaction - $oDB = &DB::getInstance(); - $oDB->begin(); + // Error display if none is selected + $cart = Context::get('cart'); + if(!$cart) return $this->stop('msg_cart_is_null'); + if(!is_array($cart)) $comment_srl_list= explode('|@|', $cart); + else $comment_srl_list = $cart; + $comment_count = count($comment_srl_list); + if(!$comment_count) return $this->stop('msg_cart_is_null'); - // for message send - start - $message_content = Context::get('message_content'); - if($message_content) $message_content = nl2br($message_content); + $oCommentController = &getController('comment'); + // begin transaction + $oDB = &DB::getInstance(); + $oDB->begin(); - if($message_content) { - $oCommunicationController = &getController('communication'); - $oCommentModel = &getModel('comment'); + // for message send - start + $message_content = Context::get('message_content'); + if($message_content) $message_content = nl2br($message_content); - $logged_info = Context::get('logged_info'); + if($message_content) + { + $oCommunicationController = &getController('communication'); + $oCommentModel = &getModel('comment'); - $title = cut_str($message_content,10,'...'); - $sender_member_srl = $logged_info->member_srl; + $logged_info = Context::get('logged_info'); - for($i=0;$i<$comment_count;$i++) { - $comment_srl = $comment_srl_list[$i]; - $oComment = $oCommentModel->getComment($comment_srl, true); + $title = cut_str($message_content,10,'...'); + $sender_member_srl = $logged_info->member_srl; - if(!$oComment->get('member_srl') || $oComment->get('member_srl')==$sender_member_srl) continue; + for($i=0;$i<$comment_count;$i++) + { + $comment_srl = $comment_srl_list[$i]; + $oComment = $oCommentModel->getComment($comment_srl, true); - $content = sprintf("
%s

%s
",$message_content, $oComment->getContentText(20)); + if(!$oComment->get('member_srl') || $oComment->get('member_srl')==$sender_member_srl) continue; - $oCommunicationController->sendMessage($sender_member_srl, $oComment->get('member_srl'), $title, $content, false); - } + $content = sprintf("
%s

%s
",$message_content, $oComment->getContentText(20)); + + $oCommunicationController->sendMessage($sender_member_srl, $oComment->get('member_srl'), $title, $content, false); } - // for message send - end + } + // for message send - end - // comment into trash - if($isTrash == 'true') $this->_moveCommentToTrash($comment_srl_list, $oCommentController, $oDB); + // comment into trash + if($isTrash == 'true') $this->_moveCommentToTrash($comment_srl_list, $oCommentController, $oDB); - $deleted_count = 0; - // Delete the comment posting - for($i=0;$i<$comment_count;$i++) { - $comment_srl = trim($comment_srl_list[$i]); - if(!$comment_srl) continue; + $deleted_count = 0; + // Delete the comment posting + for($i=0;$i<$comment_count;$i++) + { + $comment_srl = trim($comment_srl_list[$i]); + if(!$comment_srl) continue; - $output = $oCommentController->deleteComment($comment_srl, true, $isTrash); + $output = $oCommentController->deleteComment($comment_srl, true, $isTrash); + if(!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + + $deleted_count ++; + } + + $oDB->commit(); + + $msgCode = ''; + if($isTrash == 'true') $msgCode = 'success_trashed'; + else $msgCode = 'success_deleted'; + //$this->setMessage( sprintf(Context::getLang('msg_checked_comment_is_deleted'), $deleted_count) ); + $this->setMessage($msgCode, 'info'); + + //set url params + $search_keyword = Context::get('search_keyword'); + $search_target = Context::get('search_target'); + $page = Context::get('page'); + + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispCommentAdminList', 'search_keyword', $search_keyword, 'search_target', $search_target,'page',$page); + $this->setRedirectUrl($returnUrl); + } + + /** + * comment move to trash + * @return void|object + */ + function _moveCommentToTrash($commentSrlList, &$oCommentController, &$oDB) + { + require_once(_XE_PATH_.'modules/trash/model/TrashVO.php'); + + if(is_array($commentSrlList)) + { + $logged_info = Context::get('logged_info'); + $oCommentModel = &getModel('comment'); + $commentItemList = $oCommentModel->getComments($commentSrlList); + $oTrashAdminController = &getAdminController('trash'); + + foreach($commentItemList AS $key=>$oComment) + { + $oTrashVO = new TrashVO(); + $oTrashVO->setTrashSrl(getNextSequence()); + $oTrashVO->setTitle(trim(strip_tags($oComment->variables['content']))); + $oTrashVO->setOriginModule('comment'); + $oTrashVO->setSerializedObject(serialize($oComment->variables)); + + $output = $oTrashAdminController->insertTrash($oTrashVO); if(!$output->toBool()) { $oDB->rollback(); return $output; } - - $deleted_count ++; } + } + } - $oDB->commit(); + /** + * Cancel the blacklist of abused comments reported by other users + * @return void|object + */ + function procCommentAdminCancelDeclare() + { + $comment_srl = trim(Context::get('comment_srl')); - $msgCode = ''; - if($isTrash == 'true') $msgCode = 'success_trashed'; - else $msgCode = 'success_deleted'; - //$this->setMessage( sprintf(Context::getLang('msg_checked_comment_is_deleted'), $deleted_count) ); - $this->setMessage($msgCode, 'info'); - - //set url params - $search_keyword = Context::get('search_keyword'); - $search_target = Context::get('search_target'); - $page = Context::get('page'); - - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispCommentAdminList', 'search_keyword', $search_keyword, 'search_target', $search_target,'page',$page); - $this->setRedirectUrl($returnUrl); - } - - /** - * comment move to trash - * @return void|object - */ - function _moveCommentToTrash($commentSrlList, &$oCommentController, &$oDB) + if($comment_srl) { - require_once(_XE_PATH_.'modules/trash/model/TrashVO.php'); + $args->comment_srl = $comment_srl; + $output = executeQuery('comment.deleteDeclaredComments', $args); + if(!$output->toBool()) return $output; + } + } - if(is_array($commentSrlList)) + /** + * Comment add to _SESSION + * @return void + */ + function procCommentAdminAddCart() + { + $comment_srl = (int)Context::get('comment_srl'); + + $oCommentModel = &getModel('comment'); + $columnList = array('comment_srl'); + $commentSrlList = array($comment_srl); + + $output = $oCommentModel->getComments($commentSrlList); + + if(is_array($output)) + { + foreach($output AS $key=>$value) { - $logged_info = Context::get('logged_info'); - $oCommentModel = &getModel('comment'); - $commentItemList = $oCommentModel->getComments($commentSrlList); - $oTrashAdminController = &getAdminController('trash'); - - foreach($commentItemList AS $key=>$oComment) - { - $oTrashVO = new TrashVO(); - $oTrashVO->setTrashSrl(getNextSequence()); - $oTrashVO->setTitle(trim(strip_tags($oComment->variables['content']))); - $oTrashVO->setOriginModule('comment'); - $oTrashVO->setSerializedObject(serialize($oComment->variables)); - - $output = $oTrashAdminController->insertTrash($oTrashVO); - if (!$output->toBool()) { - $oDB->rollback(); - return $output; - } - } + if($_SESSION['comment_management'][$key]) unset($_SESSION['comment_management'][$key]); + else $_SESSION['comment_management'][$key] = true; } } + } - /** - * Cancel the blacklist of abused comments reported by other users - * @return void|object - */ - function procCommentAdminCancelDeclare() { - $comment_srl = trim(Context::get('comment_srl')); + /** + * Delete all comments of the specific module + * @return object + */ + function deleteModuleComments($module_srl) + { + $args->module_srl = $module_srl; + $output = executeQuery('comment.deleteModuleComments', $args); + if(!$output->toBool()) return $output; - if($comment_srl) { - $args->comment_srl = $comment_srl; - $output = executeQuery('comment.deleteDeclaredComments', $args); - if(!$output->toBool()) return $output; - } - } + $output = executeQuery('comment.deleteModuleCommentsList', $args); - /** - * Comment add to _SESSION - * @return void - */ - function procCommentAdminAddCart() + //remove from cache + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) { - $comment_srl = (int)Context::get('comment_srl'); - - $oCommentModel = &getModel('comment'); - $columnList = array('comment_srl'); - $commentSrlList = array($comment_srl); - - $output = $oCommentModel->getComments($commentSrlList); - - if(is_array($output)) - { - foreach($output AS $key=>$value) - { - if($_SESSION['comment_management'][$key]) unset($_SESSION['comment_management'][$key]); - else $_SESSION['comment_management'][$key] = true; - } - } + // Invalidate newest comments. Per document cache is invalidated inside document admin controller. + $oCacheHandler->invalidateGroupKey('newestCommentsList'); } + return $output; + } - /** - * Delete all comments of the specific module - * @return object - */ - function deleteModuleComments($module_srl) { - $args->module_srl = $module_srl; - $output = executeQuery('comment.deleteModuleComments', $args); - if(!$output->toBool()) return $output; + /** + * Restore comment from trash module, called by trash module + * this method is passived + * @return object + */ + function restoreTrash($originObject) + { + if(is_array($originObject)) $originObject = (object)$originObject; - $output = executeQuery('comment.deleteModuleCommentsList', $args); + $obj->document_srl = $originObject->document_srl; + $obj->comment_srl = $originObject->comment_srl; + $obj->parent_srl = $originObject->parent_srl; + $obj->content = $originObject->content; + $obj->password = $originObject->password; + $obj->nick_name = $originObject->nick_name; + $obj->member_srl = $originObject->member_srl; + $obj->email_address = $originObject->email_address; + $obj->homepage = $originObject->homepage; + $obj->is_secret = $originObject->is_secret; + $obj->notify_message = $originObject->notify_message; + $obj->module_srl = $originObject->module_srl; - //remove from cache - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - // Invalidate newest comments. Per document cache is invalidated inside document admin controller. - $oCacheHandler->invalidateGroupKey('newestCommentsList'); - } - return $output; - } + $oCommentController = &getController('comment'); + $output = $oCommentController->insertComment($obj); - /** - * Restore comment from trash module, called by trash module - * this method is passived - * @return object - */ - function restoreTrash($originObject) - { - if(is_array($originObject)) $originObject = (object)$originObject; + return $output; + } - $obj->document_srl = $originObject->document_srl; - $obj->comment_srl = $originObject->comment_srl; - $obj->parent_srl = $originObject->parent_srl; - $obj->content = $originObject->content; - $obj->password = $originObject->password; - $obj->nick_name = $originObject->nick_name; - $obj->member_srl = $originObject->member_srl; - $obj->email_address = $originObject->email_address; - $obj->homepage = $originObject->homepage; - $obj->is_secret = $originObject->is_secret; - $obj->notify_message = $originObject->notify_message; - $obj->module_srl = $originObject->module_srl; + /** + * Empty comment in trash, called by trash module + * this method is passived + * @return object + */ + function emptyTrash($originObject) + { + $originObject = unserialize($originObject); + if(is_array($originObject)) $originObject = (object) $originObject; - $oCommentController = &getController('comment'); - $output = $oCommentController->insertComment($obj); + $oComment = new commentItem(); + $oComment->setAttribute($originObject); - return $output; - } - - /** - * Empty comment in trash, called by trash module - * this method is passived - * @return object - */ - function emptyTrash($originObject) - { - $originObject = unserialize($originObject); - if(is_array($originObject)) $originObject = (object) $originObject; - - $oComment = new commentItem(); - $oComment->setAttribute($originObject); - - //already comment deleted, therefore only comment log delete - $oCommentController = &getController('comment'); - $output = $oCommentController->deleteCommentLog($oComment->get('comment_srl')); - return $output; - } - } -?> + //already comment deleted, therefore only comment log delete + $oCommentController = &getController('comment'); + $output = $oCommentController->deleteCommentLog($oComment->get('comment_srl')); + return $output; + } +} +/* End of file comment.admin.controller.php */ +/* Location: ./modules/comment/comment.admin.controller.php */ diff --git a/modules/comment/comment.admin.view.php b/modules/comment/comment.admin.view.php index b4eb54604..d6c108d36 100644 --- a/modules/comment/comment.admin.view.php +++ b/modules/comment/comment.admin.view.php @@ -1,108 +1,115 @@ page = Context::get('page'); // /< Page + $args->list_count = 30; // / the number of postings to appear on a single page + $args->page_count = 5; // / the number of pages to appear on the page navigation + + $args->sort_index = 'list_order'; // /< Sorting values + + $args->module_srl = Context::get('module_srl'); + /* + $search_target = Context::get('search_target'); + $search_keyword = Context::get('search_keyword'); + if ($search_target == 'is_published' && $search_keyword == 'Y') + { + $args->status = 1; + } + if ($search_target == 'is_published' && $search_keyword == 'N') + { + $args->status = 0; + } */ - function init() { - } - /** - * Display the list(for administrators) - * @return void - */ - function dispCommentAdminList() { - // option to get a list - $args->page = Context::get('page'); // /< Page - $args->list_count = 30; // / the number of postings to appear on a single page - $args->page_count = 5; // / the number of pages to appear on the page navigation + // get a list by using comment->getCommentList. + $oCommentModel = &getModel('comment'); + $secretNameList = $oCommentModel->getSecretNameList(); + $columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count'); + $output = $oCommentModel->getTotalCommentList($args, $columnList); - $args->sort_index = 'list_order'; // /< Sorting values + $oCommentModel = &getModel("comment"); + $modules = $oCommentModel->getDistinctModules(); + $modules_list = $modules; - $args->module_srl = Context::get('module_srl'); - /* - $search_target = Context::get('search_target'); - $search_keyword = Context::get('search_keyword'); - if ($search_target == 'is_published' && $search_keyword == 'Y') + // set values in the return object of comment_model:: getTotalCommentList() in order to use a template. + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('comment_list', $output->data); + Context::set('modules_list', $modules_list); + Context::set('page_navigation', $output->page_navigation); + Context::set('secret_name_list', $secretNameList); + // set the template + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('comment_list'); + } + + /** + * Show the blacklist of comments in the admin page + * @return void + */ + function dispCommentAdminDeclared() + { + // option to get a blacklist + $args->page = Context::get('page'); // /< Page + $args->list_count = 30; // /< the number of comment postings to appear on a single page + $args->page_count = 10; // /< the number of pages to appear on the page navigation + + $args->sort_index = 'comment_declared.declared_count'; // /< sorting values + $args->order_type = 'desc'; // /< sorted value + + // get a list + $declared_output = executeQuery('comment.getDeclaredList', $args); + $oCommentModel = &getModel('comment'); + + if($declared_output->data && count($declared_output->data)) + { + $comment_list = array(); + + foreach($declared_output->data as $key => $comment) { - $args->status = 1; + $comment_list[$key] = new commentItem(); + $comment_list[$key]->setAttribute($comment); } - if ($search_target == 'is_published' && $search_keyword == 'N') - { - $args->status = 0; - } - */ - - // get a list by using comment->getCommentList. - $oCommentModel = &getModel('comment'); - $secretNameList = $oCommentModel->getSecretNameList(); - $columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count'); - $output = $oCommentModel->getTotalCommentList($args, $columnList); - - $oCommentModel = &getModel("comment"); - $modules = $oCommentModel->getDistinctModules(); - $modules_list = $modules; - - // set values in the return object of comment_model:: getTotalCommentList() in order to use a template. - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('comment_list', $output->data); - Context::set('modules_list', $modules_list); - Context::set('page_navigation', $output->page_navigation); - Context::set('secret_name_list', $secretNameList); - // set the template - $this->setTemplatePath($this->module_path.'tpl'); - $this->setTemplateFile('comment_list'); - } + $declared_output->data = $comment_list; + } - /** - * Show the blacklist of comments in the admin page - * @return void - */ - function dispCommentAdminDeclared() { - // option to get a blacklist - $args->page = Context::get('page'); // /< Page - $args->list_count = 30; // /< the number of comment postings to appear on a single page - $args->page_count = 10; // /< the number of pages to appear on the page navigation + $secretNameList = $oCommentModel->getSecretNameList(); - $args->sort_index = 'comment_declared.declared_count'; // /< sorting values - $args->order_type = 'desc'; // /< sorted value - - // get a list - $declared_output = executeQuery('comment.getDeclaredList', $args); - $oCommentModel = &getModel('comment'); - - if($declared_output->data && count($declared_output->data)) { - $comment_list = array(); - - foreach($declared_output->data as $key => $comment) { - $comment_list[$key] = new commentItem(); - $comment_list[$key]->setAttribute($comment); - } - $declared_output->data = $comment_list; - } - - $secretNameList = $oCommentModel->getSecretNameList(); - - // set values in the return object of comment_model:: getCommentList() in order to use a template. - Context::set('total_count', $declared_output->total_count); - Context::set('total_page', $declared_output->total_page); - Context::set('page', $declared_output->page); - Context::set('comment_list', $declared_output->data); - Context::set('page_navigation', $declared_output->page_navigation); - Context::set('secret_name_list', $secretNameList); - // set the template - $this->setTemplatePath($this->module_path.'tpl'); - $this->setTemplateFile('declared_list'); - } - } -?> + // set values in the return object of comment_model:: getCommentList() in order to use a template. + Context::set('total_count', $declared_output->total_count); + Context::set('total_page', $declared_output->total_page); + Context::set('page', $declared_output->page); + Context::set('comment_list', $declared_output->data); + Context::set('page_navigation', $declared_output->page_navigation); + Context::set('secret_name_list', $secretNameList); + // set the template + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('declared_list'); + } +} +/* End of file comment.admin.view.php */ +/* Location: ./modules/comment/comment.admin.view.php */ diff --git a/modules/comment/comment.class.php b/modules/comment/comment.class.php index 0734adda5..26b8cb116 100644 --- a/modules/comment/comment.class.php +++ b/modules/comment/comment.class.php @@ -1,151 +1,164 @@ addIndex + ( + "comments", + "idx_module_list_order", + array("module_srl", "list_order"), + true + ); + + // 2007. 10. 17 add a trigger to delete comments together with posting deleted + $oModuleController->insertTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after'); + // 2007. 10. 17 add a trigger to delete all of comments together with module deleted + $oModuleController->insertTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after'); + // 2008. 02. 22 add comment setting when a new module added + $oModuleController->insertTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before'); + + return new Object(); + } /** - * comment - * comment module's high class - * - * @author NHN (developers@xpressengine.com) - * @package /modules/comment - * @version 0.1 + * Method to check if installation is succeeded + * @return bool */ - class comment extends ModuleObject { - /** - * Implemented if additional tasks are required when installing - * @return Object - */ - function moduleInstall() { - $oDB = &DB::getInstance(); + function checkUpdate() + { + $oDB = &DB::getInstance(); + $oModuleModel = &getModel('module'); + // 2007. 10. 17 add a trigger to delete comments together with posting deleted + if(!$oModuleModel->getTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after')) return true; + // 2007. 10. 17 add a trigger to delete all of comments together with module deleted + if(!$oModuleModel->getTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after')) return true; + // 2007. 10. 23 add a column for recommendation votes or notification of the comments + if(!$oDB->isColumnExists("comments","voted_count")) return true; + if(!$oDB->isColumnExists("comments","notify_message")) return true; + // 2008. 02. 22 add comment setting when a new module added + if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before')) return true; + // 2008. 05. 14 add a column for blamed count + if(!$oDB->isColumnExists("comments", "blamed_count")) return true; + if(!$oDB->isColumnExists("comment_voted_log", "point")) return true; - // register the action forward (for using on the admin mode) - $oModuleController = &getController('module'); + if (!$oDB->isIndexExists("comments", "idx_module_list_order")) + return true; + //2012. 02. 24 add comment published status column and index + if(!$oDB->isColumnExists("comments", "status")) + { + return true; + } + if (!$oDB->isIndexExists("comments", "idx_status")) + { + return true; + } - $oDB->addIndex - ( - "comments", - "idx_module_list_order", - array("module_srl", "list_order"), - true - ); + // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied + if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after')) return true; - // 2007. 10. 17 add a trigger to delete comments together with posting deleted - $oModuleController->insertTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after'); - // 2007. 10. 17 add a trigger to delete all of comments together with module deleted - $oModuleController->insertTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after'); - // 2008. 02. 22 add comment setting when a new module added - $oModuleController->insertTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before'); + return false; + } - return new Object(); - } + /** + * Execute update + * @return Object + */ + function moduleUpdate() + { + $oDB = &DB::getInstance(); + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + // 2007. 10. 17 add a trigger to delete comments together with posting deleted + if(!$oModuleModel->getTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after')) + $oModuleController->insertTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after'); + // 2007. 10. 17 add a trigger to delete all of comments together with module deleted + if(!$oModuleModel->getTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after')) + $oModuleController->insertTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after'); + // 2007. 10. 23 add a column for recommendation votes or notification of the comments + if(!$oDB->isColumnExists("comments","voted_count")) + { + $oDB->addColumn("comments","voted_count", "number","11"); + $oDB->addIndex("comments","idx_voted_count", array("voted_count")); + } - /** - * Method to check if installation is succeeded - * @return bool - */ - function checkUpdate() { - $oDB = &DB::getInstance(); - $oModuleModel = &getModel('module'); - // 2007. 10. 17 add a trigger to delete comments together with posting deleted - if(!$oModuleModel->getTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after')) return true; - // 2007. 10. 17 add a trigger to delete all of comments together with module deleted - if(!$oModuleModel->getTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after')) return true; - // 2007. 10. 23 add a column for recommendation votes or notification of the comments - if(!$oDB->isColumnExists("comments","voted_count")) return true; - if(!$oDB->isColumnExists("comments","notify_message")) return true; - // 2008. 02. 22 add comment setting when a new module added - if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before')) return true; - // 2008. 05. 14 add a column for blamed count - if(!$oDB->isColumnExists("comments", "blamed_count")) return true; - if(!$oDB->isColumnExists("comment_voted_log", "point")) return true; + if(!$oDB->isColumnExists("comments","notify_message")) + { + $oDB->addColumn("comments","notify_message", "char","1"); + } + // 2008. 02. 22 add comment setting when a new module added + if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before')) + $oModuleController->insertTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before'); + // 2008. 05. 14 add a column for blamed count + if(!$oDB->isColumnExists("comments", "blamed_count")) + { + $oDB->addColumn('comments', 'blamed_count', 'number', 11, 0, true); + $oDB->addIndex('comments', 'idx_blamed_count', array('blamed_count')); + } + if(!$oDB->isColumnExists("comment_voted_log", "point")) + $oDB->addColumn('comment_voted_log', 'point', 'number', 11, 0, true); - if (!$oDB->isIndexExists("comments", "idx_module_list_order")) - return true; - //2012. 02. 24 add comment published status column and index - if(!$oDB->isColumnExists("comments", "status")) - { - return true; - } - if (!$oDB->isIndexExists("comments", "idx_status")) - { - return true; - } + if(!$oDB->isIndexExists("comments", "idx_module_list_order")) + { + $oDB->addIndex + ( + "comments", + "idx_module_list_order", + array("module_srl", "list_order"), + true + ); + } - // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied - if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after')) return true; + //2012. 02. 24 add comment published status column and index + if(!$oDB->isColumnExists("comments", "status")) + { + $oDB->addColumn("comments", "status", "number", 1, 1, true); + } + if(!$oDB->isIndexExists("comments", "idx_status")) + { + $oDB->addIndex + ( + "comments", + "idx_status", + array("status", "comment_srl", "module_srl", "document_srl"), + true + ); + } - return false; - } + // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied + if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after')) + { + $oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after'); + } - /** - * Execute update - * @return Object - */ - function moduleUpdate() { - $oDB = &DB::getInstance(); - $oModuleModel = &getModel('module'); - $oModuleController = &getController('module'); - // 2007. 10. 17 add a trigger to delete comments together with posting deleted - if(!$oModuleModel->getTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after')) - $oModuleController->insertTrigger('document.deleteDocument', 'comment', 'controller', 'triggerDeleteDocumentComments', 'after'); - // 2007. 10. 17 add a trigger to delete all of comments together with module deleted - if(!$oModuleModel->getTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after')) - $oModuleController->insertTrigger('module.deleteModule', 'comment', 'controller', 'triggerDeleteModuleComments', 'after'); - // 2007. 10. 23 add a column for recommendation votes or notification of the comments - if(!$oDB->isColumnExists("comments","voted_count")) { - $oDB->addColumn("comments","voted_count", "number","11"); - $oDB->addIndex("comments","idx_voted_count", array("voted_count")); - } + return new Object(0, 'success_updated'); + } - if(!$oDB->isColumnExists("comments","notify_message")) { - $oDB->addColumn("comments","notify_message", "char","1"); - } - // 2008. 02. 22 add comment setting when a new module added - if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before')) - $oModuleController->insertTrigger('module.dispAdditionSetup', 'comment', 'view', 'triggerDispCommentAdditionSetup', 'before'); - // 2008. 05. 14 add a column for blamed count - if(!$oDB->isColumnExists("comments", "blamed_count")) { - $oDB->addColumn('comments', 'blamed_count', 'number', 11, 0, true); - $oDB->addIndex('comments', 'idx_blamed_count', array('blamed_count')); - } - if(!$oDB->isColumnExists("comment_voted_log", "point")) - $oDB->addColumn('comment_voted_log', 'point', 'number', 11, 0, true); - - if (!$oDB->isIndexExists("comments", "idx_module_list_order")) - $oDB->addIndex - ( - "comments", - "idx_module_list_order", - array("module_srl", "list_order"), - true - ); - - //2012. 02. 24 add comment published status column and index - if(!$oDB->isColumnExists("comments", "status")) { - $oDB->addColumn("comments", "status", "number", 1, 1, true); - } - if (!$oDB->isIndexExists("comments", "idx_status")) - $oDB->addIndex - ( - "comments", - "idx_status", - array("status", "comment_srl", "module_srl", "document_srl"), - true - ); - - // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied - if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after')) - { - $oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after'); - } - - return new Object(0, 'success_updated'); - } - - /** - * Regenerate cache file - * @return void - */ - function recompileCache() { - } - } -?> + /** + * Regenerate cache file + * @return void + */ + function recompileCache() + { + } +} +/* End of file comment.class.php */ +/* Location: ./modules/comment/comment.class.php */ diff --git a/modules/comment/comment.controller.php b/modules/comment/comment.controller.php index b74af126f..42c106a7c 100644 --- a/modules/comment/comment.controller.php +++ b/modules/comment/comment.controller.php @@ -1,117 +1,125 @@ getComment($comment_srl, false, false); - $module_srl = $oComment->get('module_srl'); - if(!$module_srl) return new Object(-1, 'msg_invalid_request'); - - $oModuleModel = &getModel('module'); - $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); - if($comment_config->use_vote_up=='N') return new Object(-1, 'msg_invalid_request'); - - $point = 1; - return $this->updateVotedCount($comment_srl, $point); - } - - /** - * Action to handle recommendation votes on comments (Down) - * @return Object - */ - function procCommentVoteDown() { - if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request'); - - $comment_srl = Context::get('target_srl'); - if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); - - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, false, false); - $module_srl = $oComment->get('module_srl'); - if(!$module_srl) return new Object(-1, 'msg_invalid_request'); - - $oModuleModel = &getModel('module'); - $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); - if($comment_config->use_vote_down=='N') return new Object(-1, 'msg_invalid_request'); - - $point = -1; - return $this->updateVotedCount($comment_srl, $point); - } - - /** - * Action to be called when a comment posting is reported - * @return void|Object - */ - function procCommentDeclare() { - if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request'); - - $comment_srl = Context::get('target_srl'); - if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); - - return $this->declaredComment($comment_srl); - } - - /** - * Trigger to delete its comments together with document deleted - * @return Object - */ - function triggerDeleteDocumentComments(&$obj) { - $document_srl = $obj->document_srl; - if(!$document_srl) return new Object(); - - return $this->deleteComments($document_srl, $obj); - } - - /** - * Trigger to delete corresponding comments when deleting a module - * @return object - */ - function triggerDeleteModuleComments(&$obj) { - $module_srl = $obj->module_srl; - if(!$module_srl) return new Object(); - - $oCommentController = &getAdminController('comment'); - return $oCommentController->deleteModuleComments($module_srl); - } - - /** - * Authorization of the comments - * available only in the current connection of the session value - * @return void - */ - function addGrant($comment_srl) { - $_SESSION['own_comment'][$comment_srl] = true; - } + function init() + { + } /** - * Check if module is using comment validation system - * @param int $document_srl - * @param int $module_srl - * @return bool - */ + * Action to handle recommendation votes on comments (Up) + * @return Object + */ + function procCommentVoteUp() + { + if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request'); + + $comment_srl = Context::get('target_srl'); + if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); + + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl, false, false); + $module_srl = $oComment->get('module_srl'); + if(!$module_srl) return new Object(-1, 'msg_invalid_request'); + + $oModuleModel = &getModel('module'); + $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); + if($comment_config->use_vote_up=='N') return new Object(-1, 'msg_invalid_request'); + + $point = 1; + return $this->updateVotedCount($comment_srl, $point); + } + + /** + * Action to handle recommendation votes on comments (Down) + * @return Object + */ + function procCommentVoteDown() + { + if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request'); + + $comment_srl = Context::get('target_srl'); + if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); + + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl, false, false); + $module_srl = $oComment->get('module_srl'); + if(!$module_srl) return new Object(-1, 'msg_invalid_request'); + + $oModuleModel = &getModel('module'); + $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); + if($comment_config->use_vote_down=='N') return new Object(-1, 'msg_invalid_request'); + + $point = -1; + return $this->updateVotedCount($comment_srl, $point); + } + + /** + * Action to be called when a comment posting is reported + * @return void|Object + */ + function procCommentDeclare() + { + if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request'); + + $comment_srl = Context::get('target_srl'); + if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); + + return $this->declaredComment($comment_srl); + } + + /** + * Trigger to delete its comments together with document deleted + * @return Object + */ + function triggerDeleteDocumentComments(&$obj) + { + $document_srl = $obj->document_srl; + if(!$document_srl) return new Object(); + + return $this->deleteComments($document_srl, $obj); + } + + /** + * Trigger to delete corresponding comments when deleting a module + * @return object + */ + function triggerDeleteModuleComments(&$obj) + { + $module_srl = $obj->module_srl; + if(!$module_srl) return new Object(); + + $oCommentController = &getAdminController('comment'); + return $oCommentController->deleteModuleComments($module_srl); + } + + /** + * Authorization of the comments + * available only in the current connection of the session value + * @return void + */ + function addGrant($comment_srl) + { + $_SESSION['own_comment'][$comment_srl] = true; + } + + /** + * Check if module is using comment validation system + * @param int $document_srl + * @param int $module_srl + * @return bool + */ function isModuleUsingPublishValidation($module_srl=null) { if(!$module_srl == null) @@ -123,21 +131,21 @@ $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); $module_part_config = $oModuleModel->getModulePartConfig('comment',$module_info->module_srl); $use_validation = false; - if (isset($module_part_config->use_comment_validation) && $module_part_config->use_comment_validation == "Y") + if(isset($module_part_config->use_comment_validation) && $module_part_config->use_comment_validation == "Y") { $use_validation = true; } return $use_validation; } - - /** - * Enter comments - * @param object $obj - * @param bool $manual_inserted - * @return object - */ - function insertComment($obj, $manual_inserted = false) { + /** + * Enter comments + * @param object $obj + * @param bool $manual_inserted + * @return object + */ + function insertComment($obj, $manual_inserted = false) + { // check if comment's module is using comment validation and set the publish status to 0 (false) // for inserting query, otherwise default is 1 (true - means comment is published) $using_validation = $this->isModuleUsingPublishValidation($obj->module_srl); @@ -171,184 +179,199 @@ } $obj->__isupdate = false; - // call a trigger (before) - $output = ModuleHandler::triggerCall('comment.insertComment', 'before', $obj); - if(!$output->toBool()) return $output; - // check if a posting of the corresponding document_srl exists - $document_srl = $obj->document_srl; - if(!$document_srl) return new Object(-1,'msg_invalid_document'); - // get a object of document model - $oDocumentModel = &getModel('document'); + // call a trigger (before) + $output = ModuleHandler::triggerCall('comment.insertComment', 'before', $obj); + if(!$output->toBool()) return $output; + // check if a posting of the corresponding document_srl exists + $document_srl = $obj->document_srl; + if(!$document_srl) return new Object(-1,'msg_invalid_document'); + // get a object of document model + $oDocumentModel = &getModel('document'); - // even for manual_inserted if password exists, md5 it. - if($obj->password) $obj->password = md5($obj->password); - // get the original posting - if(!$manual_inserted) { - $oDocument = $oDocumentModel->getDocument($document_srl); + // even for manual_inserted if password exists, md5 it. + if($obj->password) $obj->password = md5($obj->password); + // get the original posting + if(!$manual_inserted) + { + $oDocument = $oDocumentModel->getDocument($document_srl); - if($document_srl != $oDocument->document_srl) return new Object(-1,'msg_invalid_document'); - if($oDocument->isLocked()) 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->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; - // input the member's information if logged-in - if(Context::get('is_logged')) { - $logged_info = Context::get('logged_info'); - $obj->member_srl = $logged_info->member_srl; - $obj->user_id = $logged_info->user_id; - $obj->user_name = $logged_info->user_name; - $obj->nick_name = $logged_info->nick_name; - $obj->email_address = $logged_info->email_address; - $obj->homepage = $logged_info->homepage; - } - } - // error display if neither of log-in info and user name exist. - if(!$logged_info->member_srl && !$obj->nick_name) return new Object(-1,'msg_invalid_request'); - - if(!$obj->comment_srl) $obj->comment_srl = getNextSequence(); - // determine the order - $obj->list_order = getNextSequence() * -1; - // remove XE's own tags from the contents - $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); - if(Mobile::isFromMobilePhone()) + if($obj->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; + // input the member's information if logged-in + if(Context::get('is_logged')) { - if($obj->use_html != 'Y') - { - $obj->content = htmlspecialchars($obj->content); - } - $obj->content = nl2br($obj->content); + $logged_info = Context::get('logged_info'); + $obj->member_srl = $logged_info->member_srl; + $obj->user_id = $logged_info->user_id; + $obj->user_name = $logged_info->user_name; + $obj->nick_name = $logged_info->nick_name; + $obj->email_address = $logged_info->email_address; + $obj->homepage = $logged_info->homepage; } - if(!$obj->regdate) $obj->regdate = date("YmdHis"); - // remove iframe and script if not a top administrator on the session. - if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content); + } + // error display if neither of log-in info and user name exist. + if(!$logged_info->member_srl && !$obj->nick_name) return new Object(-1,'msg_invalid_request'); - if(!$obj->notify_message) $obj->notify_message = 'N'; - if(!$obj->is_secret) $obj->is_secret = 'N'; - - // begin transaction - $oDB = &DB::getInstance(); - $oDB->begin(); - // Enter a list of comments first - $list_args->comment_srl = $obj->comment_srl; - $list_args->document_srl = $obj->document_srl; - $list_args->module_srl = $obj->module_srl; - $list_args->regdate = $obj->regdate; - // If parent comment doesn't exist, set data directly - if(!$obj->parent_srl) { - $list_args->head = $list_args->arrange = $obj->comment_srl; - $list_args->depth = 0; - // If parent comment exists, get information of the parent comment - } else { - // get information of the parent comment posting - $parent_args->comment_srl = $obj->parent_srl; - $parent_output = executeQuery('comment.getCommentListItem', $parent_args); - // return if no parent comment exists - if(!$parent_output->toBool() || !$parent_output->data) return; - $parent = $parent_output->data; - - $list_args->head = $parent->head; - $list_args->depth = $parent->depth+1; - // if the depth of comments is less than 2, execute insert. - if($list_args->depth<2) { - $list_args->arrange = $obj->comment_srl; - // if the depth of comments is greater than 2, execute update. - } else { - // get the top listed comment among those in lower depth and same head with parent's. - $p_args->head = $parent->head; - $p_args->arrange = $parent->arrange; - $p_args->depth = $parent->depth; - $output = executeQuery('comment.getCommentParentNextSibling', $p_args); - - if($output->data->arrange) { - $list_args->arrange = $output->data->arrange; - $output = executeQuery('comment.updateCommentListArrange', $list_args); - } else { - $list_args->arrange = $obj->comment_srl; - } - - } - } - - $output = executeQuery('comment.insertCommentList', $list_args); - if(!$output->toBool()) return $output; - // insert comment - $output = executeQuery('comment.insertComment', $obj); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - // creat the comment model object - $oCommentModel = &getModel('comment'); - // get the number of all comments in the posting - $comment_count = $oCommentModel->getCommentCount($document_srl); - // create the controller object of the document - $oDocumentController = &getController('document'); - // Update the number of comments in the post - if (!$using_validation) + if(!$obj->comment_srl) $obj->comment_srl = getNextSequence(); + // determine the order + $obj->list_order = getNextSequence() * -1; + // remove XE's own tags from the contents + $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); + if(Mobile::isFromMobilePhone()) + { + if($obj->use_html != 'Y') { - $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true); + $obj->content = htmlspecialchars($obj->content); + } + $obj->content = nl2br($obj->content); + } + if(!$obj->regdate) $obj->regdate = date("YmdHis"); + // remove iframe and script if not a top administrator on the session. + if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content); + + if(!$obj->notify_message) $obj->notify_message = 'N'; + if(!$obj->is_secret) $obj->is_secret = 'N'; + + // begin transaction + $oDB = &DB::getInstance(); + $oDB->begin(); + // Enter a list of comments first + $list_args->comment_srl = $obj->comment_srl; + $list_args->document_srl = $obj->document_srl; + $list_args->module_srl = $obj->module_srl; + $list_args->regdate = $obj->regdate; + // If parent comment doesn't exist, set data directly + if(!$obj->parent_srl) + { + $list_args->head = $list_args->arrange = $obj->comment_srl; + $list_args->depth = 0; + // If parent comment exists, get information of the parent comment + } + else + { + // get information of the parent comment posting + $parent_args->comment_srl = $obj->parent_srl; + $parent_output = executeQuery('comment.getCommentListItem', $parent_args); + // return if no parent comment exists + if(!$parent_output->toBool() || !$parent_output->data) return; + $parent = $parent_output->data; + + $list_args->head = $parent->head; + $list_args->depth = $parent->depth+1; + // if the depth of comments is less than 2, execute insert. + if($list_args->depth<2) + { + $list_args->arrange = $obj->comment_srl; + // if the depth of comments is greater than 2, execute update. } else { - if ($is_admin) + // get the top listed comment among those in lower depth and same head with parent's. + $p_args->head = $parent->head; + $p_args->arrange = $parent->arrange; + $p_args->depth = $parent->depth; + $output = executeQuery('comment.getCommentParentNextSibling', $p_args); + + if($output->data->arrange) { - $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true); + $list_args->arrange = $output->data->arrange; + $output = executeQuery('comment.updateCommentListArrange', $list_args); + } + else + { + $list_args->arrange = $obj->comment_srl; + } + + } + } + + $output = executeQuery('comment.insertCommentList', $list_args); + if(!$output->toBool()) return $output; + // insert comment + $output = executeQuery('comment.insertComment', $obj); + if(!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + // creat the comment model object + $oCommentModel = &getModel('comment'); + // get the number of all comments in the posting + $comment_count = $oCommentModel->getCommentCount($document_srl); + // create the controller object of the document + $oDocumentController = &getController('document'); + // Update the number of comments in the post + if(!$using_validation) + { + $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true); + } + else + { + if($is_admin) + { + $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true); + } + } + // grant autority of the comment + $this->addGrant($obj->comment_srl); + // call a trigger(after) + if($output->toBool()) + { + $trigger_output = ModuleHandler::triggerCall('comment.insertComment', 'after', $obj); + if(!$trigger_output->toBool()) { + $oDB->rollback(); + return $trigger_output; + } + } + + // commit + $oDB->commit(); + + if(!$manual_inserted) + { + // send a message if notify_message option in enabled in the original article + $oDocument->notify(Context::getLang('comment'), $obj->content); + // send a message if notify_message option in enabled in the original comment + if($obj->parent_srl) + { + $oParent = $oCommentModel->getComment($obj->parent_srl); + if($oParent->get('member_srl') != $oDocument->get('member_srl')) + { + $oParent->notify(Context::getLang('comment'), $obj->content); } } - // grant autority of the comment - $this->addGrant($obj->comment_srl); - // call a trigger(after) - if($output->toBool()) { - $trigger_output = ModuleHandler::triggerCall('comment.insertComment', 'after', $obj); - if(!$trigger_output->toBool()) { - $oDB->rollback(); - return $trigger_output; - } - } + } - // commit - $oDB->commit(); + $this->sendEmailToAdminAfterInsertComment($obj); - if(!$manual_inserted) { - // send a message if notify_message option in enabled in the original article - $oDocument->notify(Context::getLang('comment'), $obj->content); - // send a message if notify_message option in enabled in the original comment - if($obj->parent_srl) { - $oParent = $oCommentModel->getComment($obj->parent_srl); - if ($oParent->get('member_srl') != $oDocument->get('member_srl')) { - $oParent->notify(Context::getLang('comment'), $obj->content); - } - } - } + $output->add('comment_srl', $obj->comment_srl); + //remove from cache + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); + $oCacheHandler->invalidateGroupKey('newestCommentsList'); + } + return $output; + } - $this->sendEmailToAdminAfterInsertComment($obj); - - - $output->add('comment_srl', $obj->comment_srl); - //remove from cache - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); - $oCacheHandler->invalidateGroupKey('newestCommentsList'); - } - return $output; - } - /** - * Send email to module's admins after a new comment was interted successfully - * if Comments Approval System is used - * @param object $obj - * @return void - */ + * Send email to module's admins after a new comment was interted successfully + * if Comments Approval System is used + * @param object $obj + * @return void + */ function sendEmailToAdminAfterInsertComment($obj) { $using_validation = $this->isModuleUsingPublishValidation($obj->module_srl); - + $oDocumentModel = &getModel('document'); $oDocument = $oDocumentModel->getDocument($obj->document_srl); $oMemberModel = &getModel("member"); - if (isset($obj->member_srl) && !is_null($obj->member_srl)) + if(isset($obj->member_srl) && !is_null($obj->member_srl)) { $member_info = $oMemberModel->getMemberInfoByMemberSrl($obj->member_srl); } @@ -359,7 +382,7 @@ $member_info->user_name = $obj->user_name; $member_info->email_address = $obj->email_address; } - + $oCommentModel = &getModel("comment"); $nr_comments_not_approved = $oCommentModel->getCommentAllCount(null,false); $oModuleModel = &getModel("module"); @@ -389,7 +412,7 @@
Trash it: ".$url_trash."
Currently ".$nr_comments_not_approved." comments on \"".Context::get('mid')."\" module are waiting for approval. Please visit the moderation panel:
module_srl)."\">".getFullUrl('','module','admin','act','dispCommentAdminList','search_target','module','search_keyword',$obj->module_srl)." - "; + "; $oMail->setContent($mail_content); } else @@ -399,25 +422,25 @@
Author e-mail: ".$member_info->email_address."
Comment:
\"".$obj->content."\" - "; + "; $oMail->setContent($mail_content); // get email of thread's author $document_author_email = $oDocument->variables['email_address']; //get admin info $logged_info = Context::get('logged_info'); - + //mail to author of thread - START if($document_author_email != $obj->email_address && $logged_info->email_address != $document_author_email) { - $oMail->setReceiptor($document_author_email, $document_author_email); - $oMail->send(); + $oMail->setReceiptor($document_author_email, $document_author_email); + $oMail->send(); } // mail to author of thread - STOP } - + // get all admins emails $admins_emails = $module_info->admin_mail; $target_mail = explode(',',$admins_emails); - + // send email to all admins - START for($i=0;$i $obj->comment_srl); // call a trigger for calling "send mail to subscribers" (for moment just for forum) ModuleHandler::triggerCall("comment.sendEmailToAdminAfterInsertComment","after",$comment_srl_list); - + /* // send email to author - START $oMail = new Mail(); @@ -440,225 +463,236 @@ $oMail->setTitle($mail_title); //$mail_content = sprintf("From : %s?document_srl=%s&comment_srl=%s#comment_%d
\r\n%s ", getFullUrl(''),$comment->document_srl,$comment->comment_srl,$comment->comment_srl, getFullUrl(''),$comment->document_srl,$comment->comment_srl,$comment->comment_srl,$comment>content); $mail_content = " - Your comment #".$obj->comment_srl." on document \"".$oDocument->getTitleText()."\" have to be approved by admin of ". strtoupper($module_info->mid)." module before to be publish. -
-
Comment content: - ".$obj->content." -
+ Your comment #".$obj->comment_srl." on document \"".$oDocument->getTitleText()."\" have to be approved by admin of ". strtoupper($module_info->mid)." module before to be publish. +
+
Comment content: + ".$obj->content." +
"; $oMail->setContent($mail_content); $oMail->setSender($obj->email_address, $obj->email_address); $oMail->setReceiptor($obj->email_address, $obj->email_address); $oMail->send(); // send email to author - START - */ + */ return; } - - - /** - * Fix the comment - * @param object $obj - * @param bool $is_admin - * @return object - */ - function updateComment($obj, $is_admin = false) { - $obj->__isupdate = true; - // call a trigger (before) - $output = ModuleHandler::triggerCall('comment.updateComment', 'before', $obj); - if(!$output->toBool()) return $output; - // create a comment model object - $oCommentModel = &getModel('comment'); - // get the original data - $source_obj = $oCommentModel->getComment($obj->comment_srl); - if(!$source_obj->getMemberSrl()) { - $obj->member_srl = $source_obj->get('member_srl'); - $obj->user_name = $source_obj->get('user_name'); - $obj->nick_name = $source_obj->get('nick_name'); - $obj->email_address = $source_obj->get('email_address'); - $obj->homepage = $source_obj->get('homepage'); - } - // check if permission is granted - if(!$is_admin && !$source_obj->isGranted()) return new Object(-1, 'msg_not_permitted'); - - if($obj->password) $obj->password = md5($obj->password); - if($obj->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; - // set modifier's information if logged-in and posting author and modifier are matched. - if(Context::get('is_logged')) { - $logged_info = Context::get('logged_info'); - if($source_obj->member_srl == $logged_info->member_srl) { - $obj->member_srl = $logged_info->member_srl; - $obj->user_name = $logged_info->user_name; - $obj->nick_name = $logged_info->nick_name; - $obj->email_address = $logged_info->email_address; - $obj->homepage = $logged_info->homepage; - } - } - // if nick_name of the logged-in author doesn't exist - if($source_obj->get('member_srl')&& !$obj->nick_name) { - $obj->member_srl = $source_obj->get('member_srl'); - $obj->user_name = $source_obj->get('user_name'); - $obj->nick_name = $source_obj->get('nick_name'); - $obj->email_address = $source_obj->get('email_address'); - $obj->homepage = $source_obj->get('homepage'); - } - - - if(!$obj->content) $obj->content = $source_obj->get('content'); - // remove XE's wn tags from contents - $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); - // remove iframe and script if not a top administrator on the session - if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content); - - // begin transaction - $oDB = &DB::getInstance(); - $oDB->begin(); - // Update - $output = executeQuery('comment.updateComment', $obj); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - // call a trigger (after) - if($output->toBool()) { - $trigger_output = ModuleHandler::triggerCall('comment.updateComment', 'after', $obj); - if(!$trigger_output->toBool()) { - $oDB->rollback(); - return $trigger_output; - } - } - - // commit - $oDB->commit(); - - $output->add('comment_srl', $obj->comment_srl); - //remove from cache - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - $oCacheHandler->invalidateGroupKey('commentList_' . $obj->document_srl); - $oCacheHandler->invalidateGroupKey('newestCommentsList'); - } - return $output; - } - - /** - * Delete comment - * @param int $comment_srl - * @param bool $is_admin - * @param bool $isMoveToTrash - * @return object - */ - function deleteComment($comment_srl, $is_admin = false, $isMoveToTrash = false) { - // create the comment model object - $oCommentModel = &getModel('comment'); - // check if comment already exists - $comment = $oCommentModel->getComment($comment_srl); - if($comment->comment_srl != $comment_srl) - { - return new Object(-1, 'msg_invalid_request'); - } - $document_srl = $comment->document_srl; - // call a trigger (before) - $output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment); - if(!$output->toBool()) - { - return $output; - } - - // check if permission is granted - if(!$is_admin && !$comment->isGranted()) - { - return new Object(-1, 'msg_not_permitted'); - } - - // check if child comment exists on the comment - $childs = $oCommentModel->getChildComments($comment_srl); - if(count($childs) > 0) - { - $deleteAllComment = true; - if (!$is_admin) - { - $logged_info = Context::get('logged_info'); - foreach($childs as $val) - { - if($val->member_srl != $logged_info->member_srl) - { - $deleteAllComment = false; - break; - } - } - } - - if(!$deleteAllComment) - { - return new Object(-1, 'fail_to_delete_have_children'); - } - else - { - foreach($childs as $val) - { - $output = $this->deleteComment($val->comment_srl, $is_admin, $isMoveToTrash); - if(!$output->toBool()) return $output; - } - } - } - - // begin transaction - $oDB = &DB::getInstance(); - $oDB->begin(); - // Delete - $args->comment_srl = $comment_srl; - $output = executeQuery('comment.deleteComment', $args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - $output = executeQuery('comment.deleteCommentList', $args); - // update the number of comments - $comment_count = $oCommentModel->getCommentCount($document_srl); - // create the controller object of the document - $oDocumentController = &getController('document'); - // update comment count of the article posting - $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, null, false); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - // call a trigger (after) - if($output->toBool()) { - $trigger_output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); - if(!$trigger_output->toBool()) { - $oDB->rollback(); - return $trigger_output; - } - } - - if(!$isMoveToTrash) - { - $this->_deleteDeclaredComments($args); - $this->_deleteVotedComments($args); - } - - // commit - $oDB->commit(); - - $output->add('document_srl', $document_srl); - //remove from cache - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); - $oCacheHandler->invalidateGroupKey('newestCommentsList'); - } - return $output; - } /** - * Remove all comment relation log - * @return Object - */ + * Fix the comment + * @param object $obj + * @param bool $is_admin + * @return object + */ + function updateComment($obj, $is_admin = false) + { + $obj->__isupdate = true; + // call a trigger (before) + $output = ModuleHandler::triggerCall('comment.updateComment', 'before', $obj); + if(!$output->toBool()) return $output; + // create a comment model object + $oCommentModel = &getModel('comment'); + // get the original data + $source_obj = $oCommentModel->getComment($obj->comment_srl); + if(!$source_obj->getMemberSrl()) + { + $obj->member_srl = $source_obj->get('member_srl'); + $obj->user_name = $source_obj->get('user_name'); + $obj->nick_name = $source_obj->get('nick_name'); + $obj->email_address = $source_obj->get('email_address'); + $obj->homepage = $source_obj->get('homepage'); + } + // check if permission is granted + if(!$is_admin && !$source_obj->isGranted()) return new Object(-1, 'msg_not_permitted'); + + if($obj->password) $obj->password = md5($obj->password); + if($obj->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; + // set modifier's information if logged-in and posting author and modifier are matched. + if(Context::get('is_logged')) + { + $logged_info = Context::get('logged_info'); + if($source_obj->member_srl == $logged_info->member_srl) + { + $obj->member_srl = $logged_info->member_srl; + $obj->user_name = $logged_info->user_name; + $obj->nick_name = $logged_info->nick_name; + $obj->email_address = $logged_info->email_address; + $obj->homepage = $logged_info->homepage; + } + } + // if nick_name of the logged-in author doesn't exist + if($source_obj->get('member_srl')&& !$obj->nick_name) + { + $obj->member_srl = $source_obj->get('member_srl'); + $obj->user_name = $source_obj->get('user_name'); + $obj->nick_name = $source_obj->get('nick_name'); + $obj->email_address = $source_obj->get('email_address'); + $obj->homepage = $source_obj->get('homepage'); + } + + if(!$obj->content) $obj->content = $source_obj->get('content'); + // remove XE's wn tags from contents + $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); + // remove iframe and script if not a top administrator on the session + if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content); + + // begin transaction + $oDB = &DB::getInstance(); + $oDB->begin(); + // Update + $output = executeQuery('comment.updateComment', $obj); + if(!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + // call a trigger (after) + if($output->toBool()) + { + $trigger_output = ModuleHandler::triggerCall('comment.updateComment', 'after', $obj); + if(!$trigger_output->toBool()) + { + $oDB->rollback(); + return $trigger_output; + } + } + + // commit + $oDB->commit(); + + $output->add('comment_srl', $obj->comment_srl); + //remove from cache + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $oCacheHandler->invalidateGroupKey('commentList_' . $obj->document_srl); + $oCacheHandler->invalidateGroupKey('newestCommentsList'); + } + return $output; + } + + /** + * Delete comment + * @param int $comment_srl + * @param bool $is_admin + * @param bool $isMoveToTrash + * @return object + */ + function deleteComment($comment_srl, $is_admin = false, $isMoveToTrash = false) + { + // create the comment model object + $oCommentModel = &getModel('comment'); + // check if comment already exists + $comment = $oCommentModel->getComment($comment_srl); + if($comment->comment_srl != $comment_srl) + { + return new Object(-1, 'msg_invalid_request'); + } + $document_srl = $comment->document_srl; + // call a trigger (before) + $output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment); + if(!$output->toBool()) + { + return $output; + } + + // check if permission is granted + if(!$is_admin && !$comment->isGranted()) + { + return new Object(-1, 'msg_not_permitted'); + } + + // check if child comment exists on the comment + $childs = $oCommentModel->getChildComments($comment_srl); + if(count($childs) > 0) + { + $deleteAllComment = true; + if (!$is_admin) + { + $logged_info = Context::get('logged_info'); + foreach($childs as $val) + { + if($val->member_srl != $logged_info->member_srl) + { + $deleteAllComment = false; + break; + } + } + } + + if(!$deleteAllComment) + { + return new Object(-1, 'fail_to_delete_have_children'); + } + else + { + foreach($childs as $val) + { + $output = $this->deleteComment($val->comment_srl, $is_admin, $isMoveToTrash); + if(!$output->toBool()) return $output; + } + } + } + + // begin transaction + $oDB = &DB::getInstance(); + $oDB->begin(); + // Delete + $args->comment_srl = $comment_srl; + $output = executeQuery('comment.deleteComment', $args); + if(!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + + $output = executeQuery('comment.deleteCommentList', $args); + // update the number of comments + $comment_count = $oCommentModel->getCommentCount($document_srl); + // create the controller object of the document + $oDocumentController = &getController('document'); + // update comment count of the article posting + $output = $oDocumentController->updateCommentCount($document_srl, $comment_count, null, false); + if(!$output->toBool()) + { + $oDB->rollback(); + return $output; + } + // call a trigger (after) + if($output->toBool()) + { + $trigger_output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); + if(!$trigger_output->toBool()) + { + $oDB->rollback(); + return $trigger_output; + } + } + + if(!$isMoveToTrash) + { + $this->_deleteDeclaredComments($args); + $this->_deleteVotedComments($args); + } + + // commit + $oDB->commit(); + + $output->add('document_srl', $document_srl); + //remove from cache + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); + $oCacheHandler->invalidateGroupKey('newestCommentsList'); + } + return $output; + } + + /** + * Remove all comment relation log + * @return Object + */ function deleteCommentLog() { $this->_deleteDeclaredComments($args); @@ -666,346 +700,377 @@ return new Object(0, 'success'); } - /** - * Remove all comments of the article - * @param int $document_srl - * @return object - */ - function deleteComments($document_srl, $obj = NULL) { - // create the document model object - $oDocumentModel = &getModel('document'); - $oCommentModel = &getModel('comment'); + /** + * Remove all comments of the article + * @param int $document_srl + * @return object + */ + function deleteComments($document_srl, $obj = NULL) + { + // create the document model object + $oDocumentModel = &getModel('document'); + $oCommentModel = &getModel('comment'); - // check if permission is granted - if(is_object($obj)) - { - $oDocument = new documentItem(); - $oDocument->setAttribute($obj); - } - else - { - $oDocument = $oDocumentModel->getDocument($document_srl); - } - if(!$oDocument->isExists() || !$oDocument->isGranted()) return new Object(-1, 'msg_not_permitted'); - // get a list of comments and then execute a trigger(way to reduce the processing cost for delete all) - $args->document_srl = $document_srl; - $comments = executeQueryArray('comment.getAllComments',$args); - if($comments->data) { - $commentSrlList = array(); - foreach($comments->data as $key => $comment) { - array_push($commentSrlList, $comment->comment_srl); - // call a trigger (before) - $output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment); - if(!$output->toBool()) continue; - // call a trigger (after) - $output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); - if(!$output->toBool()) continue; - } - } - // delete the comment - $args->document_srl = $document_srl; - $output = executeQuery('comment.deleteComments', $args); - if(!$output->toBool()) return $output; - // Delete a list of comments - $output = executeQuery('comment.deleteCommentsList', $args); - - //delete declared, declared_log, voted_log - if(is_array($commentSrlList) && count($commentSrlList)>0) - { - unset($args); - $args->comment_srl = join(',', $commentSrlList); - $this->_deleteDeclaredComments($args); - $this->_deleteVotedComments($args); - } - //remove from cache - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); - $oCacheHandler->invalidateGroupKey('newestCommentsList'); - } - - return $output; - } - - /** - * delete declared comment, log - * @param array|string $commentSrls : srls string (ex: 1, 2,56, 88) - * @return void - */ - function _deleteDeclaredComments($commentSrls) + // check if permission is granted + if(is_object($obj)) { - executeQuery('comment.deleteDeclaredComments', $commentSrls); - executeQuery('comment.deleteCommentDeclaredLog', $commentSrls); + $oDocument = new documentItem(); + $oDocument->setAttribute($obj); + } + else + { + $oDocument = $oDocumentModel->getDocument($document_srl); + } + if(!$oDocument->isExists() || !$oDocument->isGranted()) return new Object(-1, 'msg_not_permitted'); + // get a list of comments and then execute a trigger(way to reduce the processing cost for delete all) + $args->document_srl = $document_srl; + $comments = executeQueryArray('comment.getAllComments',$args); + if($comments->data) + { + $commentSrlList = array(); + foreach($comments->data as $key => $comment) + { + array_push($commentSrlList, $comment->comment_srl); + // call a trigger (before) + $output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment); + if(!$output->toBool()) continue; + // call a trigger (after) + $output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); + if(!$output->toBool()) continue; + } + } + // delete the comment + $args->document_srl = $document_srl; + $output = executeQuery('comment.deleteComments', $args); + if(!$output->toBool()) return $output; + // Delete a list of comments + $output = executeQuery('comment.deleteCommentsList', $args); + + //delete declared, declared_log, voted_log + if(is_array($commentSrlList) && count($commentSrlList)>0) + { + unset($args); + $args->comment_srl = join(',', $commentSrlList); + $this->_deleteDeclaredComments($args); + $this->_deleteVotedComments($args); + } + //remove from cache + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $oCacheHandler->invalidateGroupKey('commentList_' . $document_srl); + $oCacheHandler->invalidateGroupKey('newestCommentsList'); } - /** - * delete voted comment log - * @param array|string $commentSrls : srls string (ex: 1, 2,56, 88) - * @return void - */ - function _deleteVotedComments($commentSrls) + return $output; + } + + /** + * delete declared comment, log + * @param array|string $commentSrls : srls string (ex: 1, 2,56, 88) + * @return void + */ + function _deleteDeclaredComments($commentSrls) + { + executeQuery('comment.deleteDeclaredComments', $commentSrls); + executeQuery('comment.deleteCommentDeclaredLog', $commentSrls); + } + + /** + * delete voted comment log + * @param array|string $commentSrls : srls string (ex: 1, 2,56, 88) + * @return void + */ + function _deleteVotedComments($commentSrls) + { + executeQuery('comment.deleteCommentVotedLog', $commentSrls); + } + + /** + * Increase vote-up counts of the comment + * @param int $comment_srl + * @param int $point + * @return Object + */ + function updateVotedCount($comment_srl, $point = 1) + { + if($point > 0) { - executeQuery('comment.deleteCommentVotedLog', $commentSrls); + $failed_voted = 'failed_voted'; + $success_message = 'success_voted'; + } + else + { + $failed_voted = 'failed_blamed'; + $success_message = 'success_blamed'; } - /** - * Increase vote-up counts of the comment - * @param int $comment_srl - * @param int $point - * @return Object - */ - function updateVotedCount($comment_srl, $point = 1) { - if($point > 0) { - $failed_voted = 'failed_voted'; - $success_message = 'success_voted'; - } else { - $failed_voted = 'failed_blamed'; - $success_message = 'success_blamed'; - } + // invalid vote if vote info exists in the session info. + if($_SESSION['voted_comment'][$comment_srl]) return new Object(-1, $failed_voted); - // invalid vote if vote info exists in the session info. - if($_SESSION['voted_comment'][$comment_srl]) return new Object(-1, $failed_voted); - - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, false, false); - // invalid vote if both ip addresses between author's and the current user are same. - if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR']) { - $_SESSION['voted_comment'][$comment_srl] = true; - return new Object(-1, $failed_voted); - } - // if the comment author is a member - if($oComment->get('member_srl')) { - // create the member model object - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); - // session registered if the author information matches to the current logged-in user's. - if($member_srl && $member_srl == $oComment->get('member_srl')) { - $_SESSION['voted_comment'][$comment_srl] = true; - return new Object(-1, $failed_voted); - } - } - // If logged-in, use the member_srl. otherwise use the ipaddress. - if($member_srl) { - $args->member_srl = $member_srl; - } else { - $args->ipaddress = $_SERVER['REMOTE_ADDR']; - } - $args->comment_srl = $comment_srl; - $output = executeQuery('comment.getCommentVotedLogInfo', $args); - // session registered if log info contains recommendation vote log. - if($output->data->count) { - $_SESSION['voted_comment'][$comment_srl] = true; - return new Object(-1, $failed_voted); - } - - // begin transaction - $oDB = DB::getInstance(); - $oDB->begin(); - - // update the number of votes - if($point < 0) { - $args->blamed_count = $oComment->get('blamed_count') + $point; - $output = executeQuery('comment.updateBlamedCount', $args); - } else { - $args->voted_count = $oComment->get('voted_count') + $point; - $output = executeQuery('comment.updateVotedCount', $args); - } - // leave logs - $args->point = $point; - $output = executeQuery('comment.insertCommentVotedLog', $args); - - $obj->member_srl = $oComment->get('member_srl'); - $obj->module_srl = $oComment->get('module_srl'); - $obj->comment_srl = $oComment->get('comment'); - $obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count'; - $obj->point = $point; - $obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count'); - $obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count; - $trigger_output = ModuleHandler::triggerCall('comment.updateVotedCount', 'after', $obj); - if(!$trigger_output->toBool()) + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl, false, false); + // invalid vote if both ip addresses between author's and the current user are same. + if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR']) + { + $_SESSION['voted_comment'][$comment_srl] = true; + return new Object(-1, $failed_voted); + } + // if the comment author is a member + if($oComment->get('member_srl')) + { + // create the member model object + $oMemberModel = &getModel('member'); + $member_srl = $oMemberModel->getLoggedMemberSrl(); + // session registered if the author information matches to the current logged-in user's. + if($member_srl && $member_srl == $oComment->get('member_srl')) { - $oDB->rollback(); - return $trigger_output; + $_SESSION['voted_comment'][$comment_srl] = true; + return new Object(-1, $failed_voted); } - - $oDB->commit(); - - // leave into session information - $_SESSION['voted_comment'][$comment_srl] = true; - - // Return the result - return new Object(0, $success_message); - } - - /** - * Report a blamed comment - * @param $comment_srl - * @return void - */ - function declaredComment($comment_srl) { - // Fail if session information already has a reported document - if($_SESSION['declared_comment'][$comment_srl]) return new Object(-1, 'failed_declared'); - // check if already reported - $args->comment_srl = $comment_srl; - $output = executeQuery('comment.getDeclaredComment', $args); - if(!$output->toBool()) return $output; - // get the original comment - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, false, false); - // failed if both ip addresses between author's and the current user are same. - if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR']) { - $_SESSION['declared_comment'][$comment_srl] = true; - return new Object(-1, 'failed_declared'); - } - // if the comment author is a member - if($oComment->get('member_srl')) { - // create the member model object - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); - // session registered if the author information matches to the current logged-in user's. - if($member_srl && $member_srl == $oComment->get('member_srl')) { - $_SESSION['declared_comment'][$comment_srl] = true; - return new Object(-1, 'failed_declared'); - } - } - // If logged-in, use the member_srl. otherwise use the ipaddress. - if($member_srl) { - $args->member_srl = $member_srl; - } else { - $args->ipaddress = $_SERVER['REMOTE_ADDR']; - } - $args->comment_srl = $comment_srl; - $log_output = executeQuery('comment.getCommentDeclaredLogInfo', $args); - // session registered if log info contains report log. - if($log_output->data->count) { - $_SESSION['declared_comment'][$comment_srl] = true; - return new Object(-1, 'failed_declared'); - } - // execute insert - if($output->data->declared_count > 0) $output = executeQuery('comment.updateDeclaredComment', $args); - else $output = executeQuery('comment.insertDeclaredComment', $args); - if(!$output->toBool()) return $output; - // leave the log - $output = executeQuery('comment.insertCommentDeclaredLog', $args); - // leave into the session information - $_SESSION['declared_comment'][$comment_srl] = true; - - $this->setMessage('success_declared'); - } - - /** - * Method to add a pop-up menu when clicking for displaying child comments - * @param string $url - * @param string $str - * @param strgin $icon - * @param strgin $target - * @return void - */ - function addCommentPopupMenu($url, $str, $icon = '', $target = 'self') { - $comment_popup_menu_list = Context::get('comment_popup_menu_list'); - if(!is_array($comment_popup_menu_list)) $comment_popup_menu_list = array(); - - $obj->url = $url; - $obj->str = $str; - $obj->icon = $icon; - $obj->target = $target; - $comment_popup_menu_list[] = $obj; - - Context::set('comment_popup_menu_list', $comment_popup_menu_list); - } - - /** - * Save the comment extension form for each module - * @return void - */ - function procCommentInsertModuleConfig() { - $module_srl = Context::get('target_module_srl'); - if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); - else $module_srl = array($module_srl); - - $comment_config->comment_count = (int)Context::get('comment_count'); - if(!$comment_config->comment_count) $comment_config->comment_count = 50; - - $comment_config->use_vote_up = Context::get('use_vote_up'); - if(!$comment_config->use_vote_up) $comment_config->use_vote_up = 'Y'; - - $comment_config->use_vote_down = Context::get('use_vote_down'); - if(!$comment_config->use_vote_down) $comment_config->use_vote_down = 'Y'; - - $comment_config->use_comment_validation = Context::get('use_comment_validation'); - if(!$comment_config->use_comment_validation) $comment_config->use_comment_validation = 'N'; - - for($i=0;$isetCommentModuleConfig($srl,$comment_config); - } - - $this->setError(-1); - $this->setMessage('success_updated', 'info'); - - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent'); - $this->setRedirectUrl($returnUrl); - } - - /** - * Comment module config setting - * @param int $srl - * @param object $comment_config - * @return Object - */ - function setCommentModuleConfig($srl, $comment_config){ - $oModuleController = &getController('module'); - $oModuleController->insertModulePartConfig('comment',$srl,$comment_config); - return new Object(); + } + // If logged-in, use the member_srl. otherwise use the ipaddress. + if($member_srl) + { + $args->member_srl = $member_srl; + } + else + { + $args->ipaddress = $_SERVER['REMOTE_ADDR']; + } + $args->comment_srl = $comment_srl; + $output = executeQuery('comment.getCommentVotedLogInfo', $args); + // session registered if log info contains recommendation vote log. + if($output->data->count) + { + $_SESSION['voted_comment'][$comment_srl] = true; + return new Object(-1, $failed_voted); } - /** - * Get comment all list - * @return void - */ - function procCommentGetList() + // begin transaction + $oDB = DB::getInstance(); + $oDB->begin(); + + // update the number of votes + if($point < 0) { - if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted'); - $commentSrls = Context::get('comment_srls'); - if($commentSrls) $commentSrlList = explode(',', $commentSrls); + $args->blamed_count = $oComment->get('blamed_count') + $point; + $output = executeQuery('comment.updateBlamedCount', $args); + } + else + { + $args->voted_count = $oComment->get('voted_count') + $point; + $output = executeQuery('comment.updateVotedCount', $args); + } + // leave logs + $args->point = $point; + $output = executeQuery('comment.insertCommentVotedLog', $args); - if(count($commentSrlList) > 0) { - $oCommentModel = &getModel('comment'); - $commentList = $oCommentModel->getComments($commentSrlList); + $obj->member_srl = $oComment->get('member_srl'); + $obj->module_srl = $oComment->get('module_srl'); + $obj->comment_srl = $oComment->get('comment'); + $obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count'; + $obj->point = $point; + $obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count'); + $obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count; + $trigger_output = ModuleHandler::triggerCall('comment.updateVotedCount', 'after', $obj); + if(!$trigger_output->toBool()) + { + $oDB->rollback(); + return $trigger_output; + } - if(is_array($commentList)) + $oDB->commit(); + + // leave into session information + $_SESSION['voted_comment'][$comment_srl] = true; + + // Return the result + return new Object(0, $success_message); + } + + /** + * Report a blamed comment + * @param $comment_srl + * @return void + */ + function declaredComment($comment_srl) + { + // Fail if session information already has a reported document + if($_SESSION['declared_comment'][$comment_srl]) return new Object(-1, 'failed_declared'); + // check if already reported + $args->comment_srl = $comment_srl; + $output = executeQuery('comment.getDeclaredComment', $args); + if(!$output->toBool()) return $output; + // get the original comment + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl, false, false); + // failed if both ip addresses between author's and the current user are same. + if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR']) + { + $_SESSION['declared_comment'][$comment_srl] = true; + return new Object(-1, 'failed_declared'); + } + // if the comment author is a member + if($oComment->get('member_srl')) + { + // create the member model object + $oMemberModel = &getModel('member'); + $member_srl = $oMemberModel->getLoggedMemberSrl(); + // session registered if the author information matches to the current logged-in user's. + if($member_srl && $member_srl == $oComment->get('member_srl')) + { + $_SESSION['declared_comment'][$comment_srl] = true; + return new Object(-1, 'failed_declared'); + } + } + // If logged-in, use the member_srl. otherwise use the ipaddress. + if($member_srl) + { + $args->member_srl = $member_srl; + } + else + { + $args->ipaddress = $_SERVER['REMOTE_ADDR']; + } + $args->comment_srl = $comment_srl; + $log_output = executeQuery('comment.getCommentDeclaredLogInfo', $args); + // session registered if log info contains report log. + if($log_output->data->count) + { + $_SESSION['declared_comment'][$comment_srl] = true; + return new Object(-1, 'failed_declared'); + } + // execute insert + if($output->data->declared_count > 0) $output = executeQuery('comment.updateDeclaredComment', $args); + else $output = executeQuery('comment.insertDeclaredComment', $args); + if(!$output->toBool()) return $output; + // leave the log + $output = executeQuery('comment.insertCommentDeclaredLog', $args); + // leave into the session information + $_SESSION['declared_comment'][$comment_srl] = true; + + $this->setMessage('success_declared'); + } + + /** + * Method to add a pop-up menu when clicking for displaying child comments + * @param string $url + * @param string $str + * @param strgin $icon + * @param strgin $target + * @return void + */ + function addCommentPopupMenu($url, $str, $icon = '', $target = 'self') + { + $comment_popup_menu_list = Context::get('comment_popup_menu_list'); + if(!is_array($comment_popup_menu_list)) $comment_popup_menu_list = array(); + + $obj->url = $url; + $obj->str = $str; + $obj->icon = $icon; + $obj->target = $target; + $comment_popup_menu_list[] = $obj; + + Context::set('comment_popup_menu_list', $comment_popup_menu_list); + } + + /** + * Save the comment extension form for each module + * @return void + */ + function procCommentInsertModuleConfig() + { + $module_srl = Context::get('target_module_srl'); + if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); + else $module_srl = array($module_srl); + + $comment_config->comment_count = (int)Context::get('comment_count'); + if(!$comment_config->comment_count) $comment_config->comment_count = 50; + + $comment_config->use_vote_up = Context::get('use_vote_up'); + if(!$comment_config->use_vote_up) $comment_config->use_vote_up = 'Y'; + + $comment_config->use_vote_down = Context::get('use_vote_down'); + if(!$comment_config->use_vote_down) $comment_config->use_vote_down = 'Y'; + + $comment_config->use_comment_validation = Context::get('use_comment_validation'); + if(!$comment_config->use_comment_validation) $comment_config->use_comment_validation = 'N'; + + for($i=0;$isetCommentModuleConfig($srl,$comment_config); + } + + $this->setError(-1); + $this->setMessage('success_updated', 'info'); + + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent'); + $this->setRedirectUrl($returnUrl); + } + + /** + * Comment module config setting + * @param int $srl + * @param object $comment_config + * @return Object + */ + function setCommentModuleConfig($srl, $comment_config) + { + $oModuleController = &getController('module'); + $oModuleController->insertModulePartConfig('comment',$srl,$comment_config); + return new Object(); + } + + /** + * Get comment all list + * @return void + */ + function procCommentGetList() + { + if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted'); + $commentSrls = Context::get('comment_srls'); + if($commentSrls) $commentSrlList = explode(',', $commentSrls); + + if(count($commentSrlList) > 0) + { + $oCommentModel = &getModel('comment'); + $commentList = $oCommentModel->getComments($commentSrlList); + + if(is_array($commentList)) + { + foreach($commentList AS $key=>$value) { - foreach($commentList AS $key=>$value) - { - $value->content = strip_tags($value->content); - } - } - } - else - { - global $lang; - $commentList = array(); - $this->setMessage($lang->no_documents); - } - - $this->add('comment_list', $commentList); - } - - function triggerCopyModule(&$obj) - { - $oModuleModel = &getModel('module'); - $commentConfig = $oModuleModel->getModulePartConfig('comment', $obj->originModuleSrl); - - $oModuleController = &getController('module'); - if(is_array($obj->moduleSrlList)) - { - foreach($obj->moduleSrlList AS $key=>$moduleSrl) - { - $oModuleController->insertModulePartConfig('comment', $moduleSrl, $commentConfig); + $value->content = strip_tags($value->content); } } } - } -?> + else + { + global $lang; + $commentList = array(); + $this->setMessage($lang->no_documents); + } + + $this->add('comment_list', $commentList); + } + + function triggerCopyModule(&$obj) + { + $oModuleModel = &getModel('module'); + $commentConfig = $oModuleModel->getModulePartConfig('comment', $obj->originModuleSrl); + + $oModuleController = &getController('module'); + if(is_array($obj->moduleSrlList)) + { + foreach($obj->moduleSrlList AS $key=>$moduleSrl) + { + $oModuleController->insertModulePartConfig('comment', $moduleSrl, $commentConfig); + } + } + } +} +/* End of file comment.controller.php */ +/* Location: ./modules/comment/comment.controller.php */ diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index d707b2559..b8f6e6538 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -1,174 +1,188 @@ member_srl) { + $oCommentController = &getController('comment'); + // feature that only member can do + if($logged_info->member_srl) + { + $oCommentModel = &getModel('comment'); + $columnList = array('comment_srl', 'module_srl', 'member_srl', 'ipaddress'); + $oComment = $oCommentModel->getComment($comment_srl, false, $columnList); + $module_srl = $oComment->get('module_srl'); + $member_srl = $oComment->get('member_srl'); - $oCommentModel = &getModel('comment'); - $columnList = array('comment_srl', 'module_srl', 'member_srl', 'ipaddress'); - $oComment = $oCommentModel->getComment($comment_srl, false, $columnList); - $module_srl = $oComment->get('module_srl'); - $member_srl = $oComment->get('member_srl'); + $oModuleModel = &getModel('module'); + $comment_config = $oModuleModel->getModulePartConfig('document',$module_srl); + if($comment_config->use_vote_up!='N' && $member_srl!=$logged_info->member_srl) + { + // Add a vote-up button for positive feedback + $url = sprintf("doCallModuleAction('comment','procCommentVoteUp','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_vote','','javascript'); + } + if($comment_config->use_vote_down!='N' && $member_srl!=$logged_info->member_srl) + { + // Add a vote-down button for negative feedback + $url = sprintf("doCallModuleAction('comment','procCommentVoteDown','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_vote_down','','javascript'); + } - $oModuleModel = &getModel('module'); - $comment_config = $oModuleModel->getModulePartConfig('document',$module_srl); - if($comment_config->use_vote_up!='N' && $member_srl!=$logged_info->member_srl){ - // Add a vote-up button for positive feedback - $url = sprintf("doCallModuleAction('comment','procCommentVoteUp','%s')", $comment_srl); - $oCommentController->addCommentPopupMenu($url,'cmd_vote','','javascript'); - } - if($comment_config->use_vote_down!='N' && $member_srl!=$logged_info->member_srl){ - // Add a vote-down button for negative feedback - $url = sprintf("doCallModuleAction('comment','procCommentVoteDown','%s')", $comment_srl); - $oCommentController->addCommentPopupMenu($url,'cmd_vote_down','','javascript'); - } + // Add the report feature against abused posts + $url = sprintf("doCallModuleAction('comment','procCommentDeclare','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_declare','','javascript'); + } + // call a trigger (after) + ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list); + // find a comment by IP matching if an administrator. + if($logged_info->is_admin == 'Y') + { + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl); - // Add the report feature against abused posts - $url = sprintf("doCallModuleAction('comment','procCommentDeclare','%s')", $comment_srl); - $oCommentController->addCommentPopupMenu($url,'cmd_declare','','javascript'); - } - // call a trigger (after) - ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list); - // find a comment by IP matching if an administrator. - if($logged_info->is_admin == 'Y') { - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl); + if($oComment->isExists()) + { + // Find a post of the corresponding ip address + $url = getUrl('','module','admin','act','dispCommentAdminList','search_target','ipaddress','search_keyword',$oComment->getIpAddress()); + $oCommentController->addCommentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress'); - if($oComment->isExists()) { - // Find a post of the corresponding ip address - $url = getUrl('','module','admin','act','dispCommentAdminList','search_target','ipaddress','search_keyword',$oComment->getIpAddress()); - $oCommentController->addCommentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress'); + $url = sprintf("var params = new Array(); params['ipaddress_list']='%s'; exec_xml('spamfilter', 'procSpamfilterAdminInsertDeniedIP', params, completeCallModuleAction)", $oComment->getIpAddress()); + $oCommentController->addCommentPopupMenu($url,'cmd_add_ip_to_spamfilter','','javascript'); + } + } + // Changing a language of pop-up menu + $menus = Context::get('comment_popup_menu_list'); + $menus_count = count($menus); + for($i=0;$i<$menus_count;$i++) + { + $menus[$i]->str = Context::getLang($menus[$i]->str); + } + // get a list of final organized pop-up menus + $this->add('menus', $menus); + } - $url = sprintf("var params = new Array(); params['ipaddress_list']='%s'; exec_xml('spamfilter', 'procSpamfilterAdminInsertDeniedIP', params, completeCallModuleAction)", $oComment->getIpAddress()); - $oCommentController->addCommentPopupMenu($url,'cmd_add_ip_to_spamfilter','','javascript'); - } - } - // Changing a language of pop-up menu - $menus = Context::get('comment_popup_menu_list'); - $menus_count = count($menus); - for($i=0;$i<$menus_count;$i++) { - $menus[$i]->str = Context::getLang($menus[$i]->str); - } - // get a list of final organized pop-up menus - $this->add('menus', $menus); - } + /** + * Check if you have a permission to comment_srl + * use only session information + * @param int $comment_srl + * @return bool + */ + function isGranted($comment_srl) + { + return $_SESSION['own_comment'][$comment_srl]; + } + /** + * Returns the number of child comments + * @param int $comment_srl + * @return int + */ + function getChildCommentCount($comment_srl) + { + $args->comment_srl = $comment_srl; + $output = executeQuery('comment.getChildCommentCount', $args); + return (int)$output->data->count; + } - /** - * Check if you have a permission to comment_srl - * use only session information - * @param int $comment_srl - * @return bool - */ - function isGranted($comment_srl) { - return $_SESSION['own_comment'][$comment_srl]; - } + /** + * Returns the number of child comments + * @param int $comment_srl + * @return int + */ + function getChildComments($comment_srl) + { + $args->comment_srl = $comment_srl; + $output = executeQueryArray('comment.getChildComments', $args); + return $output->data; + } - /** - * Returns the number of child comments - * @param int $comment_srl - * @return int - */ - function getChildCommentCount($comment_srl) { - $args->comment_srl = $comment_srl; - $output = executeQuery('comment.getChildCommentCount', $args); - return (int)$output->data->count; - } + /** + * Get the comment + * @param int $comment_srl + * @param bool $is_admin + * @param array $columnList + * @return commentItem + */ + function getComment($comment_srl=0, $is_admin = false, $columnList = array()) + { + $oComment = new commentItem($comment_srl, $columnList); + if($is_admin) $oComment->setGrant(); - /** - * Returns the number of child comments - * @param int $comment_srl - * @return int - */ - function getChildComments($comment_srl) { - $args->comment_srl = $comment_srl; - $output = executeQueryArray('comment.getChildComments', $args); - return $output->data; - } + return $oComment; + } - /** - * Get the comment - * @param int $comment_srl - * @param bool $is_admin - * @param array $columnList - * @return commentItem - */ - function getComment($comment_srl=0, $is_admin = false, $columnList = array()) { - $oComment = new commentItem($comment_srl, $columnList); - if($is_admin) $oComment->setGrant(); + /** + * Get the comment list(not paginating) + * @param string|array $comment_srl_list + * @param array $columnList + * @return array + */ + function getComments($comment_srl_list, $columnList = array()) + { + if(is_array($comment_srl_list)) $comment_srls = implode(',',$comment_srl_list); + // fetch from a database + $args->comment_srls = $comment_srls; + $output = executeQuery('comment.getComments', $args, $columnList); + if(!$output->toBool()) return; + $comment_list = $output->data; + if(!$comment_list) return; + if(!is_array($comment_list)) $comment_list = array($comment_list); - return $oComment; - } + $comment_count = count($comment_list); + foreach($comment_list as $key => $attribute) + { + if(!$attribute->comment_srl) continue; + $oComment = null; + $oComment = new commentItem(); + $oComment->setAttribute($attribute); + if($is_admin) $oComment->setGrant(); - /** - * Get the comment list(not paginating) - * @param string|array $comment_srl_list - * @param array $columnList - * @return array - */ - function getComments($comment_srl_list, $columnList = array()) { - if(is_array($comment_srl_list)) $comment_srls = implode(',',$comment_srl_list); - // fetch from a database - $args->comment_srls = $comment_srls; - $output = executeQuery('comment.getComments', $args, $columnList); - if(!$output->toBool()) return; - $comment_list = $output->data; - if(!$comment_list) return; - if(!is_array($comment_list)) $comment_list = array($comment_list); + $result[$attribute->comment_srl] = $oComment; + } + return $result; + } - $comment_count = count($comment_list); - foreach($comment_list as $key => $attribute) { - if(!$attribute->comment_srl) continue; - $oComment = null; - $oComment = new commentItem(); - $oComment->setAttribute($attribute); - if($is_admin) $oComment->setGrant(); + /** + * Get the total number of comments in corresponding with document_srl. + * @param int $document_srl + * @return int + */ + function getCommentCount($document_srl) + { + $args->document_srl = $document_srl; - $result[$attribute->comment_srl] = $oComment; - } - return $result; - } - - /** - * Get the total number of comments in corresponding with document_srl. - * @param int $document_srl - * @return int - */ - function getCommentCount($document_srl) { - $args->document_srl = $document_srl; - // get the number of comments on the document module $oDocumentModel = &getModel('document'); $columnList = array('document_srl', 'module_srl'); @@ -185,532 +199,570 @@ $args->status = 1; } - $output = executeQuery('comment.getCommentCount', $args); - $total_count = $output->data->count; - return (int)$total_count; - } + $output = executeQuery('comment.getCommentCount', $args); + $total_count = $output->data->count; + return (int)$total_count; + } - /** - * Get the total number of comments in corresponding with document_srl. - * @param string $date - * @param array $moduleSrlList - * @return int - */ - function getCommentCountByDate($date = '', $moduleSrlList = array()) { - if($date) $args->regDate = date('Ymd', strtotime($date)); - if(count($moduleSrlList)>0) $args->module_srl = $moduleSrlList; + /** + * Get the total number of comments in corresponding with document_srl. + * @param string $date + * @param array $moduleSrlList + * @return int + */ + function getCommentCountByDate($date = '', $moduleSrlList = array()) + { + if($date) $args->regDate = date('Ymd', strtotime($date)); + if(count($moduleSrlList)>0) $args->module_srl = $moduleSrlList; - $output = executeQuery('comment.getCommentCount', $args); - if(!$output->toBool()) return 0; + $output = executeQuery('comment.getCommentCount', $args); + if(!$output->toBool()) return 0; - return $output->data->count; - } + return $output->data->count; + } - /** - * Get the total number of comments in corresponding with module_srl. - * @param int $module_srl - * @param bool $published - * @return int - */ - function getCommentAllCount($module_srl,$published=null) { - $args->module_srl = $module_srl; - - if(is_null($published)) + /** + * Get the total number of comments in corresponding with module_srl. + * @param int $module_srl + * @param bool $published + * @return int + */ + function getCommentAllCount($module_srl,$published=null) + { + $args->module_srl = $module_srl; + + if(is_null($published)) + { + // check if module is using comment validation system + $oCommentController = &getController("comment"); + $is_using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl); + if($is_using_validation) { - // check if module is using comment validation system - $oCommentController = &getController("comment"); - $is_using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl); - if($is_using_validation) - { - $args->status = 1; - } + $args->status = 1; + } + } + else + { + if ($published) + { + $args->status = 1; } else { - if ($published) - { - $args->status = 1; - } - else - { - $args->status = 0; - } + $args->status = 0; } - $output = executeQuery('comment.getCommentCount', $args); - $total_count = $output->data->count; - - return (int)$total_count; - } - - /** - * Get the module info without duplication - * @return array - */ - function getDistinctModules() - { - $output = executeQueryArray('comment.getDistinctModules'); - $module_srls = $output->data; - $oModuleModel = &getModel('module'); - $result = array(); - if($module_srls) - { - foreach($module_srls as $module) - { - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module->module_srl); - $result[$module->module_srl] = $module_info->mid; - } - } - return $result; } + $output = executeQuery('comment.getCommentCount', $args); + $total_count = $output->data->count; - /** - * Get the comment in corresponding with mid. - * @todo add commentItems to cache too - * @param object $obj - * @param array $columnList - * @return array - */ - function getNewestCommentList($obj, $columnList = array()) { - if($obj->mid) { - $oModuleModel = &getModel('module'); - $obj->module_srl = $oModuleModel->getModuleSrlByMid($obj->mid); - unset($obj->mid); - } - // check if module_srl is an arrary. - if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); - else $args->module_srl = $obj->module_srl; - $args->list_count = $obj->list_count; - // cache controll - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()){ - $object_key = 'object_newest_comment_list:'.$obj->module_srl; - $cache_key = $oCacheHandler->getGroupKey('newestCommentsList', $object_key); - $output = $oCacheHandler->get($cache_key); - } - if(!$output) + return (int)$total_count; + } + + /** + * Get the module info without duplication + * @return array + */ + function getDistinctModules() + { + $output = executeQueryArray('comment.getDistinctModules'); + $module_srls = $output->data; + $oModuleModel = &getModel('module'); + $result = array(); + if($module_srls) + { + foreach($module_srls as $module) { - if(strpos($args->module_srl,",")===false) + $module_info = $oModuleModel->getModuleInfoByModuleSrl($module->module_srl); + $result[$module->module_srl] = $module_info->mid; + } + } + return $result; + } + + /** + * Get the comment in corresponding with mid. + * @todo add commentItems to cache too + * @param object $obj + * @param array $columnList + * @return array + */ + function getNewestCommentList($obj, $columnList = array()) + { + if($obj->mid) + { + $oModuleModel = &getModel('module'); + $obj->module_srl = $oModuleModel->getModuleSrlByMid($obj->mid); + unset($obj->mid); + } + // check if module_srl is an arrary. + if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl); + else $args->module_srl = $obj->module_srl; + $args->list_count = $obj->list_count; + // cache controll + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $object_key = 'object_newest_comment_list:'.$obj->module_srl; + $cache_key = $oCacheHandler->getGroupKey('newestCommentsList', $object_key); + $output = $oCacheHandler->get($cache_key); + } + if(!$output) + { + if(strpos($args->module_srl,",")===false) + { + if($args->module_srl) { - if($args->module_srl) + // check if module is using comment validation system + $oCommentController = &getController("comment"); + $is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl); + if($is_using_validation) { - // check if module is using comment validation system - $oCommentController = &getController("comment"); - $is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl); - if($is_using_validation) - { - $args->status = 1; - } + $args->status = 1; } } - $output = executeQuery('comment.getNewestCommentList', $args, $columnList); - if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output); } - if(!$output->toBool()) return $output; + $output = executeQuery('comment.getNewestCommentList', $args, $columnList); + if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output); + } + if(!$output->toBool()) return $output; - $comment_list = $output->data; - if($comment_list) { - if(!is_array($comment_list)) $comment_list = array($comment_list); - $comment_count = count($comment_list); - foreach($comment_list as $key => $attribute) { - if(!$attribute->comment_srl) continue; - $oComment = null; - $oComment = new commentItem(); - $oComment->setAttribute($attribute); - - $result[$key] = $oComment; - } - $output->data = $result; - } - return $result; - } - - /** - * Get a comment list of the doc in corresponding woth document_srl. - * @param int $document_srl - * @param int $page - * @param bool $is_admin - * @param int $count - * @return object - */ - function getCommentList($document_srl, $page = 0, $is_admin = false, $count = 0) { - if(!isset($document_srl)) return; - // cache controll - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()){ - $object_key = 'object:'.$document_srl.'_'.$page.'_'.($is_admin ? 'Y' : 'N') .'_' . $count; - $cache_key = $oCacheHandler->getGroupKey('commentList_' . $document_srl, $object_key); - $output = $oCacheHandler->get($cache_key); - } - if(!$output){ - // get the number of comments on the document module - $oDocumentModel = &getModel('document'); - $columnList = array('document_srl', 'module_srl', 'comment_count'); - $oDocument = $oDocumentModel->getDocument($document_srl, false, true, $columnList); - // return if no doc exists. - if(!$oDocument->isExists()) return; - // return if no comment exists - if($oDocument->getCommentCount()<1) return; - // get a list of comments - $module_srl = $oDocument->get('module_srl'); - - if(!$count) { - $comment_config = $this->getCommentConfig($module_srl); - $comment_count = $comment_config->comment_count; - if(!$comment_count) $comment_count = 50; - } else { - $comment_count = $count; - } - // get a very last page if no page exists - if(!$page) $page = (int)( ($oDocument->getCommentCount()-1) / $comment_count) + 1; - // get a list of comments - $args->document_srl = $document_srl; - $args->list_count = $comment_count; - $args->page = $page; - $args->page_count = 10; - - //check if module is using validation system - $oCommentController = &getController('comment'); - $using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl); - if($using_validation) - { - $args->status = 1; - } - - - $output = executeQueryArray('comment.getCommentPageList', $args); - // return if an error occurs in the query results - if(!$output->toBool()) return; - // insert data into CommentPageList table if the number of results is different from stored comments - if(!$output->data) { - $this->fixCommentList($oDocument->get('module_srl'), $document_srl); - $output = executeQueryArray('comment.getCommentPageList', $args); - if(!$output->toBool()) return; - } - //insert in cache - if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output); - - } - - return $output; - } - - /** - * Update a list of comments in corresponding with document_srl - * Take care of previously used data than GA version - * @param int $module_srl - * @param int $document_srl - * @return void - */ - function fixCommentList($module_srl, $document_srl) { - // create a lock file to prevent repeated work when performing a batch job - $lock_file = "./files/cache/tmp/lock.".$document_srl; - if(file_exists($lock_file) && filemtime($lock_file)+60*60*10document_srl = $document_srl; - $args->list_order = 'list_order'; - $output = executeQuery('comment.getCommentList', $args); - if(!$output->toBool()) return $output; - - $source_list = $output->data; - if(!is_array($source_list)) $source_list = array($source_list); - // Sort comments by the hierarchical structure - $comment_count = count($source_list); - - $root = NULL; - $list = NULL; - $comment_list = array(); - // get the log-in information for logged-in users - $logged_info = Context::get('logged_info'); - // generate a hierarchical structure of comments for loop - for($i=$comment_count-1;$i>=0;$i--) { - $comment_srl = $source_list[$i]->comment_srl; - $parent_srl = $source_list[$i]->parent_srl; - if(!$comment_srl) continue; - // generate a list - $list[$comment_srl] = $source_list[$i]; - - if($parent_srl) { - $list[$parent_srl]->child[] = &$list[$comment_srl]; - } else { - $root->child[] = &$list[$comment_srl]; - } - } - $this->_arrangeComment($comment_list, $root->child, 0, null); - // insert values to the database - if(count($comment_list)) { - foreach($comment_list as $comment_srl => $item) { - $comment_args = null; - $comment_args->comment_srl = $comment_srl; - $comment_args->document_srl = $document_srl; - $comment_args->head = $item->head; - $comment_args->arrange = $item->arrange; - $comment_args->module_srl = $module_srl; - $comment_args->regdate = $item->regdate; - $comment_args->depth = $item->depth; - - executeQuery('comment.insertCommentList', $comment_args); - } - } - // remove the lock file if successful. - FileHandler::removeFile($lock_file); - } - - /** - * Relocate comments in the hierarchical structure - * @param array $comment_list - * @param array $list - * @param int $depth - * @param object $parent - * @return void - */ - function _arrangeComment(&$comment_list, $list, $depth, $parent = null) { - if(!count($list)) return; - foreach($list as $key => $val) { - - if($parent) $val->head = $parent->head; - else $val->head = $val->comment_srl; - $val->arrange = count($comment_list)+1; - - if($val->child) { - $val->depth = $depth; - $comment_list[$val->comment_srl] = $val; - $this->_arrangeComment($comment_list,$val->child,$depth+1, $val); - unset($val->child); - } else { - $val->depth = $depth; - $comment_list[$val->comment_srl] = $val; - } - } - } - - /** - * Get all the comments in time decending order(for administrators) - * @param object $obj - * @param array $columnList - * @return object - */ - function getTotalCommentList($obj, $columnList = array()) { - $query_id = 'comment.getTotalCommentList'; - // Variables - $args->sort_index = 'list_order'; - $args->page = $obj->page?$obj->page:1; - $args->list_count = $obj->list_count?$obj->list_count:20; - $args->page_count = $obj->page_count?$obj->page_count:10; - $args->s_module_srl = $obj->module_srl; - $args->exclude_module_srl = $obj->exclude_module_srl; - - // check if module is using comment validation system - $oCommentController = &getController("comment"); - $is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl); - if ($is_using_validation) + $comment_list = $output->data; + if($comment_list) + { + if(!is_array($comment_list)) $comment_list = array($comment_list); + $comment_count = count($comment_list); + foreach($comment_list as $key => $attribute) { - $args->s_is_published = 1; + if(!$attribute->comment_srl) continue; + $oComment = null; + $oComment = new commentItem(); + $oComment->setAttribute($attribute); + + $result[$key] = $oComment; } - - // Search options - $search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target')); - $search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword')); - if($search_target && $search_keyword) { - switch($search_target) { - case 'content' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_content = $search_keyword; - break; - case 'user_id' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_id = $search_keyword; - $query_id = 'comment.getTotalCommentListWithinMember'; - $args->sort_index = 'comments.list_order'; - break; - case 'user_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_name = $search_keyword; - break; - case 'nick_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_nick_name = $search_keyword; - break; - case 'email_address' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_email_address = $search_keyword; - break; - case 'homepage' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_homepage = $search_keyword; - break; - case 'regdate' : - $args->s_regdate = $search_keyword; - break; - case 'last_update' : - $args->s_last_upate = $search_keyword; - break; - case 'ipaddress' : - $args->s_ipaddress= $search_keyword; - break; - case 'is_secret' : - $args->s_is_secret= $search_keyword; - break; - case 'is_published' : - if($search_keyword == 'Y') - { - $args->s_is_published = 1; - } - if($search_keyword == 'N') - { - $args->s_is_published = 0; - } - break; - case 'module': - $args->s_module_srl = (int)$search_keyword; - break; - case 'member_srl' : - $args->{"s_".$search_target} = (int)$search_keyword; - break; - } - } - // comment.getTotalCommentList query execution - $output = executeQueryArray($query_id, $args, $columnList); - // return when no result or error occurance - if(!$output->toBool()||!count($output->data)) return $output; - foreach($output->data as $key => $val) { - unset($_oComment); - $_oComment = new CommentItem(0); - $_oComment->setAttribute($val); - $output->data[$key] = $_oComment; - } + $output->data = $result; + } + return $result; + } - return $output; - } - - /** - * Get all the comment count in time decending order(for administrators) - * @param object $obj - * @return int - */ - function getTotalCommentCount($obj) { - $query_id = 'comment.getTotalCommentCountByGroupStatus'; - // Variables - $args->s_module_srl = $obj->module_srl; - $args->exclude_module_srl = $obj->exclude_module_srl; - // Search options - $search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target')); - $search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword')); - if($search_target && $search_keyword) { - switch($search_target) { - case 'content' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_content = $search_keyword; - break; - case 'user_id' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_id = $search_keyword; - $query_id = 'comment.getTotalCommentCountWithinMemberByGroupStatus'; - break; - case 'user_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_name = $search_keyword; - break; - case 'nick_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_nick_name = $search_keyword; - break; - case 'email_address' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_email_address = $search_keyword; - break; - case 'homepage' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_homepage = $search_keyword; - break; - case 'regdate' : - $args->s_regdate = $search_keyword; - break; - case 'last_update' : - $args->s_last_upate = $search_keyword; - break; - case 'ipaddress' : - $args->s_ipaddress= $search_keyword; - break; - case 'is_secret' : - $args->s_is_secret= $search_keyword; - break; - case 'member_srl' : - $args->{"s_".$search_target} = (int)$search_keyword; - break; - } - } - $output = executeQueryArray($query_id, $args); - // return when no result or error occurance - if(!$output->toBool()||!count($output->data)) return $output; - - return $output->data; - } - - /** - * Return a configuration of comments for each module - * @param int $module_srl - * @return object - */ - function getCommentConfig($module_srl) { - $oModuleModel = &getModel('module'); - $comment_config = $oModuleModel->getModulePartConfig('comment', $module_srl); - if(!isset($comment_config->comment_count)) $comment_config->comment_count = 50; - return $comment_config; - } - - /** - * Return a list of voting member - * @return void - */ - function getCommentVotedMemberList() + /** + * Get a comment list of the doc in corresponding woth document_srl. + * @param int $document_srl + * @param int $page + * @param bool $is_admin + * @param int $count + * @return object + */ + function getCommentList($document_srl, $page = 0, $is_admin = false, $count = 0) + { + if(!isset($document_srl)) return; + // cache controll + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) { - $comment_srl = Context::get('comment_srl'); - if(!$comment_srl) return new Object(-1,'msg_invalid_request'); + $object_key = 'object:'.$document_srl.'_'.$page.'_'.($is_admin ? 'Y' : 'N') .'_' . $count; + $cache_key = $oCacheHandler->getGroupKey('commentList_' . $document_srl, $object_key); + $output = $oCacheHandler->get($cache_key); + } + if(!$output) + { + // get the number of comments on the document module + $oDocumentModel = &getModel('document'); + $columnList = array('document_srl', 'module_srl', 'comment_count'); + $oDocument = $oDocumentModel->getDocument($document_srl, false, true, $columnList); + // return if no doc exists. + if(!$oDocument->isExists()) return; + // return if no comment exists + if($oDocument->getCommentCount()<1) return; + // get a list of comments + $module_srl = $oDocument->get('module_srl'); - $point = Context::get('point'); - if($point != -1) $point = 1; + if(!$count) + { + $comment_config = $this->getCommentConfig($module_srl); + $comment_count = $comment_config->comment_count; + if(!$comment_count) $comment_count = 50; + } + else + { + $comment_count = $count; + } + // get a very last page if no page exists + if(!$page) $page = (int)( ($oDocument->getCommentCount()-1) / $comment_count) + 1; + // get a list of comments + $args->document_srl = $document_srl; + $args->list_count = $comment_count; + $args->page = $page; + $args->page_count = 10; - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, false, false); - $module_srl = $oComment->get('module_srl'); - if(!$module_srl) return new Object(-1, 'msg_invalid_request'); - - $oModuleModel = &getModel('module'); - $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); - if($point == -1){ - if($comment_config->use_vote_down!='S') return new Object(-1, 'msg_invalid_request'); - $args->below_point = 0; - }else{ - if($comment_config->use_vote_up!='S') return new Object(-1, 'msg_invalid_request'); - $args->more_point = 0; + //check if module is using validation system + $oCommentController = &getController('comment'); + $using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl); + if($using_validation) + { + $args->status = 1; } - $args->comment_srl = $comment_srl; - $output = executeQueryArray('comment.getVotedMemberList',$args); - if(!$output->toBool()) return $output; - $oMemberModel = &getModel('member'); - if($output->data){ - foreach($output->data as $k => $d){ - $profile_image = $oMemberModel->getProfileImage($d->member_srl); - $output->data[$k]->src = $profile_image->src; - } + $output = executeQueryArray('comment.getCommentPageList', $args); + // return if an error occurs in the query results + if(!$output->toBool()) return; + // insert data into CommentPageList table if the number of results is different from stored comments + if(!$output->data) + { + $this->fixCommentList($oDocument->get('module_srl'), $document_srl); + $output = executeQueryArray('comment.getCommentPageList', $args); + if(!$output->toBool()) return; } - - $this->add('voted_member_list',$output->data); + //insert in cache + if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output); } - /** - * Return a secret status by secret field - * @return array - */ - function getSecretNameList() + return $output; + } + + /** + * Update a list of comments in corresponding with document_srl + * Take care of previously used data than GA version + * @param int $module_srl + * @param int $document_srl + * @return void + */ + function fixCommentList($module_srl, $document_srl) + { + // create a lock file to prevent repeated work when performing a batch job + $lock_file = "./files/cache/tmp/lock.".$document_srl; + if(file_exists($lock_file) && filemtime($lock_file)+60*60*10document_srl = $document_srl; + $args->list_order = 'list_order'; + $output = executeQuery('comment.getCommentList', $args); + if(!$output->toBool()) return $output; + + $source_list = $output->data; + if(!is_array($source_list)) $source_list = array($source_list); + // Sort comments by the hierarchical structure + $comment_count = count($source_list); + + $root = NULL; + $list = NULL; + $comment_list = array(); + // get the log-in information for logged-in users + $logged_info = Context::get('logged_info'); + // generate a hierarchical structure of comments for loop + for($i=$comment_count-1;$i>=0;$i--) { - global $lang; - if(!isset($lang->secret_name_list)) - return array('Y'=>'Secret', 'N'=>'Public'); - else return $lang->secret_name_list; + $comment_srl = $source_list[$i]->comment_srl; + $parent_srl = $source_list[$i]->parent_srl; + if(!$comment_srl) continue; + // generate a list + $list[$comment_srl] = $source_list[$i]; + + if($parent_srl) + { + $list[$parent_srl]->child[] = &$list[$comment_srl]; + } + else + { + $root->child[] = &$list[$comment_srl]; + } } - } -?> + $this->_arrangeComment($comment_list, $root->child, 0, null); + // insert values to the database + if(count($comment_list)) + { + foreach($comment_list as $comment_srl => $item) + { + $comment_args = null; + $comment_args->comment_srl = $comment_srl; + $comment_args->document_srl = $document_srl; + $comment_args->head = $item->head; + $comment_args->arrange = $item->arrange; + $comment_args->module_srl = $module_srl; + $comment_args->regdate = $item->regdate; + $comment_args->depth = $item->depth; + + executeQuery('comment.insertCommentList', $comment_args); + } + } + // remove the lock file if successful. + FileHandler::removeFile($lock_file); + } + + /** + * Relocate comments in the hierarchical structure + * @param array $comment_list + * @param array $list + * @param int $depth + * @param object $parent + * @return void + */ + function _arrangeComment(&$comment_list, $list, $depth, $parent = null) + { + if(!count($list)) return; + foreach($list as $key => $val) + { + if($parent) $val->head = $parent->head; + else $val->head = $val->comment_srl; + $val->arrange = count($comment_list)+1; + + if($val->child) + { + $val->depth = $depth; + $comment_list[$val->comment_srl] = $val; + $this->_arrangeComment($comment_list,$val->child,$depth+1, $val); + unset($val->child); + } + else + { + $val->depth = $depth; + $comment_list[$val->comment_srl] = $val; + } + } + } + + /** + * Get all the comments in time decending order(for administrators) + * @param object $obj + * @param array $columnList + * @return object + */ + function getTotalCommentList($obj, $columnList = array()) + { + $query_id = 'comment.getTotalCommentList'; + // Variables + $args->sort_index = 'list_order'; + $args->page = $obj->page?$obj->page:1; + $args->list_count = $obj->list_count?$obj->list_count:20; + $args->page_count = $obj->page_count?$obj->page_count:10; + $args->s_module_srl = $obj->module_srl; + $args->exclude_module_srl = $obj->exclude_module_srl; + + // check if module is using comment validation system + $oCommentController = &getController("comment"); + $is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl); + if ($is_using_validation) + { + $args->s_is_published = 1; + } + + // Search options + $search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target')); + $search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword')); + if($search_target && $search_keyword) + { + switch($search_target) + { + case 'content' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_content = $search_keyword; + break; + case 'user_id' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_id = $search_keyword; + $query_id = 'comment.getTotalCommentListWithinMember'; + $args->sort_index = 'comments.list_order'; + break; + case 'user_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_name = $search_keyword; + break; + case 'nick_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_nick_name = $search_keyword; + break; + case 'email_address' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_email_address = $search_keyword; + break; + case 'homepage' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_homepage = $search_keyword; + break; + case 'regdate' : + $args->s_regdate = $search_keyword; + break; + case 'last_update' : + $args->s_last_upate = $search_keyword; + break; + case 'ipaddress' : + $args->s_ipaddress= $search_keyword; + break; + case 'is_secret' : + $args->s_is_secret= $search_keyword; + break; + case 'is_published' : + if($search_keyword == 'Y') + { + $args->s_is_published = 1; + } + if($search_keyword == 'N') + { + $args->s_is_published = 0; + } + break; + case 'module': + $args->s_module_srl = (int)$search_keyword; + break; + case 'member_srl' : + $args->{"s_".$search_target} = (int)$search_keyword; + break; + } + } + // comment.getTotalCommentList query execution + $output = executeQueryArray($query_id, $args, $columnList); + // return when no result or error occurance + if(!$output->toBool()||!count($output->data)) return $output; + foreach($output->data as $key => $val) + { + unset($_oComment); + $_oComment = new CommentItem(0); + $_oComment->setAttribute($val); + $output->data[$key] = $_oComment; + } + + return $output; + } + + /** + * Get all the comment count in time decending order(for administrators) + * @param object $obj + * @return int + */ + function getTotalCommentCount($obj) + { + $query_id = 'comment.getTotalCommentCountByGroupStatus'; + // Variables + $args->s_module_srl = $obj->module_srl; + $args->exclude_module_srl = $obj->exclude_module_srl; + // Search options + $search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target')); + $search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword')); + if($search_target && $search_keyword) + { + switch($search_target) + { + case 'content' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_content = $search_keyword; + break; + case 'user_id' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_id = $search_keyword; + $query_id = 'comment.getTotalCommentCountWithinMemberByGroupStatus'; + break; + case 'user_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_name = $search_keyword; + break; + case 'nick_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_nick_name = $search_keyword; + break; + case 'email_address' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_email_address = $search_keyword; + break; + case 'homepage' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_homepage = $search_keyword; + break; + case 'regdate' : + $args->s_regdate = $search_keyword; + break; + case 'last_update' : + $args->s_last_upate = $search_keyword; + break; + case 'ipaddress' : + $args->s_ipaddress= $search_keyword; + break; + case 'is_secret' : + $args->s_is_secret= $search_keyword; + break; + case 'member_srl' : + $args->{"s_".$search_target} = (int)$search_keyword; + break; + } + } + $output = executeQueryArray($query_id, $args); + // return when no result or error occurance + if(!$output->toBool()||!count($output->data)) return $output; + + return $output->data; + } + + /** + * Return a configuration of comments for each module + * @param int $module_srl + * @return object + */ + function getCommentConfig($module_srl) + { + $oModuleModel = &getModel('module'); + $comment_config = $oModuleModel->getModulePartConfig('comment', $module_srl); + if(!isset($comment_config->comment_count)) $comment_config->comment_count = 50; + return $comment_config; + } + + /** + * Return a list of voting member + * @return void + */ + function getCommentVotedMemberList() + { + $comment_srl = Context::get('comment_srl'); + if(!$comment_srl) return new Object(-1,'msg_invalid_request'); + + $point = Context::get('point'); + if($point != -1) $point = 1; + + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl, false, false); + $module_srl = $oComment->get('module_srl'); + if(!$module_srl) return new Object(-1, 'msg_invalid_request'); + + $oModuleModel = &getModel('module'); + $comment_config = $oModuleModel->getModulePartConfig('comment',$module_srl); + if($point == -1) + { + if($comment_config->use_vote_down!='S') return new Object(-1, 'msg_invalid_request'); + $args->below_point = 0; + } + else + { + if($comment_config->use_vote_up!='S') return new Object(-1, 'msg_invalid_request'); + $args->more_point = 0; + } + + $args->comment_srl = $comment_srl; + $output = executeQueryArray('comment.getVotedMemberList',$args); + if(!$output->toBool()) return $output; + + $oMemberModel = &getModel('member'); + if($output->data) + { + foreach($output->data as $k => $d) + { + $profile_image = $oMemberModel->getProfileImage($d->member_srl); + $output->data[$k]->src = $profile_image->src; + } + } + + $this->add('voted_member_list',$output->data); + } + + /** + * Return a secret status by secret field + * @return array + */ + function getSecretNameList() + { + global $lang; + if(!isset($lang->secret_name_list)) + return array('Y'=>'Secret', 'N'=>'Public'); + else return $lang->secret_name_list; + } +} +/* End of file comment.model.php */ +/* Location: ./modules/comment/comment.model.php */ diff --git a/modules/comment/comment.view.php b/modules/comment/comment.view.php index 14209d7a9..07a992f53 100644 --- a/modules/comment/comment.view.php +++ b/modules/comment/comment.view.php @@ -1,49 +1,54 @@ module_srl; - if(!$current_module_srl) return new Object(); - } - // get the comment configuration - $oCommentModel = &getModel('comment'); - $comment_config = $oCommentModel->getCommentConfig($current_module_srl); - Context::set('comment_config', $comment_config); - // get a group list - $oMemberModel = &getModel('member'); - $group_list = $oMemberModel->getGroups(); - Context::set('group_list', $group_list); - // Set a template file - $oTemplate = &TemplateHandler::getInstance(); - $tpl = $oTemplate->compile($this->module_path.'tpl', 'comment_module_config'); - $obj .= $tpl; + if(!$current_module_srl && !$current_module_srls) + { + // get information of the selected module + $current_module_info = Context::get('current_module_info'); + $current_module_srl = $current_module_info->module_srl; + if(!$current_module_srl) return new Object(); + } + // get the comment configuration + $oCommentModel = &getModel('comment'); + $comment_config = $oCommentModel->getCommentConfig($current_module_srl); + Context::set('comment_config', $comment_config); + // get a group list + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + // Set a template file + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($this->module_path.'tpl', 'comment_module_config'); + $obj .= $tpl; - return new Object(); - } - } -?> + return new Object(); + } +} +/* End of file comment.view.php */ +/* Location: ./modules/comment/comment.view.php */