module_srl); if(!file_exists($cache_file)) FileHandler::writeFile($cache_file, $this->loadWikiTreeList($this->module_srl)); print FileHandler::readFile($cache_file); Context::close(); exit(); } function loadWikiTreeList($module_srl) { // 문서 목록 $list = array(); // 목록을 구함 $args->module_srl = $module_srl; $output = executeQueryArray('wiki.getTreeList', $args); // 구해온 데이터가 없다면 빈 XML파일 return if($output->data) { // 데이트를 이용하여 XML 문서로 생성 foreach($output->data as $node) { $tree[(int)$node->parent_srl][$node->document_srl] = $node; } // XML 데이터를 생성 $xml_doc = ''.$this->getXmlTree($tree[0], $tree).''; } else { $xml_doc = ''; } return $xml_doc; } function getXmlTree($source_node, $tree) { if(!$source_node) return; foreach($source_node as $document_srl => $node) { $child_buff = ""; // 자식 노드의 데이터 가져옴 if($document_srl && $tree[$document_srl]) $child_buff = $this->getXmlTree($tree[$document_srl], $tree); // 변수 정리 $parent_srl = $node->parent_srl; $title = $node->title; $attribute = sprintf( 'node_srl="%d" parent_srl="%d" title="%s" ', $document_srl, $parent_srl, $title ); if($child_buff) $buff .= sprintf('%s', $attribute, $child_buff); else $buff .= sprintf('', $attribute); } return $buff; } function getContributors($document_srl) { $oDocumentModel = &getModel('document'); $oDocument = $oDocumentModel->getDocument($document_srl); if(!$oDocument->isExists()) return array(); $args->document_srl = $document_srl; $output = executeQueryArray("wiki.getContributors", $args); if($output->data) $list = $output->data; else $list = array(); $item->member_srl = $oDocument->getMemberSrl(); $item->nick_name = $oDocument->getNickName(); $contributors[] = $item; for($i=0,$c=count($list);$i<$c;$i++) { unset($item); $item->member_srl = $list[$i]->member_srl; $item->nick_name = $list[$i]->nick_name; if($item->member_srl == $oDocument->getMemberSrl()) continue; $contributors[] = $item; } return $contributors; } } ?>