Issues (608)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  Header Injection
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

checkout.php (2 issues)

Severity
1
<?php
2
/*
3
 You may not change or alter any portion of this comment or credits
4
 of supporting developers from this source code or any supporting source code
5
 which is considered copyrighted (c) material of the original comment or credit authors.
6
7
 This program is distributed in the hope that it will be useful,
8
 but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
 */
11
12
/**
13
 * oledrion
14
 *
15
 * @copyright   {@link https://xoops.org/ XOOPS Project}
16
 * @license     {@link http://www.fsf.org/copyleft/gpl.html GNU public license}
17
 * @author      Hervé Thouzard (http://www.herve-thouzard.com/)
18
 */
19
20
/**
21
 * Entering customer data + displaying information entered for validation with redirection to the payment gateway
22
 */
23
24
use XoopsModules\Oledrion;
25
use XoopsModules\Oledrion\Constants;
26
27
require_once __DIR__ . '/header.php';
28
29
$GLOBALS['current_category']             = -1;
30
$GLOBALS['xoopsOption']['template_main'] = 'oledrion_command.tpl';
31
require_once XOOPS_ROOT_PATH . '/header.php';
32
require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
33
require_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
34
require_once XOOPS_ROOT_PATH . '/class/tree.php';
35
// require_once OLEDRION_PATH . 'class/Registryfile.php';
36
37
// Get user id
38
$uid = Oledrion\Utility::getCurrentUserID();
39
// Get checkout level
40
$checkout_level = Oledrion\Utility::getModuleOption('checkout_level');
41
// Ordering reserved for registered users
42
if (0 == $uid && 1 == Oledrion\Utility::getModuleOption('restrict_orders', false)) {
43
    $registry = new Oledrion\Registryfile();
44
    $text     = $registry->getfile(OLEDRION_TEXTFILE5);
45
    Oledrion\Utility::redirect(xoops_trim($text), 'index.php', 5);
46
}
47
// Get option
48
$op = \Xmf\Request::getCmd('op', 'default');
49
// Get action
50
$action = 'default';
51
if (\Xmf\Request::hasVar('action', 'POST')) {
52
    $action = $_POST['action'];
53
} elseif (\Xmf\Request::hasVar('action', 'GET')) {
54
    $action = $_GET['action'];
55
}
56
// Get commend id
57
if (\Xmf\Request::hasVar('commend_id', 'POST')) {
58
    $commend_id = \Xmf\Request::getInt('commend_id', 0, 'POST');
59
} else {
60
    $commend_id = \Xmf\Request::getInt('commend_id', 0, 'GET');
61
}
62
63
$xoopsTpl->assign('op', $op);
64
$xoopsTpl->assign('mod_pref', $mod_pref);
65
$cartForTemplate      = [];
66
$emptyCart            = false;
67
$shippingAmount       = $commandAmount = $vatAmount = $commandAmountTTC = $discountsCount = $commandAmountVAT = 0;
68
$goOn                 = '';
69
$discountsDescription = [];
70
// B.R. New
71
$checkoutAttributes = [];
72
// Assume optional checkout steps skipped (listCart updates)
73
$checkoutAttributes['skip_packing']  = 1;
74
$checkoutAttributes['skip_location'] = 1;
75
$checkoutAttributes['skip_delivery'] = 1;
76
// B.R. End
77
78
function listCart()
79
{
80
    // B.R. global $cartForTemplate, $emptyCart, $shippingAmount, $commandAmount, $vatAmount, $goOn, $commandAmountTTC, $discountsDescription;
81
    global $cartForTemplate, $emptyCart, $shippingAmount, $commandAmount, $vatAmount, $goOn, $commandAmountTTC, $discountsDescription, $checkoutAttributes;
82
    $reductions = new Oledrion\Reductions();
83
    // B.R. $reductions->computeCart($cartForTemplate, $emptyCart, $shippingAmount, $commandAmount, $vatAmount, $goOn, $commandAmountTTC, $discountsDescription, $discountsCount);
84
    $reductions->computeCart($cartForTemplate, $emptyCart, $shippingAmount, $commandAmount, $vatAmount, $goOn, $commandAmountTTC, $discountsDescription, $discountsCount, $checkoutAttributes);
85
}
86
87
$oledrionCurrency = Oledrion\Currency::getInstance();
88
$countries        = Oledrion\Utility::getCountriesList();
89
90
// B.R. New
91
listCart();
92
// End New
93
94
switch ($op) {
95
    case 'save':
96
97
        if (empty($_POST)) {
98
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
99
        }
100
        if ($caddyHandler->isCartEmpty()) {
101
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
102
        }
103
        // B.R. listCart();
104
105
        switch ($action) {
106
            case 'make':
107
108
                $commandAmountTTC += $commandAmountVAT;
109
                $password         = md5(xoops_makepass());
110
                $passwordCancel   = md5(xoops_makepass());
111
                $commande         = $commandsHandler->create(true);
112
                $commande->setVars($_POST);
113
                $commande->setVar('cmd_uid', $uid);
114
                $commande->setVar('cmd_date', date('Y-m-d'));
115
                $commande->setVar('cmd_create', time());
116
                $commande->setVar('cmd_state', Constants::OLEDRION_STATE_NOINFORMATION);
117
                $commande->setVar('cmd_ip', Oledrion\Utility::IP());
118
                $commande->setVar('cmd_articles_count', count($cartForTemplate));
119
                $commande->setVar('cmd_total', Oledrion\Utility::formatFloatForDB($commandAmountTTC));
120
                $commande->setVar('cmd_shipping', Oledrion\Utility::formatFloatForDB($shippingAmount));
121
                $commande->setVar('cmd_password', $password);
122
                $commande->setVar('cmd_cancel', $passwordCancel);
123
                $commande->setVar('cmd_text', implode("\n", $discountsDescription));
124
                $commande->setVar('cmd_status', 2);
125
                $res = $commandsHandler->insert($commande, true);
126
                if (!$res) {
127
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
128
                }
129
                // Check checkout level
130
                if (1 == $checkout_level) {
131
                    Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commande->getVar('cmd_id'), 1);
132
                } elseif (2 == $checkout_level) {
133
                    Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&commend_id=' . $commande->getVar('cmd_id'), 1);
134
                } else {
135
                    Oledrion\Utility::redirect(_OLEDRION_SELECT_PACKING, OLEDRION_URL . 'checkout.php?op=packing&commend_id=' . $commande->getVar('cmd_id'), 1);
136
                }
137
138
                break;
139
            case 'find':
140
141
                if (0 == $commend_id) {
142
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
143
                }
144
                $commandAmountTTC += $commandAmountVAT;
145
                $commande         = $commandsHandler->get($commend_id);
146
                $commande->setVars($_POST);
147
                $commande->setVar('cmd_state', Constants::OLEDRION_STATE_NOINFORMATION);
148
                $commande->setVar('cmd_ip', Oledrion\Utility::IP());
149
                $commande->setVar('cmd_articles_count', count($cartForTemplate));
150
                $commande->setVar('cmd_total', Oledrion\Utility::formatFloatForDB($commandAmountTTC));
151
                $commande->setVar('cmd_shipping', Oledrion\Utility::formatFloatForDB($shippingAmount));
152
                $commande->setVar('cmd_text', implode("\n", $discountsDescription));
153
                $commande->setVar('cmd_status', 2);
154
                $res = $commandsHandler->insert($commande, true);
155
                if (!$res) {
156
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
157
                }
158
                Oledrion\Utility::redirect(_OLEDRION_SELECT_PACKING, OLEDRION_URL . 'checkout.php?op=packing&commend_id=' . $commande->getVar('cmd_id'), 1);
159
160
                break;
161
            case 'packing':
162
163
                $packing_id = \Xmf\Request::getInt('packing_id', 0, 'POST');
164
165
                if (0 == $packing_id) {
166
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
167
                }
168
                if (0 == $commend_id) {
169
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
170
                }
171
                // Check checkout level
172
                if (1 == $checkout_level) {
173
                    Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
174
                } elseif (2 == $checkout_level) {
175
                    Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&commend_id=' . $commend_id, 1);
176
                }
177
178
                $packing = $packingHandler->get($packing_id);
179
                if (!$packing->getVar('packing_id')) {
180
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
181
                }
182
                $commande = $commandsHandler->get($commend_id);
183
                $commande->setVar('cmd_packing', $packing->getVar('packing_title'));
184
                $commande->setVar('cmd_packing_id', $packing->getVar('packing_id'));
185
                $commande->setVar('cmd_packing_price', $packing->getVar('packing_price'));
186
                $res = $commandsHandler->insert($commande, true);
187
                if (!$res) {
188
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
189
                }
190
                Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&commend_id=' . $commande->getVar('cmd_id'), 1);
191
192
                break;
193
            case 'location':
194
195
                $location_id = \Xmf\Request::getInt('location_id', 0, 'POST');
196
197
                if (0 == $location_id) {
198
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
199
                }
200
                if (0 == $commend_id) {
201
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
202
                }
203
                // Check checkout level
204
                if (1 == $checkout_level) {
205
                    Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
206
                }
207
                $location = $locationHandler->get($location_id);
208
                $commande = $commandsHandler->get($commend_id);
209
                $commande->setVar('cmd_location', $location->getVar('location_title'));
210
                $commande->setVar('cmd_location_id', $location->getVar('location_id'));
211
                $res = $commandsHandler->insert($commande, true);
212
                if (!$res) {
213
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
214
                }
215
216
                if ($locationHandler->haveChild($location->getVar('location_id'))) {
217
                    Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&action=select&commend_id=' . $commande->getVar('cmd_id'), 1);
218
                } else {
219
                    Oledrion\Utility::redirect(_OLEDRION_SELECT_DELIVERY, OLEDRION_URL . 'checkout.php?op=delivery&commend_id=' . $commande->getVar('cmd_id'), 1);
220
                }
221
222
                break;
223
            case 'delivery':
224
225
                $delivery_id = \Xmf\Request::getInt('delivery_id', 0, 'POST');
226
227
                if (0 == $delivery_id) {
228
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
229
                }
230
                if (0 == $commend_id) {
231
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
232
                }
233
                // Check checkout level
234
                if (1 == $checkout_level) {
235
                    Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
236
                }
237
                $commande = $commandsHandler->get($commend_id);
238
                $delivery = $deliveryHandler->getThisLocationThisDelivery($delivery_id, $commande->getVar('cmd_location_id'));
239
240
                $shipping_price    = '';
241
                $shipping_price_op = Oledrion\Utility::getModuleOption('checkout_shipping', false);
242
                switch ($shipping_price_op) {
243
                    case 1:
244
245
                        $shipping_price = $shippingAmount + $delivery['delivery_price'];
246
247
                        break;
248
                    case 2:
249
250
                        $shipping_price = $shippingAmount;
251
252
                        break;
253
                    case 3:
254
255
                        $shipping_price = $delivery['delivery_price'];
256
257
                        break;
258
                    case 4:
259
260
                        $shipping_price = 0;
261
262
                        break;
263
                }
264
                $commande->setVar('cmd_delivery', $delivery['delivery_title']);
265
                $commande->setVar('cmd_delivery_id', $delivery['delivery_id']);
266
                $commande->setVar('cmd_shipping', $shipping_price);
267
                $res = $commandsHandler->insert($commande, true);
268
                if (!$res) {
269
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
270
                }
271
                Oledrion\Utility::redirect(_OLEDRION_SELECT_PAYMENT, OLEDRION_URL . 'checkout.php?op=payment&commend_id=' . $commande->getVar('cmd_id'), 1);
272
273
                break;
274
            case 'payment':
275
276
                $payment_id = \Xmf\Request::getInt('payment_id', 0, 'POST');
277
278
                if (0 == $payment_id) {
279
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
280
                }
281
                if (0 == $commend_id) {
282
                    Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
283
                }
284
                // Check checkout level
285
                if (1 == $checkout_level) {
286
                    Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
287
                }
288
                $payment  = $paymentHandler->get($payment_id);
289
                $commande = $commandsHandler->get($commend_id);
290
                $commande->setVar('cmd_payment', $payment->getVar('payment_title'));
291
                $commande->setVar('cmd_payment_id', $payment->getVar('payment_id'));
292
                $res = $commandsHandler->insert($commande, true);
293
                if (!$res) {
294
                    Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
295
                }
296
                Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commande->getVar('cmd_id'), 1);
