Check changes in the extra field in order to save them or not #2554

pull/2629/head
Julio Montoya 7 years ago
parent 2babdcc28a
commit a5d4241630
  1. 6
      main/admin/legal_add.php
  2. 72
      main/inc/lib/legal.lib.php

@ -73,12 +73,8 @@ if ($form->validate()) {
header('Location: legal_add.php');
exit;
} elseif ($submit === 'save') {
$id = LegalManager::add($lang, $content, $type, $changes);
$id = LegalManager::add($lang, $content, $type, $changes, $values);
if (!empty($id)) {
$extraFieldValues = new ExtraFieldValue('terms_and_condition');
$values['item_id'] = $id;
$extraFieldValues->saveFieldValues($values);
Display::addFlash(Display::return_message(get_lang('TermAndConditionSaved'), 'success'));
} else {
Display::addFlash(Display::return_message(get_lang('TermAndConditionNotSaved'), 'warning'));

@ -22,10 +22,11 @@ class LegalManager
* @param string $content content
* @param int $type term and condition type (0 for HTML text or 1 for link to another page)
* @param string $changes explain changes
* @param array $extraFieldValuesToSave
*
* @return int
*/
public static function add($language, $content, $type, $changes)
public static function add($language, $content, $type, $changes, $extraFieldValuesToSave = [])
{
$legalTable = Database::get_main_table(TABLE_MAIN_LEGAL);
$last = self::get_last_condition($language);
@ -44,7 +45,11 @@ class LegalManager
'date' => $time,
];
return Database::insert($legalTable, $params);
$id = Database::insert($legalTable, $params);
self::updateExtraFields($id, $extraFieldValuesToSave);
return $id;
} elseif ($last['type'] != $type && $language == $last['language_id']) {
// Update
$id = $last['id'];
@ -54,13 +59,59 @@ class LegalManager
'date' => $time,
];
Database::update($legalTable, $params, ['id = ?' => $id]);
self::updateExtraFields($id, $extraFieldValuesToSave);
return $id;
} elseif (isset($last['id']) && !empty($last['id'])) {
$id = $last['id'];
// Check if extra fields changed
$extraFieldValue = new ExtraFieldValue('terms_and_condition');
$values = $extraFieldValue->getAllValuesByItem($id);
$oldValues = array_column($values, 'value', 'variable');
$changeList = [];
foreach ($extraFieldValuesToSave as $key => $value) {
if (is_numeric(strpos($key, 'extra_'))) {
$replace = str_replace('extra_', '', $key);
if (isset($oldValues[$replace])) {
if ($value != $oldValues[$replace]) {
$changeList[] = $replace;
}
} else {
// It means there's a new extra field that was not included before.
$changeList[] = $replace;
}
}
}
// Some extra fields were changed. We updated them.
if (!empty($changeList)) {
self::updateExtraFields($id, $extraFieldValuesToSave);
return $id;
}
}
return 0;
}
/**
* @param int $itemId
* @param array $values
*
* @return bool
*/
public static function updateExtraFields($itemId, $values)
{
if (empty($itemId)) {
return false;
}
$extraFieldValues = new ExtraFieldValue('terms_and_condition');
$values['item_id'] = $itemId;
$extraFieldValues->saveFieldValues($values);
return true;
}
/**
* @param int $id
*/
@ -91,9 +142,9 @@ class LegalManager
$row = Database::fetch_array($result);
if (Database::num_rows($result) > 0) {
return (int) $row['version'];
} else {
return 0;
}
return 0;
}
/**
@ -147,9 +198,9 @@ class LegalManager
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
return true;
} else {
return false;
}
return false;
}
/**
@ -196,9 +247,9 @@ class LegalManager
$version = explode(':', $version[0]);
return $version[0];
} else {
return false;
}
return false;
}
/**
@ -362,10 +413,7 @@ class LegalManager
public static function deleteLegal($userId)
{
$extraFieldValue = new ExtraFieldValue('user');
$value = $extraFieldValue->get_values_by_handler_and_field_variable(
$userId,
'legal_accept'
);
$value = $extraFieldValue->get_values_by_handler_and_field_variable($userId, 'legal_accept');
$result = $extraFieldValue->delete($value['id']);
if ($result) {
Display::addFlash(Display::return_message(get_lang('Deleted')));

Loading…
Cancel
Save