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