File indexing completed on 2024-12-22 05:33:33

0001 <?php
0002 
0003 /**
0004  *  ocs-webserver
0005  *
0006  *  Copyright 2016 by pling GmbH.
0007  *
0008  *    This file is part of ocs-webserver.
0009  *
0010  *    This program is free software: you can redistribute it and/or modify
0011  *    it under the terms of the GNU Affero General Public License as
0012  *    published by the Free Software Foundation, either version 3 of the
0013  *    License, or (at your option) any later version.
0014  *
0015  *    This program is distributed in the hope that it will be useful,
0016  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  *    GNU Affero General Public License for more details.
0019  *
0020  *    You should have received a copy of the GNU Affero General Public License
0021  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  **/
0023 class ReportController extends Zend_Controller_Action
0024 {
0025 
0026     public function commentAction()
0027     {
0028         $this->_helper->layout()->disableLayout();
0029         if ((APPLICATION_ENV != 'searchbotenv') AND (false == SEARCHBOT_DETECTED)) {
0030             $comment_id = (int)$this->getParam('i');
0031             $project_id = (int)$this->getParam('p');
0032             $reported_by =
0033                 Zend_Auth::getInstance()->hasIdentity() ? (int)Zend_Auth::getInstance()->getStorage()->read()->member_id
0034                     : 0;
0035             
0036             $clientIp = null;
0037             $clientIp2 = null;
0038             if(isset($_SERVER['REMOTE_ADDR'])) {
0039                 $clientIp = $_SERVER['REMOTE_ADDR'];
0040             }
0041             if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
0042                 $clientIp2 = $_SERVER['HTTP_X_FORWARDED_FOR'];
0043             }
0044 
0045             $tableReportComments = new Default_Model_DbTable_ReportComments();
0046             
0047             $commentReportArray = $tableReportComments->fetchAll('comment_id = ' . $comment_id . ' AND user_ip = "' . $clientIp . '"');
0048             
0049             if(isset($commentReportArray) && count($commentReportArray) > 0) {
0050                 $this->_helper->json(array(
0051                     'status'  => 'ok',
0052                     'message' => '<p>You have already submitted a report for this comment.</p><div class="modal-footer">
0053                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0054                                         </div>',
0055                     'data'    => array()
0056                 ));
0057             } else {
0058                 $tableReportComments->save(array('project_id'  => $project_id,
0059                                                  'comment_id'  => $comment_id,
0060                                                  'reported_by' => $reported_by,
0061                                                  'user_ip' => $clientIp,
0062                                                  'user_ip2' => $clientIp2
0063                 ));
0064                 $this->_helper->json(array(
0065                     'status'  => 'ok',
0066                     'message' => '<p>Thank you for helping us to keep these sites SPAM-free.</p><div class="modal-footer">
0067                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0068                                         </div>',
0069                     'data'    => array()
0070                 ));
0071             }
0072 
0073         }
0074         
0075     }
0076 
0077     public function productAction()
0078     {
0079         $this->_helper->layout()->disableLayout();
0080 
0081         if ((APPLICATION_ENV != 'searchbotenv') AND (false == SEARCHBOT_DETECTED)) {
0082 
0083             $session = new Zend_Session_Namespace();
0084             $reportedProducts = isset($session->reportedProducts) ? $session->reportedProducts : array();
0085             $project_id = (int)$this->getParam('p');
0086             if (in_array($project_id, $reportedProducts)) {
0087                 $this->_helper->json(array(
0088                     'status'  => 'ok',
0089                     'message' => '<p>Thank you, but you have already reported this product.</p><div class="modal-footer">
0090                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0091                                         </div>',
0092                     'data'    => array()
0093                 ));
0094             }
0095             $reported_by = 0;
0096             if (Zend_Auth::getInstance()->hasIdentity()) {
0097                 $reported_by = (int)Zend_Auth::getInstance()->getStorage()->read()->member_id;
0098             }
0099 
0100             $modelProduct = new Default_Model_Project();
0101             $productData = $modelProduct->fetchRow(array('project_id = ?' => $project_id, 'status' => Default_Model_DbTable_Project::PROJECT_ACTIVE));
0102 
0103 
0104             if (empty($productData)) {
0105                 $this->_helper->json(array(
0106                     'status'  => 'ok',
0107                     'message' => '<p>Thank you for helping us to keep these sites SPAM-free.</p><div class="modal-footer">
0108                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0109                                         </div>',
0110                     'data'    => array()
0111                 ));
0112             }
0113 
0114             if ($productData->spam_checked == 0) {
0115                 $tableReportComments = new Default_Model_DbTable_ReportProducts();
0116                 $tableReportComments->save(array('project_id' => $project_id, 'reported_by' => $reported_by));
0117             }
0118             $session->reportedProducts[] = $project_id;
0119         }
0120 
0121         $this->_helper->json(array(
0122             'status'  => 'ok',
0123             'message' => '<p>Thank you for helping us to keep these sites SPAM-free.</p><div class="modal-footer">
0124                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0125                                         </div>',
0126             'data'    => array()
0127         ));
0128     }
0129 
0130     public function productfraudAction()
0131     {   
0132         $report_type = 1;
0133 
0134         $this->_helper->layout()->disableLayout();
0135 
0136         if ((APPLICATION_ENV != 'searchbotenv') AND (false == SEARCHBOT_DETECTED)) {
0137 
0138                     $session = new Zend_Session_Namespace();
0139                     $reportedFraudProducts = isset($session->reportedFraudProducts) ? $session->reportedFraudProducts : array();
0140                     $project_id = (int)$this->getParam('p');
0141                     $text = $this->getParam('t');
0142                     if (in_array($project_id, $reportedFraudProducts)) {
0143                         $this->_helper->json(array(
0144                             'status'  => 'ok',
0145                             'message' => '<p>Thank you, but you have already reported this product.</p><div class="modal-footer">
0146                                                     <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0147                                                 </div>',
0148                             'data'    => array()
0149                         ));
0150                     }
0151                     
0152                     if (Zend_Auth::getInstance()->hasIdentity()) {
0153                         $reported_by = (int)Zend_Auth::getInstance()->getStorage()->read()->member_id;
0154                         $reportProducts = new Default_Model_DbTable_ReportProducts();
0155                         $reportProducts->save(array('project_id' => $project_id, 'reported_by' => $reported_by,'text' => $text, 'report_type' =>$report_type));
0156                     }
0157                     
0158                     $session->reportedFraudProducts[] = $project_id;
0159         }
0160 
0161         $this->_helper->json(array(
0162             'status'  => 'ok',
0163             'message' => '<p>Thank you for reporting the misuse.</p><p>We will try to verify the reason for this case.</p><div class="modal-footer">
0164                                             <button type="button" style="border:none;background: transparent;color: #2673b0;" class="small close" data-dismiss="modal" > Close</button>
0165                                         </div>',
0166             'data'    => array()
0167         ));
0168     }
0169 
0170     public function flagmodAction()
0171     {                           
0172         $this->_helper->layout()->disableLayout();
0173         $params = $this->getAllParams();
0174         if ((APPLICATION_ENV != 'searchbotenv') AND (false == SEARCHBOT_DETECTED)) {
0175 
0176                     $project_clone = $this->getParam('p');
0177                     $text = $this->getParam('t');                    
0178                     $url = $this->getParam('l'); 
0179                     $project_id = 0;
0180                     
0181                     if (Zend_Auth::getInstance()->hasIdentity()) {
0182                         $reported_by = (int)Zend_Auth::getInstance()->getStorage()->read()->member_id;
0183                         $reportProducts = new Default_Model_DbTable_ProjectClone();                 
0184                         $reportProducts->save(array('project_id' => $project_clone
0185                         ,'member_id' => $reported_by
0186                         ,'text' => $text
0187                         ,'external_link' => $url
0188                         ,'project_clone_type' =>1
0189                         ,'project_id_parent' =>$project_id));                             
0190                     }                                                                                               
0191         }
0192 
0193         $this->_helper->json(array(
0194             'status'  => 'ok',
0195             'message' => '<p>Thank you. The credits have been submitted.</p><p>It can take some time to appear while we verify it.</p>
0196                                            
0197                                        ',
0198             'data'    => $params
0199         ));
0200     }
0201 
0202     public function productcloneAction()
0203     {                   
0204         $this->_helper->layout()->disableLayout();
0205         $params = $this->getAllParams();
0206         $productInfo=null;
0207         if ((APPLICATION_ENV != 'searchbotenv') AND (false == SEARCHBOT_DETECTED)) {
0208 
0209                     $project_clone = $this->getParam('p');
0210                     $text = $this->getParam('t');
0211                     $project_id = $this->getParam('pc');
0212                     $type = $this->getParam('i');
0213                     
0214                     $modelProduct = new Default_Model_Project();
0215                     $productInfo = $modelProduct->fetchProductInfo($project_id);
0216                     if (empty($productInfo)) {
0217                         $this->_helper->json(array(
0218                             'status'  => 'err',            
0219                             'message' => 'Please input a valid project ID from pling. ',
0220                             'data'    => $params
0221                         ));
0222                         return;
0223                     }
0224                     if($project_id)
0225                     {
0226                         $text = $text . ' '.$project_id;
0227                     }
0228                     if(!is_numeric($project_id))
0229                     {
0230                         $project_id = 0;
0231                     }
0232                     if (Zend_Auth::getInstance()->hasIdentity()) {
0233                         $reported_by = (int)Zend_Auth::getInstance()->getStorage()->read()->member_id;
0234                         $reportProducts = new Default_Model_DbTable_ProjectClone();                 
0235                         if($type=='is-original')
0236                         {
0237                             $reportProducts->save(array('project_id' => $project_clone
0238                             ,'member_id' => $reported_by
0239                             ,'text' => $text
0240                             ,'project_id_parent' =>$project_id));                             
0241                         }else{
0242                             $reportProducts->save(array('project_id' => $project_id
0243                             ,'member_id' => $reported_by
0244                             ,'text' => $text
0245                             ,'project_id_parent' =>$project_clone));                             
0246                         }
0247                         
0248                     }                                                                                               
0249         }
0250 
0251         $this->_helper->json(array(
0252             'status'  => 'ok',            
0253             'message' => '<p>Thank you. The credits have been submitted.</p><p>It can take some time to appear while we verify it.</p>
0254                         '
0255             
0256         ));
0257     }
0258 
0259 }