297
298
                break;
299
        }
300
301
        break;
302
    // ****************************************************************************************************************
303
    case 'default':
304
        // Presentation of the form
305
306
        // ****************************************************************************************************************
307
        if ($caddyHandler->isCartEmpty()) {
308
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
309
        }
310
        // B.R. listCart();
311
        $notFound = true;
312
        $commande = null;
313
314
        if ($uid > 0) {
315
            // If it is a registered user, one looks in the old commands to pre-fill the fields
316
            $commande = $commandsHandler->getLastUserOrder($uid);
317
            if (is_object($commande)) {
318
                $notFound = false;
319
            }
320
        }
321
322
        if ($notFound) {
323
            $commande = $commandsHandler->create(true);
324
            $commande->setVar('cmd_country', OLEDRION_DEFAULT_COUNTRY);
325
        }
326
327
        // Text to display
328
        $registry = new Oledrion\Registryfile();
329
        $text     = $registry->getfile(OLEDRION_TEXTFILE6);
330
        $xoopsTpl->assign('text', xoops_trim($text));
331
332
        $sform = new \XoopsThemeForm(_OLEDRION_PLEASE_ENTER, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
333
        $sform->addElement(new \XoopsFormHidden('op', 'save'));
334
        if ($commande->getVar('cmd_id') && $commande->getVar('cmd_id') > 0) {
335
            $sform->addElement(new \XoopsFormHidden('action', 'find'));
336
            $sform->addElement(new \XoopsFormHidden('commend_id', $commande->getVar('cmd_id')));
337
        } else {
338
            $sform->addElement(new \XoopsFormHidden('action', 'make'));
339
        }
340
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_TOTAL, $oledrionCurrency->amountForDisplay($commandAmountTTC)));
341
        // By voltan
