source: spip-zone/_plugins_/csv2auteurs/trunk/formulaires/csv2auteurs_exportation.php @ 82832

Last change on this file since 82832 was 82832, checked in by cy_altern@…, 5 years ago

eviter un warning lors de l'export si il n'existe pas d'admins restreint

  • Property svn:executable set to *
File size: 6.2 KB
Line 
1<?php
2if (!defined('_ECRIRE_INC_VERSION')) return;
3
4function formulaires_csv2auteurs_exportation_charger_dist(){
5    $nom_champs=csv2auteurs_exportation();
6    $valeurs = array(
7        "choix_statut"=>"6forum",
8        "nom_champs" => $nom_champs,
9    );
10    //var_dump($nom_champs);
11   
12return $valeurs;
13}
14
15function formulaires_csv2auteurs_exportation_verifier_dist(){
16    $erreurs = array();
17    // seuls les webmestres ont le droit d'utiliser cet outil!
18    if ($GLOBALS['visiteur_session']['webmestre'] != 'oui') {
19                $erreurs['message_erreur'] = _T('csv2auteurs:non_autorise');
20        }
21    return $erreurs;
22}
23
24function formulaires_csv2auteurs_exportation_traiter_dist(){
25    $nom_champs   = _request('nom_champs');
26    $choix_statut = _request('choix_statut');
27    $retour = $login_restreint = array();
28   
29    // creation du nom du fichier
30    $date_du_jour=date(Y_m_d);
31    $nom_fichier_csv = $date_du_jour.'_export_table_auteurs.csv';
32
33    $statut = array(
34        "0minirezo" => "administrateur",
35        "1comite"   => "redacteur",
36        "6forum"    => "visiteur",
37    );
38    // récupération des données dans la tables spip_auteurs que l'on place dans le champ "ss_groupe"
39    // Ecriture de la premiere ligne d'entete
40    foreach ($nom_champs as $entete){
41        $tableau_csv[0][$entete]=$entete;
42    }
43    // ajout de l'admin restreint
44    $tableau_csv[0]["ss_groupe"]="ss_groupe";
45    // ajout de l'acces restreint s'il existe
46    if (test_plugin_actif("accesrestreint"))
47                $tableau_csv[0]["zone"]="zone";
48    $i=1;
49
50    // création d'un array contenant tous les logins des admins restreints
51    if(in_array("0minirezo",$choix_statut)){
52        $r = sql_select("DISTINCT auteur.login AS login",array("spip_auteurs AS auteur","spip_auteurs_liens AS liens"),array("auteur.statut='0minirezo'","liens.id_auteur=auteur.id_auteur","liens.objet='rubrique'"));
53        while($row = sql_fetch($r)){
54            $login_restreint[]=$row['login'];
55        }
56    }
57
58    if ($res = sql_select('*', 'spip_auteurs AS auteur')){
59        while ($row = sql_fetch($res)){
60            // test les statuts demandés
61            if (in_array($row[statut],$choix_statut)){
62                // si c'est un admin, on ne selectionne que les admins restreints !!!
63                if ((($row['statut'] == "0minirezo") AND (in_array($row['login'],$login_restreint))) OR $row['statut']=="1comite" OR $row['statut'] == "6forum"){
64                    // Prise en compte de tous les champs selectionnés
65                    foreach($nom_champs as $nom_champ){
66                        // Prise en compte du champ statut
67                        if ($nom_champ == "statut"){
68                            $tableau_csv[$i]["statut"] = $statut[$row[statut]];
69                        }else {
70                            $tableau_csv[$i][$nom_champ]=$row[$nom_champ];
71                        }
72                    };
73                    // on selectionne les noms des rubriques pour les admins restreints
74                    if($res2 = sql_select(
75                        array(
76                            "rub.titre AS titre"),
77                        array(
78                            "spip_rubriques AS rub",
79                            "spip_auteurs_liens AS lien"),
80                        array(
81                            "rub.id_rubrique = lien.id_objet",
82                            "lien.id_auteur  = $row[id_auteur]",
83                            "lien.objet      = 'rubrique'")
84                        )) {
85
86                            $j=0;
87                            while ($row2 = sql_fetch($res2)) {
88                                $input[$row[nom]][$j]=$row2[titre];
89                                $j++;
90                            }
91                            if ($input[$row[nom]]){
92                                $tableau_csv[$i]["ss_groupe"]=implode('|',$input[$row[nom]]);
93                            }
94                                                else 
95                                                        $tableau_csv[$i]["ss_groupe"]= "";
96                        }
97                    // Prise en compte des zones restreintes : plugin acces restreint si le plugin est installe
98                    if (test_plugin_actif("accesrestreint")){
99                        $k=0;
100                        if ($res3 = sql_select(
101                            array(
102                                "rub.titre AS titre"),
103                            array(
104                                "spip_zones_liens AS zone_auteur",
105                                "spip_zones_liens AS zone_rubrique",
106                                "spip_rubriques AS rub"),
107                            array(
108                                "zone_auteur.id_zone = zone_rubrique.id_zone",
109                                "zone_auteur.objet='auteur' AND zone_auteur.id_objet =$row[id_auteur]",
110                                "zone_rubrique.objet='rubrique'AND zone_rubrique.id_objet = rub.id_rubrique")
111                            )) {
112                                while ($row3 = sql_fetch($res3)){
113                                    $zones[$row[nom]][$k]=$row3[titre];
114                                    $tableau_csv[$i]["zone"]=implode('|',$zones[$row[nom]]);
115                                    $k++;
116
117                                }
118                            }
119                    }
120
121                }
122            }
123            $i++;
124        }
125    }
126    // création de la variable contenant l'intégralité des donnees
127        $a_ecrire = '';
128    include_spip('inc/config');
129    $separateur = lire_config("csv2auteurs_separateur");
130        foreach ($tableau_csv as $ligne) {
131                $a_ecrire .= implode("$separateur", $ligne);
132                $a_ecrire .= "\r\n";
133        }
134    // telechargement du fichier csv   
135    header("Content-Type: application/download");
136    header("Content-Disposition: attachment; filename=$nom_fichier_csv");
137    header("Content-Length: ".strlen($a_ecrire));
138        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
139        header('Pragma: public');
140        echo $a_ecrire; 
141    exit;
142
143    return $retour;
144}
145function csv2auteurs_exportation(){
146
147    //récupération des noms des champs
148    $nom_champs= array();
149    $champ_supprimer = array(0,8,15,16,17,18,19);
150    $desc = sql_showtable('spip_auteurs',true);
151    foreach ($desc[field] as $cle => $valeur)
152                $nom_champs[$cle]="-> $cle";
153    foreach ($champ_supprimer as $cle){
154        unset($nom_champs[$cle]);
155    }
156    return $nom_champs;
157}
158?>
Note: See TracBrowser for help on using the repository browser.