Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace Webkul\Shop\Http\Controllers\API; use Illuminate\Http\JsonResponse; use ..
Decoded Output download
<?php
namespace Webkul\Shop\Http\Controllers\API;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;
use Webkul\MagicAI\Facades\MagicAI;
use Webkul\Product\Repositories\ProductRepository;
use Webkul\Product\Repositories\ProductReviewAttachmentRepository;
use Webkul\Product\Repositories\ProductReviewRepository;
use Webkul\Shop\Http\Resources\ProductReviewResource;
class ReviewController extends APIController
{
/**
* Create a controller instance.
*
* @return void
*/
public function __construct(
protected ProductRepository $productRepository,
protected ProductReviewRepository $productReviewRepository,
protected ProductReviewAttachmentRepository $productReviewAttachmentRepository
) {
}
/**
* Using const variable for status
*/
const STATUS_APPROVED = 'approved';
const STATUS_PENDING = 'pending';
/**
* Product listings.
*/
public function index(int $id): JsonResource
{
$product = $this->productRepository
->find($id)
->reviews()
->Where('status', self::STATUS_APPROVED)
->paginate(8);
return ProductReviewResource::collection($product);
}
/**
* Store a newly created resource in storage.
*/
public function store(int $id): JsonResource
{
$this->validate(request(), [
'title' => 'required',
'comment' => 'required',
'rating' => 'required|numeric|min:1|max:5',
'attachments' => 'array',
'attachments.*' => 'file|mimetypes:image/*,video/*',
]);
$data = array_merge(request()->only([
'title',
'comment',
'rating',
]), [
'attachments' => request()->file('attachments') ?? [],
'status' => self::STATUS_PENDING,
'product_id' => $id,
]);
$data['name'] = auth()->guard('customer')->user()?->name ?? request()->input('name');
$data['customer_id'] = auth()->guard('customer')->id() ?? null;
$review = $this->productReviewRepository->create($data);
$this->productReviewAttachmentRepository->upload($data['attachments'], $review);
return new JsonResource([
'message' => trans('shop::app.products.view.reviews.success'),
]);
}
/**
* Translate the specified resource in storage.
*/
public function translate(int $reviewId): JsonResponse
{
$review = $this->productReviewRepository->find($reviewId);
$currentLocale = core()->getCurrentLocale();
$prompt = "
Translate the following product review to $currentLocale->name. Ensure that the translation retains the sentiment and conveys the meaning accurately. If specific product-related terms or expressions are commonly used in the $currentLocale->name, please adapt accordingly.
---
**Original Product Review:**
$review->comment
---
Translation:
";
try {
$model = core()->getConfigData('general.magic_ai.review_translation.model');
$response = MagicAI::setModel($model)
->setPrompt($prompt)
->ask();
return new JsonResponse([
'content' => $response,
]);
} catch (\Exception $e) {
return new JsonResponse([
'message' => $e->getMessage(),
], 500);
}
}
}
?>
Did this file decode correctly?
Original Code
<?php
namespace Webkul\Shop\Http\Controllers\API;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;
use Webkul\MagicAI\Facades\MagicAI;
use Webkul\Product\Repositories\ProductRepository;
use Webkul\Product\Repositories\ProductReviewAttachmentRepository;
use Webkul\Product\Repositories\ProductReviewRepository;
use Webkul\Shop\Http\Resources\ProductReviewResource;
class ReviewController extends APIController
{
/**
* Create a controller instance.
*
* @return void
*/
public function __construct(
protected ProductRepository $productRepository,
protected ProductReviewRepository $productReviewRepository,
protected ProductReviewAttachmentRepository $productReviewAttachmentRepository
) {
}
/**
* Using const variable for status
*/
const STATUS_APPROVED = 'approved';
const STATUS_PENDING = 'pending';
/**
* Product listings.
*/
public function index(int $id): JsonResource
{
$product = $this->productRepository
->find($id)
->reviews()
->Where('status', self::STATUS_APPROVED)
->paginate(8);
return ProductReviewResource::collection($product);
}
/**
* Store a newly created resource in storage.
*/
public function store(int $id): JsonResource
{
$this->validate(request(), [
'title' => 'required',
'comment' => 'required',
'rating' => 'required|numeric|min:1|max:5',
'attachments' => 'array',
'attachments.*' => 'file|mimetypes:image/*,video/*',
]);
$data = array_merge(request()->only([
'title',
'comment',
'rating',
]), [
'attachments' => request()->file('attachments') ?? [],
'status' => self::STATUS_PENDING,
'product_id' => $id,
]);
$data['name'] = auth()->guard('customer')->user()?->name ?? request()->input('name');
$data['customer_id'] = auth()->guard('customer')->id() ?? null;
$review = $this->productReviewRepository->create($data);
$this->productReviewAttachmentRepository->upload($data['attachments'], $review);
return new JsonResource([
'message' => trans('shop::app.products.view.reviews.success'),
]);
}
/**
* Translate the specified resource in storage.
*/
public function translate(int $reviewId): JsonResponse
{
$review = $this->productReviewRepository->find($reviewId);
$currentLocale = core()->getCurrentLocale();
$prompt = "
Translate the following product review to $currentLocale->name. Ensure that the translation retains the sentiment and conveys the meaning accurately. If specific product-related terms or expressions are commonly used in the $currentLocale->name, please adapt accordingly.
---
**Original Product Review:**
$review->comment
---
Translation:
";
try {
$model = core()->getConfigData('general.magic_ai.review_translation.model');
$response = MagicAI::setModel($model)
->setPrompt($prompt)
->ask();
return new JsonResponse([
'content' => $response,
]);
} catch (\Exception $e) {
return new JsonResponse([
'message' => $e->getMessage(),
], 500);
}
}
}
Function Calls
None |
Stats
MD5 | ce31c27778be5f12e04e081416da540d |
Eval Count | 0 |
Decode Time | 87 ms |