342
        if ($shippingAmount > 0 && in_array(Oledrion\Utility::getModuleOption('checkout_shipping'), [1, 2])) {
343
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_SHIPPING_PRICE, $oledrionCurrency->amountForDisplay($shippingAmount)));
344
        }
345
        $sform->addElement(new \XoopsFormText(_OLEDRION_LASTNAME, 'cmd_lastname', 50, 255, $commande->getVar('cmd_lastname', 'e')), true);
346
        // B.R. New
347
        if (0 == $checkoutAttributes['skip_delivery']) {
348
            // Assume that select delivery implies also need first name, physical address and phone numbers
349
            $mandatory = true;
350
        } else {
351
            $mandatory = false;
352
        }
353
        // B.R. $sform->addElement(new \XoopsFormText(_OLEDRION_FIRSTNAME, 'cmd_firstname', 50, 255, $commande->getVar('cmd_firstname', 'e')), false);
354
        $sform->addElement(new \XoopsFormText(_OLEDRION_FIRSTNAME, 'cmd_firstname', 50, 255, $commande->getVar('cmd_firstname', 'e')), $mandatory);
355
        if ($uid > 0) {
356
            $sform->addElement(new \XoopsFormText(_OLEDRION_EMAIL, 'cmd_email', 50, 255, $xoopsUser->getVar('email', 'e')), true);
357
        } else {
358
            $sform->addElement(new \XoopsFormText(_OLEDRION_EMAIL, 'cmd_email', 50, 255, ''), true);
359
        }
360
        $sform->addElement(new \XoopsFormText(_OLEDRION_CITY, 'cmd_town', 50, 255, $commande->getVar('cmd_town', 'e')), true);
361
        // By voltan
362
        if (Oledrion\Utility::getModuleOption('checkout_country')) {
363
            $countriesList = new \XoopsFormSelect(_OLEDRION_COUNTRY, 'cmd_country', $commande->getVar('cmd_country', ' e'));
364
            $countriesList->addOptionArray($countries);
365
            $sform->addElement($countriesList, true);
366
        } else {
367
            $sform->addElement(new \XoopsFormHidden('cmd_country', OLEDRION_DEFAULT_COUNTRY));
368
        }
369
        $sform->addElement(new \XoopsFormText(_OLEDRION_CP, 'cmd_zip', 15, 30, $commande->getVar('cmd_zip', 'e')), true);
370
        // B.R. $sform->addElement(new \XoopsFormText(_OLEDRION_MOBILE, 'cmd_mobile', 15, 50, $commande->getVar('cmd_mobile', 'e')), true);
371
        // B.R. $sform->addElement(new \XoopsFormText(_OLEDRION_PHONE, 'cmd_telephone', 15, 50, $commande->getVar('cmd_telephone', 'e')), true);
