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

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

un plugin pour générer des clones d'une rubrique avec ses articles.

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