Esempio n. 1
0
 /**
  * Extra variables for each article will not be processed bulk select and apply the macro city
  * @return void
  */
 function setToAllDocumentExtraVars()
 {
     static $checked_documents = array();
     $_document_list =& $GLOBALS['XE_DOCUMENT_LIST'];
     // XE XE_DOCUMENT_LIST all documents that the object referred to the global variable settings
     if (count($_document_list) <= 0) {
         return;
     }
     // Find all called the document object variable has been set extension
     $document_srls = array();
     foreach ($_document_list as $key => $val) {
         if (!$val->document_srl || $checked_documents[$val->document_srl]) {
             continue;
         }
         $checked_documents[$val->document_srl] = true;
         $document_srls[] = $val->document_srl;
     }
     // If the document number, return detected
     if (!count($document_srls)) {
         return;
     }
     // Expand variables mijijeongdoen article about a current visitor to the extension of the language code, the search variable
     //$obj->document_srl = implode(',',$document_srls);
     $output = $this->getDocumentExtraVarsFromDB($document_srls);
     if ($output->toBool() && $output->data) {
         foreach ($output->data as $key => $val) {
             if (!isset($val->value)) {
                 continue;
             }
             if (!$extra_vars[$val->module_srl][$val->document_srl][$val->var_idx][0]) {
                 $extra_vars[$val->module_srl][$val->document_srl][$val->var_idx][0] = trim($val->value);
             }
             $extra_vars[$val->document_srl][$val->var_idx][$val->lang_code] = trim($val->value);
         }
     }
     $user_lang_code = Context::getLangType();
     for ($i = 0, $c = count($document_srls); $i < $c; $i++) {
         $document_srl = $document_srls[$i];
         unset($vars);
         if (!$_document_list[$document_srl] || !is_object($_document_list[$document_srl]) || !$_document_list[$document_srl]->isExists()) {
             continue;
         }
         $module_srl = $_document_list[$document_srl]->get('module_srl');
         $extra_keys = $this->getExtraKeys($module_srl);
         $vars = $extra_vars[$document_srl];
         $document_lang_code = $_document_list[$document_srl]->get('lang_code');
         // Expand the variable processing
         if (count($extra_keys)) {
             foreach ($extra_keys as $idx => $key) {
                 $extra_keys[$idx] = clone $key;
                 $val = $vars[$idx];
                 if (isset($val[$user_lang_code])) {
                     $v = $val[$user_lang_code];
                 } else {
                     if (isset($val[$document_lang_code])) {
                         $v = $val[$document_lang_code];
                     } else {
                         if (isset($val[0])) {
                             $v = $val[0];
                         } else {
                             $v = null;
                         }
                     }
                 }
                 $extra_keys[$idx]->value = $v;
             }
         }
         unset($evars);
         $evars = new ExtraVar($module_srl);
         $evars->setExtraVarKeys($extra_keys);
         // Title Processing
         if ($vars[-1][$user_lang_code]) {
             $_document_list[$document_srl]->add('title', $vars[-1][$user_lang_code]);
         }
         // Information processing
         if ($vars[-2][$user_lang_code]) {
             $_document_list[$document_srl]->add('content', $vars[-2][$user_lang_code]);
         }
         if ($vars[-1][$user_lang_code] || $vars[-2][$user_lang_code]) {
             unset($checked_documents[$document_srl]);
         }
         $GLOBALS['XE_EXTRA_VARS'][$document_srl] = $evars->getExtraVars();
     }
 }
Esempio n. 2
0
 /**
  * @brief 확장변수를 매 문서마다 처리하지 않기 위해 매크로성으로 일괄 select 및 적용
  **/
 function setToAllDocumentExtraVars()
 {
     static $checked_documents = array();
     // XE에서 모든 문서 객체는 XE_DOCUMENT_LIST라는 전역 변수에 세팅을 함
     if (!count($GLOBALS['XE_DOCUMENT_LIST'])) {
         return;
     }
     // 모든 호출된 문서 객체를 찾아서 확장변수가 설정되었는지를 확인
     $document_srls = array();
     foreach ($GLOBALS['XE_DOCUMENT_LIST'] as $key => $val) {
         if ($checked_documents[$val->document_srl]) {
             continue;
         }
         $checked_documents[$val->document_srl] = true;
         $document_srls[] = $val->document_srl;
     }
     // 검출된 문서 번호가 없으면 return
     if (!count($document_srls)) {
         return;
     }
     // 확장변수 미지정된 문서에 대해서 일단 현재 접속자의 언어코드로 확장변수를 검색
     $obj->document_srl = implode(',', $document_srls);
     $output = executeQueryArray('document.getDocumentExtraVars', $obj);
     if ($output->toBool() && $output->data) {
         foreach ($output->data as $key => $val) {
             if (!trim($val->value)) {
                 continue;
             }
             if (!$extra_vars[$val->module_srl][$val->document_srl][$val->var_idx][0]) {
                 $extra_vars[$val->module_srl][$val->document_srl][$val->var_idx][0] = trim($val->value);
             }
             $extra_vars[$val->document_srl][$val->var_idx][$val->lang_code] = trim($val->value);
         }
     }
     $user_lang_code = Context::getLangType();
     for ($i = 0, $c = count($document_srls); $i < $c; $i++) {
         $document_srl = $document_srls[$i];
         unset($vars);
         if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl] || !is_object($GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) || !$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->isExists()) {
             continue;
         }
         $module_srl = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->get('module_srl');
         $extra_keys = $this->getExtraKeys($module_srl);
         $vars = $extra_vars[$document_srl];
         $document_lang_code = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->get('lang_code');
         // 확장변수 처리
         if (count($extra_keys)) {
             foreach ($extra_keys as $idx => $key) {
                 $val = $vars[$idx];
                 if ($val[$user_lang_code]) {
                     $v = $val[$user_lang_code];
                 } else {
                     if ($val[$document_lang_code]) {
                         $v = $val[$document_lang_code];
                     } else {
                         if ($val[0]) {
                             $v = $val[0];
                         } else {
                             $v = null;
                         }
                     }
                 }
                 $extra_keys[$idx]->value = $v;
             }
         }
         unset($evars);
         $evars = new ExtraVar($module_srl);
         $evars->setExtraVarKeys($extra_keys);
         // 제목 처리
         if ($vars[-1][$user_lang_code]) {
             $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->add('title', $vars[-1][$user_lang_code]);
         }
         // 내용 처리
         if ($vars[-2][$user_lang_code]) {
             $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]->add('content', $vars[-2][$user_lang_code]);
         }
         $GLOBALS['XE_EXTRA_VARS'][$document_srl] = $evars->getExtraVars();
     }
 }