372
        $sform->addElement(new \XoopsFormText(_OLEDRION_MOBILE, 'cmd_mobile', 15, 50, $commande->getVar('cmd_mobile', 'e')), $mandatory);
373
        $sform->addElement(new \XoopsFormText(_OLEDRION_PHONE, 'cmd_telephone', 15, 50, $commande->getVar('cmd_telephone', 'e')), $mandatory);
374
        if (Oledrion\Utility::getModuleOption('ask_vatnumber')) {
375
            $sform->addElement(new \XoopsFormText(_OLEDRION_VAT_NUMBER, 'cmd_vat_number', 50, 255, $commande->getVar('cmd_vat_number', 'e')), false);
376
        }
377
        if (Oledrion\Utility::getModuleOption('ask_bill')) {
378
            // B.R. $sform->addElement(new \XoopsFormRadioYN(_OLEDRION_INVOICE, 'cmd_bill', 0), true);
379
            $sform->addElement(new \XoopsFormRadioYN(_OLEDRION_INVOICE, 'cmd_bill', 0), false);
380
        }
381
        // B.R. $sform->addElement(new XoopsFormTextArea(_OLEDRION_STREET, 'cmd_adress', $commande->getVar('cmd_adress', 'e'), 3, 50), true);
382
        $sform->addElement(new \XoopsFormTextArea(_OLEDRION_STREET, 'cmd_adress', $commande->getVar('cmd_adress', 'e'), 3, 50), $mandatory);
383
        $sform->addElement(new \XoopsFormText(_OLEDRION_GIFT, 'cmd_gift', 15, 30, $commande->getVar('cmd_gift', 'e')), false);
384
        $buttonTray = new \XoopsFormElementTray('', '');
385
        $submit_btn = new \XoopsFormButton('', 'post', _OLEDRION_SAVE_NEXT, 'submit');
386
        $buttonTray->addElement($submit_btn);
387
        $sform->addElement($buttonTray);
388
        $sform = Oledrion\Utility::formMarkRequiredFields($sform);
389
        $xoopsTpl->assign('form', $sform->render());
390
391
        break;
392
    case 'packing':
393
394
        if ($caddyHandler->isCartEmpty()) {
395
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
396
        }
397
        if (0 == $commend_id) {
398
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
399
        }
400
        // Check checkout level
401
        if (1 == $checkout_level) {
402
            Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
403
            // B.R. Start
404
        } elseif (1 == $checkoutAttributes['skip_packing']) {
405
            Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&commend_id=' . $commend_id, 1);
406
            // B.R. End
407
        } elseif (2 == $checkout_level) {
408
            Oledrion\Utility::redirect(_OLEDRION_SELECT_LOCATION, OLEDRION_URL . 'checkout.php?op=location&commend_id=' . $commend_id, 1);
409
        }
410
        // B.R. listCart();
411
        $packings = $packingHandler->getPacking();
