Complete Domain-Driven Architecture migration: - Phase 1-4: Transport, ProductSet, Coupon, Shop, Search, Basket, ProductCustomField, Category, ProductAttribute, Promotion - Phase 5: Order (~562 lines) + Product (~952 lines) - ~20 Product methods migrated to ProductRepository - Apilo sync migrated to OrderAdminService - Production hotfixes: stale Redis cache (prices 0.00), unqualified Product:: refs in LayoutEngine, object->array template conversion - AttributeRepository::getAttributeValueById() Redis cache added Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
98 lines
3.1 KiB
PHP
98 lines
3.1 KiB
PHP
<?php
|
|
error_reporting( E_ALL ^ E_NOTICE ^ E_STRICT ^ E_WARNING ^ E_DEPRECATED );
|
|
|
|
function __autoload_my_classes( $classname )
|
|
{
|
|
$q = explode( '\\', $classname );
|
|
$c = array_pop( $q );
|
|
$f = 'autoload/' . implode( '/', $q ) . '/class.' . $c . '.php';
|
|
|
|
if ( file_exists( $f ) )
|
|
require_once( $f );
|
|
else
|
|
{
|
|
$f = 'autoload/' . implode( '/', $q ) . '/' . $c . '.php';
|
|
if ( file_exists( $f ) )
|
|
require_once( $f );
|
|
}
|
|
}
|
|
|
|
spl_autoload_register( '__autoload_my_classes' );
|
|
date_default_timezone_set( 'Europe/Warsaw' );
|
|
|
|
require_once 'config.php';
|
|
require_once 'libraries/medoo/medoo.php';
|
|
require_once 'libraries/phpmailer/class.phpmailer.php';
|
|
require_once 'libraries/phpmailer/class.smtp.php';
|
|
|
|
session_start();
|
|
|
|
if ( !isset( $_SESSION[ 'check' ] ) )
|
|
{
|
|
session_regenerate_id();
|
|
$_SESSION[ 'check' ] = true;
|
|
$_SESSION[ 'ip' ] = $_SERVER[ 'REMOTE_ADDR' ];
|
|
}
|
|
|
|
if ( $_SESSION[ 'ip' ] !== $_SERVER[ 'REMOTE_ADDR' ] )
|
|
{
|
|
session_destroy();
|
|
header( 'Location: /' );
|
|
exit;
|
|
}
|
|
|
|
$mdb = new medoo( [
|
|
'database_type' => 'mysql',
|
|
'database_name' => $database[ 'name' ],
|
|
'server' => $database[ 'host' ],
|
|
'username' => $database[ 'user' ],
|
|
'password' => $database[ 'password' ],
|
|
'charset' => 'utf8'
|
|
] );
|
|
|
|
if ( !$config['trustmate']['enabled'] )
|
|
{
|
|
echo 'TrustMate is not enabled.';
|
|
exit;
|
|
}
|
|
|
|
$settings = ( new \Domain\Settings\SettingsRepository( $mdb ) )->allSettings();
|
|
|
|
$order_id = $mdb -> get( 'pp_shop_orders', '*', [ 'AND' => [ 'status' => 6, 'trustmate_send' => 0 ] ] );
|
|
if ( is_array( $order_id ) and $order_id['id'] )
|
|
{
|
|
$order = ( new \Domain\Order\OrderRepository( $mdb ) )->orderDetailsFrontend( $order_id['id'] );
|
|
?>
|
|
<!DOCTYPE html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>TrustMate Cron</title>
|
|
<script>
|
|
TRUST_MATE_USER_NAME = '<?= $order['client_name'];?>';
|
|
TRUST_MATE_USER_EMAIL = '<?= $order['client_email'];?>';
|
|
TRUST_MATE_ORDER_NUMBER = '<?= $order['id'];?>';
|
|
TRUST_MATE_COMPANY_UUID = '<?= $config['trustmate']['uid'];?>';
|
|
TRUSTMATE_PRODUCTS = [
|
|
<? foreach ( $order['products'] as $product ):?>
|
|
{
|
|
'local_id': <?= (int)$product['product_id'];?>,
|
|
'name': '<?= $product['name'];?>',
|
|
'product_url': 'https://pomysloweprezenty.pl<?= \front\Views\ShopProduct::productUrl( ( new \Domain\Product\ProductRepository( $mdb ) )->findCached( $product['product_id'], 'pl' ) );?>',
|
|
"image_url": "https://pomysloweprezenty.pl<?= ( new \Domain\Product\ProductRepository( $mdb ) )->getFirstImageCached( (int)$product['product_id'] );?>"
|
|
}<? if ( $product != end( $order['products'] ) ) echo ',';?>
|
|
<? endforeach;?>
|
|
];
|
|
</script>
|
|
<script type="text/javascript" src='https://trustmate.io/api/invitation/script'></script>
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<h1>TrustMate Cron</h1>
|
|
<p>Wysłano zaproszenie do TrustMate dla zamówienia nr <?= $order['id'];?>.</p>
|
|
<?
|
|
$mdb -> update( 'pp_shop_orders', [ 'trustmate_send' => 1 ], [ 'id' => $order['id'] ] );
|
|
?>
|
|
</body>
|
|
</html>
|
|
<?
|
|
}
|