gamuform/formulaires/editer_gamuform.php
2022-05-12 10:09:45 +02:00

119 lines
3 KiB
PHP

<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_editer_gamuform_saisies_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
$saisies = false;
if (gamuform_objet_autoriser($objet)) {
$saisies = gamuform_recup_tableau_objet($objet, false);
}
return $saisies;
}
function formulaires_editer_gamuform_charger_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
$table = table_objet_sql($objet);
$id = id_table_objet($objet);
$s = gamuform_recup_champs_saisies($objet);
if (intval($id_objet)) {
$valeurs = sql_fetsel($s, $table, "$id=".intval($id_objet));
} else {
foreach ($s as $c) {
$valeurs[$c] = null;
}
}
return $valeurs;
}
function formulaires_editer_gamuform_verifier_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
$erreurs = array();
if (!gamuform_objet_autoriser($objet)) {
$erreurs['message_erreur'] = "Pb d'objet";
}
return $erreurs;
}
function formulaires_editer_gamuform_traiter_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
$id_objet = (int) $id_objet;
$id_redirect = (int) $id_redirect;
$saisies = gamuform_recup_tableau_objet($objet, false);
if (array_key_exists('options', $saisies)) {
unset($saisies['options']);
}
$table = table_objet_sql($objet);
$id = id_table_objet($objet);
$update = true;
if (!intval($id_objet)) {
$id_objet = sql_insertq($table, []);
$update = false;
}
$set = [];
if (!empty($saisies)) {
foreach ($saisies as $saisie) {
$champ = $saisie['options']['nom'];
if (
isset($saisies['options']['fonction'])
and $f = $saisies['options']['fonction']
) {
$f($id_objet, $objet, $champ, _request($champ));
} elseif (
isset($saisies['options']['modifier'])
and $m = $saisies['options']['modifier']
) {
$set[$champ] = $m($champ, _request($champ));
} else {
if ($saisie['saisie'] === 'date') {
$date = _request($champ);
$verifier = charger_fonction('verifier', 'inc/');
$verifier($date, 'date', ['normaliser' => 'datetime'], $date);
$set[$champ] = $date;
} else {
$set[$champ] = _requests($champ);
}
}
}
if (count($set)) {
$set = pipeline(
'pre_edition',
array(
'args' => array(
'table' => $table,
'id_objet' => $id_objet,
'objet' => $objet,
'action' => 'gamuform',
'update' => $update,
'options' => $options
),
'data' => $set
)
);
sql_updateq($table, $set, "$id=".intval($id_objet));
}
}
include_spip('inc/invalideur');
suivre_invalideur("id='"."$id_objet"."/1");
$retour = [];
if ($redirect === 'gamutable') {
$retour['redirect'] = '';
if ($update) {
$retour['message_ok'] = gamutable_fermer_modalbox($id_redirect ?: $id_objet);
} else {
$retour['message_ok'] = gamutable_fermer_modalbox($id_redirect ?: 0);
}
} else if ($redirect) {
$retour['redirect'] = $redirect;
}
return $retour;
}