* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ use Doctrine\ORM\EntityManagerInterface; use PrestaShop\Module\ProductComment\Entity\ProductComment; use PrestaShop\Module\ProductComment\Entity\ProductCommentReport; class ProductCommentsReportCommentModuleFrontController extends ModuleFrontController { public function display() { header('Content-Type: application/json'); $customerId = (int) $this->context->cookie->id_customer; if (!$customerId) { $this->ajaxRender( json_encode( [ 'success' => false, 'error' => $this->trans('You need to be logged in to report a review.', [], 'Modules.Productcomments.Shop'), ] ) ); return false; } $id_product_comment = (int) Tools::getValue('id_product_comment'); /** @var EntityManagerInterface $entityManager */ $entityManager = $this->container->get('doctrine.orm.entity_manager'); $productCommentEntityRepository = $entityManager->getRepository(ProductComment::class); /** @var ProductComment|null $productComment */ $productComment = $productCommentEntityRepository->findOneBy(['id' => $id_product_comment]); if (!$productComment) { $this->ajaxRender( json_encode( [ 'success' => false, 'error' => $this->trans('Cannot find the requested product review.', [], 'Modules.Productcomments.Shop'), ] ) ); return false; } $productCommentAbuseRepository = $entityManager->getRepository(ProductCommentReport::class); /** @var ProductCommentReport|null $productCommentAbuse */ $productCommentAbuse = $productCommentAbuseRepository->findOneBy([ 'comment' => $id_product_comment, 'customerId' => $customerId, ]); if ($productCommentAbuse) { $this->ajaxRender( json_encode( [ 'success' => false, 'error' => $this->trans('You already reported this review as abusive.', [], 'Modules.Productcomments.Shop'), ] ) ); return false; } $productCommentAbuse = new ProductCommentReport( $productComment, $customerId ); $entityManager->persist($productCommentAbuse); $entityManager->flush(); $this->ajaxRender( json_encode( [ 'success' => true, 'id_product_comment' => $id_product_comment, ] ) ); } }