(.*?)<\//i', $line, $m6)) {
+ $items[$i]['note'] = str_replace('
', "\n", $m6[1]);
+ } else {
+ $items[$i]['note'] = '';
+ }
+
+ if (preg_match('/(tags?|labels?|folders?)="(.*?)"/i', $line, $m7)) {
+ array_unique(array_merge($items[$i]['tags'], explode(' ', trim(preg_replace("/\s+/", " ", strtr($m7[2], ',', ' '))))));
+ }
+ if (preg_match('/add_date="(.*?)"/i', $line, $m8)) {
+ $items[$i]['time'] = $m8[1];
+ } else {
+ $items[$i]['time'] = time();
+ }
+
+ if (preg_match('/(public|published|pub)="(.*?)"/i', $line, $m9)) {
+ $items[$i]['pub'] = $str_bool($m9[2], false) ? 1 : 0;
+ } elseif (preg_match('/(private|shared)="(.*?)"/i', $line, $m10)) {
+ $items[$i]['pub'] = $str_bool($m10[2], true) ? 0 : 1;
+ }
+
+ $i++;
+ }
+ }
+ ksort($items);
+
+ return $items;
+}
+
+?>
diff --git a/www/importNetscape.php b/www/importNetscape.php
index 89d75b7..b0b7b37 100644
--- a/www/importNetscape.php
+++ b/www/importNetscape.php
@@ -20,6 +20,13 @@
***************************************************************************/
require_once 'www-header.php';
+if ('@data_dir@' == '@' . 'data_dir@') {
+ //non pear-install
+ require_once dirname(__FILE__) . '/../src/SemanticScuttle/parse_netscape_bookmarks.php';
+} else {
+ //pear installation; files are in include path
+ require_once 'SemanticScuttle/parse_netscape_bookmarks.php';
+}
/* Service creation: only useful services are created */
$bookmarkservice =SemanticScuttle_Service_Factory::get('Bookmark');
@@ -101,130 +108,4 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
$templateservice->loadTemplate($templatename, $tplVars);
}
-
-/**
- * Basically netscape bookmark files often come so badly formed, there's
- * no reliable way I could find to parse them with DOM or SimpleXML,
- * even after running HTML Tidy on them. So, this function does a bunch of
- * transformations on the general format of a netscape bookmark file, to get
- * Each bookmark and its description onto one line, and goes through line by
- * line, matching tags and attributes. It's messy, but it works better than
- * anything I could find in hours of googling, and anything that I could
- * write after hours with DOM and SimpleXML. I didn't want to pull in a big
- * DOM parsing library just to do this one thing, so this is it.
- * @todo - running Tidy before doing this might be beneficial.
- * ?? $bkmk_str = tidy_parse_string($bkmk_str)->cleanRepair();
- *
- * Update 2013-07-08:
- * Just tested this on an export of some bookmarks from Pinboard.in
- * and it seems that it is still working, so good for me.
- */
-
-/*
-print '';
-var_dump(parse_netscape_bookmarks(file_get_contents('bookmarks_export.htm')));
-*/
-
-function parse_netscape_bookmarks($bkmk_str, $default_tag = null) {
- $i = 0;
- $next = false;
- $items = [];
-
- $current_tag = $default_tag = $default_tag ?: 'autoimported-'.date("Ymd");
-
- $bkmk_str = str_replace(["\r","\n","\t"], ['','',' '], $bkmk_str);
-
- $bkmk_str = preg_replace_callback('@
(.*?)('.str_replace(["\r", "\n"], ['', '
'], trim($m[1])).'';
- }, $bkmk_str);
-
- $bkmk_str = preg_replace('/>(\s*?)\n<", $bkmk_str);
- $bkmk_str = preg_replace('/(/', "\n