문서의 검색, 확장변수와 관련된 비효율적인 코드 정리

- setToAllDocumentExtraVars() 최적화
- 확장변수(-1, -2)를 이용한 문서 다국어 기능 관련 버그 수정 및 개선
- getDocumentList() 최적화 (비효율적인 코드 대거 삭제)
- _setSortIndex(), _setSearchOption() 최적화 (확장 변수 관련 쿼리들 정리)
- 권한자가 아니라면 공개글만 검색되도록 개선 (검색 옵션과 상관없이)
--- 문서 검색(제목+내용,내용,댓글)시 권한자도 비밀글을 검색할 수 없었던 문제 수정
- 'NOTICE Undefined variable' 조차 발생되지 않도록 getGrant() 수정
- '(포인트가 부족한 경우) 글 열람 금지' 옵션 사용시 본문 뿐만 아니라 확장 변수도 볼 수 없도록 숨김
- 기타 버그 수정 (많이 잡은 것 같은 데 정확히 기억안남ㅠ)
This commit is contained in:
conory 2018-06-28 19:59:21 +09:00
parent 6c28f5ac5a
commit 9fb23bd3dd
14 changed files with 544 additions and 603 deletions

View file

@ -2015,11 +2015,16 @@ class moduleModel extends module
/**
* @brief Return privileges(granted) information by using module info, xml info and member info
*/
function getGrant($module_info, $member_info, $xml_info = '')
function getGrant($module_info, $member_info, $xml_info = null)
{
$__cache = &$GLOBALS['__MODULE_GRANT__'][$module_info->module][intval($module_info->module_srl)][intval($member_info->member_srl)];
if(empty($module_info->module))
{
$module_info = new stdClass;
$module_info->module = $module_info->module_srl = 0;
}
if (!$xml_info && is_object($__cache))
$__cache = &$GLOBALS['__MODULE_GRANT__'][$module_info->module][intval($module_info->module_srl)][intval($member_info->member_srl)];
if (is_object($__cache) && !$xml_info)
{
return $__cache;
}
@ -2031,21 +2036,14 @@ class moduleModel extends module
{
$xml_info = $this->getModuleActionXml($module_info->module);
}
$xml_grant_list = isset($xml_info->grant) ? (array)$xml_info->grant : array();
// Get group information of member
if(is_array($member_info->group_list))
{
$member_group = array_keys($member_info->group_list);
}
else
{
$member_group = array();
}
$is_module_admin = $module_info->module_srl ? $this->isModuleAdmin($member_info, $module_info->module_srl) : false;
$member_group = !empty($member_info->group_list) ? array_keys($member_info->group_list) : array();
$is_module_admin = !empty($module_info->module_srl) ? $this->isModuleAdmin($member_info, $module_info->module_srl) : false;
// Get 'privilege name' list from module.xml
$privilege_list = array_keys((array) $xml_info->grant);
$privilege_list = array_keys($xml_grant_list);
// Prepend default 'privilege name'
// manager, is_site_admin not distinguish because of compatibility.
@ -2068,7 +2066,7 @@ class moduleModel extends module
$grant->{$val} = true;
}
// If module_srl doesn't exist, grant access
else if(!$module_info->module_srl && $val === 'access')
else if(empty($module_info->module_srl) && $val === 'access')
{
$grant->{$val} = true;
}
@ -2143,41 +2141,38 @@ class moduleModel extends module
}
// Grant privileges by default information of module
if(!empty($grant_list = (array) $xml_info->grant))
foreach($xml_grant_list as $name => $item)
{
foreach($grant_list as $name => $item)
if(isset($checked[$name]) || $grant->{$name})
{
if(isset($checked[$name]) || $grant->{$name})
{
continue;
}
continue;
}
// All user
if($item->default == 'guest')
{
$grant->{$name} = true;
// All user
if($item->default == 'guest')
continue;
}
// Log-in member only
if($member_info->member_srl)
{
if($item->default == 'member')
{
$grant->{$name} = true;
continue;
}
// Log-in member only
if($member_info->member_srl)
else if($item->default == 'site')
{
if($item->default == 'member')
// Grant if no information of the currently connected site exists
if(!Context::get('site_module_info')->site_srl)
{
$grant->{$name} = true;
}
else if($item->default == 'site')
else if(count($member_group))
{
// Grant if no information of the currently connected site exists
if(!Context::get('site_module_info')->site_srl)
{
$grant->{$name} = true;
}
else if(count($member_group))
{
$grant->{$name} = true;
}
$grant->{$name} = true;
}
}
}