diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php
index 792f852ac..8d67f5134 100644
--- a/modules/document/document.controller.php
+++ b/modules/document/document.controller.php
@@ -840,7 +840,7 @@ class DocumentController extends Document
// Update the category if the category_srl exists.
if($obj->category_srl)
{
- $this->updateCategoryCount($obj->module_srl, $obj->category_srl);
+ $this->updateCategoryCount($obj->module_srl, $obj->category_srl, '+1');
}
// Call a trigger (after)
@@ -1192,11 +1192,11 @@ class DocumentController extends Document
{
if($source_obj->get('category_srl') != $obj->category_srl)
{
- $this->updateCategoryCount($obj->module_srl, $source_obj->get('category_srl'));
+ $this->updateCategoryCount($obj->module_srl, $source_obj->get('category_srl'), '-1');
}
if($obj->category_srl)
{
- $this->updateCategoryCount($obj->module_srl, $obj->category_srl);
+ $this->updateCategoryCount($obj->module_srl, $obj->category_srl, '+1');
}
}
@@ -1343,7 +1343,10 @@ class DocumentController extends Document
$this->deleteDocumentAliasByDocument($document_srl);
$this->deleteDocumentHistory(null, $document_srl, null);
// Update category information if the category_srl exists.
- if($oDocument->get('category_srl')) $this->updateCategoryCount($oDocument->get('module_srl'),$oDocument->get('category_srl'));
+ if($oDocument->get('category_srl'))
+ {
+ $this->updateCategoryCount($oDocument->get('module_srl'),$oDocument->get('category_srl'), '-1');
+ }
// Delete a declared list
executeQuery('document.deleteDeclared', $args);
// Delete extra variable
@@ -1475,7 +1478,7 @@ class DocumentController extends Document
// update category
if ($oDocument->get('category_srl'))
{
- $this->updateCategoryCount($oDocument->get('module_srl'), $oDocument->get('category_srl'));
+ $this->updateCategoryCount($oDocument->get('module_srl'), $oDocument->get('category_srl'), '-1');
}
// Set the attachment to be invalid state
@@ -2343,20 +2346,26 @@ class DocumentController extends Document
* Update document_count in the category.
* @param int $module_srl
* @param int $category_srl
- * @param int $document_count
+ * @param int|string $document_count
* @return object
*/
function updateCategoryCount($module_srl, $category_srl, $document_count = 0)
{
// Create a document model object
- if(!$document_count)
+ if (preg_match('/^[+-]/', (string)$document_count))
{
- $document_count = DocumentModel::getCategoryDocumentCount($module_srl,$category_srl);
+ $document_count = intval($document_count, 10);
+ $mode = 'document_count_diff';
+ }
+ else
+ {
+ $document_count = $document_count ?: DocumentModel::getCategoryDocumentCount($module_srl,$category_srl);
+ $mode = 'document_count';
}
$args = new stdClass;
$args->category_srl = $category_srl;
- $args->document_count = $document_count;
+ $args->{$mode} = $document_count;
$output = executeQuery('document.updateCategoryCount', $args);
if($output->toBool()) $this->makeCategoryFile($module_srl);
diff --git a/modules/document/queries/updateCategoryCount.xml b/modules/document/queries/updateCategoryCount.xml
index 6a4ef0397..21afc32b0 100644
--- a/modules/document/queries/updateCategoryCount.xml
+++ b/modules/document/queries/updateCategoryCount.xml
@@ -4,6 +4,7 @@
+