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; }
/** * 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; }