function formulaires_editer_champs_extras_traiter_dist($objet, $redirect = '')
{
    $retour = array('redirect' => $redirect);
    $table = table_objet_sql($objet);
    include_spip('inc/iextras');
    $saisies = iextras_champs_extras_definis($table);
    $nouvelles_saisies = session_get('constructeur_formulaire_champs_extras_' . $table);
    $diff = saisies_comparer_par_identifiant($saisies, $nouvelles_saisies);
    $extras = array();
    include_spip('inc/cextras');
    // supprimer les champs supprimes
    champs_extras_supprimer($table, $diff['supprimees']);
    // ajouter les nouveaux champs;
    champs_extras_creer($table, $diff['ajoutees']);
    // modifier les champs modifies;
    if ($diff['modifiees']) {
        $anciennes = saisies_lister_par_identifiant($saisies);
        $anciennes = array_intersect_key($anciennes, $diff['modifiees']);
        champs_extras_modifier($table, $diff['modifiees'], $anciennes);
    }
    # champs_extras_modifier($table, # modifiees nouvelles, # modifiees anciennes);
    ecrire_meta("champs_extras_" . $table, serialize($nouvelles_saisies));
    $retour['message_ok'] = 'Super !';
    return $retour;
}
Example #2
0
/**
 * Supprime les champs extras declarés
 *
 * @example
 *     ```
 *     cextras_api_vider_tables(motus_declarer_champs_extras());
 *     ```
 * 
 * @param array $declaration_champs_extras
 *     Liste de champs extras à désinstaller, c'est à dire la liste de saisies
 *     présentes dans le pipeline declarer_champs_extras() du plugin qui demande la désinstallation
 * 
 * @return bool
 *     false si déclaration mal formée
 *     true sinon
**/
function cextras_api_vider_tables($declaration_champs_extras)
{
    if (!is_array($declaration_champs_extras)) {
        return false;
    }
    foreach ($declaration_champs_extras as $table => $champs) {
        champs_extras_supprimer($table, $champs);
    }
    return true;
}