diff options
Diffstat (limited to 'inc/poche/Poche.class.php')
-rwxr-xr-x | inc/poche/Poche.class.php | 54 |
1 files changed, 38 insertions, 16 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)); |