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 declare(strict_types=1); namespace App\Controllers\User; use App\Controllers\Base..
Decoded Output download
<?php
declare(strict_types=1);
namespace App\Controllers\User;
use App\Controllers\BaseController;
use App\Models\Invoice;
use App\Models\Paylist;
use App\Models\UserMoneyLog;
use App\Services\Payment;
use App\Utils\Tools;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
use function json_decode;
use function json_encode;
use function time;
final class InvoiceController extends BaseController
{
private static array $details = [
'field' => [
'op' => '',
'id' => 'ID',
'order_id' => 'ID',
'price' => '',
'status' => '',
'create_time' => '',
'update_time' => '',
'pay_time' => '',
],
];
/**
* @throws Exception
*/
public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
{
return $response->write(
$this->view()
->assign('details', self::$details)
->fetch('user/invoice/index.tpl')
);
}
/**
* @throws Exception
*/
public function detail(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$id = $this->antiXss->xss_clean($args['id']);
$invoice = (new Invoice())->where('user_id', $this->user->id)->where('id', $id)->first();
if ($invoice === null) {
return $response->withRedirect('/user/invoice');
}
$paylist = [];
if ($invoice->status === 'paid_gateway') {
$paylist = (new Paylist())->where('invoice_id', $invoice->id)->where('status', 1)->first();
}
$invoice->status_text = $invoice->status();
$invoice->create_time = Tools::toDateTime($invoice->create_time);
$invoice->update_time = Tools::toDateTime($invoice->update_time);
$invoice->pay_time = Tools::toDateTime($invoice->pay_time);
$invoice_content = json_decode($invoice->content);
return $response->write(
$this->view()
->assign('invoice', $invoice)
->assign('invoice_content', $invoice_content)
->assign('paylist', $paylist)
->assign('payments', Payment::getPaymentsEnabled())
->fetch('user/invoice/view.tpl')
);
}
public function payBalance(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$invoice_id = $this->antiXss->xss_clean($request->getParam('invoice_id'));
$invoice = (new Invoice())->where('user_id', $this->user->id)->where('id', $invoice_id)->first();
if ($invoice === null) {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
$user = $this->user;
if ($user->is_shadow_banned) {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
//
if ($invoice->type === 'topup') {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
//
if ($user->money > 0) {
$money_before = $user->money;
if ($user->money >= $invoice->price) {
$paid = $invoice->price;
$invoice->status = 'paid_balance';
} else {
$paid = $user->money;
$invoice->status = 'partially_paid';
$invoice->price -= $paid;
$invoice_content = json_decode($invoice->content);
$invoice_content[] = [
'content_id' => count($invoice_content),
'name' => '',
'price' => '-' . $paid,
];
$invoice->content = json_encode($invoice_content);
}
$user->money -= $paid;
$user->save();
(new UserMoneyLog())->add(
$user->id,
$money_before,
(float) $user->money,
-$paid,
' #' . $invoice->id
);
$invoice->update_time = time();
$invoice->pay_time = time();
$invoice->save();
} else {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
if ($invoice->status === 'paid_balance') {
return $response->withHeader('HX-Redirect', '/user/invoice');
}
return $response->withHeader('HX-Refresh', 'true');
}
public function ajax(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$invoices = (new Invoice())->orderBy('id', 'desc')->where('user_id', $this->user->id)->get();
foreach ($invoices as $invoice) {
$invoice->op = '<a class="btn btn-primary" href="/user/invoice/' . $invoice->id . '/view"></a>';
$invoice->status = $invoice->status();
$invoice->create_time = Tools::toDateTime($invoice->create_time);
$invoice->update_time = Tools::toDateTime($invoice->update_time);
$invoice->pay_time = Tools::toDateTime($invoice->pay_time);
}
return $response->withJson([
'invoices' => $invoices,
]);
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare(strict_types=1);
namespace App\Controllers\User;
use App\Controllers\BaseController;
use App\Models\Invoice;
use App\Models\Paylist;
use App\Models\UserMoneyLog;
use App\Services\Payment;
use App\Utils\Tools;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
use function json_decode;
use function json_encode;
use function time;
final class InvoiceController extends BaseController
{
private static array $details = [
'field' => [
'op' => '',
'id' => 'ID',
'order_id' => 'ID',
'price' => '',
'status' => '',
'create_time' => '',
'update_time' => '',
'pay_time' => '',
],
];
/**
* @throws Exception
*/
public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
{
return $response->write(
$this->view()
->assign('details', self::$details)
->fetch('user/invoice/index.tpl')
);
}
/**
* @throws Exception
*/
public function detail(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$id = $this->antiXss->xss_clean($args['id']);
$invoice = (new Invoice())->where('user_id', $this->user->id)->where('id', $id)->first();
if ($invoice === null) {
return $response->withRedirect('/user/invoice');
}
$paylist = [];
if ($invoice->status === 'paid_gateway') {
$paylist = (new Paylist())->where('invoice_id', $invoice->id)->where('status', 1)->first();
}
$invoice->status_text = $invoice->status();
$invoice->create_time = Tools::toDateTime($invoice->create_time);
$invoice->update_time = Tools::toDateTime($invoice->update_time);
$invoice->pay_time = Tools::toDateTime($invoice->pay_time);
$invoice_content = json_decode($invoice->content);
return $response->write(
$this->view()
->assign('invoice', $invoice)
->assign('invoice_content', $invoice_content)
->assign('paylist', $paylist)
->assign('payments', Payment::getPaymentsEnabled())
->fetch('user/invoice/view.tpl')
);
}
public function payBalance(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$invoice_id = $this->antiXss->xss_clean($request->getParam('invoice_id'));
$invoice = (new Invoice())->where('user_id', $this->user->id)->where('id', $invoice_id)->first();
if ($invoice === null) {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
$user = $this->user;
if ($user->is_shadow_banned) {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
//
if ($invoice->type === 'topup') {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
//
if ($user->money > 0) {
$money_before = $user->money;
if ($user->money >= $invoice->price) {
$paid = $invoice->price;
$invoice->status = 'paid_balance';
} else {
$paid = $user->money;
$invoice->status = 'partially_paid';
$invoice->price -= $paid;
$invoice_content = json_decode($invoice->content);
$invoice_content[] = [
'content_id' => count($invoice_content),
'name' => '',
'price' => '-' . $paid,
];
$invoice->content = json_encode($invoice_content);
}
$user->money -= $paid;
$user->save();
(new UserMoneyLog())->add(
$user->id,
$money_before,
(float) $user->money,
-$paid,
' #' . $invoice->id
);
$invoice->update_time = time();
$invoice->pay_time = time();
$invoice->save();
} else {
return $response->withJson([
'ret' => 0,
'msg' => '',
]);
}
if ($invoice->status === 'paid_balance') {
return $response->withHeader('HX-Redirect', '/user/invoice');
}
return $response->withHeader('HX-Refresh', 'true');
}
public function ajax(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$invoices = (new Invoice())->orderBy('id', 'desc')->where('user_id', $this->user->id)->get();
foreach ($invoices as $invoice) {
$invoice->op = '<a class="btn btn-primary" href="/user/invoice/' . $invoice->id . '/view"></a>';
$invoice->status = $invoice->status();
$invoice->create_time = Tools::toDateTime($invoice->create_time);
$invoice->update_time = Tools::toDateTime($invoice->update_time);
$invoice->pay_time = Tools::toDateTime($invoice->pay_time);
}
return $response->withJson([
'invoices' => $invoices,
]);
}
}
Function Calls
None |
Stats
MD5 | 50413d9f42ea95d989ccb21602f9969a |
Eval Count | 0 |
Decode Time | 119 ms |