Extra Form
PHP PHP 7.2
CMS Rhymix

                // 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);
                }
                
            }
        }

  • profile
    $extra_vars를 초기화하는 코드를 좀더 위로 올려보세요. $extra_args 초기화할 때 같이 해주시거나...
  • profile profile

    네. 안그래도 지금 $extra_vars = new stdClass(); 를 foreach 밖 바로 위쪽으로 빼 놓고 시간을 기다려 보는 중입니다. 바로 테스트 해도 되는데 2시간 4시간 마다 크론탭에서 실행하게 해놔서 자동으로 실행되는 결과를 보려고 합니다.

  • profile profile

    foreach 문 바로 밖의 윗줄에서 반응이 없네요.
    $extra_args 초기화 할때 위치로 더 올려 봐야겠습니다.

    직접 게시판 접속해서 테스트 해봤는데 위쪽으로 옮겨도 동일하게 rss 수집해서 게시글 등록 과정이 진행이 안되네요.

  • profile profile
    rss 키워드 필터 설정에 걸려서 게시글 작성이 스킵 되었을 가능성이 높네요. 해당 사이트에서 제가 올라온 뉴스가 하필이면 제외 키워드 포함이라 다시 수정해서 모니터링 해봐야겠습니다.
  • profile profile
    이 모듈 쓰는 분들을 위해 마지막 결과 알려드리면 $extra_vars = new stdClass(); 를 foreach 밖 바로 위쪽으로 빼 서 해결이 되었습니다.

    대상 언론사에서 타게팅 된 기사가 없어서 가져오지 못했고 키워드 필터링 안되는 뉴스가 올라와서 방금 정상적으로 작동되는 것 확인 되었습니다.