Ignore the case while checking DOCTYPE during the file import

Fixes #1091
This commit is contained in:
ArthurHoaro 2018-02-23 20:34:06 +01:00
parent b9c6589363
commit 3ff1ce47bc
3 changed files with 25 additions and 2 deletions

View file

@ -108,7 +108,7 @@ public static function import($post, $files, $linkDb, $conf, $history)
$filesize = $files['filetoupload']['size'];
$data = file_get_contents($files['filetoupload']['tmp_name']);
if (strpos($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>') === false) {
if (preg_match('/<!DOCTYPE NETSCAPE-Bookmark-file-1>/i', $data) === 0) {
return self::importStatus($filename, $filesize);
}
@ -160,7 +160,7 @@ public static function import($post, $files, $linkDb, $conf, $history)
} else if ($post['privacy'] == 'public') {
// all imported links are public
$private = 0;
}
}
$newLink = array(
'title' => $bkm['title'],

View file

@ -126,6 +126,21 @@ public function testImportNoDoctype()
$this->assertEquals(0, count($this->linkDb));
}
/**
* Attempt to import bookmarks from a file with a lowercase Doctype
*/
public function testImportLowecaseDoctype()
{
$files = file2array('lowercase_doctype.htm');
$this->assertStringMatchesFormat(
'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:'
.' 2 links imported, 0 links overwritten, 0 links skipped.',
NetscapeBookmarkUtils::import(null, $files, $this->linkDb, $this->conf, $this->history)
);
$this->assertEquals(2, count($this->linkDb));
}
/**
* Ensure IE dumps are supported
*/

View file

@ -0,0 +1,8 @@
<!DOCTYPE netscape-bookmark-file-1>
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><A HREF="https://private.tld" ADD_DATE="10/Oct/2000:13:55:36 +0300" PRIVATE="1" TAGS="private secret">Secret stuff</A>
<DD>Super-secret stuff you're not supposed to know about
<DT><A HREF="http://public.tld" ADD_DATE="1456433748" PRIVATE="0" TAGS="public hello world">Public stuff</A>
</DL><p>