mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-08 19:42:15 +09:00
Merge pull request #584 from kijin/pr/document-grant-cache
Grant 정보를 캐싱하여 댓글이 많은 글을 로딩할 때 성능 개선
This commit is contained in:
commit
d602ab232e
2 changed files with 43 additions and 9 deletions
|
|
@ -20,6 +20,11 @@ class documentItem extends Object
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
var $lang_code = null;
|
var $lang_code = null;
|
||||||
|
/**
|
||||||
|
* grant
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
var $grant_cache = null;
|
||||||
/**
|
/**
|
||||||
* Status of allow trackback
|
* Status of allow trackback
|
||||||
* @var bool
|
* @var bool
|
||||||
|
|
@ -157,25 +162,44 @@ class documentItem extends Object
|
||||||
|
|
||||||
function isGranted()
|
function isGranted()
|
||||||
{
|
{
|
||||||
if($_SESSION['own_document'][$this->document_srl]) return true;
|
if ($this->grant_cache !== null)
|
||||||
|
{
|
||||||
|
return $this->grant_cache;
|
||||||
|
}
|
||||||
|
|
||||||
if(!Context::get('is_logged')) return false;
|
if ($_SESSION['own_document'][$this->document_srl])
|
||||||
|
{
|
||||||
|
return $this->grant_cache = true;
|
||||||
|
}
|
||||||
|
|
||||||
$logged_info = Context::get('logged_info');
|
$logged_info = Context::get('logged_info');
|
||||||
if($logged_info->is_admin == 'Y') return true;
|
if (!$logged_info->member_srl)
|
||||||
|
{
|
||||||
|
return $this->grant_cache = false;
|
||||||
|
}
|
||||||
|
if ($logged_info->is_admin == 'Y')
|
||||||
|
{
|
||||||
|
return $this->grant_cache = true;
|
||||||
|
}
|
||||||
|
if ($this->get('member_srl') && abs($this->get('member_srl')) == $logged_info->member_srl)
|
||||||
|
{
|
||||||
|
return $this->grant_cache = true;
|
||||||
|
}
|
||||||
|
|
||||||
$oModuleModel = getModel('module');
|
$oModuleModel = getModel('module');
|
||||||
$grant = $oModuleModel->getGrant($oModuleModel->getModuleInfoByModuleSrl($this->get('module_srl')), $logged_info);
|
$grant = $oModuleModel->getGrant($oModuleModel->getModuleInfoByModuleSrl($this->get('module_srl')), $logged_info);
|
||||||
if($grant->manager) return true;
|
if ($grant->manager)
|
||||||
|
{
|
||||||
|
return $this->grant_cache = true;
|
||||||
|
}
|
||||||
|
|
||||||
if($this->get('member_srl') && ($this->get('member_srl') == $logged_info->member_srl || $this->get('member_srl')*-1 == $logged_info->member_srl)) return true;
|
return $this->grant_cache = false;
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setGrant()
|
function setGrant()
|
||||||
{
|
{
|
||||||
$_SESSION['own_document'][$this->document_srl] = true;
|
$_SESSION['own_document'][$this->document_srl] = true;
|
||||||
|
$this->grant_cache = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isAccessible()
|
function isAccessible()
|
||||||
|
|
|
||||||
|
|
@ -1862,6 +1862,13 @@ class moduleModel extends module
|
||||||
*/
|
*/
|
||||||
function getGrant($module_info, $member_info, $xml_info = '')
|
function getGrant($module_info, $member_info, $xml_info = '')
|
||||||
{
|
{
|
||||||
|
$cache_key = sprintf('site_and_module:module_grant:%d:%d', $module_info->module_srl, $member_info->member_srl);
|
||||||
|
$grant = Rhymix\Framework\Cache::get($cache_key);
|
||||||
|
if ($grant !== null)
|
||||||
|
{
|
||||||
|
return $grant;
|
||||||
|
}
|
||||||
|
|
||||||
$grant = new stdClass();
|
$grant = new stdClass();
|
||||||
|
|
||||||
if(!$xml_info)
|
if(!$xml_info)
|
||||||
|
|
@ -2014,6 +2021,9 @@ class moduleModel extends module
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set to cache and return
|
||||||
|
Rhymix\Framework\Cache::set($cache_key, $grant, 0, true);
|
||||||
return $grant;
|
return $grant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue