/** * Get a document list from the trash * @param object $obj * @return object */ function getDocumentTrashList($obj) { // check a list and its order if (!in_array($obj->sort_index, array('list_order', 'delete_date', 'title'))) { $obj->sort_index = 'list_order'; } if (!in_array($obj->order_type, array('desc', 'asc'))) { $obj->order_type = 'asc'; } // get a module_srl if mid is returned instead of modul_srl if ($obj->mid) { $oModuleModel = getModel('module'); $obj->module_srl = $oModuleModel->getModuleSrlByMid($obj->mid); unset($obj->mid); } // check if the module_srl is an array $args = new stdClass(); if (is_array($obj->module_srl)) { $args->module_srl = implode(',', $obj->module_srl); } else { $args->module_srl = $obj->module_srl; } // Variable check $args->sort_index = $obj->sort_index; $args->order_type = $obj->order_type; $args->page = $obj->page ? $obj->page : 1; $args->list_count = $obj->list_count ? $obj->list_count : 20; $args->page_count = $obj->page_count ? $obj->page_count : 10; $args->member_srl = $obj->member_srl; // Specify query_id $query_id = 'document.getTrashList'; // Execute a query $output = executeQueryArray($query_id, $args); // Return if no result or an error occurs if (!$output->toBool() || !count($output->data)) { return $output; } $idx = 0; $data = $output->data; unset($output->data); $keys = array_keys($data); $virtual_number = $keys[0]; foreach ($data as $key => $attribute) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $output->data[$virtual_number] = $oDocument; $virtual_number--; } return $output; }
/** * @brief 휴지통에 존재하는 문서 목록을 가져옴 **/ function getDocumentTrashList($obj) { // 정렬 대상과 순서 체크 if (!in_array($obj->sort_index, array('list_order', 'delete_date', 'title'))) { $obj->sort_index = 'list_order'; } if (!in_array($obj->order_type, array('desc', 'asc'))) { $obj->order_type = 'asc'; } // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 if ($obj->mid) { $oModuleModel =& getModel('module'); $obj->module_srl = $oModuleModel->getModuleSrlByMid($obj->mid); unset($obj->mid); } // 넘어온 module_srl은 array일 수도 있기에 array인지를 체크 if (is_array($obj->module_srl)) { $args->module_srl = implode(',', $obj->module_srl); } else { $args->module_srl = $obj->module_srl; } // 변수 체크 $args->sort_index = $obj->sort_index; $args->order_type = $obj->order_type; $args->page = $obj->page ? $obj->page : 1; $args->list_count = $obj->list_count ? $obj->list_count : 20; $args->page_count = $obj->page_count ? $obj->page_count : 10; $args->member_srl = $obj->member_srl; // query_id 지정 $query_id = 'document.getTrashList'; // query 실행 $output = executeQueryArray($query_id, $args); // 결과가 없거나 오류 발생시 그냥 return if (!$output->toBool() || !count($output->data)) { return $output; } $idx = 0; $data = $output->data; unset($output->data); $keys = array_keys($data); $virtual_number = $keys[0]; foreach ($data as $key => $attribute) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $output->data[$virtual_number] = $oDocument; $virtual_number--; } return $output; }
/** * @brief 게시글 목록 반환 * @description documentModel::getDocumentList 함수를 타임라인 모듈에 맞게 변환 * @param object $obj * @param boolean $except_notice * @param boolean $load_extra_vars * @param array $column_list * @return object */ function getDocumentList($obj, $except_notice = FALSE, $load_extra_vars = TRUE, $column_list = array()) { $oDocumentModel = getModel('document'); $sort_check = $oDocumentModel->_setSortIndex($obj, $load_extra_vars); $obj->sort_index = $sort_check->sort_index; $obj->isExtraVars = $sort_check->isExtraVars; $this->_setSearchOption($obj, $args, $query_id, $use_division); if ($sort_check->isExtraVars) { $output = executeQueryArray($query_id, $args); } else { $group_by_query = array('timeline.getDocumentListWithinComment', 'timeline.getDocumentListWithinTag', 'timeline.getDocumentListWithinExtraVars'); if (in_array($query_id, $group_by_query)) { $group_args = clone $args; $group_args->sort_index = 'documents.' . $args->sort_index; $output = executeQueryArray($query_id, $group_args); if (!($output->toBool() && count($output->data))) { return $output; } foreach ($output->data as $key => $val) { if ($val->document_srl) { $target_srls[] = $val->document_srl; } } $page_navigation = $output->page_navigation; $keys = array_keys($output->data); $virtual_number = $keys[0]; $target_args = new stdClass(); $target_args->document_srls = implode(',', $target_srls); $target_args->list_order = $args->sort_index; $target_args->order_type = $args->order_type; $target_args->list_count = $args->list_count; $target_args->page = 1; $output = executeQueryArray('document.getDocuments', $target_args); $output->page_navigation = $page_navigation; $output->total_count = $page_navigation->total_count; $output->total_page = $page_navigation->total_page; $output->page = $page_navigation->cur_page; } else { $output = executeQueryArray($query_id, $args, $column_list); } } if (!($output->toBool() && count($output->data))) { return $output; } $idx = 0; $data = $output->data; unset($output->data); if (is_null($virtual_number)) { $keys = array_keys($data); $virtual_number = $keys[0]; } if ($except_notice) { foreach ($data as $key => $attribute) { if ($attribute->is_notice == 'Y') { $virtual_number--; } } } foreach ($data as $key => $attribute) { if ($except_notice && $attribute->is_notice == 'Y') { continue; } $document_srl = $attribute->document_srl; if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) { $oDocument = new documentItem(); $oDocument->setAttribute($attribute, FALSE); if ($is_admin) { $oDocument->setGrant(); } $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; } $output->data[$virtual_number] = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; $virtual_number--; } if ($load_extra_vars) { $oDocumentModel->setToAllDocumentExtraVars(); } if (is_array($output->data) && count($output->data)) { foreach ($output->data as $number => $document) { $output->data[$number] = $GLOBALS['XE_DOCUMENT_LIST'][$document->document_srl]; } } else { $output->data = array(); } return $output; }
/** * Module_srl value, bringing the list of documents * @param object $obj * @param bool $except_notice * @param bool $load_extra_vars * @param array $columnList * @return Object */ function getDocumentList($obj, $except_notice = false, $load_extra_vars = true, $columnList = array()) { $sort_check = $this->_setSortIndex($obj, $load_extra_vars); $obj->sort_index = $sort_check->sort_index; $obj->isExtraVars = $sort_check->isExtraVars; $this->_setSearchOption($obj, $args, $query_id, $use_division); if ($sort_check->isExtraVars && substr_count($obj->search_target, 'extra_vars')) { $query_id = 'document.getDocumentListWithinExtraVarsExtraSort'; $args->sort_index = str_replace('documents.', '', $args->sort_index); $output = executeQueryArray($query_id, $args); } elseif ($sort_check->isExtraVars) { $output = executeQueryArray($query_id, $args); } else { // document.getDocumentList query execution // Query_id if you have a group by clause getDocumentListWithinTag getDocumentListWithinComment or used again to perform the query because $groupByQuery = array('document.getDocumentListWithinComment' => 1, 'document.getDocumentListWithinTag' => 1, 'document.getDocumentListWithinExtraVars' => 1); if (isset($groupByQuery[$query_id])) { $group_args = clone $args; $group_args->sort_index = 'documents.' . $args->sort_index; $output = executeQueryArray($query_id, $group_args); if (!$output->toBool() || !count($output->data)) { return $output; } foreach ($output->data as $key => $val) { if ($val->document_srl) { $target_srls[] = $val->document_srl; } } $page_navigation = $output->page_navigation; $keys = array_keys($output->data); $virtual_number = $keys[0]; $target_args = new stdClass(); $target_args->document_srls = implode(',', $target_srls); $target_args->list_order = $args->sort_index; $target_args->order_type = $args->order_type; $target_args->list_count = $args->list_count; $target_args->page = 1; $output = executeQueryArray('document.getDocuments', $target_args); $output->page_navigation = $page_navigation; $output->total_count = $page_navigation->total_count; $output->total_page = $page_navigation->total_page; $output->page = $page_navigation->cur_page; } else { $output = executeQueryArray($query_id, $args, $columnList); } } // Return if no result or an error occurs if (!$output->toBool() || !count($output->data)) { return $output; } $idx = 0; $data = $output->data; unset($output->data); if (!isset($virtual_number)) { $keys = array_keys($data); $virtual_number = $keys[0]; } if ($except_notice) { foreach ($data as $key => $attribute) { if ($attribute->is_notice == 'Y') { $virtual_number--; } } } foreach ($data as $key => $attribute) { if ($except_notice && $attribute->is_notice == 'Y') { continue; } $document_srl = $attribute->document_srl; if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; } $output->data[$virtual_number] = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; $virtual_number--; } if ($load_extra_vars) { $this->setToAllDocumentExtraVars(); } if (count($output->data)) { foreach ($output->data as $number => $document) { $output->data[$number] = $GLOBALS['XE_DOCUMENT_LIST'][$document->document_srl]; } } return $output; }
function dispTextylehubUpdated() { $oTextyleModel =& getModel('textyle'); $oDocumentModel =& getModel('document'); $page = (int) Context::get('page'); if (!$page) { $page = 1; } Context::set('page', $page); $hub = $this->getTextyleSubContent(); $args->page = $page; $args->page_count = 10; $args->list_count = $this->module_info->newest_textyles_count; $output = executeQueryArray('textylehub.getTextyles', $args); Context::set('page_navigation', $output->page_navigation); if (count($output->data)) { foreach ($output->data as $key => $val) { $val->photo_src = $oTextyleModel->getTextylePhotoSrc($val->member_srl); $hub->textyles[$val->module_srl] = $val; } $module_srls = array_keys($hub->textyles); if (count($module_srls)) { unset($args); $args->module_srls = implode(',', $module_srls); // 게시글 수 구하기 $output = executeQueryArray('textylehub.getTextyleDocumentCount', $args); if ($output->data) { foreach ($output->data as $key => $val) { $hub->textyles[$val->module_srl]->document_count = $val->count; } } // 댓글 수 구하기 $output = executeQueryArray('textylehub.getTextyleCommentCount', $args); if ($output->data) { foreach ($output->data as $key => $val) { $hub->textyles[$val->module_srl]->comment_count = $val->count; } } // 엮인글 수 구하기 $output = executeQueryArray('textylehub.getTextyleTrackbackCount', $args); if ($output->data) { foreach ($output->data as $key => $val) { $hub->textyles[$val->module_srl]->trackback_count = $val->count; } } } } // 최근글 구함 unset($args); $args->list_count = $this->module_info->sub_newest_textyles_count; $output = executeQueryArray('textylehub.getNewestPost', $args); if ($output->data) { foreach ($output->data as $key => $attribute) { $document_srl = $attribute->document_srl; if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; } $output->data[$key] = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; } } $oDocumentModel->setToAllDocumentExtraVars(); $hub->newest_posts = $output->data; Context::set('hub', $hub); $this->setTemplateFile('textyle_list'); }
/** * @brief module_srl값을 가지는 문서의 목록을 가져옴 **/ function getDocumentList($obj, $except_notice = false) { // 정렬 대상과 순서 체크 if (!in_array($obj->sort_index, array('list_order', 'regdate', 'last_update', 'update_order', 'readed_count', 'voted_count', 'comment_count', 'trackback_count', 'uploaded_count', 'title', 'category_srl'))) { $obj->sort_index = 'list_order'; } if (!in_array($obj->order_type, array('desc', 'asc'))) { $obj->order_type = 'asc'; } // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 if ($obj->mid) { $oModuleModel =& getModel('module'); $obj->module_srl = $oModuleModel->getModuleSrlByMid($obj->mid); unset($obj->mid); } // 넘어온 module_srl은 array일 수도 있기에 array인지를 체크 if (is_array($obj->module_srl)) { $args->module_srl = implode(',', $obj->module_srl); } else { $args->module_srl = $obj->module_srl; } // 제외 module_srl에 대한 검사 if (is_array($obj->exclude_module_srl)) { $args->exclude_module_srl = implode(',', $obj->exclude_module_srl); } else { $args->exclude_module_srl = $obj->exclude_module_srl; } // 변수 체크 $args->category_srl = $obj->category_srl ? $obj->category_srl : null; $args->sort_index = $obj->sort_index; $args->order_type = $obj->order_type; $args->page = $obj->page ? $obj->page : 1; $args->list_count = $obj->list_count ? $obj->list_count : 20; $args->page_count = $obj->page_count ? $obj->page_count : 10; $args->start_date = $obj->start_date ? $obj->start_date : null; $args->end_date = $obj->end_date ? $obj->end_date : null; $args->member_srl = $obj->member_srl; // 카테고리가 선택되어 있으면 하부 카테고리까지 모두 조건에 추가 if ($args->category_srl) { $category_list = $this->getCategoryList($args->module_srl); $category_info = $category_list[$args->category_srl]; $category_info->childs[] = $args->category_srl; $args->category_srl = implode(',', $category_info->childs); } // 기본으로 사용할 query id 지정 (몇가지 검색 옵션에 따라 query id가 변경됨) $query_id = 'document.getDocumentList'; // 내용검색일 경우 document division을 지정하여 검색하기 위한 처리 $use_division = false; // 검색 옵션 정리 $search_target = $obj->search_target; $search_keyword = $obj->search_keyword; if ($search_target && $search_keyword) { switch ($search_target) { case 'title': case 'content': if ($search_keyword) { $search_keyword = str_replace(' ', '%', $search_keyword); } $args->{"s_" . $search_target} = $search_keyword; $use_division = true; break; case 'title_content': if ($search_keyword) { $search_keyword = str_replace(' ', '%', $search_keyword); } $args->s_title = $search_keyword; $args->s_content = $search_keyword; $use_division = true; break; case 'user_id': if ($search_keyword) { $search_keyword = str_replace(' ', '%', $search_keyword); } $args->s_user_id = $search_keyword; $args->sort_index = 'documents.' . $args->sort_index; break; case 'user_name': case 'nick_name': case 'email_address': case 'homepage': if ($search_keyword) { $search_keyword = str_replace(' ', '%', $search_keyword); } $args->{"s_" . $search_target} = $search_keyword; break; case 'is_notice': case 'is_secret': if ($search_keyword == 'N') { $args->{"s_" . $search_target} = 'N'; } elseif ($search_keyword == 'Y') { $args->{"s_" . $search_target} = 'Y'; } else { $args->{"s_" . $search_target} = ''; } break; case 'member_srl': case 'readed_count': case 'voted_count': case 'comment_count': case 'trackback_count': case 'uploaded_count': $args->{"s_" . $search_target} = (int) $search_keyword; break; case 'regdate': case 'last_update': case 'ipaddress': $args->{"s_" . $search_target} = $search_keyword; break; case 'comment': $args->s_comment = $search_keyword; $query_id = 'document.getDocumentListWithinComment'; $use_division = true; break; case 'tag': $args->s_tags = str_replace(' ', '%', $search_keyword); $query_id = 'document.getDocumentListWithinTag'; break; default: if (strpos($search_target, 'extra_vars') !== false) { $args->var_idx = substr($search_target, strlen('extra_vars')); $args->var_value = str_replace(' ', '%', $search_keyword); $args->sort_index = 'documents.' . $args->sort_index; $query_id = 'document.getDocumentListWithExtraVars'; } break; } } /** * division은 list_order의 asc 정렬일때만 사용할 수 있음 **/ if ($args->sort_index != 'list_order' || $args->order_type != 'asc') { $use_division = false; } /** * 만약 use_division이 true일 경우 document division을 이용하도록 변경 **/ if ($use_division) { // 시작 division $division = (int) Context::get('division'); // division값이 없다면 제일 상위 if (!$division) { $division_args->module_srl = $args->module_srl; $division_args->exclude_module_srl = $args->exclude_module_srl; $division_args->list_count = 1; $division_args->sort_index = $args->sort_index; $division_args->order_type = $args->order_type; $output = executeQuery("document.getDocumentList", $division_args); if ($output->data) { $item = array_pop($output->data); $division = $item->list_order; } $division_args = null; } // 마지막 division $last_division = (int) Context::get('last_division'); // 지정된 division에서부터 5000개 후의 division값을 구함 if (!$last_division) { $last_division_args->module_srl = $args->module_srl; $last_division_args->exclude_module_srl = $args->exclude_module_srl; $last_division_args->list_count = 1; $last_division_args->sort_index = $args->sort_index; $last_division_args->order_type = $args->order_type; $last_division_args->list_order = $division; $last_division_args->page = 5001; $output = executeQuery("document.getDocumentDivision", $last_division_args); if ($output->data) { $item = array_pop($output->data); $last_division = $item->list_order; } } // last_division 이후로 글이 있는지 확인 if ($last_division) { $last_division_args = null; $last_division_args->module_srl = $args->module_srl; $last_division_args->exclude_module_srl = $args->exclude_module_srl; $last_division_args->list_order = $last_division; $output = executeQuery("document.getDocumentDivisionCount", $last_division_args); if ($output->data->count < 1) { $last_division = null; } } $args->division = $division; $args->last_division = $last_division; Context::set('division', $division); Context::set('last_division', $last_division); } // document.getDocumentList 쿼리 실행 // 만약 query_id가 getDocumentListWithinComment 또는 getDocumentListWithinTag일 경우 group by 절 사용 때문에 쿼리를 한번더 수행 if (in_array($query_id, array('document.getDocumentListWithinComment', 'document.getDocumentListWithinTag'))) { $group_args = clone $args; $group_args->sort_index = 'documents.' . $args->sort_index; $output = executeQueryArray($query_id, $group_args); if (!$output->toBool() || !count($output->data)) { return $output; } foreach ($output->data as $key => $val) { if ($val->document_srl) { $target_srls[] = $val->document_srl; } } $page_navigation = $output->page_navigation; $keys = array_keys($output->data); $virtual_number = $keys[0]; $target_args->document_srls = implode(',', $target_srls); $target_args->list_order = $args->sort_index; $target_args->order_type = $args->order_type; $target_args->list_count = $args->list_count; $target_args->page = 1; $output = executeQueryArray('document.getDocuments', $target_args); $output->page_navigation = $page_navigation; $output->total_count = $page_navigation->total_count; $output->total_page = $page_navigation->total_page; $output->page = $page_navigation->cur_page; } else { $output = executeQueryArray($query_id, $args); } // 결과가 없거나 오류 발생시 그냥 return if (!$output->toBool() || !count($output->data)) { return $output; } $idx = 0; $data = $output->data; unset($output->data); if (!isset($virtual_number)) { $keys = array_keys($data); $virtual_number = $keys[0]; } if ($except_notice) { foreach ($data as $key => $attribute) { if ($attribute->is_notice == 'Y') { $virtual_number--; } } } foreach ($data as $key => $attribute) { if ($except_notice && $attribute->is_notice == 'Y') { continue; } $document_srl = $attribute->document_srl; if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; } $output->data[$virtual_number] = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; $virtual_number--; } $this->setToAllDocumentExtraVars(); if (count($output->data)) { foreach ($output->data as $number => $document) { $output->data[$number] = $GLOBALS['XE_DOCUMENT_LIST'][$document->document_srl]; } } return $output; }
/** * Module_srl value, bringing the list of documents * @param object $obj * @param bool $except_notice * @param bool $load_extra_vars * @param array $columnList * @return Object */ function getDocumentList($obj, $except_notice = false, $load_extra_vars = true, $columnList = array()) { $sort_check = $this->_setSortIndex($obj, $load_extra_vars); $obj->sort_index = $sort_check->sort_index; // cache controll $oCacheHandler =& CacheHandler::getInstance('object'); if ($oCacheHandler->isSupport()) { $object_key = 'object:' . $obj->module_srl . '_category_srl:' . $obj->category_srl . '_list_count:' . $obj->list_count . '_search_target:' . $obj->search_target . '_search_keyword:' . $obj->search_keyword . '_page' . $obj->page . '_sort_index:' . $obj->sort_index . '_order_type:' . $obj->order_type; $cache_key = $oCacheHandler->getGroupKey('documentList', $object_key); $output = $oCacheHandler->get($cache_key); if ($output) { return $output; } } $this->_setSearchOption($obj, $args, $query_id, $use_division); if ($sort_check->isExtraVars) { $output = executeQueryArray($query_id, $args); } else { // document.getDocumentList query execution // Query_id if you have a group by clause getDocumentListWithinTag getDocumentListWithinComment or used again to perform the query because $groupByQuery = array('document.getDocumentListWithinComment' => 1, 'document.getDocumentListWithinTag' => 1); if (isset($groupByQuery[$query_id])) { $group_args = clone $args; $group_args->sort_index = 'documents.' . $args->sort_index; $output = executeQueryArray($query_id, $group_args); if (!$output->toBool() || !count($output->data)) { return $output; } foreach ($output->data as $key => $val) { if ($val->document_srl) { $target_srls[] = $val->document_srl; } } $page_navigation = $output->page_navigation; $keys = array_keys($output->data); $virtual_number = $keys[0]; $target_args->document_srls = implode(',', $target_srls); $target_args->list_order = $args->sort_index; $target_args->order_type = $args->order_type; $target_args->list_count = $args->list_count; $target_args->page = 1; $output = executeQueryArray('document.getDocuments', $target_args); $output->page_navigation = $page_navigation; $output->total_count = $page_navigation->total_count; $output->total_page = $page_navigation->total_page; $output->page = $page_navigation->cur_page; } else { $output = executeQueryArray($query_id, $args, $columnList); } } // Return if no result or an error occurs if (!$output->toBool() || !count($output->data)) { return $output; } $idx = 0; $data = $output->data; unset($output->data); if (!isset($virtual_number)) { $keys = array_keys($data); $virtual_number = $keys[0]; } if ($except_notice) { foreach ($data as $key => $attribute) { if ($attribute->is_notice == 'Y') { $virtual_number--; } } } foreach ($data as $key => $attribute) { if ($except_notice && $attribute->is_notice == 'Y') { continue; } $document_srl = $attribute->document_srl; if (!$GLOBALS['XE_DOCUMENT_LIST'][$document_srl]) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($is_admin) { $oDocument->setGrant(); } $GLOBALS['XE_DOCUMENT_LIST'][$document_srl] = $oDocument; } $output->data[$virtual_number] = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; $virtual_number--; } if ($load_extra_vars) { $this->setToAllDocumentExtraVars(); } if (count($output->data)) { foreach ($output->data as $number => $document) { $output->data[$number] = $GLOBALS['XE_DOCUMENT_LIST'][$document->document_srl]; } } //insert in cache if ($oCacheHandler->isSupport()) { $oCacheHandler->put($cache_key, $output); } return $output; }