/** * 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; }
function getPostList() { $oDocumentList = array(); $args->module_srl = join(',', array($this->module_srl, $this->module_srl * -1)); $output = executeQueryArray('textyle.getExportDocumentList', $args); if ($output->data) { foreach ($output->data as $attribute) { $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $oDocument->category = $this->category_list[$oDocument->get('category_srl')]->title; $oDocumentList[] = $oDocument; } } return $oDocumentList; }
/** * @brief content list **/ function dispBoardContentList(&$oModule) { $api_type = Context::get('api_type'); $document_list = $this->arrangeContentList(Context::get('document_list')); if ($api_type == 'summary') { $content_cut_size = Context::get('content_cut_size'); $content_cut_size = $content_cut_size ? $content_cut_size : 50; foreach ($document_list as $k => $v) { $oDocument = new documentItem(); $oDocument->setAttribute($v, false); $document_list[$k]->content = $oDocument->getSummary($content_cut_size); unset($oDocument); } } $oModule->add('document_list', $document_list); $oModule->add('page_navigation', Context::get('page_navigation')); }
/** * Empty document in trash, called by trash module * This method is passived * @param string $originObject string is serialized object * @return object */ function emptyTrash($originObject) { $originObject = unserialize($originObject); if (is_array($originObject)) { $originObject = (object) $originObject; } $oDocument = new documentItem(); $oDocument->setAttribute($originObject); $oDocumentController = getController('document'); $output = $oDocumentController->deleteDocument($oDocument->get('document_srl'), true, true, $oDocument); return $output; }
/** * Remove all comments of the article * @param int $document_srl * @return object */ function deleteComments($document_srl, $obj = NULL) { // create the document model object $oDocumentModel = getModel('document'); $oCommentModel = getModel('comment'); // check if permission is granted if (is_object($obj)) { $oDocument = new documentItem(); $oDocument->setAttribute($obj); } else { $oDocument = $oDocumentModel->getDocument($document_srl); } if (!$oDocument->isExists() || !$oDocument->isGranted()) { return new Object(-1, 'msg_not_permitted'); } // get a list of comments and then execute a trigger(way to reduce the processing cost for delete all) $args = new stdClass(); $args->document_srl = $document_srl; $comments = executeQueryArray('comment.getAllComments', $args); if ($comments->data) { $commentSrlList = array(); foreach ($comments->data as $comment) { $commentSrlList[] = $comment->comment_srl; // call a trigger (before) $output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment); if (!$output->toBool()) { continue; } // call a trigger (after) $output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); if (!$output->toBool()) { continue; } } } // delete the comment $args->document_srl = $document_srl; $output = executeQuery('comment.deleteComments', $args); if (!$output->toBool()) { return $output; } // Delete a list of comments $output = executeQuery('comment.deleteCommentsList', $args); //delete declared, declared_log, voted_log if (is_array($commentSrlList) && count($commentSrlList) > 0) { $args = new stdClass(); $args->comment_srl = join(',', $commentSrlList); $this->_deleteDeclaredComments($args); $this->_deleteVotedComments($args); } return $output; }
function _getDocumentItems($args) { // document 모듈의 model 객체를 받아서 결과를 객체화 시킴 $oDocumentModel =& getModel('document'); // 분류 구함 $obj->module_srl = $args->module_srl; $output = executeQueryArray('widgets.content.getCategories', $obj); if ($output->toBool() && $output->data) { foreach ($output->data as $key => $val) { $category_lists[$val->module_srl][$val->category_srl] = $val; } } // 글 목록을 구함 $obj->module_srl = $args->module_srl; $obj->sort_index = $args->order_target; $obj->order_type = $args->order_type == "desc" ? "asc" : "desc"; $obj->list_count = $args->list_count * $args->page_count; $output = executeQueryArray('widgets.content.getNewestDocuments', $obj); if (!$output->toBool() || !$output->data) { return; } // 결과가 있으면 각 문서 객체화를 시킴 $content_items = array(); $first_thumbnail_idx = -1; if (count($output->data)) { foreach ($output->data as $key => $attribute) { $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument; $document_srls[] = $oDocument->document_srl; } $oDocumentModel->setToAllDocumentExtraVars(); for ($i = 0, $c = count($document_srls); $i < $c; $i++) { $oDocument = $GLOBALS['XE_DOCUMENT_LIST'][$document_srls[$i]]; $document_srl = $oDocument->document_srl; $module_srl = $oDocument->get('module_srl'); $category_srl = $oDocument->get('category_srl'); $thumbnail = $oDocument->getThumbnail($args->thumbnail_width, $args->thumbnail_height, $args->thumbnail_type); $content_item = new contentItem($args->module_srls_info[$module_srl]->browser_title); $content_item->adds($oDocument->getObjectVars()); $content_item->setTitle($oDocument->getTitle()); $content_item->setCategory($category_lists[$module_srl][$category_srl]->title); $content_item->setDomain($args->module_srls_info[$module_srl]->domain); $content_item->setContent($oDocument->getSummary($args->content_cut_size)); $content_item->setLink(getSiteUrl($domain, '', 'document_srl', $document_srl)); $content_item->setThumbnail($thumbnail); $content_item->setExtraImages($oDocument->printExtraImages($args->duration_new * 60 * 60)); $content_item->add('mid', $args->mid_lists[$module_srl]); if ($first_thumbnail_idx == -1 && $thumbnail) { $first_thumbnail_idx = $i; } $content_items[] = $content_item; } $content_items[0]->setFirstThumbnailIdx($first_thumbnail_idx); } return $content_items; }
private function getDocumentItems($query, $args) { $documents = executeQuery($query, $args); if ($documents->data) { if (!is_array($documents->data)) { $documents->data = array($documents->data); } foreach ($documents->data as $key => &$attribute) { $document_srl = $attribute->document_srl; $oDocumentMostPopular = null; $oDocumentMostPopular = new documentItem(); $oDocumentMostPopular->setAttribute($attribute, false); $attribute = $GLOBALS['XE_DOCUMENT_LIST'][$document_srl]; } } return $documents; }
function _getDocumentItems($args) { // Get model object from the document module $oDocumentModel =& getModel('document'); // Get categories $obj->module_srl = $args->module_srl; $output = executeQueryArray('widgets.content.getCategories', $obj); if ($output->toBool() && $output->data) { foreach ($output->data as $key => $val) { $category_lists[$val->module_srl][$val->category_srl] = $val; } } // Get a list of documents $obj->module_srl = $args->module_srl; $obj->category_srl = $args->category_srl; $obj->sort_index = $args->order_target; $obj->order_type = $args->order_type == "desc" ? "asc" : "desc"; $obj->list_count = $args->list_count * $args->page_count; $obj->statusList = array('PUBLIC'); $output = executeQueryArray('widgets.content.getNewestDocuments', $obj); if (!$output->toBool() || !$output->data) { return; } // If the result exists, make each document as an object $content_items = array(); $first_thumbnail_idx = -1; if (count($output->data)) { foreach ($output->data as $key => $attribute) { $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument; $document_srls[] = $oDocument->document_srl; } $oDocumentModel->setToAllDocumentExtraVars(); for ($i = 0, $c = count($document_srls); $i < $c; $i++) { $oDocument = $GLOBALS['XE_DOCUMENT_LIST'][$document_srls[$i]]; $document_srl = $oDocument->document_srl; $module_srl = $oDocument->get('module_srl'); $category_srl = $oDocument->get('category_srl'); $thumbnail = $oDocument->getThumbnail($args->thumbnail_width, $args->thumbnail_height, $args->thumbnail_type); $content_item = new contentItem($args->module_srls_info[$module_srl]->browser_title); $content_item->adds($oDocument->getObjectVars()); $content_item->add('original_content', $oDocument->get('content')); $content_item->setTitle($oDocument->getTitleText()); $content_item->setCategory($category_lists[$module_srl][$category_srl]->title); $content_item->setDomain($args->module_srls_info[$module_srl]->domain); $content_item->setContent($oDocument->getSummary($args->content_cut_size)); $content_item->setLink(getSiteUrl($domain, '', 'document_srl', $document_srl)); $content_item->setThumbnail($thumbnail); $content_item->setExtraImages($oDocument->printExtraImages($args->duration_new * 60 * 60)); $content_item->add('mid', $args->mid_lists[$module_srl]); if ($first_thumbnail_idx == -1 && $thumbnail) { $first_thumbnail_idx = $i; } $content_items[] = $content_item; } $content_items[0]->setFirstThumbnailIdx($first_thumbnail_idx); } $oSecurity = new Security($content_items); $oSecurity->encodeHTML('..variables.content', '..variables.user_name', '..variables.nick_name'); return $content_items; }
/** * @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; }
/** * @brief 위젯의 실행 부분 * * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다 * 결과를 만든후 print가 아니라 return 해주어야 한다 **/ function proc($args) { // 글자 제목 길이 $widget_info->subject_cut_size = (int) $args->subject_cut_size; if (!$widget_info->subject_cut_size) { $widget_info->subject_cut_size = 15; } // 내용 길이 $widget_info->content_cut_size = (int) $args->content_cut_size; if (!$widget_info->content_cut_size) { $widget_info->content_cut_size = 50; } // 썸네일 생성 방법 $widget_info->thumbnail_type = $args->thumbnail_type; if (!$widget_info->thumbnail_type) { $widget_info->thumbnail_type = 'crop'; } // 썸네일 가로 크기 $widget_info->thumbnail_width = (int) $args->thumbnail_width; if (!$widget_info->thumbnail_width) { $widget_info->thumbnail_width = 300; } // 썸네일 세로 크기 $widget_info->thumbnail_height = (int) $args->thumbnail_height; if (!$widget_info->thumbnail_height) { $widget_info->thumbnail_height = 300; } // 이미지 수 $widget_info->list_count = (int) $args->list_count; if (!$widget_info->list_count) { $widget_info->list_count = 6; } // 정렬 대상 $widget_info->order_target = $args->order_target; if (!in_array($widget_info->order_target, array('list_order', 'update_order'))) { $widget_info->order_target = 'list_order'; } // 정렬 순서 $widget_info->order_type = $args->order_type; if (!in_array($widget_info->order_type, array('asc', 'desc'))) { $widget_info->order_type = 'asc'; } // 노출 여부 체크 if ($args->display_author != 'Y') { $widget_info->display_author = 'N'; } else { $widget_info->display_author = 'Y'; } if ($args->display_regdate != 'Y') { $widget_info->display_regdate = 'N'; } else { $widget_info->display_regdate = 'Y'; } if ($args->display_readed_count != 'Y') { $widget_info->display_readed_count = 'N'; } else { $widget_info->display_readed_count = 'Y'; } if ($args->display_voted_count != 'Y') { $widget_info->display_voted_count = 'N'; } else { $widget_info->display_voted_count = 'Y'; } // 제목 $widget_info->title = $args->title; // 소제목 $widget_info->subtitle = $args->subtitle; // 대상 모듈 (mid_list는 기존 위젯의 호환을 위해서 처리하는 루틴을 유지. module_srl로 위젯에서 변경) if ($args->mid_list) { $mid_list = explode(",", $args->mid_list); $oModuleModel =& getModel('module'); if (count($mid_list)) { $module_srl = $oModuleModel->getModuleSrlByMid($mid_list); } else { $site_module_info = Context::get('site_module_info'); if ($site_module_info) { $margs->site_srl = $site_module_info->site_srl; $oModuleModel =& getModel('module'); $output = $oModuleModel->getMidList($margs); if (count($output)) { $mid_list = array_keys($output); } $module_srl = $oModuleModel->getModuleSrlByMid($mid_list); } } } else { $module_srl = explode(',', $args->module_srls); } $obj->module_srl = implode(",", $module_srl); $obj->sort_index = $widget_info->order_target; $obj->order_type = $widget_info->order_type == "desc" ? "asc" : "desc"; $obj->list_count = $widget_info->list_count; $output = executeQueryArray('widgets.webzine.getNewestDocuments', $obj); // document 모듈의 model 객체를 받아서 결과를 객체화 시킴 $oDocumentModel =& getModel('document'); // 오류가 생기면 그냥 무시 if (!$output->toBool()) { return; } // 결과가 있으면 각 문서 객체화를 시킴 if (count($output->data)) { foreach ($output->data as $key => $attribute) { $document_srl = $attribute->document_srl; $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument; $document_list[$key] = $oDocument; } $oDocumentModel->setToAllDocumentExtraVars(); } else { $document_list = array(); } $document_count = count($document_list); $total_count = $widget_info->list_count; for ($i = $document_count; $i < $total_count; $i++) { $document_list[] = new DocumentItem(); } $widget_info->document_list = $document_list; Context::set('widget_info', $widget_info); // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); Context::set('colorset', $args->colorset); // 템플릿 파일을 지정 $tpl_file = 'list'; // 템플릿 컴파일 $oTemplate =& TemplateHandler::getInstance(); $output = $oTemplate->compile($tpl_path, $tpl_file); return $output; }
/** * @brief 위젯의 실행 부분 * * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다 * 결과를 만든후 print가 아니라 return 해주어야 한다 **/ function proc($args) { // 대상 모듈 (mid_list는 기존 위젯의 호환을 위해서 처리하는 루틴을 유지. module_srls로 위젯에서 변경) $oModuleModel =& getModel('module'); if ($args->mid_list) { $mid_list = explode(",", $args->mid_list); if (count($mid_list)) { $module_srls = $oModuleModel->getModuleSrlByMid($mid_list); if (count($module_srls)) { $args->module_srls = implode(',', $module_srls); } else { $args->module_srls = null; } } } // 제목 $title = $args->title; // 정렬 대상 $order_target = $args->order_target; if (!in_array($order_target, array('list_order', 'update_order'))) { $order_target = 'list_order'; } // 정렬 순서 $order_type = $args->order_type; if (!in_array($order_type, array('asc', 'desc'))) { $order_type = 'asc'; } // 출력된 목록 수 $list_count = (int) $args->list_count; if (!$list_count) { $list_count = 5; } // 제목 길이 자르기 $subject_cut_size = $args->subject_cut_size; if (!$subject_cut_size) { $subject_cut_size = 0; } // 최근 글 표시 시간 $duration_new = $args->duration_new; if (!$duration_new) { $duration_new = 12; } // 대상 모듈이 선택되어 있지 않으면 해당 사이트의 전체 모듈을 대상으로 함 $site_module_info = Context::get('site_module_info'); if ($args->module_srls) { $obj->module_srl = $args->module_srls; } else { if ($site_module_info) { $obj->site_srl = (int) $site_module_info->site_srl; } } // newest_document 위젯에서 정의한 query문을 직접 사용 $obj->sort_index = 'documents.' . $order_target; $obj->order_type = $order_type == "desc" ? "asc" : "desc"; $obj->list_count = $list_count; $output = executeQueryArray('widgets.newest_document.getNewestDocuments', $obj); // document 모듈의 model 객체를 받아서 결과를 객체화 시킴 $oDocumentModel =& getModel('document'); // 오류가 생기면 그냥 무시 if (!$output->toBool()) { return; } // 결과가 있으면 각 문서 객체화를 시킴 $modules = array(); if (count($output->data)) { foreach ($output->data as $key => $attribute) { $modules[$attribute->module_srl]->mid = $attribute->mid; $modules[$attribute->module_srl]->site_srl = $attribute->site_srl; $document_srl = $attribute->document_srl; $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument; $document_list[$key] = $oDocument; } $oDocumentModel->setToAllDocumentExtraVars(); } else { $document_list = array(); } // 모듈이 하나만 선택되었을 경우 대상 모듈 이름과 링크를 생성 if (count($modules) == 1) { $info = array_shift($modules); if ($info) { $widget_info->mid = $info->mid; if ($info->site_srl) { $site_info = $oModuleModel->getSiteInfo($info->site_srl); if ($site_info->domain) { $widget_info->more_link = getSiteUrl('http://' . $site_info->domain, '', 'mid', $widget_info->mid); } } else { $widget_info->more_link = getUrl('', 'mid', $info->mid); $widget_info->module_name = $info->mid; } } } $widget_info->title = $title; $widget_info->document_list = $document_list; $widget_info->subject_cut_size = $subject_cut_size; $widget_info->duration_new = $duration_new * 60 * 60; $widget_info->display_regdate = $args->display_regdate == 'N' ? 'N' : 'Y'; Context::set('widget_info', $widget_info); // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); Context::set('colorset', $args->colorset); // 템플릿 파일을 지정 $tpl_file = 'list'; // 템플릿 컴파일 $oTemplate =& TemplateHandler::getInstance(); $output = $oTemplate->compile($tpl_path, $tpl_file); return $output; }
/** * Module_srl value, bringing the list of documents * @param object $obj * @return object */ function getTrashList($obj) { // Variable check $args = new stdClass(); $args->category_srl = $obj->category_srl ? $obj->category_srl : null; $args->sort_index = $obj->sort_index; $args->order_type = $obj->order_type ? $obj->order_type : 'desc'; $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; // Search options $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; 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->statusList = array($this->getConfigStatus('public')); } elseif ($search_keyword == 'Y') { $args->statusList = array($this->getConfigStatus('secret')); } break; case 'member_srl': case 'readed_count': case 'voted_count': case 'blamed_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': case 'tag': $args->{"s_" . $search_target} = $search_keyword; break; } } $output = executeQueryArray('document.getTrashList', $args); if ($output->data) { foreach ($output->data as $key => $attribute) { $oDocument = null; $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); $attribute = $oDocument; } } return $output; }
function _getDocumentItems($args) { // document 모듈의 model 객체를 받아서 결과를 객체화 시킴 $oDocumentModel =& getModel('document'); // 분류 구함 $obj->module_srl = $args->module_srl; $output = executeQueryArray('widgets.cameronSlider.getCategories', $obj); if ($output->toBool() && $output->data) { foreach ($output->data as $key => $val) { // 최상위 여부 파악 if ($args->category_range == 'first' && $val->parent_srl) { continue; } // 특정 분류만 출력 여부 파악 if ($args->specific_category && !in_array($val->category_srl, $args->specific_category_srl_list)) { continue; } $category_lists[$val->module_srl][$val->category_srl] = $val; } } // 글 목록을 구함 (+권한 확인) $obj->module_srl = $args->module_srl; $obj->sort_index = $args->order_target; $obj->order_type = $args->order_type == "desc" ? "asc" : "desc"; $obj->list_count = 100; // 한번에 가져올 글 목록 개수 if ($args->category_srl) { $obj->category_srl = $args->category_srl; } $pagecount = 0; $needcount = $args->list_count; // 가져와야 하는 글 개수 $obj->statusList = array('PUBLIC', 'SECRET'); $getcount = 0; // 가져온 글 개수 $content_items = array(); $first_thumbnail_idx = -1; while (true) { $pagecount = $pagecount + 1; $obj->page = $pagecount; $output = executeQueryArray('widgets.cameronSlider.getNewestDocuments', $obj); // 더이상 결과가 없으면 break if (!$output->toBool() || !$output->data || !count($output->data)) { break; } // 권한 확인해서 문서 목록 생성하기 foreach ($output->data as $key => $attribute) { $oDocument = new documentItem(); $oDocument->setAttribute($attribute, false); if ($getcount >= $needcount) { break; } // 해당 문서가 비밀글일 경우 권한이 있는지 확인, 없으면 continue if ($args->view_secret_document == 'use_permission' && $oDocument->isSecret() && !$oDocument->isGranted()) { continue; } else { if ($args->view_secret_document == 'not_show' && $oDocument->isSecret()) { continue; } } // 권한이 있다면 객체화 준비 $GLOBALS['XE_DOCUMENT_LIST'][$oDocument->document_srl] = $oDocument; $document_srls[] = $oDocument->document_srl; $getcount = $getcount + 1; if ($getcount >= $needcount) { break; } } if ($getcount >= $needcount) { break; } if ($pagecount >= $output->total_page) { break; } } // 결과가 있으면 각 문서 객체화를 시킴 if ($getcount > 0) { $oDocumentModel->setToAllDocumentExtraVars(); for ($i = 0, $c = count($document_srls); $i < $c; $i++) { $oDocument = $GLOBALS['XE_DOCUMENT_LIST'][$document_srls[$i]]; $document_srl = $oDocument->document_srl; $module_srl = $oDocument->get('module_srl'); $category_srl = $oDocument->get('category_srl'); $thumbnail = $oDocument->getThumbnail($args->thumbnail_width, $args->thumbnail_height, $args->thumbnail_type); $content_item = new cameronSliderItem($args->module_srls_info[$module_srl]->browser_title); $content_item->adds($oDocument->getObjectVars()); $content_item->setTitle($oDocument->getTitle()); $content_item->setNickName($oDocument->get('nick_name')); $content_item->setCategory($category_lists[$module_srl][$category_srl]->title); $content_item->setDomain($args->module_srls_info[$module_srl]->domain); $content_item->setContent($oDocument->getSummary($args->content_cut_size)); // 링크 방식 변경 if ($args->hyperlink == 'N') { $content_item->setLink("#"); } else { if ($args->hyperlink_src == 'article') { $content_item->setLink(getSiteUrl($domain, '', 'document_srl', $document_srl)); } else { if ($args->hyperlink_src == 'extravar') { $content_item->setLink($oDocument->getExtraEidValue($args->hyperlink_extravar)); } else { $content_item->setLink(getSiteUrl($domain, '', 'document_srl', $document_srl)); } } } $content_item->setThumbnail($thumbnail); if ($args->extravar_name) { $content_item->setExtraVar($oDocument->getExtraEidValueHTML($args->extravar_name)); } $content_item->add('mid', $args->mid_lists[$module_srl]); if ($first_thumbnail_idx == -1 && $thumbnail) { $first_thumbnail_idx = $i; } $content_items[] = $content_item; } $content_items[0]->setFirstThumbnailIdx($first_thumbnail_idx); } return $content_items; }
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'); }
function setAttribute($attribute) { parent::setAttribute($attribute); }