Jump to content

Edit History

Thomas

Thomas


commentaire *START ADD* mal placé dans le premier override

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 :

param-avancees-perf-override.jpg.b3fbfb034ad3e7e959d7c858771e46d2.jpg

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.

Thomas

Thomas

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 :

param-avancees-perf-override.jpg.b3fbfb034ad3e7e959d7c858771e46d2.jpg

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;
			
			if ($row['product_id'] == 108948) {
				die(print_r($row));
			}
			
			/** START ADD **/
			$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.

×
×
  • Create New...