Faire un compare fichier par fichier je sais faire ça (via Notepad++) mais pas en masse... :s
Il y a moyen en ligne de commande de faire quelque chose comme ça ? Ou autrement ?
Pour assurer, j'ai fait une capture de Paramètres avancés > Performances > Mode debug :
Pour les overrides, les voici :
- /override/classes/order/Order.php est le fichier qui m'a posé le problème à la base. Même un die() en début de getProduct() n'a pas d'effet.
<?php /*** /* override/classes/order/Order.php /**/ class Order extends OrderCore { // Override déjà présent avant de faire l'ajout public function getCartRules() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'order_cart_rule` ocr INNER JOIN `'._DB_PREFIX_.'cart_rule` cr ON ocr.`id_cart_rule` = cr.`id_cart_rule` WHERE ocr.`id_order` = '.(int)$this->id); } /** START ADD **/ // Récupère des informations sur le fournisseur d'un produit à réutiliser dans la page commande public function setProductSupplierInfos(&$row) { $suppliers_ref_list = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT ps.*, s.name, p.id_supplier AS sup_default FROM `'._DB_PREFIX_.'product_supplier` ps LEFT JOIN `'._DB_PREFIX_.'supplier` s ON (ps.id_supplier = s.id_supplier) LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = ps.id_product) WHERE ps.`id_product` = '.(int)$row['id_product'].' AND s.`active` = 1 AND ps.id_product_attribute = '.(int)$row['product_attribute_id']); foreach ($suppliers_ref_list as $key => $supplier_infos) { if ($supplier_infos['sup_default'] == $supplier_infos['id_supplier']) { $row['supplier_default']['name'] = $supplier_infos['name']; $row['supplier_default']['reference'] = $supplier_infos['product_supplier_reference']; $row['supplier_default']['achat'] = $supplier_infos['product_supplier_price_te']; } else { $row['suppliers_infos'][$supplier_infos['id_supplier']]['sup_reference'] = $supplier_infos['product_supplier_reference']; $row['suppliers_infos'][$supplier_infos['id_supplier']]['sup_name'] = $supplier_infos['name']; $row['suppliers_infos'][$supplier_infos['id_supplier']]['sup_achat'] = $supplier_infos['product_supplier_price_te']; } } } // Récupère le nom du fournisseur d'un produit à réutiliser dans la page commande public function setProductManufacturerName(&$row) { $manufacturer_name = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT name FROM `'._DB_PREFIX_.'manufacturer` WHERE `id_manufacturer` = '.(int)$row['id_manufacturer']); foreach ($manufacturer_name as $key => $name) { $row['manufacturer_name'] = $name['name']; } } /** END ADD **/ public function getProducts($products = false, $selected_products = false, $selected_qty = false) { if (!$products) { $products = $this->getProductsDetail(); } $customized_datas = Product::getAllCustomizedDatas($this->id_cart); $result_array = array(); foreach ($products as $row) { // Change qty if selected if ($selected_qty) { $row['product_quantity'] = 0; foreach ($selected_products as $key => $id_product) { if ($row['id_order_detail'] == $id_product) { $row['product_quantity'] = (int)$selected_qty[$key]; } } if (!$row['product_quantity']) { continue; } } $this->setProductImageInformations($row); $this->setProductCurrentStock($row); // Backward compatibility 1.4 -> 1.5 $this->setProductPrices($row); $this->setProductCustomizedDatas($row, $customized_datas); // Add information for virtual product if ($row['download_hash'] && !empty($row['download_hash'])) { $row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']); // Get the display filename $row['display_filename'] = ProductDownload::getFilenameFromFilename($row['filename']); } $row['id_address_delivery'] = $this->id_address_delivery; /** START ADD **/ if ($row['product_id'] == 108948) { die(print_r($row)); } $this->setProductSupplierInfos($row); $this->setProductManufacturerName($row); /** END ADD **/ /* Stock product */ $result_array[(int)$row['id_order_detail']] = $row; } if ($customized_datas) { Product::addCustomizationPrice($result_array, $customized_datas); } return $result_array; } }
- /override/classes/controller/FrontController.php, début janvier je l'ai modifié et pas eu de soucis pour que ça marche. J'avais modifié la variable
$jours_feries = array($year_now.'-01-01', $paques, $year_now.'-05-01', $year_now.'-05-08', $year_now.'-07-14', $year_now.'-08-15', $year_now.'-11-01', $year_now.'-11-11', $year_now.'-12-25', '2018-10-13');
Cette fois, j'ai modifié le produit en rajoutant la date du jour ( '2019-06-05' ) ce qui est censé indiquer que la boutique et le service client est fermée, mais ça ne fonctionne pas. Pourtant lors des autres jours du tableau déjà présent, ça fonctionne. Voici le $jour_feries qui ne fonctionne pas.
$jours_feries = array($year_now.'-01-01', $paques, $year_now.'-05-01', $year_now.'-05-08', $year_now.'-07-14', $year_now.'-08-15', $year_now.'-11-01', $year_now.'-11-11', $year_now.'-12-25', '2018-10-13', '2019-06-05');
Voici le fichier au complet :
<?php /** * override/classes/controller/FrontController.php * Le fichier a déjà été modifié avec succès par le passé (courant janvier 2019) **/ class FrontController extends FrontControllerCore { /* * module: lgseoredirect * date: 2017-09-04 15:48:08 * version: 1.2.7 */ public function init() { if (Module::isInstalled('lgseoredirect')) { $uri_var = $_SERVER['REQUEST_URI']; $shop_id = Context::getContext()->shop->id; $redirect = Db::getInstance()->getRow( 'SELECT * FROM '._DB_PREFIX_.'lgseoredirect '. 'WHERE url_old = "'.pSQL($uri_var).'" '. 'AND id_shop = "'.(int)$shop_id.'" '. 'ORDER BY id DESC' ); $header = Array(); if ($redirect and $uri_var == $redirect['url_old'] and $shop_id == $redirect['id_shop']) { if ($redirect['redirect_type'] == 301) { $header[] = 'HTTP/1.1 301 Moved Permanently'; } if ($redirect['redirect_type'] == 302) { $header[] = 'HTTP/1.1 302 Moved Temporarily'; } if ($redirect['redirect_type'] == 303) { $header[] = 'HTTP/1.1 303 See Other'; } $header[] = 'Cache-Control: no-store, no-cache, must-revalidate'; Tools::redirect($redirect['url_new'], __PS_BASE_URI__, null, $header); } } parent::init(); } // Gestion de l'ouverture boutique / service client sur toutes les pages du site public function initHeader() { // Horaires boutique et service client $hor_boutique = array('mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); $hor_servcli = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); $matin_heure_debut = '09:30'; $matin_heure_fin = '12:30'; $am_heure_debut = '14:00'; $am_heure_fin = '18:00'; // Traductions $days = array('Monday' => 'lundi', 'Tuesday' => 'mardi', 'Wednesday' => 'mercredi', 'Thursday' => 'jeudi', 'Friday' => 'vendredi', 'Saturday' => 'samedi', 'Sunday' => 'dimanche'); $months = array('January' => 'janvier', 'February' => 'février', 'March' => 'mars', 'April' => 'avril', 'May' => 'mai', 'June' => 'juin', 'July' => 'juillet', 'August' => 'août', 'September' => 'septembre', 'October' => 'octobre', 'November' => 'novembre', 'December' => 'décembre'); // Date $date = new DateTime(); $complete_date_now = $days[date_format($date, 'l')].' '.date_format($date, 'j').' '.$months[date_format($date, 'F')].' '.date_format($date, 'Y'); $complete_date_now_us = date_format($date, 'Y-m-d'); $jour_now = $days[date_format($date, 'l')]; $year_now = date_format($date, 'Y'); $heure_now = date_format($date, 'H:i'); // Calcul de la date du lundi de Pâques $calc_paques = 57 - (((11 * (($year_now % 19) + 1) + (-(floor($year_now / 100)) + (floor((floor($year_now / 100)) / 4)) + (floor((8 * ((floor($year_now / 100)) + 11)) / 25)))) % 30 + 30) % 30) - ((((50 - ((((11 * (($year_now % 19) + 1) + (-(floor($year_now / 100)) + (floor((floor($year_now / 100)) / 4)) + (floor((8 * ((floor($year_now / 100)) + 11)) / 25)))) % 30) + 30) % 30) - (floor((551 - 19 * ((((11 * (($year_now % 19) + 1) + (-(floor($year_now / 100)) + (floor((floor($year_now / 100)) / 4)) + (floor((8 * ((floor($year_now / 100)) + 11)) / 25)))) % 30) + 30) % 30) + (($year_now % 19) + 1)) / 544))) % 7) + ((((9 - 2 * ((floor($year_now / 100)) % 4)) % 7) + ($year_now % 100) + (floor(($year_now % 100) / 4))) % 7)) % 7) - (floor((551 - 19 * ((((11 * (($year_now % 19) + 1) + (-(floor($year_now / 100)) + (floor((floor($year_now / 100)) / 4)) + (floor((8 * ((floor($year_now / 100)) + 11)) / 25)))) % 30) + 30) % 30) + (($year_now % 19) + 1)) / 544)); if (($calc_paques + 1) > 31) { if ((($calc_paques + 1) - 31) < 10) { $day_paques = '0'.(($calc_paques + 1) - 31); } $paques = $year_now.'-04-'.$day_paques; } else { if (($calc_paques + 1) < 10) { $day_paques = '0'.($calc_paques + 1); } $paques = $year_now.'-03-'.$day_paques; } // Jours fériés $jours_feries = array($year_now.'-01-01', $paques, $year_now.'-05-01', $year_now.'-05-08', $year_now.'-07-14', $year_now.'-08-15', $year_now.'-11-01', $year_now.'-11-11', $year_now.'-12-25', '2018-10-13'); // Envoie des variables aux templates self::$smarty->assign(array( 'hor_boutique' => $hor_boutique, 'hor_servcli' => $hor_servcli, 'matin_heure_debut' => $matin_heure_debut, 'matin_heure_fin' => $matin_heure_fin, 'am_heure_debut' => $am_heure_debut, 'am_heure_fin' => $am_heure_fin, 'complete_date_now' => $complete_date_now, 'complete_date_now_us' => $complete_date_now_us, 'heure_now' => $heure_now, 'jours_feries' => $jours_feries, 'jour_now' => $jour_now )); $isMobile = false; if ($this->context->isTablet()) { $isMobile = false; } elseif ($this->context->isMobile()) { $isMobile = true; } self::$smarty->assign('isMobile', $isMobile); return parent::initHeader(); } }
Sincèrement, j'espère vraiment que c'est "juste" un problème dans l'override !
Merci Janett pour tes interventions.