사이트를 운영하다보니 관리자에게만 가능한 몇가지들이 필요하더군요..
추천, 신고기능을 관리자만 제한을 해제하도록 수정하였습니다. 1.5.2.2 에서 작업하였습니다.
아래 내용을 modules/document/document.controller.php 의 updateVotedCount 와 그 바로 아래의 declaredDocument 함수를 교체해 주시면
됩니다.. 사실 기존것을 else로 묵어버리고 관리자만 새로 만들어 넣은것입니다..
/**
* @brief Increase the number of vote-up of the document
**/
function
updateVotedCount(
$document_srl
,
$point
= 1) {
if
(
$point
> 0)
$failed_voted
=
'failed_voted'
;
else
$failed_voted
=
'failed_blamed'
;
// Create a member model object
$oMemberModel
= &getModel(
'member'
);
$member_srl
=
$oMemberModel
->getLoggedMemberSrl();
$logged_info
= Context::get(
'logged_info'
);
// Get the original document
$oDocumentModel
= &getModel(
'document'
);
$oDocument
=
$oDocumentModel
->getDocument(
$document_srl
, false, false);
if
(
$logged_info
->is_admin ==
'Y'
) {
$args
->member_srl =
$member_srl
;
$args
->document_srl =
$document_srl
;
// Update the voted count
if
(
$point
< 0)
{
$args
->blamed_count =
$oDocument
->get(
'blamed_count'
) +
$point
;
$output
= executeQuery(
'document.updateBlamedCount'
,
$args
);
}
else
{
$args
->voted_count =
$oDocument
->get(
'voted_count'
) +
$point
;
$output
= executeQuery(
'document.updateVotedCount'
,
$args
);
}
if
(!
$output
->toBool())
return
$output
;
// Leave logs
$args
->point =
$point
;
$output
= executeQuery(
'document.insertDocumentVotedLog'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
}
else
{
// Return fail if session already has information about votes
if
(
$_SESSION
[
'voted_document'
][
$document_srl
])
return
new
Object(-1,
$failed_voted
);
// Pass if the author's IP address is as same as visitor's.
if
(
$oDocument
->get(
'ipaddress'
) ==
$_SERVER
[
'REMOTE_ADDR'
]) {
$_SESSION
[
'voted_document'
][
$document_srl
] = true;
return
new
Object(-1,
$failed_voted
);
}
// Check if document's author is a member.
if
(
$oDocument
->get(
'member_srl'
)) {
// Pass after registering a session if author's information is same as the currently logged-in user's.
if
(
$member_srl
&&
$member_srl
==
$oDocument
->get(
'member_srl'
)) {
$_SESSION
[
'voted_document'
][
$document_srl
] = true;
return
new
Object(-1,
$failed_voted
);
}
}
// Use member_srl for logged-in members and IP address for non-members.
if
(
$member_srl
) {
$args
->member_srl =
$member_srl
;
}
else
{
$args
->ipaddress =
$_SERVER
[
'REMOTE_ADDR'
];
}
$args
->document_srl =
$document_srl
;
$output
= executeQuery(
'document.getDocumentVotedLogInfo'
,
$args
);
// Pass after registering a session if log information has vote-up logs
if
(
$output
->data->
count
) {
$_SESSION
[
'voted_document'
][
$document_srl
] = true;
return
new
Object(-1,
$failed_voted
);
}
// Update the voted count
if
(
$point
< 0)
{
$args
->blamed_count =
$oDocument
->get(
'blamed_count'
) +
$point
;
$output
= executeQuery(
'document.updateBlamedCount'
,
$args
);
}
else
{
$args
->voted_count =
$oDocument
->get(
'voted_count'
) +
$point
;
$output
= executeQuery(
'document.updateVotedCount'
,
$args
);
}
if
(!
$output
->toBool())
return
$output
;
// Leave logs
$args
->point =
$point
;
$output
= executeQuery(
'document.insertDocumentVotedLog'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
// Leave in the session information
$_SESSION
[
'voted_document'
][
$document_srl
] = true;
$obj
->member_srl =
$oDocument
->get(
'member_srl'
);
$obj
->module_srl =
$oDocument
->get(
'module_srl'
);
$obj
->document_srl =
$oDocument
->get(
'document_srl'
);
$obj
->update_target = (
$point
< 0) ?
'blamed_count'
:
'voted_count'
;
$obj
->point =
$point
;
$obj
->before_point = (
$point
< 0) ?
$oDocument
->get(
'blamed_count'
) :
$oDocument
->get(
'voted_count'
);
$obj
->after_point = (
$point
< 0) ?
$args
->blamed_count :
$args
->voted_count;
$output
= ModuleHandler::triggerCall(
'document.updateVotedCount'
,
'after'
,
$obj
);
if
(!
$output
->toBool())
return
$output
;
}
// Return result
if
(
$point
> 0)
{
return
new
Object(0,
'success_voted'
);
}
else
{
return
new
Object(0,
'success_blamed'
);
}
}
/**
* @brief Report posts
**/
function
declaredDocument(
$document_srl
) {
// Create a member model object
$oMemberModel
= &getModel(
'member'
);
$member_srl
=
$oMemberModel
->getLoggedMemberSrl();
$logged_info
= Context::get(
'logged_info'
);
// Get the original document
$oDocumentModel
= &getModel(
'document'
);
$oDocument
=
$oDocumentModel
->getDocument(
$document_srl
, false, false);
if
(
$logged_info
->is_admin ==
'Y'
) {
$args
->member_srl =
$member_srl
;
$args
->document_srl =
$document_srl
;
$output
= executeQuery(
'document.getDeclaredDocument'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
$declared_count
=
$output
->data->declared_count;
// Add the declared document
if
(
$declared_count
> 0)
$output
= executeQuery(
'document.updateDeclaredDocument'
,
$args
);
else
$output
= executeQuery(
'document.insertDeclaredDocument'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
// Leave logs
$output
= executeQuery(
'document.insertDocumentDeclaredLog'
,
$args
);
$this
->setMessage(
'success_declared'
);
}
else
{
// Fail if session information already has a reported document
if
(
$_SESSION
[
'declared_document'
][
$document_srl
])
return
new
Object(-1,
'failed_declared'
);
// Check if previously reported
$args
->document_srl =
$document_srl
;
$output
= executeQuery(
'document.getDeclaredDocument'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
$declared_count
=
$output
->data->declared_count;
// Pass if the author's IP address is as same as visitor's.
/*if($oDocument->get('ipaddress') == $_SERVER['REMOTE_ADDR']) {
$_SESSION['declared_document'][$document_srl] = true;
return new Object(-1, 'failed_declared');
}*/
// Check if document's author is a member.
if
(
$oDocument
->get(
'member_srl'
)) {
// Pass after registering a session if author's information is same as the currently logged-in user's.
if
(
$member_srl
&&
$member_srl
==
$oDocument
->get(
'member_srl'
)) {
$_SESSION
[
'declared_document'
][
$document_srl
] = true;
return
new
Object(-1,
'failed_declared'
);
}
}
// Use member_srl for logged-in members and IP address for non-members.
if
(
$member_srl
) {
$args
->member_srl =
$member_srl
;
}
else
{
$args
->ipaddress =
$_SERVER
[
'REMOTE_ADDR'
];
}
$args
->document_srl =
$document_srl
;
$output
= executeQuery(
'document.getDocumentDeclaredLogInfo'
,
$args
);
// Pass after registering a sesson if reported/declared documents are in the logs.
if
(
$output
->data->
count
) {
$_SESSION
[
'declared_document'
][
$document_srl
] = true;
return
new
Object(-1,
'failed_declared'
);
}
// Add the declared document
if
(
$declared_count
> 0)
$output
= executeQuery(
'document.updateDeclaredDocument'
,
$args
);
else
$output
= executeQuery(
'document.insertDeclaredDocument'
,
$args
);
if
(!
$output
->toBool())
return
$output
;
// Leave logs
$output
= executeQuery(
'document.insertDocumentDeclaredLog'
,
$args
);
// Leave in the session information
$_SESSION
[
'declared_document'
][
$document_srl
] = true;
$this
->setMessage(
'success_declared'
);
}
}