source: spip-zone/_plugins_/joomla2spip/trunk/joomla2spip_fonctions.php @ 90408

Last change on this file since 90408 was 90408, checked in by real3t@…, 4 years ago

La trunk était identique à la branche, avec la même erreur.

File size: 9.9 KB
Line 
1<?php
2include_spip("inc/filtres");
3
4//
5//
6function joomla2spip_nettoyer_texte($texte,$champ="texte"){
7
8    $result = joomla2spip_nettoyer_texte_perso($texte);
9   
10    $texte = $result['texte'] ;
11   
12    //$texte = ereg_replace("(\n|\r|\r\n)+","",$texte);   
13    //$texte = preg_replace("#<br[^>]*>#i","\n\n",$texte);
14    $texte = str_replace("<br />","\n_ ",$texte);  // pas semantique mais efficace
15    //var_dump($texte);
16   
17    // extra regex
18    $texte = preg_replace("#<li[^>]*>#i","-* ",$texte);
19    $texte = preg_replace("#<h1[^>]*>#i","{{{",$texte);
20    $texte = preg_replace("#</h1>*>#i","}}}",$texte);
21    $texte = preg_replace("#<div[^>]*>#i","\n",$texte);
22    // extra  regx
23   
24    /*foreach(extraire_balises($texte,"h1") as $val){
25    $inter = supprimer_tags($val);     
26    $texte = str_replace($val,"{{{".$inter."}}}",$texte);
27    }*/
28   
29    foreach(extraire_balises($texte,"strong") as $val){
30    $inter = supprimer_tags($val);     
31    $texte = str_replace($val,"{{".$inter."}}",$texte);
32    }
33   
34    foreach(extraire_balises($texte,"em") as $val){
35    $inter = supprimer_tags($val);     
36    $texte = str_replace($val,"{".$inter."}",$texte);
37    }
38   
39    foreach(extraire_balises($texte,"a") as $val){
40    $html = ereg_replace("\n","",supprimer_tags($val)); 
41    $name = extraire_attribut($val,"name");
42    $lename = ($name)? $name : "" ;
43    $href = extraire_attribut($val,"href");
44    $href = preg_replace("/index\.php\?option=com_content&task=view&id=([0-9]+)&Itemid=[0-9]+/","spip.php?page=article&id_article=\\1",$href);
45   
46    if($lename){
47    // notes   
48    $texte = str_replace($val,"@@@".$lename."@@@",$texte);
49    }else{
50    $texte = str_replace($val,"[".$html."->".$href."]",$texte);
51    }
52   
53    }
54   
55   
56    //embed
57    preg_match_all("/<(embed|img)[^>]*>/i",$texte,$matches);
58    //var_dump($matches);
59    $i = 0 ;
60    foreach($matches[0] as $val){
61    $emb = preg_replace("#<#","@@@",$val);             
62    $texte = preg_replace("#$val#",$emb,$texte);
63    $i++;
64    }
65   
66    // <script> </script>
67    $texte = preg_replace("/<script type=\"text\/javascript\">.*?<\/script>/Uims","",$texte);
68   
69    // supprimer le html (editeurs wysiwyg)       
70    //$texte = supprimer_tags(textebrut($texte));
71    $texte = supprimer_tags($texte); // ne pas utiliser textebrut sinon on perd les \n
72   
73    if (substr($texte,-2)=="_ ") 
74                  $texte = substr($texte,0,-2);
75
76   
77   
78    //notes
79    preg_match_all("/@@@([a-z0-9]+)@@@/",$texte,$matches);
80    //var_dump($matches[1]);
81    $i = 0 ;
82    foreach($matches[0] as $val){
83    $texte = preg_replace("#$val#","<a name='".$matches[1][$i]."'></a>",$texte);
84    $i++;
85    }
86   
87    //embed
88    preg_match_all("/@@@(embed|img)[^>]*>/i",$texte,$matches);
89    //var_dump($matches);
90    $i = 0 ;
91    foreach($matches[0] as $val){
92    $emb = preg_replace("#@@@#","<",$val);             
93    $texte = preg_replace("#$val#",$emb,$texte);
94    $i++;
95    }
96   
97    // {audio}images/XXX.mp3{/audio}
98    preg_match_all("/\{audio\}(.*?)\{\/audio\}/",$texte,$matches);
99    //var_dump($matches);
100    $i = 0 ;
101    foreach($matches[0] as $val){
102    $url = preg_replace("#images\/#","documents/",$matches[1][$i]);     
103    $texte = preg_replace("#$val#","[".$url."->".$url."]",$texte);
104    $i++;
105    }
106 
107   
108    $pattern = array("/&nbsp;/Uims");
109    $replacement = array(" ");
110    $texte = preg_replace($pattern,$replacement,$texte);
111   
112   
113    include_spip('inc/charset');
114    $texte = unicode2charset(html2unicode($texte));
115    $chapo = unicode2charset(html2unicode($result['chapo']));
116    $titre = unicode2charset(html2unicode($result['titre']));
117   
118    $retour = array("texte"=>$texte,"chapo"=>$chapo,"titre"=>$titre) ;
119   
120    return $retour[$champ];
121}
122
123//
124//
125function joomla2spip_nettoyer_texte_perso($texte){
126
127  /* desactive titre et chapo (il peut avoir plusieurs h1 et h4)
128  $titre_temp = extraire_balise($texte,"h1");   
129  $titre = supprimer_tags(ereg_replace("(\n|\r\n|\r)"," ",$titre_temp));       
130  $texte = str_replace($titre_temp,"",$texte);
131 
132  $chapo_temp = extraire_balise($texte,"h4") ;
133  $chapo = supprimer_tags($chapo_temp);
134  $texte = str_replace($chapo_temp,"",$texte);
135  */
136 
137  // demontage de texte
138  $texte = preg_replace("#<\/*font[^>]*>#","",$texte);
139 
140  //echo "<pre>YOYO" ;
141  //var_dump($texte);
142  //echo "</pre>" ;
143 
144  //preg_match_all("/<div[^>]*id=\"infos[0-9]\"[^>]*>\n*<div align=\"justify\">/Uims",$texte,$matches);
145  //var_dump($matches);
146 
147  return array("texte"=>$texte,"titre"=>$titre,"chapo"=>$chapo) ;
148
149}
150
151//
152//
153function pas_d_inter($texte) {
154  $texte = preg_replace("/({{{|}}})/","",$texte);
155  return $texte ;
156}
157
158
159//
160//
161function rubrique_import($ma_rubrique,$id_parent=0,$id_secteur=0) {
162
163  $result = sql_fetsel('id_rubrique','spip_rubriques','titre='.sql_quote($ma_rubrique['titre'])) ; 
164     
165      if($result){
166       $id_rubrique = $result['id_rubrique'] ;
167       }
168      else{
169        $id_rubrique = sql_insertq('spip_rubriques',array('titre'=>$ma_rubrique['titre'],'id_parent' => $id_parent,'id_secteur' => $id_secteur,'descriptif' => $ma_rubrique['descriptif'])) ;   
170      }
171 
172  return $id_rubrique ;
173}
174
175
176//
177//
178function article_import($mon_article) {
179        $err = '';
180       
181        // chercher si l'article n'a pas deja ete importe
182        $ancien_id = $mon_article['id_article'];
183        $result = sql_fetsel('id_article','spip_articles','id_article='.intval($ancien_id)) ;
184        if($result)
185               return;
186       
187       
188        // chercher la rubrique
189        $titre_rub = $mon_article['rubrique'];
190  $result = sql_fetsel('id_rubrique','spip_rubriques','titre='.sql_quote($titre_rub)) ; 
191  if($result){
192     $id_rubrique = $result['id_rubrique'] ;
193  }
194   
195   
196        // creer article vide
197        include_spip('action/editer_article');
198        $id_article = insert_article($id_rubrique);     
199        $sql = "UPDATE spip_articles SET id_article = '$ancien_id' WHERE id_article = '$id_article'";
200        spip_query($sql);
201
202        if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')){
203                include_spip('action/editer_article');
204                $sql = "UPDATE spip_auteurs_liens SET id_objet = '$ancien_id' WHERE id_objet = '$id_article' AND objet = 'article'";
205        }
206        else{
207                include_spip('inc/modifier');
208                $sql = "UPDATE spip_auteurs_articles SET id_article = '$ancien_id' WHERE id_article = '$id_article'";
209        }
210        spip_query($sql);
211        $id_article = $ancien_id ;
212        // le remplir
213        $c = array();
214        foreach (array(
215                'surtitre', 'titre', 'soustitre', 'descriptif',
216                'nom_site', 'url_site', 'chapo', 'texte', 'maj', 'ps','visites'
217        ) as $champ)
218                $c[$champ] = $mon_article[$champ];
219
220        revisions_articles($id_article, $c);
221
222        // Modification de statut, changement de rubrique ?
223        $c = array();
224        foreach (array(
225                'date', 'statut', 'id_parent'
226        ) as $champ)
227                $c[$champ] = $mon_article[$champ];
228        $c['id_parent'] = $id_rubrique ;
229        $err .= instituer_article($id_article, $c);
230
231        // Un lien de trad a prendre en compte
232        if (!spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')) $err .= article_referent($id_article, array('lier_trad' => _request('lier_trad')));
233       
234        // ajouter les extras
235       
236       
237        return $err; 
238}
239
240//
241//
242function forum_import($mon_forum) {
243
244        if (!spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')){
245                sql_insertq('spip_forum',
246                        array('id_objet'=>$mon_forum['id_objet'],
247                                'objet'=>'article',
248                                'date_heure'=>$mon_forum['date_heure'],
249                                'date_thread'=>$mon_forum['date_thread'],
250                                'titre'=>$mon_forum['titre'],
251                                'texte'=>$mon_forum['texte'],
252                                'auteur'=>$mon_forum['auteur'],
253                                'email_auteur'=>$mon_forum['email_auteur'],
254                                'statut'=>$mon_forum['statut'],
255                                'ip'=>$mon_forum['ip'])) ;     
256        }else{
257                sql_insertq('spip_forum',
258                        array('id_article'=>$mon_forum['id_objet'],
259                                'date_heure'=>$mon_forum['date_heure'],
260                                'date_thread'=>$mon_forum['date_thread'],
261                                'titre'=>$mon_forum['titre'],
262                                'texte'=>$mon_forum['texte'],
263                                'auteur'=>$mon_forum['auteur'],
264                                'email_auteur'=>$mon_forum['email_auteur'],
265                                'statut'=>$mon_forum['statut'],
266                                'ip'=>$mon_forum['ip'])) ;     
267        }
268        return;
269}
270
271//
272//
273function sef_url($titre){
274        $titre = str_replace("&#8217;","'",$titre);
275        $titre = preg_replace("/« | »|\?|\./","",$titre);
276        $titre = preg_replace("/'/","",trim($titre));
277        $titre = str_replace("°","-",$titre);
278        $pattern = "/[^a-zA-Z0-9,_-]/";
279        include_spip('inc/charsets');
280        $url = preg_replace($pattern,"-",translitteration($titre));     
281        $url = strtolower($url);       
282        $url = preg_replace("/-+/","-",$url);   
283               
284        $vilains = array("points-de-vente","le-planbnet");     
285        if(in_array($url,$vilains)) return 'DEGAGE_VILAIN';
286               
287        if(strlen($url) > 15){
288                $pattern = substr($url, -8) ;
289                $url = preg_replace("+".$pattern."$+","",$url);
290                }
291        return $url ;
292}
293
294function joomla2spip_nettoyer_url($url){
295        if(preg_match('/search|file:\/\/\/|#n[1-9]|anonymouse\.org|webwarper.net|:80/',$url)){
296        return '' ;
297        }       
298        return $url ;
299}
300
301function joomla2spip_url_relative($url){
302$url = preg_replace("+http://www.leplanb.org/|\.html$+","",$url);
303return $url ;
304}
305
306function joomla2spip_url_import($mon_url){
307$url = $mon_url['url'];
308$type = $mon_url['type'];
309$id_objet = $mon_url['id_objet'];
310$date = $mon_url['date'];
311
312sql_insertq('spip_urls', array('url' => $url,'type' => $type,'id_objet' => $id_objet,'date' => $date));
313
314return  ;
315}
316
317
318//
319// importer auteur
320function joomla2spip_auteur_import($mon_auteur){
321        if($mon_auteur['statut'] == "Super Administrator" || $mon_auteur['statut'] == "Administrator") $statut = "0minirezo" ;
322        else if($mon_auteur['statut'] == "Editor" || $mon_auteur['statut'] == "Publisher") $statut = "1comite" ;
323        else if($mon_auteur['statut'] == "visiteur") $statut = "6forum" ;
324
325        $email = $mon_auteur['email'];
326        $login = $mon_auteur['login'];
327        $nom = $mon_auteur['nom'];
328
329        sql_insertq('spip_auteurs', array('email' => $email,'login' => $login,'statut' => $statut,'nom' => $nom));
330
331        return ;       
332}
333
334
335?>
Note: See TracBrowser for help on using the repository browser.