source: spip-zone/_plugins_/generateur_contenu/exec/gener_cont.php @ 107913

Last change on this file since 107913 was 9928, checked in by cy_altern@…, 14 years ago

passage à cfg pour les données de configuration

File size: 14.9 KB
Line 
1<?
2/* générateur de clones de rubrique avec articles
3 
4        cy_altern &copy; 2007 - Distribu&#233; sous licence GNU/LGPL
5       
6*/
7
8
9function exec_gener_cont() {
10  // PARAMETRES de configuration gérés par cfg
11         $num_source = lire_config('gener_cont/secteur_source');   // le numéro de la rubrique qui contient les sous-rubriques modèles
12         $num_cible = lire_config('gener_cont/secteur_cible');    // le numéro du secteur où la création de clones est autorisée
13         $max_copies = lire_config('gener_cont/nb_max_clones');   // le nombre max de copies (sous-répertoires) autorisé
14         $statut_articles_defaut = lire_config('gener_cont/statut_articles_defaut');  // le statut par défaut des articles clonés
15                       
16         include_spip("inc/presentation");
17
18  // vérifier les droits
19    global $connect_statut;
20        global $connect_toutes_rubriques;
21    if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) {   
22                debut_page(_T('titre'), "generateur_rubriques", "plugin");
23                echo _T('avis_non_acces_page');
24                fin_page();
25                exit;
26        }
27       
28 // config des noms de tables SPIP
29//              global $table_prefix;
30//              $prefix_tables_SPIP = $table_prefix;     // $table_prefix définie dans ecrire/inc_version.php (qui appelle mes_options.php s'il existe)
31                $Trubriques = "spip_rubriques";
32                $Tarticles = "spip_articles";
33                $Tauteurs = "spip_auteurs";
34                $Tauteurs_rubriques = "spip_auteurs_rubriques";
35                $Tauteurs_articles = "spip_auteurs_articles";
36
37 // choix auteur uniquement pour les admins complets
38                if ($connect_toutes_rubriques 
39                          AND isset($_POST['auteur_copies']) 
40                                AND $_POST['auteur_copies'] != '') { 
41                                $id_utilisateur = $_POST['auteur_copies'];
42                }
43                else {
44                                 $id_utilisateur = $GLOBALS['auteur_session']['id_auteur'];
45                }
46
47// traitement des données envoyées par le formulaire
48                if (isset($_POST['num_parent']) AND $_POST['num_parent'] != '' 
49                          AND isset($_POST['nb_copies']) AND $_POST['nb_copies'] != ''
50                                AND isset($_POST['num_parent_2copy']) AND $_POST['num_parent_2copy'] != ''
51                                ) {
52                         $num_parent = $_POST['num_parent'];
53                         $nb_copies = $_POST['nb_copies'];
54                         $num_parent_2copy = $_POST['num_parent_2copy'];
55                         
56                         $Terr_rub = array();
57                         $Terr_art = array();
58                         
59// ici le début de la boucle pour la création d'un clone de rubrique
60  // étape 1 : création de la rubrique
61                         $result4 = spip_query("SELECT titre, texte, descriptif FROM $Trubriques WHERE id_rubrique = $num_parent_2copy LIMIT 1");
62                         $row4 = spip_fetch_array($result4);
63                         $titre_rub = addslashes($row4['titre']);
64                // récup des champs constituant le titre
65         $Tchamps = array();
66                         for ($j = 1; $j < 4; $j++) {
67                                         if ($_POST['champ_'.$j.'_titre_rub'] AND $_POST['champ_'.$j.'_titre_rub'] != '') {
68                                                        $champ_ec = trim($_POST['champ_'.$j.'_titre_rub']);
69                                         // traiter les valeurs débutant par # (#INCREMENT ou appel des champs #TITRE, #TEXTE et #DESCRIPTIF pour récup du contenu des champs de la rubrique clonée)
70                                                        if (strpos($champ_ec, '#') === 0) {
71                                                                 $champ_ec = strtolower(substr($champ_ec, 1));
72                                                         if ($champ_ec == "increment") {
73                                                                  $debut_increment_titre_rub = ( (isset($_POST['debut_increment_titre_rub']) AND $_POST['debut_increment_titre_rub'] != '') ? intval($_POST['debut_increment_titre_rub']) : 1);
74                                                                  $Tchamps[$j] = '#INCREMENT';
75                                                   }
76                                                         else {
77                                                                          $Tchamps[$j] = $row4[$champ_ec];
78                                             }
79                                                        }
80                                        // si pas de # en début de valeur, récupérer le contenu du champ POST tel quel
81                                                        else {
82                                                                         $Tchamps[$j] = $champ_ec;
83                                                        }
84                                         }
85                         }
86                         
87                         $texte_rub = addslashes($row4['texte']);
88                         $descriptif_rub = addslashes($row4['descriptif']);
89                         $date_ec = date("Y-m-j H:i:s");
90                         
91                         for ($i = 1; $i <= $_POST['nb_copies']; $i ++) {
92                         if (count($Tchamps) > 0) {
93                                                                $titre_rub = '';
94                                                                for ($n = 1; $n <= count($Tchamps); $n++) {
95                                                                                if (trim($Tchamps[$n]) == '#INCREMENT') {
96                                                                                         $titre_rub .= $debut_increment_titre_rub + $i - 1;
97                                                                                }
98                                                                                else {
99                                                                                                 $titre_rub .= addslashes($Tchamps[$n]);
100                                                                                }
101                                                                }
102                         }
103                                                 spip_query("INSERT INTO $Trubriques (id_rubrique, id_parent, titre, id_secteur, statut, date, texte, descriptif)
104                                                                                                 VALUES ('', $num_parent, '$titre_rub', $num_cible, 'publie', '$date_ec', '$texte_rub', '$descriptif_rub')" );
105                                         if (mysql_error() != '') {
106                                                        $Terr_rub[] = 'insertion rubrique n°'.$i.' : erreur => '.mysql_error();
107                                                        break;
108                                         }
109                                   else {  // création rubrique = OK
110                                                        $id_rub_ec = mysql_insert_id();
111                                                        // si l'utilisateur est un admin restreint, lui attribuer la rubrique créée
112                                                                if (!$connect_toutes_rubriques) {
113                                                                                        spip_query("INSERT INTO $Tauteurs_rubriques (id_rubrique, id_auteur) VALUES ($id_rub_ec, $id_utilisateur)");
114                                                                if (mysql_error() != '') {
115                                                                         $Terr_rub[] = 'insertion auteur_rubrique n°'.$i.' : erreur => '.mysql_error();
116                                                                                 break;
117                                                                }
118                                                            }
119                                                 
120    // Etape 2 : création des articles         
121     // ici, c'est le bide : une mauvaise bidouille pour récupérer les articles de la rubrique à copier
122     // TO DO : faire une copie de l'arborescence de la rubrique (un pt'it coup de récursif en vue... y'a un truc à retrouver dans ak !)
123     // avec la création des champs automatique du style $$nom_champ_spip = ...
124                                                  if (isset($_POST['statut_articles']) AND $_POST['statut_articles'] != '') {
125                                                                                 $statut_articles = $_POST['statut_articles'];
126                                                                        }
127                                                                        else {
128                                                                                         $statut_articles = $statut_articles_defaut;
129                                                                        }
130                                                                        $result5 = spip_query("SELECT * FROM $Tarticles WHERE id_rubrique = $num_parent_2copy");
131                                                  while ($row5 = spip_fetch_array($result5)) {
132                                                                         $surtitre = $row5['surtitre'];
133                                                                         $titre = $row5['titre'];
134                                                                         $soustitre = $row5['soustitre'];
135                                                                         $descriptif = $row5['descriptif'];
136                                                                         $nom_site = $row5['nom_site'];
137                                                                         $chapo = $row5['chapo'];
138                                                                         $texte = $row5['texte'];
139                                                                         $ps = $row5['ps'];
140                                 // création clone article
141                                                         spip_query("INSERT INTO $Tarticles (id_article, id_rubrique, id_secteur, date, statut, surtitre, titre, soustitre, descriptif, nom_site, chapo, texte, ps)
142                                                                                                  VALUES ('', '$id_rub_ec', '$num_cible', '$date_ec', '$statut_articles', '$surtitre', '$titre', '$soustitre', '$descriptif', '$nom_site', '$chapo', '$texte', '$ps')");
143                                                 if (mysql_error() != '') {
144                                                                         $Terr_art[] = 'insertion article rubrique n°'.$id_rub_ec.' : erreur => '.mysql_error();
145                                                 }
146                                                         else {
147                                                         $id_art_ec = mysql_insert_id();
148                                                         spip_query("INSERT INTO $Tauteurs_articles (id_article, id_auteur) VALUES ($id_art_ec, $id_utilisateur)");
149                                                                if (mysql_error() != '') {
150                                                                         $Terr_art[] = 'insertion auteur_article rubrique n° '.$id_rub_ec.' : erreur => '.mysql_error();
151                                                                }
152                                                         }
153                                                  }   // fin while article
154                                                 
155                          }  // fin else création rubrique = OK
156                                         
157                                }   // fin for nb_copies
158                               
159          }  // fin if $_POST complet
160
161
162// DEBUT FORMULAIRE DE LANCEMENT
163
164        // trouver la version en cours à partir de plugin.xml
165     $p = explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
166     $pp = explode("/", end($p));
167     define('_DIR_PLUGIN_GENER_CONT',(_DIR_PLUGINS.$pp[0]));
168               
169                 $Tlecture_fich_plugin = file(_DIR_PLUGIN_GENER_CONT.'/plugin.xml');
170                 $stop_prochain = 0;
171                 foreach ($Tlecture_fich_plugin as $ligne) {
172                                                 if ($stop_prochain == 1) {
173                                                          $version_script = $ligne;
174                                                          break;
175                                                 }
176                                                 if (substr_count($ligne, '<version>') > 0) {
177                                                          $stop_prochain = 1;
178                                                 }
179                 }
180    debut_page('Moulinette &agrave; cloner les rubriques');
181               
182//                  debut_page(_T('titre_naviguer_dans_le_site')),"naviguer", "rubriques",'', '',$id_rubrique);
183// print '<br>$_POST = ';               
184// print_r($_POST);
185// print '<br>$id_utilisateur = '.$id_utilisateur;
186                 ?>
187 
188<style type="text/css">
189                         .erreurs {
190                                         font-size: 12px;
191                                         color: #f00;                                           
192                         }
193                         .ok {
194                                         font-size: 18px;
195                                         color: #093;
196                         }
197</style>
198<?
199   
200    debut_gauche();
201   
202    debut_boite_info(); 
203    echo "<img src=\""._DIR_PLUGIN_GENER_CONT."/img_pack/gener_cont-24.png\" style=\"float: left; margin-right: 10px;\">";
204                echo "Cette moulinette clone une sous-rubrique de la rubrique des mod&egrave;les (".$num_source.") dans une sous-rubrique du secteur ".$num_cible.".";
205                echo "<br /><br /><strong>Version : </strong>".$version_script;         
206                echo '<br /><br /><a href=".?exec=cfg&cfg=gener_cont">Configuration de ce plugin</a>';
207    fin_boite_info();
208   
209    debut_droite();
210    gros_titre('Moulinette &agrave; cloner les rubriques');
211
212               
213    echo "\r\n<br />"; 
214    if (isset($_POST['num_parent']) AND $_POST['num_parent'] != '' AND isset($_POST['nb_copies']) AND $_POST['nb_copies'] != '') {
215         debut_cadre_trait_couleur("rubrique-24.gif", false, "", "Choix de la rubrique parent et du nombre de rubriques");  ?>
216                         <a href="<? print basename($_SERVER['PHP_SELF']); ?>?exec=gener_cont" style="float: right;">Retour cr&eacute;ation rubriques</a>
217<?               if (count($Terr_rub) > 0 OR count($Terr_art) > 0) {  ?>
218                         <div id="erreurs" class="erreurs">
219                                                Erreurs dans les rubriques :<br />
220<?                   foreach ($Terr_rub as $err) { 
221                                                                         print $err.'<br /><br />';
222                                   }    ?>
223                                          <br />
224                                                Erreurs dans les articles :<br />       
225<?             foreach ($Terr_art as $err) { 
226                                                                         print $err.'<br /><br />';
227                                   }  ?>
228                         </div>
229<?               }
230                         else { ?>                                             
231                         <div id="ok" class="ok">
232                                                Tout c'est bien pass&eacute;, <? print $nb_cree; ?> rubrique(s) cr&eacute;&eacute;(s).
233                         </div>
234<?       } 
235                         fin_cadre_trait_couleur();
236          }
237                else {  ?>
238<form method="post" action="<? print basename($_SERVER['PHP_SELF']); ?>?exec=gener_cont" id="form_saisie" name="form_saisie">
239                       
240<?                       debut_cadre_trait_couleur("rubrique-24.gif", false, "", "Choix de la rubrique de destination et du nombre de copies");  ?>                     
241                         Rubrique o&ugrave; cr&eacute;er les clones :
242                         <select id="num_parent" name="num_parent">
243<?                       if ($num_cible == 0) {
244                                                $sql_where = 'id_parent = 0';
245                                 }
246                                 else {
247                                                        $sql_where = 'id_secteur = '.$num_cible;
248                                 }
249                                 $sql1 = "SELECT id_rubrique, titre FROM $Trubriques WHERE $sql_where";
250                                 $result1 = spip_query($sql1);
251                                 while ($row1 = spip_fetch_array($result1)) {   
252                                                         echo "<option value=\"".$row1['id_rubrique']."\">".$row1['titre']."</option>";
253                           }  ?>                                                         
254                         </select>
255                        <br /><br />
256                        Nombre de sous-rubriques &agrave; cr&eacute;er :
257                        <select id="nb_copies" name="nb_copies">
258<?                 for ($i = 1; $i <= $max_copies; $i++) {   
259                                                 echo "<option value=\"".$i."\">".$i."</option>";
260                           }  ?>                                                             
261                        </select>
262                        <br />
263<?                 fin_cadre_trait_couleur();
264                                 debut_cadre_trait_couleur("rubrique-24.gif", false, "", "Param&eacute;trage de la rubrique &agrave; copier"); ?>                       
265                         Rubrique &agrave; copier :
266                         <select id="num_parent_2copy" name="num_parent_2copy">
267<?                       $result2 = spip_query("SELECT id_rubrique, titre FROM $Trubriques WHERE id_parent = $num_source");   // AND id_rubrique != $num_source
268                                 while ($row2 = spip_fetch_array($result2)) {   
269                                                         echo "<option value=\"".$row2['id_rubrique']."\">".$row2['titre']."</option>";
270                         }  ?>                                                   
271                         </select>
272<?               if ($connect_toutes_rubriques) {   // choix auteur uniquement pour les admins complets ?>                       
273                         <br /><br />
274                         Auteur des articles : 
275                         <select id="auteur_copies" name="auteur_copies">
276<?                    $result3 = spip_query("SELECT id_auteur, login FROM $Tauteurs");
277                                                while ($row3 = spip_fetch_array($result3)) {
278                                                                        echo "<option value=\"".$row3['id_auteur']."\">".$row3['login']."</option>";
279                                                }   ?>
280                         </select>
281<?                 } ?>                 
282                                 <br /><br />
283                                 Statut des articles :
284         <select name="statut_articles">
285                                         <option value="publie" <? echo ($statut_articles_defaut == "publie" ? 'selected="selected"' : ''); ?>>publi&#233; en ligne</option>
286                                         <option value="prop" <? echo ($statut_articles_defaut == "prop" ? 'selected="selected"' : ''); ?>>propos&#233; &agrave; l'&#233;valuation</option>
287                                         <option value="prepa" <? echo ($statut_articles_defaut == "prepa" ? 'selected="selected"' : ''); ?>>en cours de r&#233;daction</option>
288                                         <option value="poubelle" <? echo ($statut_articles_defaut == "poubelle" ? 'selected="selected"' : ''); ?>>&agrave; la poubelle</option>
289                                         <option value="refuse" <? echo ($statut_articles_defaut == "refuse" ? 'selected="selected"' : ''); ?>>refus&#233;</option>
290         </select>
291                                 
292<?                 fin_cadre_trait_couleur();
293                                 debut_cadre_trait_couleur("rubrique-24.gif", false, "", "Création des titres de sous-rubriques :");                    ?>
294                                 champ 1 : <input type="text" id="champ_1_titre_rub" name="champ_1_titre_rub">
295                                 <br />champ 2 : <input type="text" id="champ_2_titre_rub" name="champ_2_titre_rub">
296                                 <br />champ 3 : <input type="text" id="champ_3_titre_rub" name="champ_3_titre_rub">
297                                 <br />
298                                 Num&eacute;rotation : incr&eacute;ment commence &agrave; : <input type="text" style="width: 30px;" id="debut_increment_titre_rub" name="debut_increment_titre_rub">
299                                 <br /><br />
300                                 <span style="font-size: 75%;">
301                                 Le titre de la rubrique sera constitu&eacute; par les champs 1 &agrave; 3. Chacun de ces champs peut &ecirc;tre rempli automatiquement par
302                                 le contenu d'un champ de la rubrique &agrave; cloner (<strong>#TITRE</strong>, <strong>#DESCRIPTIF</strong> ou <strong>#TEXTE</strong>)
303                                 Pour qu'un champ soit rempli par un num&eacute;ro incr&eacute;ment&eacute; &agrave; chaque clone, mettre <strong>#INCREMENT</strong> dans le champ
304                                 <br /><br />Pour exemple : la formule
305                                 <ul>
306                                                <li>champ 1 : <strong>#TITRE</strong></li>
307                                                <li>champ 2 : <strong>#INCREMENT</strong></li>
308                                                <li>champ 3 : <strong>#DESCRIPTIF</strong></li>
309                                                <li>increment à <strong>12</strong></li>
310                                 </ul>
311                                 donnera comme premier titre de la s&eacute;rie :
312                                 <br /><strong>Partie II / Chapitre 12 :&lt;multi&gt;[fr] le titre du chapitre [en]chapter's title&lt;/multi&gt;</strong>
313                                 <br />si on clone une rubrique avec les caract&eacute;ristiques suivantes :
314                                 <ul>
315                                                <li>titre : <strong>Partie II / Chapitre </strong></li>
316                                                <li>descriptif : <strong> :&lt;multi&gt;[fr] le titre du chapitre [en]chapter's title &lt;/multi&gt;</strong></li>
317                                 </ul>
318                                 </span>
319<?                 fin_cadre_trait_couleur();   ?>
320                        <input type="submit" name="valide_generateur" id="valide_generateur" value="g&eacute;n&eacute;rer">
321
322</form>
323<?  }
324
325                echo fin_page();
326               
327}
328 ?>
Note: See TracBrowser for help on using the repository browser.