Xrss 모듈 warning 에러 처리 문의
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
// ExtraVars
$extra_args->module_srl = $midArraySrl;
$extra_output = executeQueryArray('module.getModuleExtraVars', $extra_args);
if ($extra_output->toBool() && is_array($extra_output->data)){
foreach($extra_output->data as $var){
$extra_vars->{$var->name} = $var->value;
}
}
위와 같은 코드에서 굵게 칠한 부분이 에러 라인으로 지목이 됩니다.
Warning: Creating default object from empty value 에러인데요.
제가 예상한대로 처리 해봤더니 에러는 사라지는데 rss로 게시글 생성이 안되더군요.
가각 굵은표시 윗줄에
$extra_args = new stdClass();
$extra_args->module_srl = $midArraySrl;
$extra_output = executeQueryArray('module.getModuleExtraVars', $extra_args);
if ($extra_output->toBool() && is_array($extra_output->data)){
foreach($extra_output->data as $var){
$extra_vars = new stdClass();
$extra_vars->{$var->name} = $var->value;
}
}
붉은색으로 했더니 게시글이 등록이 안되네요.
함수 전체 코드 입니다.
function triggerXrssDisplayBefore(&$output)
{
$act = Context::get('act');
$module = Context::get('module');
$mid = Context::get('mid');
if($act || $module == 'admin') return;
// 지정된 보드인지 체크
$midArray = array();
$oModuleModel = &getModel('module');
// Aplly List
$module_config = $oModuleModel->getModuleConfig('xrss');
$midArray = explode(",",$module_config->collect_mid);
if(!$midArray) return;
// Exec
for($i=0;$i<count($midArray);$i++){
// Srl
$midArraySrl = $oModuleModel->getModuleInfoByMid(trim($midArray[$i]))->module_srl;
if(!$midArraySrl) continue;
// ExtraVars
$extra_args->module_srl = $midArraySrl;
$extra_output = executeQueryArray('module.getModuleExtraVars', $extra_args);
if ($extra_output->toBool() && is_array($extra_output->data)){
foreach($extra_output->data as $var){
$extra_vars->{$var->name} = $var->value;
}
}
$args = new stdClass;
for($k=0;$k<$extra_vars->list_cnt;$k++){
$str = 'list'.$k;
$val = unserialize($extra_vars->$str);
$args->$str=$val;
}
$xrssAdminModel = getAdminModel('xrss');
$list_array = $xrssAdminModel->objectToArray($args);
// Insert
for($k=0;$k < count($list_array);$k++){
if($list_array['list'.$k]['mid'] !== $mid) continue;
if($list_array['list'.$k]['used'] !== 'Y') continue;
// Rss Insert
if($list_array['list'.$k]['rss_used'] == 'Y')
$this->collect_exec($list_array, $midArraySrl, $k);
// Youtube Insert
if($list_array['list'.$k]['yu_used'] == 'Y')
$this->collect_yu_exec($list_array, $midArraySrl, $k);
// Instagram Insert
if($list_array['list'.$k]['in_used'] == 'Y')
$this->collect_in_exec($list_array, $midArraySrl, $k);
}
}
}
댓글 5
네. 안그래도 지금 $extra_vars = new stdClass(); 를 foreach 밖 바로 위쪽으로 빼 놓고 시간을 기다려 보는 중입니다. 바로 테스트 해도 되는데
2시간4시간 마다 크론탭에서 실행하게 해놔서 자동으로 실행되는 결과를 보려고 합니다.foreach 문 바로 밖의 윗줄에서 반응이 없네요.
$extra_args 초기화 할때 위치로 더 올려 봐야겠습니다.
직접 게시판 접속해서 테스트 해봤는데 위쪽으로 옮겨도 동일하게 rss 수집해서 게시글 등록 과정이 진행이 안되네요.
대상 언론사에서 타게팅 된 기사가 없어서 가져오지 못했고 키워드 필터링 안되는 뉴스가 올라와서 방금 정상적으로 작동되는 것 확인 되었습니다.