412
413
        $sform = new \XoopsThemeForm(_OLEDRION_PACKING_FORM, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
414
        $sform->addElement(new \XoopsFormHidden('op', 'save'));
415
        $sform->addElement(new \XoopsFormHidden('action', 'packing'));
416
        $sform->addElement(new \XoopsFormHidden('commend_id', $commend_id));
417
        $packingSelect = new \XoopsFormRadio(_OLEDRION_SELECT_PACKING, 'packing_id', '');
418
        foreach ($packings as $packing) {
419
            $packingSelect->addOption($packing['packing_id'], Oledrion\Utility::packingHtmlSelect($packing));
420
        }
421
        $sform->addElement($packingSelect, true);
422
        $sform->addElement(new \XoopsFormButton('', 'post', _OLEDRION_SAVE_NEXT, 'submit'));
423
        $sform = Oledrion\Utility::formMarkRequiredFields($sform);
424
        $xoopsTpl->assign('form', $sform->render());
425
426
        // Text to display
427
        $registry = new Oledrion\Registryfile();
428
        $text     = $registry->getfile(OLEDRION_TEXTFILE6);
429
        $xoopsTpl->assign('text', xoops_trim($text));
430
431
        break;
432
    case 'location':
433
434
        if ($caddyHandler->isCartEmpty()) {
435
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
436
        }
437
        if (0 == $commend_id) {
438
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
439
        }
440
        // Check checkout level
441
        if (1 == $checkout_level) {
442
            Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
443
            // B.R. Start
444
        } elseif (1 == $checkoutAttributes['skip_location']) {
445
            //$commande = $h_oledrion_commands->get($commend_id);
446
            //Oledrion\Utility::redirect(_OLEDRION_SELECT_DELIVERY, OLEDRION_URL . 'checkout.php?op=delivery&commend_id=' . $commande->getVar('cmd_id'), 1);
447
            Oledrion\Utility::redirect(_OLEDRION_SELECT_DELIVERY, OLEDRION_URL . 'checkout.php?op=delivery&commend_id=' . $commend_id, 1);
448
            // B.R. End
449
        }
450
        // B.R. listCart();
451
        switch ($action) {
452
            case 'default':
453
454
                $sform = new \XoopsThemeForm(_OLEDRION_LOCATION_FORM, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
455
                $sform->addElement(new \XoopsFormHidden('op', 'save'));
456
                $sform->addElement(new \XoopsFormHidden('action', 'location'));
457
                $sform->addElement(new \XoopsFormHidden('commend_id', $commend_id));
458
                $pids         = $locationHandler->getAllPid(new Oledrion\Parameters());
459
                $location_pid = new \XoopsFormRadio(_OLEDRION_SELECT_LOCATION, 'location_id');
460
                foreach ($pids as $pid) {
461
                    $location_pid->addOption($pid->getVar('location_id'), $pid->getVar('location_title'));
462
                }
463
                $sform->addElement($location_pid, true);
464
                $sform->addElement(new \XoopsFormButton('', 'post', _OLEDRION_SAVE_NEXT, 'submit'));
465
                $sform = Oledrion\Utility::formMarkRequiredFields($sform);
466
                $xoopsTpl->assign('form', $sform->render());
467
468
                break;
469
            case 'select':
470
471
                $commande = $commandsHandler->get($commend_id);
472
                $sform    = new \XoopsThemeForm(_OLEDRION_LOCATION_FORM, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
473
                $sform->addElement(new \XoopsFormHidden('op', 'save'));
474
                $sform->addElement(new \XoopsFormHidden('action', 'location'));
475
                $sform->addElement(new \XoopsFormHidden('commend_id', $commend_id));
476
                $locations       = $locationHandler->getLocation($commande->getVar('cmd_location_id'));
477
                $location_select = new \XoopsFormSelect(_OLEDRION_SELECT_LOCATION, 'location_id', '');
478
                foreach ($locations as $location) {
479
                    $location_select->addOption($location->getVar('location_id'), $location->getVar('location_title'));
480
                }
481
                $sform->addElement($location_select, true);
482
                $sform->addElement(new \XoopsFormButton('', 'post', _OLEDRION_SAVE_NEXT, 'submit'));
483
                $sform = Oledrion\Utility::formMarkRequiredFields($sform);
484
                $xoopsTpl->assign('form', $sform->render());
485
486
                break;
487
        }
488
489
        // Text to display
490
        $registry = new Oledrion\Registryfile();
491
        $text     = $registry->getfile(OLEDRION_TEXTFILE6);
492
        $xoopsTpl->assign('text', xoops_trim($text));
493
494
        break;
495
    case 'delivery':
496
497
        if ($caddyHandler->isCartEmpty()) {
498
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
499
        }
500
        if (0 == $commend_id) {
501
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
502
        }
503
        // Check checkout level
504
        if (1 == $checkout_level) {
505
            Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
506
            // B.R. Start
507
        } elseif (1 == $checkoutAttributes['skip_delivery']) {
508
            //$commande = $h_oledrion_commands->get($commend_id);
509
            //Oledrion\Utility::redirect(_OLEDRION_SELECT_PAYMENT, OLEDRION_URL . 'checkout.php?op=payment&commend_id=' . $commande->getVar('cmd_id'), 1);
510
            Oledrion\Utility::redirect(_OLEDRION_SELECT_PAYMENT, OLEDRION_URL . 'checkout.php?op=payment&commend_id=' . $commend_id, 1);
511
            // B.R. End
512
        }
513
        // B.R. listCart();
514
        $commande    = $commandsHandler->get($commend_id);
515
        $location_id = $commande->getVar('cmd_location_id');
516
        $deliveres   = $deliveryHandler->getThisLocationDelivery($location_id);
517
518
        $sform = new \XoopsThemeForm(_OLEDRION_DELIVERY_FORM, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
519
        $sform->addElement(new \XoopsFormHidden('op', 'save'));
520
        $sform->addElement(new \XoopsFormHidden('action', 'delivery'));
521
        $sform->addElement(new \XoopsFormHidden('commend_id', $commend_id));
522
        $delivery_options = new \XoopsFormRadio(_OLEDRION_SELECT_DELIVERY, 'delivery_id');
523
        foreach ($deliveres as $delivery) {
524
            $delivery_options->addOption($delivery['delivery_id'], Oledrion\Utility::deliveryHtmlSelect($delivery));
525
        }
526
        $sform->addElement($delivery_options, true);
527
        $sform->addElement(new \XoopsFormButton('', 'post', _OLEDRION_SAVE_NEXT, 'submit'));
528
        $sform = Oledrion\Utility::formMarkRequiredFields($sform);
529
        $xoopsTpl->assign('form', $sform->render());
530
531
        // Text to display
532
        $registry = new Oledrion\Registryfile();
533
        $text     = $registry->getfile(OLEDRION_TEXTFILE6);
534
        $xoopsTpl->assign('text', xoops_trim($text));
535
536
        break;
537
    case 'payment':
538
539
        if ($caddyHandler->isCartEmpty()) {
540
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
541
        }
542
        if (0 == $commend_id) {
543
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
544
        }
545
        // Check checkout level
546
        if (1 == $checkout_level) {
547
            Oledrion\Utility::redirect(_OLEDRION_FINAL_CHECKOUT, OLEDRION_URL . 'checkout.php?op=confirm&commend_id=' . $commend_id, 1);
548
        }
549
        // B.R. listCart();
550
        // B.R. Start
551
        $commande = $commandsHandler->get($commend_id);
552
        if (1 == $checkoutAttributes['skip_delivery']) {
553
            // Assumes first deliery method is free shipping (else, why skip?)
554
            // TODO: Consider pre-configuring free shipping as #1
555
            $delivery_id = 1;
556
        } else {
557
            // B.R. End
558
            $delivery_id = $commande->getVar('cmd_delivery_id');
559
        }
560
        $payments = $paymentHandler->getThisDeliveryPayment($delivery_id);
561
562
        $sform = new \XoopsThemeForm(_OLEDRION_PAYMENT_FORM, 'informationfrm', OLEDRION_URL . 'checkout.php', 'post', true);
563
        $sform->addElement(new \XoopsFormHidden('op', 'save'));
564
        $sform->addElement(new \XoopsFormHidden('action', 'payment'));
565
        $sform->addElement(new \XoopsFormHidden('commend_id', $commend_id));
566
        $payment_options = new \XoopsFormRadio(_OLEDRION_SELECT_PAYMENT, 'payment_id');
567
        foreach ($payments as $payment) {
568
            $payment_options->addOption($payment['payment_id'], Oledrion\Utility::paymentHtmlSelect($payment));
569
        }
570
        $sform->addElement($payment_options, true);
571
        $sform->addElement(new \XoopsFormButton('', 'post', _OLEDRION_SAVE_CONFIRM, 'submit'));
572
        $sform = Oledrion\Utility::formMarkRequiredFields($sform);
573
        $xoopsTpl->assign('form', $sform->render());
574
575
        // Text to display
576
        $registry = new Oledrion\Registryfile();
577
        $text     = $registry->getfile(OLEDRION_TEXTFILE6);
578
        $xoopsTpl->assign('text', xoops_trim($text));
579
580
        break;
581
    // ****************************************************************************************************************
582
    case 'confirm':
583
        // Final validation before sending to the payment gateway (or stop)
584
585
        // ****************************************************************************************************************
586
        if ($caddyHandler->isCartEmpty()) {
587
            Oledrion\Utility::redirect(_OLEDRION_CART_IS_EMPTY, OLEDRION_URL, 4);
588
        }
589
        if (0 == $commend_id) {
590
            Oledrion\Utility::redirect(_OLEDRION_ERROR20, OLEDRION_URL, 4);
591
        }
592
        // B.R. listCart();
593
594
        $commandAmountTTC += $commandAmountVAT;
595
596
        $commande = $commandsHandler->get($commend_id);
597
        if (1 == $commande->getVar('cmd_status')) {
598
            Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL . 'invoice.php?id=' . $commande->getVar('cmd_id') . '&pass=' . $commande->getVar('cmd_password'), 6);
599
        }
600
        $commande->setVar('cmd_create', time());
601
        $commande->setVar('cmd_date', date('Y-m-d'));
602
        $commande->setVar('cmd_state', Constants::OLEDRION_STATE_NOINFORMATION);
603
        $commande->setVar('cmd_ip', Oledrion\Utility::IP());
604
        $commande->setVar('cmd_status', 1);
605
        $res = $commandsHandler->insert($commande, true);
606
        if (!$res) {
607
            Oledrion\Utility::redirect(_OLEDRION_ERROR10, OLEDRION_URL, 6);
608
        }
609
610
        // Save command and empty cart
611
        $caddyHandler->emptyCart();
612
613
        // Registering the Cart
614
        $msgCommande = '';
615
        //        $handlers    = HandlerManager::getInstance();
616
        foreach ($cartForTemplate as $line) {
617
            $panier = $caddyHandler->create(true);
618
            $panier->setVar('caddy_product_id', $line['product_id']);
619
            $panier->setVar('caddy_qte', $line['product_qty']);
620
            $panier->setVar('caddy_price', Oledrion\Utility::formatFloatForDB($line['totalPrice']));
621
            // Attention, price including all taxes
622
            $panier->setVar('caddy_cmd_id', $commande->getVar('cmd_id'));
623
            $panier->setVar('caddy_shipping', Oledrion\Utility::formatFloatForDB($line['discountedShipping']));
624
            $panier->setVar('caddy_pass', md5(xoops_makepass()));
625
            // For download
626
            $res = $caddyHandler->insert($panier, true);
627
            // Make msg
628
            $cat         = $categoryHandler->get($line['product_cid'])->toArray();
629
            $msgCommande .= str_pad($line['product_id'], 5, ' ') . ' ';
630
            $msgCommande .= str_pad($cat['cat_title'], 10, ' ', STR_PAD_LEFT) . ' ';
631
            $msgCommande .= str_pad($line['product_title'], 19, ' ', STR_PAD_LEFT) . ' ';
632
            $msgCommande .= str_pad($line['product_qty'], 8, ' ', STR_PAD_LEFT) . ' ';
633
            $msgCommande .= str_pad($oledrionCurrency->amountForDisplay($line['product_price']), 15, ' ', STR_PAD_LEFT) . ' ';
634
            //$msgCommande .= str_pad($line['totalPriceFormated'],10,' ', STR_PAD_LEFT) . ' ';
635
            $msgCommande .= "\n";
636
            // Attributs
637
            if ($res && is_array($line['attributes']) && count($line['attributes']) > 0) {
638
                // Registering attributes for this product
639
                foreach ($line['attributes'] as $attributeId => $attributeInformation) {
640
                    $caddyAttribute = $caddyAttributesHandler->create(true);
641
                    $caddyAttribute->setVar('ca_cmd_id', $commande->getVar('cmd_id'));
642
                    $caddyAttribute->setVar('ca_caddy_id', $panier->getVar('caddy_id'));
643
                    $caddyAttribute->setVar('ca_attribute_id', $attributeId);
644
                    $selectedOptions = $attributeInformation['attribute_options'];
645
                    $msgCommande     .= '- ' . $attributeInformation['attribute_title'] . "\n";
646
                    foreach ($selectedOptions as $selectedOption) {
647
                        $caddyAttribute->addOption($selectedOption['option_name'], $selectedOption['option_value'], $selectedOption['option_price']);
648
                        $msgCommande .= '    ' . $selectedOption['option_name'] . ' : ' . $selectedOption['option_ttc_formated'] . "\n";
649
                    }
650
                    $caddyAttributesHandler->insert($caddyAttribute, true);
651
                }
652
            }
653
        }
654
655
        // General totals
656
        //$msgCommande .= "\n\n"._OLEDRION_SHIPPING_PRICE.' '.$oledrionCurrency->amountForDisplay($shippingAmount)."\n";
657
        $msgCommande .= "\n\n" . _OLEDRION_TOTAL . ' ' . $oledrionCurrency->amountForDisplay($commandAmountTTC) . "\n";
658
        if (count($discountsDescription) > 0) {
659
            $msgCommande .= "\n\n" . _OLEDRION_CART4 . "\n";
660
            $msgCommande .= implode("\n", $discountsDescription);
661
            $msgCommande .= "\n";
662
        }
663
664
        $msg                 = [];
665
        $msg['COMMANDE']     = $msgCommande;
666
        $msg['NUM_COMMANDE'] = $commande->getVar('cmd_id');
667
        $msg['NOM']          = $commande->getVar('cmd_lastname');
668
        $msg['PRENOM']       = $commande->getVar('cmd_firstname');
669
        $msg['ADRESSE']      = $commande->getVar('cmd_adress', 'n');
670
        $msg['CP']           = $commande->getVar('cmd_zip');
671
        $msg['VILLE']        = $commande->getVar('cmd_town');
672
        $msg['PAYS']         = $countries[$commande->getVar('cmd_country')];
673
        $msg['TELEPHONE']    = $commande->getVar('cmd_telephone');
674
        $msg['EMAIL']        = $commande->getVar('cmd_email');
675
        $msg['URL_BILL']     = OLEDRION_URL . 'invoice.php?id=' . $commande->getVar('cmd_id') . '&pass=' . $commande->getVar('cmd_password');
676
        $msg['IP']           = Oledrion\Utility::IP();
677
        if (1 == $commande->getVar('cmd_bill')) {
678
            $msg['FACTURE'] = _YES;
679
        } else {
680
            $msg['FACTURE'] = _NO;
681
        }
682
        // Send mail to client
683
        // B.R. New Rather than sending message before payment approval, save parameters in OLEDRION_UPLOAD_PATH/${cmd_id}_conf_email.serialize
684
        // TODO: Make a configuration option?
685
        // Then, based on payment approval / disapproval, send email at payment gatewayNotify callback
686
        $email_name = sprintf('%s/%d%s', OLEDRION_UPLOAD_PATH, $commande->getVar('cmd_id'), OLEDRION_CONFIRMATION_EMAIL_FILENAME_SUFFIX);
687
        file_put_contents($email_name, serialize($msg));
688
        //Oledrion\Utility::sendEmailFromTpl('command_client.tpl', $commande->getVar('cmd_email'), sprintf(_OLEDRION_THANKYOU_CMD, $xoopsConfig['sitename']), $msg);
689
        // Send mail to admin
690
        //Oledrion\Utility::sendEmailFromTpl('command_shop.tpl', Oledrion\Utility::getEmailsFromGroup(Oledrion\Utility::getModuleOption('grp_sold')), _OLEDRION_NEW_COMMAND, $msg);
691
        // End New
692
693
        // Presentation of the form to send to the payment gateway
694
        // Final presentation with Cart in hidden variables ******************************
695
        $registry = new Oledrion\Registryfile();
696
        $text     = $registry->getfile(OLEDRION_TEXTFILE7);
697
        $xoopsTpl->assign('text', xoops_trim($text));
698
699
        if (1 == $checkout_level) {
700
            $text = $registry->getfile(OLEDRION_TEXTFILE4);
701
            $xoopsTpl->append('text', '<br>' . xoops_trim($text));
702
            $payURL = OLEDRION_URL . 'invoice.php?id=' . $commande->getVar('cmd_id') . '&pass=' . $commande->getVar('cmd_password');
703
            $sform  = new \XoopsThemeForm(_OLEDRION_FINISH, 'payform', $payURL, 'post', true);
704
        } else {
705
            // B.R. New
706
            $payment_id = $commande->getVar('cmd_payment_id');
707
            $payment    = $paymentHandler->get($payment_id);
708
            // End new
709
            // B.R. if (!isset($payment) || $payment['payment_type'] === 'offline' || $commandAmountTTC == 0) {
710
            if (0 == $commandAmountTTC || !isset($payment) || 'offline' === $payment->getVar('payment_type')) {
0 ignored issues
show
The condition 0 == $commandAmountTTC is always true.
Loading history...
711
                $text = $registry->getfile(OLEDRION_TEXTFILE4);
712
                $xoopsTpl->append('text', '<br>' . xoops_trim($text));
713
                $payURL = OLEDRION_URL . 'invoice.php?id=' . $commande->getVar('cmd_id') . '&pass=' . $commande->getVar('cmd_password');
714
                $sform  = new \XoopsThemeForm(_OLEDRION_FINISH, 'payform', $payURL, 'post', true);
715
            } else {
716
                // Set gateway
717
                // B.R. $gateway = \XoopsModules\Oledrion\Gateways::getGatewayObject($payment['payment_gateway']);
718
719
                $gatewayName      = \XoopsModules\Oledrion\Gateways::getCurrentGateway();
720
                $gatewayClassName = '\XoopsModules\Oledrion\Gateways\\' . $gatewayName . '\\' . $gatewayName . 'Gateway';
721
                if (class_exists($gatewayClassName)) {
722
                    $gateway = new $gatewayClassName();
723
                }
724
                if (!is_object($gateway)) {
725
                    die(_OLEDRION_ERROR28);
726
                }
727
                if (is_object($gateway)) {
728
                    $payURL = $gateway->getRedirectURL($commande->getVar('cmd_total'), $commande->getVar('cmd_id'));
729
                } else {
730
                    $payURL = OLEDRION_URL . 'invoice.php?id=' . $commande->getVar('cmd_id') . '&pass=' . $commande->getVar('cmd_password');
731
                }
732
                $sform    = new \XoopsThemeForm(_OLEDRION_PAY_GATEWAY, 'payform', $payURL, 'post', true);
733
                $elements = [];
734
                if (is_object($gateway)) {
735
                    $elements = $gateway->getCheckoutFormContent($commande);
736
                }
737
                foreach ($elements as $key => $value) {
738
                    $sform->addElement(new \XoopsFormHidden($key, $value));
739
                }
740
            }
741
        }
742
743
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_AMOUNT_PRICE, $oledrionCurrency->amountForDisplay($commandAmountTTC)));
744
        if ($commande->getVar('cmd_shipping') > 0) {
745
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_SHIPPING_PRICE, $oledrionCurrency->amountForDisplay($commande->getVar('cmd_shipping'))));
746
        }
