FIX sql bad request in product buying price extrafields

This commit is contained in:
VESSILLER 2019-12-26 16:18:26 +01:00 committed by Laurent Destailleur
parent 15ad41ee6d
commit 6e9bb5d7da

View File

@ -265,9 +265,8 @@ if (empty($reshook))
$extralabels = $extrafields->fetch_name_optionals_label("product_fournisseur_price"); $extralabels = $extrafields->fetch_name_optionals_label("product_fournisseur_price");
$extrafield_values = $extrafields->getOptionalsFromPost("product_fournisseur_price"); $extrafield_values = $extrafields->getOptionalsFromPost("product_fournisseur_price");
if (!empty($extrafield_values)) {
$sql = ""; $resql = $db->query("SELECT fk_object FROM " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields WHERE fk_object = " . $object->product_fourn_price_id);
$resql = $db->query("SELECT * FROM ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields WHERE fk_object = ".$object->product_fourn_price_id);
// Insert a new extrafields row, if none exists // Insert a new extrafields row, if none exists
if ($db->num_rows($resql) != 1) { if ($db->num_rows($resql) != 1) {
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields (fk_object, "; $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields (fk_object, ";
@ -279,8 +278,7 @@ if (empty($reshook))
$sql .= '"' . $value . '", '; $sql .= '"' . $value . '", ';
} }
$sql = substr($sql, 0, strlen($sql) - 2) . ')'; $sql = substr($sql, 0, strlen($sql) - 2) . ')';
} } // else update the existing one
// else update the existing one
else { else {
$sql = "UPDATE " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields SET "; $sql = "UPDATE " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields SET ";
foreach ($extrafield_values as $key => $value) { foreach ($extrafield_values as $key => $value) {
@ -291,6 +289,7 @@ if (empty($reshook))
// Execute the sql command from above // Execute the sql command from above
$db->query($sql); $db->query($sql);
}
$newprice = price2num(GETPOST("price", "alpha")); $newprice = price2num(GETPOST("price", "alpha"));
@ -765,24 +764,35 @@ SCRIPT;
print '</tr>'; print '</tr>';
} }
// Extrafields
$extrafields->fetch_name_optionals_label("product_fournisseur_price"); $extrafields->fetch_name_optionals_label("product_fournisseur_price");
$extralabels = $extrafields->attributes["product_fournisseur_price"]['label']; $extralabels = $extrafields->attributes["product_fournisseur_price"]['label'];
// Extrafields $extrafield_values = $extrafields->getOptionalsFromPost("product_fournisseur_price");
$resql = $db->query("SELECT * FROM ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields WHERE fk_object = ".$rowid);
if (!empty($extralabels)) { if (!empty($extralabels)) {
if ($db->num_rows($resql) != 1) { if (empty($rowid)) {
foreach ($extralabels as $key => $value) { foreach ($extralabels as $key => $value) {
if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) {
print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'.$langs->trans($value).'</td><td>'.$extrafields->showInputField($key, '', '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>'; print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'.$langs->trans($value).'</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_' . $key) ? $extrafield_values['options_' . $key] : '', '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>';
} }
} }
} else { } else {
$resql = $db->fetch_object($resql); $sql = "SELECT";
$sql .= " fk_object";
foreach ($extralabels as $key => $value) {
$sql .= ", " . $key;
}
$sql .= " FROM " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields";
$sql .= " WHERE fk_object = " . $rowid;
$resql = $db->query($sql);
if ($resql) {
$obj = $db->fetch_object($resql);
foreach ($extralabels as $key => $value) { foreach ($extralabels as $key => $value) {
if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && ($extrafields->attributes["product_fournisseur_price"]['list'][$key] == 1 || $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 3 || ($action == "update_price" && $extrafields->attributes["product_fournisseur_price"]['list'][$key] == 4))) {
print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'.$langs->trans($value).'</td><td>'.$extrafields->showInputField($key, $resql->{$key}, '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>'; print '<tr><td'.($extrafields->attributes["product_fournisseur_price"]['required'][$key] ? ' class="fieldrequired"' : '').'>'.$langs->trans($value).'</td><td>'.$extrafields->showInputField($key, GETPOSTISSET('options_' . $key) ? $extrafield_values['options_' . $key] : $obj->{$key}, '', '', '', '', 0, 'product_fournisseur_price').'</td></tr>';
} }
} }
$db->free($resql);
}
} }
} }
@ -1008,8 +1018,16 @@ SCRIPT;
print '</td>'; print '</td>';
// Extrafields // Extrafields
$resql = $db->query("SELECT * FROM ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields WHERE fk_object = ".$productfourn->product_fourn_price_id);
if (!empty($extralabels)) { if (!empty($extralabels)) {
$sql = "SELECT";
$sql .= " fk_object";
foreach ($extralabels as $key => $value) {
$sql .= ", " . $key;
}
$sql .= " FROM " . MAIN_DB_PREFIX . "product_fournisseur_price_extrafields";
$sql .= " WHERE fk_object = " . $productfourn->product_fourn_price_id;
$resql = $db->query($sql);
if ($resql) {
if ($db->num_rows($resql) != 1) { if ($db->num_rows($resql) != 1) {
foreach ($extralabels as $key => $value) { foreach ($extralabels as $key => $value) {
if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && $extrafields->attributes["product_fournisseur_price"]['list'][$key] != 3) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && $extrafields->attributes["product_fournisseur_price"]['list'][$key] != 3) {
@ -1017,12 +1035,14 @@ SCRIPT;
} }
} }
} else { } else {
$resql = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
foreach ($extralabels as $key => $value) { foreach ($extralabels as $key => $value) {
if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && $extrafields->attributes["product_fournisseur_price"]['list'][$key] != 3) { if (!empty($extrafields->attributes["product_fournisseur_price"]['list'][$key]) && $extrafields->attributes["product_fournisseur_price"]['list'][$key] != 3) {
print '<td align="right">'.$extrafields->showOutputField($key, $resql->{$key})."</td>"; print '<td align="right">'.$extrafields->showOutputField($key, $obj->{$key})."</td>";
} }
} }
}
$db->free($resql);
} }
} }