Fix excessive session data after accessing and voting on many documents and comments

This commit is contained in:
Kijin Sung 2024-12-07 21:55:14 +09:00
parent 8f20339549
commit 6a93e0c12d
5 changed files with 42 additions and 0 deletions

View file

@ -1716,6 +1716,12 @@ class CommentController extends Comment
$output->add('blamed_count', $trigger_obj->after_point);
}
// Prevent session data getting too large
if (count($_SESSION['voted_comment']) > 200)
{
$_SESSION['voted_comment'] = array_slice($_SESSION['voted_comment'], 100, null, true);
}
return $output;
}
@ -1875,6 +1881,12 @@ class CommentController extends Comment
// leave into the session information
$_SESSION['declared_comment'][$comment_srl] = TRUE;
// Prevent session data getting too large
if (count($_SESSION['declared_comment']) > 200)
{
$_SESSION['declared_comment'] = array_slice($_SESSION['declared_comment'], 100, null, true);
}
$this->setMessage('success_declared');
}

View file

@ -241,6 +241,10 @@ class CommentItem extends BaseObject
{
$_SESSION['accessible'][$this->comment_srl] = $this->get('last_update');
}
if(is_array($_SESSION['accessible']) && count($_SESSION['accessible']) > 200)
{
$_SESSION['accessible'] = array_slice($_SESSION['accessible'], 100, null, true);
}
}
function isEditable()

View file

@ -1719,6 +1719,12 @@ class DocumentController extends Document
$_SESSION['readed_document'][$document_srl] = true;
}
// Prevent session data getting too large
if (is_array($_SESSION['readed_document']) && count($_SESSION['readed_document']) > 1000)
{
$_SESSION['readed_document'] = array_slice($_SESSION['readed_document'], 500, null, true);
}
return TRUE;
}
@ -2105,6 +2111,12 @@ class DocumentController extends Document
$output->add('blamed_count', $trigger_obj->after_point);
}
// Prevent session data getting too large
if (count($_SESSION['voted_document']) > 200)
{
$_SESSION['voted_document'] = array_slice($_SESSION['voted_document'], 100, null, true);
}
return $output;
}
@ -2264,6 +2276,12 @@ class DocumentController extends Document
// Leave in the session information
$_SESSION['declared_document'][$document_srl] = true;
// Prevent session data getting too large
if (count($_SESSION['declared_document']) > 200)
{
$_SESSION['declared_document'] = array_slice($_SESSION['declared_document'], 100, null, true);
}
$this->setMessage('success_declared');
}

View file

@ -285,6 +285,10 @@ class DocumentItem extends BaseObject
{
$_SESSION['accessible'][$this->document_srl] = $this->get('last_update');
}
if(is_array($_SESSION['accessible']) && count($_SESSION['accessible']) > 200)
{
$_SESSION['accessible'] = array_slice($_SESSION['accessible'], 100, null, true);
}
}
function allowComment()

View file

@ -772,6 +772,10 @@ class FileController extends File
{
$_SESSION['upload_info'] = array();
}
if(count($_SESSION['upload_info']) > 200)
{
$_SESSION['upload_info'] = array_slice($_SESSION['upload_info'], 100, null, true);
}
if(!isset($_SESSION['upload_info'][$editor_sequence]))
{
$_SESSION['upload_info'][$editor_sequence] = new stdClass();