747
        if ($commande->getVar('cmd_packing_price') > 0) {
748
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_PACKING_PRICE, $oledrionCurrency->amountForDisplay($commande->getVar('cmd_packing_price'))));
749
        }
750
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_TOTAL, $oledrionCurrency->amountForDisplay($commandAmountTTC + $commande->getVar('cmd_shipping') + $commande->getVar('cmd_packing_price'))));
751
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_LASTNAME, $commande->getVar('cmd_lastname')));
752
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_FIRSTNAME, $commande->getVar('cmd_firstname')));
753
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_STREET, $commande->getVar('cmd_adress')));
754
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_CP, $commande->getVar('cmd_zip')));
755
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_CITY, $commande->getVar('cmd_town')));
756
        if (Oledrion\Utility::getModuleOption('checkout_country')) {
757
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_COUNTRY, $countries[$commande->getVar('cmd_country')]));
758
        }
759
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_PHONE, $commande->getVar('cmd_telephone')));
760
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_MOBILE, $commande->getVar('cmd_mobile')));
761
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_EMAIL, $commande->getVar('cmd_email')));
762
        $sform->addElement(new \XoopsFormLabel(_OLEDRION_GIFT, $commande->getVar('cmd_gift')));
763
        if ($commande->getVar('cmd_packing')) {
764
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_PACKING, $commande->getVar('cmd_packing')));
765
        }
