Fix #370 allow sorting declared documents by latest report date

This commit is contained in:
Kijin Sung 2016-12-18 02:13:24 +09:00
parent cd80bcb3a7
commit 7956a878d5
5 changed files with 85 additions and 20 deletions

View file

@ -147,31 +147,66 @@ class documentAdminView extends document
*/
function dispDocumentAdminDeclared()
{
// option for a list
$args =new stdClass();
$args->page = Context::get('page'); // /< Page
$args->list_count = 30; // /< the number of posts to display on a single page
$args->page_count = 10; // /< the number of pages that appear in the page navigation
$args->sort_index = 'document_declared.declared_count'; // /< sorting values
$args->order_type = 'desc'; // /< sorting values by order
// get Status name list
$oDocumentModel = getModel('document');
$statusNameList = $oDocumentModel->getStatusNameList();
// get a list
$declared_output = executeQuery('document.getDeclaredList', $args);
if($declared_output->data && count($declared_output->data))
// option for a list
$args = new stdClass();
$args->page = Context::get('page'); // /< Page
$args->list_count = 30; // /< the number of posts to display on a single page
$args->page_count = 10; // /< the number of pages that appear in the page navigation
$args->order_type = strtolower(Context::get('order_type')) === 'asc' ? 'asc' : 'desc';
// get latest declared list
if (Context::get('sort_index') === 'declared_latest')
{
$document_list = array();
foreach($declared_output->data as $key => $document)
$declared_output = executeQueryArray('document.getDeclaredLatest', $args);
if ($declared_output->data && count($declared_output->data))
{
$document_list[$key] = new documentItem();
$document_list[$key]->setAttribute($document);
$args->document_srls = array_map(function($item) { return $item->document_srl; }, $declared_output->data);
$documents = executeQueryArray('document.getDocuments', $args);
$document_list = array();
foreach ($declared_output->data as $key => $declared_info)
{
foreach ($documents->data as $document)
{
if ($document->document_srl == $declared_info->document_srl)
{
$document->declared_count = $declared_info->declared_count;
$document->latest_declared = $declared_info->latest_declared;
$document_list[$key] = new documentItem();
$document_list[$key]->setAttribute($document);
break;
}
}
}
$declared_output->data = $document_list;
}
}
else
{
$declared_output = executeQueryArray('document.getDeclaredList', $args);
if ($declared_output->data && count($declared_output->data))
{
$args->document_srls = array_map(function($item) { return $item->document_srl; }, $declared_output->data);
$declared_latest = executeQueryArray('document.getDeclaredLatest', $args);
$document_list = array();
foreach ($declared_output->data as $key => $document)
{
foreach ($declared_latest->data as $key => $declared_info)
{
if ($document->document_srl == $declared_info->document_srl)
{
$document->declared_count = $declared_info->declared_count;
$document->latest_declared = $declared_info->latest_declared;
$document_list[$key] = new documentItem();
$document_list[$key]->setAttribute($document);
}
}
}
$declared_output->data = $document_list;
}
$declared_output->data = $document_list;
}
// Set values of document_model::getDocumentList() objects for a template

View file

@ -90,6 +90,9 @@ $lang->default_message_verbs['copy'] = 'copies';
$lang->default_message_verbs['delete'] = 'deletes';
$lang->default_message_verbs['trash'] = 'deletes';
$lang->improper_document_declare = 'Report an improper document';
$lang->original_date = 'Original date';
$lang->declared_count = 'Report count';
$lang->latest_declared_date = 'Last reported date';
$lang->declaring_user = 'Reporter';
$lang->improper_document_declare_reason = 'Reason';
$lang->improper_document_reasons['advertisement'] = 'Advertisements that do not fit the topics or themes.';

View file

@ -88,6 +88,9 @@ $lang->default_message_verbs['copy'] = '복사';
$lang->default_message_verbs['delete'] = '삭제';
$lang->default_message_verbs['trash'] = '삭제';
$lang->improper_document_declare = '불량 게시글 신고';
$lang->original_date = '작성 날짜';
$lang->declared_count = '신고 수';
$lang->latest_declared_date = '최근 신고 날짜';
$lang->declaring_user = '신고자';
$lang->improper_document_declare_reason = '신고 이유';
$lang->improper_document_reasons['advertisement'] = '주제나 흐름에 맞지 않는 광고 글입니다.';

View file

@ -0,0 +1,22 @@
<query id="getDeclaredLatest" action="select">
<tables>
<table name="document_declared_log" alias="document_declared_log" />
</tables>
<columns>
<column name="document_srl" />
<column name="count(*)" alias="declared_count" />
<column name="max(regdate)" alias="latest_declared" />
</columns>
<conditions>
<condition operation="in" column="document_srl" var="document_srls" />
</conditions>
<groups>
<group column="document_srl" />
</groups>
<navigation>
<index var="sort_index" default="latest_declared" order="order_type" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>

View file

@ -35,10 +35,11 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<tr>
<th scope="col" class="title">{$lang->title}</th>
<th scope="col" class="nowr">{$lang->writer}</th>
<th scope="col" class="nowr">{$lang->cmd_declare}</th>
<th scope="col" class="nowr"><a href="{getUrl('sort_index', 'declared_count')}">{$lang->declared_count} <block cond="$sort_index != 'declared_latest'"></block></a></th>
<th scope="col" class="nowr">{$lang->readed_count}</th>
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
<th scope="col" class="nowr">{$lang->date}</th>
<th scope="col" class="nowr">{$lang->original_date}</th>
<th scope="col" class="nowr"><a href="{getUrl('sort_index', 'declared_latest')}">{$lang->latest_declared_date} <block cond="$sort_index == 'declared_latest'"></block></a></th>
<th scope="col"><input type="checkbox" name="cart" title="Check All" /></th>
</tr>
</thead>
@ -50,6 +51,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<td class="nowr">{$oDocument->get('readed_count')}</td>
<td class="nowr">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
<td class="nowr">{$oDocument->getRegdate("Y-m-d H:i")}</td>
<td class="nowr">{zdate($oDocument->get('latest_declared'), 'Y-m-d H:i')}</td>
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" /></td>
</tr>
</tbody>