웹마스터 팁
page_full_width">
추천, 신고 제한 해제 (관리자만 v1.5.2.2)
2012.04.09 16:32
사이트를 운영하다보니 관리자에게만 가능한 몇가지들이 필요하더군요..
추천, 신고기능을 관리자만 제한을 해제하도록 수정하였습니다. 1.5.2.2 에서 작업하였습니다.
아래 내용을 modules/document/document.controller.php 의 updateVotedCount 와 그 바로 아래의 declaredDocument 함수를 교체해 주시면
됩니다.. 사실 기존것을 else로 묵어버리고 관리자만 새로 만들어 넣은것입니다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | /** * @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' ); } } |
댓글 4
-
포토올/wow
2012.04.13 10:01
-
mugenk
2012.04.13 23:28
다른 많은 부분도 수정해서 쓰고 있기에.. 가지고 있는 파일을 올리기가 그랬습니다;
단순히 위 함수만 통째로 교체만 하면 되는 타입이라..; ^^;
-
포토올/wow
2012.04.15 09:03
넵...감사합니다...그런 남모를 속사정이 있었군요~^^*
성공했습니다.~^^*
-
ChoiJS
2012.08.10 10:55
1.5.3 적용 무리없이 잘 됩니다. 감사합니다. ^^
좋은 정보 감사합니다.
같은 값이면 완성된 파일을 첨부해서 올려주시면 더 좋을텐데요~~.^^*
감사합니다.