766
        if ($commande->getVar('cmd_location')) {
767
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_LOCATION, $commande->getVar('cmd_location')));
768
        }
769
        if ($commande->getVar('cmd_delivery')) {
770
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_DELIVERY, $commande->getVar('cmd_delivery')));
771
        }
772
        if ($commande->getVar('cmd_payment')) {
773
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_PAYMENT, $commande->getVar('cmd_payment')));
774
        }
775
        if (Oledrion\Utility::getModuleOption('ask_vatnumber')) {
776
            $sform->addElement(new \XoopsFormLabel(_OLEDRION_VAT_NUMBER, $commande->getVar('cmd_vat_number')));
777
        }
778
        if (Oledrion\Utility::getModuleOption('ask_bill')) {
779
            if (0 == $commande->getVar('cmd_bill')) {
780
                $sform->addElement(new \XoopsFormLabel(_OLEDRION_INVOICE, _NO));
781
            } else {
782
                $sform->addElement(new \XoopsFormLabel(_OLEDRION_INVOICE, _YES));
783
            }
784
        }
785
        $buttonTray = new \XoopsFormElementTray('', '');
786
        //B.R. if (!isset($payment) || $payment['payment_type'] === 'offline' || $commandAmountTTC == 0 || $checkout_level == 1 ) {
