애드온 제작 도중에 큰 난관에 걸려서 질문하고자 합니다.
랜덤으로 댓글 입력 애드온을 제작하던 도중, member_srl 다중선택과 댓글 시간차 입력을 적용하고자 합니다
member_srl는 콤마로 구분하려고 합니다. info.xml과 적절히 조합하면 될듯한데..끙..;
그리고 댓글을 시간차 입력도 어떻게 해야하는지 도저히 모르겠네요. 대충 10분이따 자동으로 등록되게 하고 싶은데;
auto_random_reply.addon.php
<?php //php 문서 시작
if(!defined('__ZBXE__') && !defined('__XE__')) exit(); //XE가 아닐 경우 작동하지 않음
/**
* @file auto_random_reply.addon.php
* @brief 자동 랜덤댓글 애드온
* @nick_name 도토리묵
* 선택한 게시판에 등록된 글에 댓글을 랜덤하게 작성해주는 애드온입니다.
**/
//애드온이 사용 중일 때만 작동
if($addon_info->use_addon == 'Y'){
$document_srl = Context::get('document_srl'); //document_srl을 받아옴
$multi_readed_count = 0; //조회수가 중복으로 증가하지 않도록 하기 위한 변수
$multi_readed_count = $_SESSION['auto_random_reply_readed_count'][$document_srl]; //생성된 세션의 카운트를 저장함
if($document_srl && $multi_readed_count != '1') { //문서이고 조회수가 증가하지 않았을 경우에만
$args->document_srl = $document_srl;
executeQuery('addons.auto_random_reply.updateReadedCount1', $args);
$_SESSION['auto_random_reply_readed_count'][$document_srl] = $multi_readed_count + 1; // 동일글 조회수를 올려서 작동 중지 시킴
}
if($called_position == 'after_module_proc'){ //해당 모듈이 작동하고 난 후에 작동
//메세지가 있으면 출력후 패스
if($_SESSION['addon_auto_random_reply_msg'] && $this->act == 'dispBoardContent'){
unset($_SESSION['addon_auto_random_reply_msg']); //변수를 해제함
return;
}
//에러시 패스
if($this->error) return;
//파일 업로드시
if($this->act == 'procFileUpload'){
//업로드시 새문서 체크
$_SESSION['addon_auto_random_reply_uploadTargetSrl'] = Context::get('uploadTargetSrl') ? false:true;
}
if( $this->act == 'procBoardInsertDocument' ){
$upload_srl = $_SESSION['addon_auto_random_reply_uploadTargetSrl']; //파일이 업로드 된 정보를 넘김
unset($_SESSION['addon_auto_random_reply_uploadTargetSrl']); //변수를 해제
//해당 액션이고 신규 문서이면
if( $this->act=='procBoardInsertDocument' && (!Context::get('document_srl') || (Context::get('document_srl') && $upload_srl) ) ) $addon_act = 'document';
elseif( $this->act=='procBoardInsertComment' && (!Context::get('comment_srl') || (Context::get('comment_srl') && $upload_srl) ) ) $addon_act = 'comment';
else return;
$oLogIfo = Context::get('logged_info'); //로그인 정보를 받아옴
//최고 관리자이거나 로그인 유저가 아니면 패스
if(!$oLogIfo->member_srl || ($oLogIfo->is_admin == 'Y' && $addon_info->is_admin == 'N') || $oLogIfo->denied =='Y') return;
$oMemberModel = &getModel('member');
$member_info=$oMemberModel->getMemberInfoByMemberSrl($addon_info->member_srl);
$com_nick = $addon_info->nick_name;
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
while(true){
mt_srand(make_seed());
$randomNum = mt_rand(1, 10);
if($randomNum == 1 && $addon_info->cm1_use == 'Y'){
$com_ment = $addon_info->comment_ment1;
break;
}
elseif($randomNum == 2 && $addon_info->cm2_use == 'Y'){
$com_ment = $addon_info->comment_ment2;
break;
}
elseif($randomNum == 3 && $addon_info->cm3_use == 'Y'){
$com_ment = $addon_info->comment_ment3;
break;
}
elseif($randomNum == 4 && $addon_info->cm4_use == 'Y'){
$com_ment = $addon_info->comment_ment4;
break;
}
elseif($randomNum == 5 && $addon_info->cm5_use == 'Y'){
$com_ment = $addon_info->comment_ment5;
break;
}
elseif($randomNum == 6 && $addon_info->cm6_use == 'Y'){
$com_ment = $addon_info->comment_ment6;
break;
}
elseif($randomNum == 7 && $addon_info->cm7_use == 'Y'){
$com_ment = $addon_info->comment_ment7;
break;
}
elseif($randomNum == 8 && $addon_info->cm8_use == 'Y'){
$com_ment = $addon_info->comment_ment8;
break;
}
elseif($randomNum == 9 && $addon_info->cm9_use == 'Y'){
$com_ment = $addon_info->comment_ment9;
break;
}
elseif($randomNum == 10 && $addon_info->cm10_use == 'Y'){
$com_ment = $addon_info->comment_ment10;
break;
}
}
$success = true; //준비 과정을 마쳤을 때
if($success){
if($addon_info->member_srl != '') {
$comObj->member_srl = $member_info->member_srl;
$comObj->user_name = $member_info->user_name;
$comObj->user_id = $member_info->user_id;
$comObj->nick_name = $member_info->nick_name;
}
else{
$comObj->member_srl = $addon_info->member_srl;
$comObj->user_name = 'random';
$comObj->user_id = 'random';
$comObj->nick_name = $com_nick;
}
$comObj->email_address = $comObj->homepage = ''; //댓글 작성자의 email_address, homepage, user_id ''로 초기화
$comObj->module_srl = $this->module_srl;
$comObj->document_srl = $this->variables['document_srl'];
$comObj->content = $com_ment;
$ccComment = &getController('comment');
$bk_avoidlog = $_SESSION['avoid_log'];
$_SESSION['avoid_log'] = true;
$tmpout = $ccComment->insertComment($comObj, true);
$_SESSION['avoid_log'] = $bk_avoidlog;
unset($_SESSION['own_comment'][$tmpout->get('comment_srl')]);
// 최신 댓글수를 가져옴
$oCommentModel = getModel('comment');
$comment_count = $oCommentModel->getCommentCount($comObj->document_srl);
$comment_count = max(1, $comment_count);
// 문서의 댓글수 업데이트
$oDocumentController = getController('document');
$oDocumentController->updateCommentCount($comObj->document_srl, $comment_count, $comObj->nick_name);
$com_ment = preg_replace("\r|\n", "", strip_tags($com_ment,'<br>'));
$com_ment = str_replace('&', '&', $com_ment);
$_SESSION['addon_auto_random_reply_msg'] = str_replace('"','`',preg_replace('/\<br(\s*)?\/?\>/i', '\n', $com_ment));
}
}
}
}
?>
info.xml
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title>자동 랜덤댓글 애드온</title>
<description>
선택한 게시판에 등록된 글에 댓글을 랜덤하게 작성해주는 애드온입니다. 키스투엑스이님의 자동 댓글달기 애드온을 참조하였습니다.
</description>
<version>1.0.0</version>
<date>2019-01-24</date>
<author link="https://4ramin.github.io">
<name xml:lang="ko">도토리묵</name>
</author>
<extra_vars>
<var name="use_addon" type="select">
<title>애드온 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
<description>
사용함 - 해당 애드온을 사용합니다.
사용 안 함 - 해당 애드온을 사용하지 않습니다.
</description>
</var>
<var name="member_srl" type="text" default="0">
<title>댓글 작성 계정의 member_srl</title>
<description>
댓글 작성 계정의 member_srl을 입력해주세요.
공란으로 둘 시, member_srl이 0인 가상의 유저를 만듭니다. (회원목록에는 조회 되지 않습니다.)
댓글 작성 계정을 지정하면, 작성한 댓글 등에서 프로필사진, 회원정보 등을 설정이 가능합니다.
댓글 작성 계정의 프로필사진 등을 설정하시면 댓글이 작성될 때 설정해둔 프로필사진과 회원정보로 나옵니다.
</description>
</var>
<var name="nick_name" type="text">
<title>댓글 작성 계정의 닉네임</title>
<description>
member_srl을 입력할 경우 입력할 필요 없습니다.
member_srl을 입력하지 않을 경우 비회원으로 작성하기 때문에 댓글 작성 계정의 닉네임을 지정해야 합니다.
</description>
</var>
<var name="is_admin" type="select">
<title>관리자 포함 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
<description>
사용함 - 최고 관리자의 글에도 댓글이 달립니다.
사용 안 함 - 회원들의 글에만 댓글이 달립니다.
</description>
</var>
<var name="cm1_use" type="select">
<title>댓글 내용1 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment1" type="text">
<title>댓글 내용1</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm2_use" type="select">
<title>댓글 내용2 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment2" type="text">
<title>댓글 내용2</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm3_use" type="select">
<title>댓글 내용3 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment3" type="text">
<title>댓글 내용3</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm4_use" type="select">
<title>댓글 내용4 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment4" type="text">
<title>댓글 내용4</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm5_use" type="select">
<title>댓글 내용5 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment5" type="text">
<title>댓글 내용5</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm6_use" type="select">
<title>댓글 내용6 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment6" type="text">
<title>댓글 내용6</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm7_use" type="select">
<title>댓글 내용7 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment7" type="text">
<title>댓글 내용7</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm8_use" type="select">
<title>댓글 내용8 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment8" type="text">
<title>댓글 내용8</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm9_use" type="select">
<title>댓글 내용9 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment9" type="text">
<title>댓글 내용9</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
<var name="cm10_use" type="select">
<title>댓글 내용10 사용 여부</title>
<options value="N">
<title>사용 안 함</title>
</options>
<options value="Y">
<title>사용함</title>
</options>
</var>
<var name="comment_ment10" type="text">
<title>댓글 내용10</title>
<description>
작성될 댓글의 내용을 작성합니다.
</description>
</var>
</extra_vars>
</addon>
시간차 입력과, member_srl 다중선택 가능을 좀 어떻게 해보고 싶은데 후..ㅠ
댓글 달기