From aad63c5f033f23733c92604f2905678a14cdf475 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Wed, 8 Feb 2023 15:35:45 +0100 Subject: [PATCH 1/8] In addition to the hook selectProductsListWhere in the function select_produits_list, added the hooks selectProductsListSelect, selectProductsListFrom, and constructProductListOption. --- htdocs/core/class/html.form.class.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index c6cf71fbe44..47c03958a74 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2542,6 +2542,10 @@ class Form global $langs, $conf; global $hookmanager; + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } + $out = ''; $outarray = array(); @@ -2572,7 +2576,10 @@ class Form } $sql = "SELECT "; - $sql .= $selectFields.$selectFieldsGrouped; + // Add select from hooks + $parameters = array(); + $reshook = $hookmanager->executeHooks('selectProductsListSelect', $parameters); // Note that $action and $object may have been modified by hook + $sql .= $selectFields.$selectFieldsGrouped.$hookmanager->resPrint; if (!empty($conf->global->PRODUCT_SORT_BY_CATEGORY)) { //Product category @@ -2619,6 +2626,10 @@ class Form $selectFields .= ", price_rowid, price_by_qty"; } $sql .= " FROM ".$this->db->prefix()."product as p"; + // Add from (left join) from hooks + $parameters = array(); + $reshook = $hookmanager->executeHooks('selectProductsListFrom', $parameters); // Note that $action and $object may have been modified by hook + $sql .= $hookmanager->resPrint; if (count($warehouseStatusArray)) { $sql .= " LEFT JOIN ".$this->db->prefix()."product_stock as ps on ps.fk_product = p.rowid"; $sql .= " LEFT JOIN ".$this->db->prefix()."entrepot as e on ps.fk_entrepot = e.rowid AND e.entity IN (".getEntity('stock').")"; @@ -2890,6 +2901,11 @@ class Form protected function constructProductListOption(&$objp, &$opt, &$optJson, $price_level, $selected, $hidepriceinlabel = 0, $filterkey = '', $novirtualstock = 0) { global $langs, $conf, $user; + global $hookmanager; + + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } $outkey = ''; $outval = ''; @@ -3175,6 +3191,14 @@ class Form } } + $parameters = array('objp'=>$objp); + $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook + if (!empty($reshook)) { + $opt = $hookmanager->resPrint; + } else { + $opt .= $hookmanager->resPrint; + } + $opt .= "\n"; $optJson = array( 'key'=>$outkey, From 894caf1ada419e127ae8adc106f734c5ea476677 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Thu, 9 Feb 2023 09:10:38 +0100 Subject: [PATCH 2/8] Corrected Stickler CI errors. --- htdocs/core/class/html.form.class.php | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 47c03958a74..f8c04c562af 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2542,9 +2542,9 @@ class Form global $langs, $conf; global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } $out = ''; $outarray = array(); @@ -2901,11 +2901,11 @@ class Form protected function constructProductListOption(&$objp, &$opt, &$optJson, $price_level, $selected, $hidepriceinlabel = 0, $filterkey = '', $novirtualstock = 0) { global $langs, $conf, $user; - global $hookmanager; + global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } $outkey = ''; $outval = ''; @@ -3191,13 +3191,13 @@ class Form } } - $parameters = array('objp'=>$objp); - $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook - if (!empty($reshook)) { - $opt = $hookmanager->resPrint; - } else { - $opt .= $hookmanager->resPrint; - } + $parameters = array('objp'=>$objp); + $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook + if (!empty($reshook)) { + $opt = $hookmanager->resPrint; + } else { + $opt .= $hookmanager->resPrint; + } $opt .= "\n"; $optJson = array( From 2629eb5bb80f393dcf1184788e9af85c9033282c Mon Sep 17 00:00:00 2001 From: mgabriel Date: Thu, 9 Feb 2023 10:02:24 +0100 Subject: [PATCH 3/8] Corrected Stickler CI errors once again by setting a proper PHP indentation style. --- htdocs/core/class/html.form.class.php | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f8c04c562af..1db337166ad 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2542,9 +2542,9 @@ class Form global $langs, $conf; global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } $out = ''; $outarray = array(); @@ -2901,11 +2901,11 @@ class Form protected function constructProductListOption(&$objp, &$opt, &$optJson, $price_level, $selected, $hidepriceinlabel = 0, $filterkey = '', $novirtualstock = 0) { global $langs, $conf, $user; - global $hookmanager; + global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } + if (empty($hookmanager->hooks)) { + $hookmanager->initHooks(array('commonobject')); + } $outkey = ''; $outval = ''; @@ -3191,13 +3191,13 @@ class Form } } - $parameters = array('objp'=>$objp); - $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook - if (!empty($reshook)) { - $opt = $hookmanager->resPrint; - } else { - $opt .= $hookmanager->resPrint; - } + $parameters = array('objp'=>$objp); + $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook + if (!empty($reshook)) { + $opt = $hookmanager->resPrint; + } else { + $opt .= $hookmanager->resPrint; + } $opt .= "\n"; $optJson = array( From c9369415a226b681783f5b906f783b0a41d05249 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Wed, 15 Feb 2023 15:15:57 +0100 Subject: [PATCH 4/8] Removed not necessary 'if (empty(->hooks)) { ... } block. --- htdocs/core/class/html.form.class.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 5e5b1920b6b..eb0cfed4fea 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2546,10 +2546,6 @@ class Form global $langs, $conf; global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } - $out = ''; $outarray = array(); @@ -2907,10 +2903,6 @@ class Form global $langs, $conf, $user; global $hookmanager; - if (empty($hookmanager->hooks)) { - $hookmanager->initHooks(array('commonobject')); - } - $outkey = ''; $outval = ''; $outref = ''; From 581b8df8ce89118114bbc47d8f47b919ba6453db Mon Sep 17 00:00:00 2001 From: mgabriel Date: Wed, 15 Feb 2023 15:40:30 +0100 Subject: [PATCH 5/8] Resolved merge conflict. --- htdocs/langs/fr_FR/errors.lang | 4 ---- 1 file changed, 4 deletions(-) diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 803bebf310e..939c070008d 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -348,11 +348,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=La valeur 'Strict' fait que les fonc WarningThemeForcedTo=Attention, le choix du thème a été forcé à %s par la constante cachée MAIN_FORCETHEME WarningPagesWillBeDeleted=Attention, cela supprimera également toutes les pages/conteneurs existants du site. Vous devriez exporter votre site Web avant, afin d'avoir une sauvegarde pour le réimporter plus tard. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=La validation automatique est désactivée lorsque l'option de diminution du stock est définie sur "Validation de la facture". -<<<<<<< HEAD -WarningModuleNeedRefrech = Module %s desactivé. N'oublier pas de le réactivé -======= WarningModuleNeedRefrech = Le module %s a été désactivé. N'oubliez pas de le réactiver ->>>>>>> branch '17.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Valeur non valide From 86d9fda87e1b63daabd459533ae2d138f7a38c35 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Wed, 15 Mar 2023 09:19:10 +0100 Subject: [PATCH 6/8] Corrected sticler-ci errors. --- htdocs/core/class/html.form.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 14abaeeaff2..ab5bb032837 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2609,11 +2609,11 @@ class Form // Add select from hooks $parameters = array(); $reshook = $hookmanager->executeHooks('selectProductsListSelect', $parameters); // Note that $action and $object may have been modified by hook - if ($reshook > 0) { - $sql .= $selectFields.$selectFieldsGrouped.$hookmanager->resPrint; - } else { - $sql .= $hookmanager->resPrint; - } + if ($reshook > 0) { + $sql .= $selectFields.$selectFieldsGrouped.$hookmanager->resPrint; + } else { + $sql .= $hookmanager->resPrint; + } if (!empty($conf->global->PRODUCT_SORT_BY_CATEGORY)) { //Product category From 7086b2dab9f98f35b97c858b35067d7421cc3184 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Tue, 21 Mar 2023 08:59:39 +0100 Subject: [PATCH 7/8] Corrected $reshook check which was incorrect. --- htdocs/core/class/html.form.class.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 322337b30f5..b1fd401f277 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2605,11 +2605,10 @@ class Form $sql = "SELECT "; - // Add select from hooks $parameters = array(); $reshook = $hookmanager->executeHooks('selectProductsListSelect', $parameters); // Note that $action and $object may have been modified by hook - if ($reshook > 0) { + if (empty($reshook)) { $sql .= $selectFields.$selectFieldsGrouped.$hookmanager->resPrint; } else { $sql .= $hookmanager->resPrint; From 6f68380efe72e0ab45235ae8b3d834e1d529e782 Mon Sep 17 00:00:00 2001 From: mgabriel Date: Tue, 21 Mar 2023 09:22:35 +0100 Subject: [PATCH 8/8] Changed $reshook check to be like the Dolibarr documentation. --- htdocs/core/class/html.form.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b1fd401f277..022b2f40914 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3224,10 +3224,10 @@ class Form $parameters = array('objp'=>$objp); $reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook - if (!empty($reshook)) { - $opt = $hookmanager->resPrint; - } else { + if (empty($reshook)) { $opt .= $hookmanager->resPrint; + } else { + $opt = $hookmanager->resPrint; } $opt .= "\n";