diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 465d9f956..7b13c97e4 100755
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -732,23 +732,45 @@ class Poche
$html->load_file($_FILES['file']['tmp_name']);
$data = array();
$read = 0;
- foreach (array('ol','ul') as $list) {
- foreach ($html->find($list) as $ul) {
- foreach ($ul->find('li') as $li) {
- $tmpEntry = array();
- $a = $li->find('a');
- $tmpEntry['url'] = $a[0]->href;
- $tmpEntry['tags'] = $a[0]->tags;
- $tmpEntry['is_read'] = $read;
- if ($tmpEntry['url']) {
- $data[] = $tmpEntry;
+
+ if (Tools:: get_doctype($html)) {
+ // Firefox-bookmarks HTML
+ foreach (array('DL','ul') as $list) {
+ foreach ($html->find($list) as $ul) {
+ foreach ($ul->find('DT') as $li) {
+ $tmpEntry = array();
+ $a = $li->find('A');
+ $tmpEntry['url'] = $a[0]->href;
+ $tmpEntry['tags'] = $a[0]->tags;
+ $tmpEntry['is_read'] = $read;
+ if ($tmpEntry['url']) {
+ $data[] = $tmpEntry;
+ }
}
- }
- # the second
is for read links
- $read = ((sizeof($data) && $read)?0:1);
+ # the second is for read links
+ $read = ((sizeof($data) && $read)?0:1);
+ }
}
- }
- }
+ } else {
+ // regular HTML
+ foreach (array('ol','ul') as $list) {
+ foreach ($html->find($list) as $ul) {
+ foreach ($ul->find('li') as $li) {
+ $tmpEntry = array();
+ $a = $li->find('a');
+ $tmpEntry['url'] = $a[0]->href;
+ $tmpEntry['tags'] = $a[0]->tags;
+ $tmpEntry['is_read'] = $read;
+ if ($tmpEntry['url']) {
+ $data[] = $tmpEntry;
+ }
+ }
+ # the second is for read links
+ $read = ((sizeof($data) && $read)?0:1);
+ }
+ }
+ }
+ }
// for readability structure
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php
index c8fb2e527..1c5545908 100755
--- a/inc/poche/Tools.class.php
+++ b/inc/poche/Tools.class.php
@@ -420,4 +420,15 @@ final class Tools
return str_replace('+', '', $token);
}
+ function get_doctype($doc)
+ {
+ $els = $doc->find('unknown');
+
+ foreach ($els as $e => $el)
+ if ($el->parent()->tag == 'root')
+ return $el;
+
+ return NULL;
+ }
+
}