787
        if (0 == $commandAmountTTC || !isset($payment) || 'offline' === $payment->getVar('payment_type') || 1 == $checkout_level) {
0 ignored issues
show
The condition 0 == $commandAmountTTC is always true.
Loading history...
788
            $submit_btn = new \XoopsFormButton('', 'post', _OLEDRION_FINISH, 'submit');
789
        } else {
790
            $submit_btn = new \XoopsFormButton('', 'post', _OLEDRION_PAY_GATEWAY, 'submit');
791
        }
792
        $buttonTray->addElement($submit_btn);
793
        $sform->addElement($buttonTray);
794
        $xoopsTpl->assign('form', $sform->render());
795
796
        // Send sms
797
        if (Oledrion\Utility::getModuleOption('sms_checkout')) {
798
            $information['to']   = ltrim($commande->getVar('cmd_mobile'), 0);
799
            $information['text'] = Oledrion\Utility::getModuleOption('sms_checkout_text');
800
            $sms                 = \XoopsModules\Oledrion\Sms::sendSms($information);
801
        }
802
803
        break;
804
}
805
806
$xoopsTpl->assign('breadcrumb', Oledrion\Utility::breadcrumb([OLEDRION_URL . basename(__FILE__) => _OLEDRION_VALIDATE_CMD]));
807
808
// Image icons
809
if (file_exists(OLEDRION_PATH . 'language/' . $xoopsConfig['language'] . '/image/step1.png')) {
810
    $step1 = OLEDRION_URL . 'language/' . $xoopsConfig['language'] . '/image/step1.png';
811
    $step2 = OLEDRION_URL . 'language/' . $xoopsConfig['language'] . '/image/step2.png';
812
    $step3 = OLEDRION_URL . 'language/' . $xoopsConfig['language'] . '/image/step3.png';
813
} else {
814
    // Fallback
815
    $step1 = OLEDRION_URL . 'language/english/image/step1.png';
816
    $step2 = OLEDRION_URL . 'language/english/image/step2.png';
817
    $step3 = OLEDRION_URL . 'language/english/image/step3.png';
818
}
819
$xoopsTpl->assign('step1', $step1);
820
$xoopsTpl->assign('step2', $step2);
821
$xoopsTpl->assign('step3', $step3);
822
823
$title = _OLEDRION_VALIDATE_CMD . ' - ' . Oledrion\Utility::getModuleName();
824
Oledrion\Utility::setMetas($title, $title);
825
Oledrion\Utility::setCSS();
826
Oledrion\Utility::setLocalCSS($xoopsConfig['language']);
827
require_once XOOPS_ROOT_PATH . '/footer.php';
828