도와주세요

XE/php 질문 2가지

title: 만렙이 되어보자도토리묵2019.01.25 04:04조회 수 46댓글 0

    • 글자 크기

애드온 제작 도중에 큰 난관에 걸려서 질문하고자 합니다.


랜덤으로 댓글 입력 애드온을 제작하던 도중, 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 다중선택 가능을 좀 어떻게 해보고 싶은데 후..ㅠ


개인블로그: https://dtmk.tistory.com

    • 글자 크기
파이썬 공부하다 모르는 부분이 있습니다. (by 맛스타) trumbowyg 에디터를 그누보드 아미나빌더에 삽입중입니다. (by 홀민)

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 5254
공지 [필독] 질문하는 방법5 마스터 2018.02.23 717
539 그누보드 5 설치 오류 도와주세요3 김호창 2019.02.15 81
538 TXT레코드 관련 도와주세[요!7 AA 2019.02.14 88
537 라이믹스 ckeditor42 캣치 2019.02.13 60
536 SQL문을 PHP에서 실행시켰는데 안되네요7 Piedots 2019.02.11 68
535 [Python 질문] 재귀함수의 알고리즘이 잘 이해가 되지 않습니다.13 맛스타 2019.02.09 154
534 하천 복개 공사가 서버에 영향을 미칠까요?4 이니스프리 2019.02.09 64
533 미국 간편식 추천 부탁드립니다14 이니스프리 2019.01.29 108
532 라엘 님의 이미지 캐시 서버 구축하기와 관련하여 구체적인 방법을 여쭤봅니다4 이니스프리 2019.01.27 104
531 일본어 '도키도키'의 뜻을 어떻게 해석해야 하나요?11 이니스프리 2019.01.26 121
530 아이폰8+ 네비 사용시 발열(?) 문제에 대한 해결책을 여쭤봅니다10 이니스프리 2019.01.26 109
529 파이썬 공부하다 모르는 부분이 있습니다.14 맛스타 2019.01.26 133
XE/php 질문 2가지 title: 만렙이 되어보자도토리묵 2019.01.25 46
527 trumbowyg 에디터를 그누보드 아미나빌더에 삽입중입니다.10 홀민 2019.01.25 94
526 PHP 순서 매기기3 title: 에그joyful 2019.01.23 52
525 세션연동부분에 대하여 도움이 필요합니다.2 Hanam09 2019.01.21 51
524 Input submit 버튼2 Piedots 2019.01.20 50
523 x-y넷에서 내 웹사이트에서 트래픽 사용 현황을 볼 수 있는 php소스가 있었습니다2 없음 2019.01.20 58
522 POST 데이터가 보내지지 않습니다5 Piedots 2019.01.20 64
521 도메인 포워딩이 제대로 이루어지지 않습니다.4 title: 애프터 이펙트제르엘 2019.01.20 58
520 게시판 중복확인 만들다가 너무 허탈해서 올려봅니다5 Piedots 2019.01.19 95
이전 1 2 3 4 5 6 7 8 9 10... 27다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...