Rev 333 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Mvc\Controller\AbstractActionController;use LeadersLinked\Hydrator\ObjectPropertyHydrator;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Library\Functions;use LeadersLinked\Mapper\UserPasswordMapper;use LeadersLinked\Form\AccountSetting\NotificationSettingForm;use LeadersLinked\Mapper\UserNotificationSettingMapper;use LeadersLinked\Form\AccountSetting\ChangePasswordForm;use LeadersLinked\Form\AccountSetting\ChangeImageForm;use LeadersLinked\Library\Image;use LeadersLinked\Form\AccountSetting\LocationForm;use LeadersLinked\Model\Location;use LeadersLinked\Mapper\LocationMapper;use LeadersLinked\Form\AccountSetting\PrivacySettingForm;use LeadersLinked\Mapper\UserProfileMapper;use LeadersLinked\Form\AccountSetting\BasicForm;use LeadersLinked\Form\Transaction\FundsAddForm;use LeadersLinked\Mapper\UserBrowserMapper;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Mapper\DeviceHistoryMapper;use LeadersLinked\Mapper\DeviceMapper;use Laminas\Hydrator\ArraySerializableHydrator;use Laminas\Db\ResultSet\HydratingResultSet;use Laminas\Paginator\Adapter\DbSelect;use Laminas\Paginator\Paginator;use LeadersLinked\Mapper\UserIpMapper;use LeadersLinked\Model\Transaction;use LeadersLinked\Model\Provider;use LeadersLinked\Mapper\TransactionMapper;use LeadersLinked\Mapper\UserProviderMapper;use LeadersLinked\Model\UserProvider;use LeadersLinked\Model\UserPassword;use LeadersLinked\Model\UserDeleted;use LeadersLinked\Mapper\UserDeletedMapper;use LeadersLinked\Model\UserType;use LeadersLinked\Model\User;use LeadersLinked\Library\QueueEmail;use LeadersLinked\Mapper\EmailTemplateMapper;use LeadersLinked\Model\EmailTemplate;use LeadersLinked\Cache\CacheInterface;use PayPalHttp\HttpException;use PayPalCheckoutSdk\Core\SandboxEnvironment;use PayPalCheckoutSdk\Core\ProductionEnvironment;use PayPalCheckoutSdk\Core\PayPalHttpClient;use PayPalCheckoutSdk\Orders\OrdersCreateRequest;use Laminas\Mvc\I18n\Translator;use LeadersLinked\Mapper\AbuseReportMapper;use LeadersLinked\Model\AbuseReport;use LeadersLinked\Library\Storage;class AbuseReportController extends AbstractActionController{/**** @var \Laminas\Db\Adapter\AdapterInterface*/private $adapter;/**** @var \LeadersLinked\Cache\CacheInterface*/private $cache;/**** @var \Laminas\Log\LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @var \Laminas\Mvc\I18n\Translator*/private $translator;/**** @param \Laminas\Db\Adapter\AdapterInterface $adapter* @param \LeadersLinked\Cache\CacheInterface $cache* @param \Laminas\Log\LoggerInterface LoggerInterface $logger* @param array $config* @param \Laminas\Mvc\I18n\Translator $translator*/public function __construct($adapter, $cache, $logger, $config, $translator){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;$this->translator = $translator;}public function indexAction(){$request = $this->getRequest();$request = $this->getRequest();if ($request->isGet()) {$storage = Storage::getInstance($this->config, $this->adapter);$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$search = $this->params()->fromQuery('search');$search = empty($search['value']) ? '' : Functions::sanitizeFilterString($search['value']);$page = intval($this->params()->fromQuery('start', 1), 10);$records_x_page = intval($this->params()->fromQuery('length', 10), 10);$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);$paginator = $abuseReportMapper->fetchAllDataTableByUserReportingId($currentUser->id, $page, $records_x_page);$userMapper = UserMapper::getInstance($this->adapter);$users = [];$items = [];$records = $paginator->getCurrentItems();foreach ($records as $record){$status = '';switch($record->status) {case AbuseReport::STATUS_PENDING :$status = 'LABEL_PENDING';break;case AbuseReport::STATUS_IN_REVIEW :$status = 'LABEL_IN_REVIEW';break;case AbuseReport::STATUS_COMPLETED :$status = 'LABEL_COMPLETED';break;}$reason = '';switch($record->reason) {case AbuseReport::REASON_ADDICTION :$reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';break;case AbuseReport::REASON_DISCRIMINATION :$reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';break;case AbuseReport::REASON_OFENSIVE :$reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';break;case AbuseReport::REASON_SEXUALITY :$reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';break;case AbuseReport::REASON_TERRORISM :$reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';break;case AbuseReport::READON_OTHER :$reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';break;}$type = '';switch($record->type){case AbuseReport::TYPE_FEED :$type = 'LABEL_ABUSE_TYPE_FEED';break;case AbuseReport::TYPE_POST :$type = 'LABEL_ABUSE_TYPE_POST';break;case AbuseReport::TYPE_INMAIL_MESSAGE :$type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';break;case AbuseReport::TYPE_COMMENT :$type = 'LABEL_ABUSE_TYPE_COMMENT';break;case AbuseReport::TYPE_CHAT_USER_MESSAGE :$type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';break;case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :$type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';break;}if(isset($users[$record->user_reported_id])) {$user = $users[ $record->user_reported_id ];} else {$user = $userMapper->fetchOne( $record->user_reported_id );if($user) {$users[ $record->user_reported_id ] = $user;}}if(!$user) {continue;}$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);$item = ['first_name' => $user->first_name,'last_name' => $user->last_name,'email' => $user->email,'image' => $storage->getUserImage($user),'status' => $status,'reason' => $reason,'type' => $type,'date' => $dt->format('d/m/Y H:i a'),'actions' => ['link_view' => $this->url()->fromRoute('abuse-report/view', ['id' => $record->uuid])],];array_push($items, $item);}return new JsonModel(['success' => true,'data' => ['items' => $items,'total' => $paginator->getTotalItemCount(),]]);} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);;}}public function viewAction(){$request = $this->getRequest();if($request->isGet()) {$storage = Storage::getInstance($this->config, $this->adapter);$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();$id = $this->params()->fromRoute('id');if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);$abuseReport = $abuseReportMapper->fetchOneByUuid($id);if(!$abuseReport) {return new JsonModel(['success' => false,'data' => 'ERROR_ABUSE_REPORT_NOT_FOUND']);}if($abuseReport->user_reporting_id != $currentUser->id) {return new JsonModel(['success' => false,'data' => 'ERROR_UNAUTHORIZED']);}$status = '';switch($abuseReport->status) {case AbuseReport::STATUS_PENDING :$status = 'LABEL_PENDING';break;case AbuseReport::STATUS_IN_REVIEW :$status = 'LABEL_IN_REVIEW';break;case AbuseReport::STATUS_COMPLETED :$status = 'LABEL_COMPLETED';break;}$type = '';switch($abuseReport->type){case AbuseReport::TYPE_FEED :$type = 'LABEL_ABUSE_TYPE_FEED';break;case AbuseReport::TYPE_POST :$type = 'LABEL_ABUSE_TYPE_POST';break;case AbuseReport::TYPE_INMAIL_MESSAGE :$type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';break;case AbuseReport::TYPE_COMMENT :$type = 'LABEL_ABUSE_TYPE_COMMENT';break;case AbuseReport::TYPE_CHAT_USER_MESSAGE :$type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';break;case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :$type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';break;}$reason = '';switch($abuseReport->reason) {case AbuseReport::REASON_ADDICTION :$reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';break;case AbuseReport::REASON_DISCRIMINATION :$reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';break;case AbuseReport::REASON_OFENSIVE :$reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';break;case AbuseReport::REASON_SEXUALITY :$reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';break;case AbuseReport::REASON_TERRORISM :$reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';break;case AbuseReport::READON_OTHER :$reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';break;}$userMapper = UserMapper::getInstance($this->adapter);$user = $userMapper->fetchOne($abuseReport->user_reported_id);$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $abuseReport->added_on);$data = ['first_name' => $user->first_name,'last_name' => $user->last_name,'email' => $user->email,'image' => $storage->getUserImage($user),'status' => $status,'reason' => $reason,'type' => $type,'commet' => $abuseReport->comment,'review' => $abuseReport->review,'date' => $dt->format('d/m/Y H:i a'),];return new JsonModel(['success' => true,'data' => $data]);} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}}