diff options
Diffstat (limited to 'inc')
-rwxr-xr-x | inc/poche/Poche.class.php | 54 | ||||
-rwxr-xr-x | inc/poche/Routing.class.php | 2 | ||||
-rwxr-xr-x | inc/poche/Tools.class.php | 19 |
3 files changed, 58 insertions, 17 deletions
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index d297807a..0754d659 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -732,23 +732,45 @@ class Poche | |||
732 | $html->load_file($_FILES['file']['tmp_name']); | 732 | $html->load_file($_FILES['file']['tmp_name']); |
733 | $data = array(); | 733 | $data = array(); |
734 | $read = 0; | 734 | $read = 0; |
735 | foreach (array('ol','ul') as $list) { | 735 | |
736 | foreach ($html->find($list) as $ul) { | 736 | if (Tools::get_doctype($html)->innertext == "<!DOCTYPE NETSCAPE-Bookmark-file-1>") { |
737 | foreach ($ul->find('li') as $li) { | 737 | // Firefox-bookmarks HTML |
738 | $tmpEntry = array(); | 738 | foreach (array('DL','ul') as $list) { |
739 | $a = $li->find('a'); | 739 | foreach ($html->find($list) as $ul) { |
740 | $tmpEntry['url'] = $a[0]->href; | 740 | foreach ($ul->find('DT') as $li) { |
741 | $tmpEntry['tags'] = $a[0]->tags; | 741 | $tmpEntry = array(); |
742 | $tmpEntry['is_read'] = $read; | 742 | $a = $li->find('A'); |
743 | if ($tmpEntry['url']) { | 743 | $tmpEntry['url'] = $a[0]->href; |
744 | $data[] = $tmpEntry; | 744 | $tmpEntry['tags'] = $a[0]->tags; |
745 | $tmpEntry['is_read'] = $read; | ||
746 | if ($tmpEntry['url']) { | ||
747 | $data[] = $tmpEntry; | ||
748 | } | ||
745 | } | 749 | } |
746 | } | 750 | # the second <ol/ul> is for read links |
747 | # the second <ol/ul> is for read links | 751 | $read = ((sizeof($data) && $read)?0:1); |
748 | $read = ((sizeof($data) && $read)?0:1); | 752 | } |
749 | } | 753 | } |
750 | } | 754 | } else { |
751 | } | 755 | // regular HTML |
756 | foreach (array('ol','ul') as $list) { | ||
757 | foreach ($html->find($list) as $ul) { | ||
758 | foreach ($ul->find('li') as $li) { | ||
759 | $tmpEntry = array(); | ||
760 | $a = $li->find('a'); | ||
761 | $tmpEntry['url'] = $a[0]->href; | ||
762 | $tmpEntry['tags'] = $a[0]->tags; | ||
763 | $tmpEntry['is_read'] = $read; | ||
764 | if ($tmpEntry['url']) { | ||
765 | $data[] = $tmpEntry; | ||
766 | } | ||
767 | } | ||
768 | # the second <ol/ul> is for read links | ||
769 | $read = ((sizeof($data) && $read)?0:1); | ||
770 | } | ||
771 | } | ||
772 | } | ||
773 | } | ||
752 | 774 | ||
753 | // for readability structure | 775 | // for readability structure |
754 | 776 | ||
@@ -766,7 +788,7 @@ class Poche | |||
766 | $urlsInserted = array(); //urls of articles inserted | 788 | $urlsInserted = array(); //urls of articles inserted |
767 | foreach($data as $record) { | 789 | foreach($data as $record) { |
768 | $url = trim(isset($record['article__url']) ? $record['article__url'] : (isset($record['url']) ? $record['url'] : '')); | 790 | $url = trim(isset($record['article__url']) ? $record['article__url'] : (isset($record['url']) ? $record['url'] : '')); |
769 | if ($url and !in_array($url, $urlsInserted)) { | 791 | if (filter_var($url, FILTER_VALIDATE_URL) and !in_array($url, $urlsInserted)) { |
770 | $title = (isset($record['title']) ? $record['title'] : _('Untitled - Import - ') . '</a> <a href="./?import">' . _('click to finish import') . '</a><a>'); | 792 | $title = (isset($record['title']) ? $record['title'] : _('Untitled - Import - ') . '</a> <a href="./?import">' . _('click to finish import') . '</a><a>'); |
771 | $body = (isset($record['content']) ? $record['content'] : ''); | 793 | $body = (isset($record['content']) ? $record['content'] : ''); |
772 | $isRead = (isset($record['is_read']) ? intval($record['is_read']) : (isset($record['archive']) ? intval($record['archive']) : 0)); | 794 | $isRead = (isset($record['is_read']) ? intval($record['is_read']) : (isset($record['archive']) ? intval($record['archive']) : 0)); |
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index 138da48d..33a81435 100755 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php | |||
@@ -141,7 +141,7 @@ class Routing | |||
141 | $pdf->producePDF(); | 141 | $pdf->producePDF(); |
142 | } elseif (isset($_GET['import'])) { | 142 | } elseif (isset($_GET['import'])) { |
143 | $import = $this->wallabag->import(); | 143 | $import = $this->wallabag->import(); |
144 | $tplVars = array_merge($this->vars, $import); | 144 | $this->vars = array_merge($this->vars, $import); |
145 | } elseif (isset($_GET['empty-cache'])) { | 145 | } elseif (isset($_GET['empty-cache'])) { |
146 | Tools::emptyCache(); | 146 | Tools::emptyCache(); |
147 | } elseif (isset($_GET['export'])) { | 147 | } elseif (isset($_GET['export'])) { |
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index c8fb2e52..f3d1013f 100755 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php | |||
@@ -420,4 +420,23 @@ final class Tools | |||
420 | return str_replace('+', '', $token); | 420 | return str_replace('+', '', $token); |
421 | } | 421 | } |
422 | 422 | ||
423 | /** | ||
424 | * | ||
425 | * Returns the doctype for an HTML document (used for Mozilla Bookmarks) | ||
426 | * @param simple_html_dom $doc | ||
427 | * @return doctype $el | ||
428 | * | ||
429 | */ | ||
430 | |||
431 | public static function get_doctype($doc) | ||
432 | { | ||
433 | $els = $doc->find('unknown'); | ||
434 | |||
435 | foreach ($els as $e => $el) | ||
436 | if ($el->parent()->tag == 'root') | ||
437 | return $el; | ||
438 | |||
439 | return NULL; | ||
440 | } | ||
441 | |||
423 | } | 442 | } |