if(Context::get("act") == "procBoardInsertDocument" && $called_position == "after_module_proc"){
}
이때 동작하게 되어있는 애드온입니다.
그런데 이 애드온은 지정된 게시판에서 작동하게 되었습니다.
일반적인 방문자가 작성한다면 당연히 해당 게시글에서 작성이 되기 때문에 위 act 시점에 동작이 됩니다.
그런데 만약 봇(모듈)이 글을 작성을 한다면 동작 자체가 불가능 한건가요???
만약 가능하다면 봇이 작성하는 php 코드안에 포함되어야 할 내용이 있는건가요?
rss 수집을 해서 해당 mid 게시판에 게시글이 자동으로 등록이 됩니다.
rss 수집을 하기 위해 crontab을 이용해 /mid?cron=1 이라는 주소로 접속을 시도하기 때문에 해당 mid에 접속은 잠시 되는 것 같습니다. 근데 게시글을 작성해서 insert 할때 애드온이 작동하는 mid에 머물고 있는 것으로 인식을 하는건지....
어찌 되었던 해당 애드온은 저 형태의 게시글 작성시에는 작동을 안하고 있어서 질문하게 되었습니다.
만약 어떤 모듈이 특정 조건에 따라 자동으로 글을 만들어내는 것을 "봇"이라고 부르시는 거라면 상황이 다릅니다. procBoardInsertDocument는 글을 등록해 달라고 서버에 요청할 때 쓰는 액션명이므로, 서버 내에서 자체적으로 글을 생산해낼 때는 그 액션명이 필요하지 않습니다. DocumentController를 불러와서 insertDocument 함수를 직접 실행하겠지요.
어떤 경로로 글을 썼든, 글이 작성될 때마다 무조건 끼어들기 위해서는 document.insertDocument (after) 트리거를 사용해야 합니다. 그런데 XE에서 트리거는 모듈의 전유물입니다. (라이믹스에서는 애드온도 트리거를 쓸 수 있습니다.) 따라서 procBoardInsertDocument가 아닌 다른 액션에서 글이 작성될 때도 항상 정확하게 끼어들기 위해서는 애드온이 아니라 모듈을 만들어야 합니다.
만약 글을 만들어내는 모듈이 아주 특정한 상황에서만 동작한다면 그것과 똑같은 상황을 조건으로 걸어서 애드온이 실행되도록 할 수도 있습니다. 그러나 조건을 100% 동일하게 맞추지 않으면 이상하게 작동할 수도 있으므로 그다지 권장하는 방법은 아닙니다.