Extra Form
PHP PHP 5.x
CMS XpressEngine1

자동글쓰기 애드온을 만들고있습니다.

xe의 기능을 만들어보는것은 처음인지라

개발자메뉴얼 보고 개념 익히고 기존 애드온들 봐가면서 짜맞춰 가고 있습니다.

 

 

 

autowrite.addon.php 

 

$logged_info = Context::get('logged_info');

$module_info = Context::get('module_info');

if($logged_info && $logged_info->is_admin == 'Y' && $module_info->auto_write == "Y" && stripos(Context::get('act'), 'dispBoardAdminBoardInfo') !== false && $called_position == 'before_module_proc')

{

    $oAutowriteController = getController('autowrite');

   

   

    $oAutowriteController->insertExtraVars($module_info);

   

    $output = executeQuery('document.getGroupsExtraVars', $args);

    if ($output->toBool() && $output->data) {

        //$extraVars = $output->data;

    }

    // generate document module model object

    $oDocumentModel = getModel('document');

    $oDocumentController = getController('document');

    $auto_write_range_day = $module_info->auto_write_range * 30;

    for($i = 0; $i < $auto_write_range_day; $i++) {

        $date_ymdHi = date("Y-m-d H:i", strtotime("+".$i." day"));

        $obj = new stdClass();

        $obj->module_srl = $module_info->module_srl;

        $obj->is_notice = 'N';

        $obj->comment_status = "ALLOW";

        $obj->commentStatus = "ALLOW";

        $obj->use_editor = "N";

        $obj->use_html = "N";

        $obj->title = date("Y-m-d", strtotime("+".$i." day"));

        $obj->content = date("Y-m-d", strtotime("+".$i." day"));

        $obj->_filter = "insert";

        $obj->error_return_url = "/index.php?mid=audio_reservation&act=dispBoardWrite";

        $obj->act = "procBoardInsertDocument";

        $obj->mid = $module_info->mid;

        $obj->document_srl = "0";

        $obj->status = "PUBLIC";

        $obj->extra_vars1 = "예약";

        $obj->extra_vars2 = date("Y-m-d", strtotime("+".$i." day"));

        $obj->extra_vars3 = "1";

        $obj->module = "board";

        $bAnonymous = false;

        $out = $oDocumentController->insertDocument($obj, $bAnonymous);

    }

     

}

 

여기서 문제가 되는게 

$out = $oDocumentController->insertDocument($obj, $bAnonymous); 

이부분인데 

board 모듈이 글쓰기를 할 때 처럼 insertDocument를 호출해봤으나

글쓰기는 되지 않고 $out을 출력해보니

BaseObject Object

(

    [error] => -1

    [message] => 잘못된 요청입니다.

    [variables] => Array

        (

        )

 

    [httpStatusCode] =>

)

 

잘못된 요청이랍니다.

무엇부터 잘못 되었는지 도움 부탁드립니다!

 

아 그리고 자동으로 글쓰기를 만들기 위해서 다른 좋은 방법이 있을까요?

  • profile
    (라이믹스 기준으로 댓글을 달아 다시 체크했는데 XE도 같네요)

    https://github.com/xpressengine/xe-core/blob/develop/modules/document/document.controller.php#L194

    두번째 인자는 익명 여부가 아니라 수동 작성 여부가 들어갑니다. false를 넘기면 수동 작성이 되어 리퍼러 헤더가 없는 경우 글이 작성되지 않습니다.

    참고로 XE1은 현재 사실상 개발이 중단된 상태입니다. XE 개발팀이 보안패치 적용을 약속했으나 2주가 다 되어가는 시점에서 약속을 지키지 않는등 이후 유지보수가 이루어지지 않을 가능성이 매우 높습니다. XE 기준으로 자료를 만드시는것보다 라이믹스 기준으로 자료를 만드시는것을 권장드립니다.
  • profile ?
    답변 감사합니다.
    완벽히 동작합니다.
    xe는 점점 안쓰는 추세인것 같더군요