source: spip-zone/_plugins_/_stable_/forms/forms_et_tables_1_9_1/base/forms_base_api.php @ 10090

Last change on this file since 10090 was 10090, checked in by cedric@…, 14 years ago

"api et enrichissement des descriptions des jointures dans les tables"

File size: 2.7 KB
Line 
1<?php
2/*
3 * forms
4 * Gestion de formulaires editables dynamiques
5 *
6 * Auteurs :
7 * Antoine Pitrou
8 * Cedric Morin
9 * Renato Formato
10 * (c) 2005-2007 - Distribue sous licence GNU/GPL
11 *
12 */
13
14// creation d'une table a partir de sa structure xml
15// le type est surchargŽ par $type
16// $unique : ne pas creer la table si une du meme type existe deja
17function Forms_creer_table($structure_xml,$type=NULL, $unique = true){
18        include_spip('inc/xml');
19
20        $xml = spip_xml_load($structure_xml);
21        foreach($xml as $k1=>$forms)
22                foreach($forms as $k2=>$formscont)
23                        foreach($formscont as $k3=>$form)
24                                foreach($form as $k4=>$formcont)
25                                        foreach($formcont as $prop=>$datas)
26                                        if ($prop=='type_form'){
27                                                if ($type)
28                                                        $xml[$k1][$k2][$k3][$k4][$prop] = array($type);
29                                                else 
30                                                        $type = trim(applatit_arbre($datas));
31                                        }
32
33        if (!$type) return;
34        if ($unique){
35                $res = spip_query("SELECT id_form FROM spip_forms WHERE type_form="._q($type));
36                if (spip_num_rows($res))
37                        return;
38        }
39        // ok on peut creer la table
40        $importer = charger_fonction('importer','snippets/forms');
41        snippets_forms_importer(0,$xml);
42        return;
43}
44
45function Forms_liste_tables($type){
46        $liste = array();
47        $res = spip_query("SELECT id_form FROM spip_forms WHERE type_form="._q($type));
48        while ($row = spip_fetch_array($res)){
49                $liste[] = $row['id_form'];
50        }
51        return $liste;
52}
53
54function Forms_supprimer_tables($type_ou_id){
55        if (!$id_form = intval($type_ou_id) OR !is_numeric($type_ou_id)){
56                $liste = Forms_liste_tables($type_ou_id);
57                foreach($liste as $id)
58                        Forms_supprimer_tables($id);
59                return;
60        }
61        $res = spip_query("SELECT id_donnee FROM spip_forms_donnees WHERE id_form="._q($id_form));
62        while ($row = spip_fetch_array($res)){
63                spip_query("DELETE FROM spip_forms_donnees_champs WHERE id_donnee="._q($row['id_donnee']));
64        }
65        spip_query("DELETE FROM spip_forms_donnees WHERE id_form="._q($id_form));
66        spip_query("DELETE FROM spip_forms_champs_choix WHERE id_form="._q($id_form));
67        spip_query("DELETE FROM spip_forms_champs WHERE id_form="._q($id_form));
68        spip_query("DELETE FROM spip_forms WHERE id_form="._q($id_form));
69        spip_query("DELETE FROM spip_forms_articles WHERE id_form="._q($id_form));
70}
71
72include_spip('forms_fonctions');
73function Forms_les_valeurs($id_form, $id_donnee, $champ, $separateur=",",$etoile=false){
74        return forms_calcule_les_valeurs('forms_donnees_champs', $id_donnee, $champ, $id_form, $separateur,$etoile);
75}
76function Forms_decrit_donnee($id_donnee,$specifiant=true,$linkable=false){
77        list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($id_donnee,$specifiant,$linkable);
78        if (!count($t) && $specifiant)
79                list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($id_donnee, false,$linkable);
80        return $t;
81}
82
83?>
Note: See TracBrowser for help on using the repository browser.