3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
13 if (!defined("_ECRIRE_INC_VERSION")) return;
15 function action_importer_bookmarks_netscape_dist($fichier_ok,$id_parent,$importer_statut_publie,$importer_tags){
18 if (autoriser('importer','_bookmarks')){
19 $out = bookmarks_netscape_fast_parse($fichier_ok['contenu']);
21 // le premier content ne nous interesse pas
22 $out = reset($out['sub']);
23 $nb = bookmarks_insert($out,$id_parent,$importer_statut_publie,$importer_tags);
28 function bookmarks_netscape_fast_parse(&$contenu){
30 #var_dump(">>".substr($contenu,0,200));
32 $po=stripos($contenu,"<h3",4);
33 $pf=stripos($contenu,"</dl>");
36 if ($po>0 AND $po<$pf){
37 $out['content'] .= substr($contenu,0,$po);
38 $contenu = substr($contenu,$po);
39 $out['sub'][] = bookmarks_netscape_fast_parse($contenu);
43 $out['content'] .= substr($contenu,0,$pf);
44 $contenu = substr($contenu,$pf+
5);
45 #var_dump("<<".substr($contenu,0,200));
46 $out['content'] = bookmarks_extract_links($out['content']);
49 $po=stripos($contenu,"<h3");
50 $pf=stripos($contenu,"</dl>");
52 $out['content'] = bookmarks_extract_links($out['content']);
56 function bookmarks_extract_links($contenu){
58 $contenu = str_ireplace("<DT>","<dt>",$contenu);
59 $contenu = explode("<dt>",$contenu);
61 $h3 = array_shift($contenu);
62 $h3 = extraire_balise($h3,"h3");
63 $out['titre'] = strip_tags($h3);
65 foreach($contenu as $item){
67 if ($a = extraire_balise($item,'a')){
68 $link['url'] = extraire_attribut($a,'href');
69 $link['titre'] = strip_tags($a);
70 $link['date'] = extraire_attribut($a,"add_date");
71 $link['descriptif'] = "";
73 if ($p=stripos($item,"<dd>")){
74 $link['descriptif'] = textebrut(substr($item,$p));
76 $out['links'][] = $link;
82 function bookmarks_insert($tree,$id_parent,$importer_statut_publie,$importer_tags,$level=0){
83 include_spip('action/editer_rubrique');
84 include_spip('action/editer_site');
87 if (count($tree['content']['links'])
88 OR isset($tree['sub'])){
90 $titre = ($tree['content']['titre']?
$tree['content']['titre']:_T('info_sans_titre'));
91 $id_rubrique = sql_getfetsel('id_rubrique','spip_rubriques','id_parent='.intval($id_parent)." AND titre=".sql_quote($titre));
93 AND $id_rubrique = rubrique_inserer($id_parent)){
94 rubrique_modifier($id_rubrique,array('titre'=>$titre));
98 if ($importer_statut_publie AND autoriser('publierdans','rubrique',$id_rubrique))
101 foreach($tree['content']['links'] as $link){
102 if (!$id_syndic = sql_getfetsel('id_syndic',
104 'id_rubrique='.intval($id_rubrique)." AND url_site=".sql_quote($link['url']))){
105 $id_syndic = site_inserer($id_rubrique);
107 'url_site' => $link['url'],
108 'nom_site' => $link['titre'],
109 'date' => date('Y-m-d H:i:s',$link['date']?
$link['date']:$now),
111 'descriptif' => $link['descriptif']
113 #echo "creation site $id_syndic ".$set['url_site']." <br />";
114 site_modifier($id_syndic,$set);
118 #echo "existant site $id_syndic ".$link['url']." <br />";
123 if (isset($tree['sub']))
124 foreach($tree['sub'] as $sub)
125 $nb +
= bookmarks_insert($sub,$id_rubrique,$importer_statut_publie,$importer_tags,$level+
1);