도와주세요

XE/php 질문 2가지

도토리묵2019.01.25 04:04조회 수 56댓글 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 다중선택 가능을 좀 어떻게 해보고 싶은데 후..ㅠ


I luv React

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

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 사이트 정보 등록에 경고로 변경된 분들 참고하세요.6 마스터 2019.06.19 648
공지 [중요 공지 포함] 사이트가 복구 되었습니다.40 마스터 2019.06.18 769
공지 호스팅 신청이 다시 가능합니다.17 마스터 2019.04.18 1776
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 7252
공지 [필독] 질문하는 방법5 마스터 2018.02.23 964
XE/php 질문 2가지 도토리묵 2019.01.25 56
527 trumbowyg 에디터를 그누보드 아미나빌더에 삽입중입니다.10 홀민 2019.01.25 119
526 PHP 순서 매기기3 title: 에그joyful 2019.01.23 70
525 세션연동부분에 대하여 도움이 필요합니다.2 Hanam09 2019.01.21 87
524 Input submit 버튼2 Piedots 2019.01.20 55
523 x-y넷에서 내 웹사이트에서 트래픽 사용 현황을 볼 수 있는 php소스가 있었습니다2 없음 2019.01.20 66
522 POST 데이터가 보내지지 않습니다5 Piedots 2019.01.20 83
521 도메인 포워딩이 제대로 이루어지지 않습니다.4 title: 애프터 이펙트제르엘 2019.01.20 91
520 게시판 중복확인 만들다가 너무 허탈해서 올려봅니다5 Piedots 2019.01.19 104
519 사이트 정보 등록2 캣치 2019.01.19 62
518 PHP잘하시는분 계신가요...?4 title: 에그joyful 2019.01.17 67
517 XE에서 포인트 부족할시 알림창 띄우기3 도토리묵 2019.01.17 73
516 비번을 변경해야하는데 도와주세요 스포어 비번이요1 더딘 2019.01.16 53
515 giphy, gfycat 등 사이트가 일부 브라우저 또는 기기에서 문제가 있나요?4 이니스프리 2019.01.15 72
514 음 제 블로그가 증발한건가요...?21 협스 2019.01.13 176
513 미디어플렛폼 vs 커뮤니티55 title: 에그joyful 2019.01.13 309
512 판단 대기 시간6 없음 2019.01.11 97
511 링크파싱 애드온에서 대표사진 파일 수집과 관련하여 질문 드립니다 ^^9 이니스프리 2019.01.10 100
510 비밀번호 값이 불러와지지 않습니다.2 Piedots 2019.01.05 51
509 사이트 정보 등록1 없음 2019.01.05 66
이전 1 2 3 4 5 6 7 8 9 10... 30다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...