diff --git a/plugins/Bookmark/BookmarkPlugin.php b/plugins/Bookmark/BookmarkPlugin.php
index 900dc7651b..6bd38a8c12 100644
--- a/plugins/Bookmark/BookmarkPlugin.php
+++ b/plugins/Bookmark/BookmarkPlugin.php
@@ -134,6 +134,7 @@ class BookmarkPlugin extends Plugin
return false;
case 'BookmarkForm':
case 'DeliciousBackupImporter':
+ case 'DeliciousBookmarkImporter':
include_once $dir.'/'.strtolower($cls).'.php';
return false;
default:
@@ -286,6 +287,13 @@ class BookmarkPlugin extends Plugin
return true;
}
+ function onEndInitializeQueueManager($qm)
+ {
+ $qm->connect('dlcsback', 'DeliciousBackupImporter');
+ $qm->connect('dlcsbkmk', 'DeliciousBookmarkImporter');
+ return true;
+ }
+
/**
* Plugin version data
*
diff --git a/plugins/Bookmark/deliciousbackupimporter.php b/plugins/Bookmark/deliciousbackupimporter.php
index 6ab87b5212..01b996bbe5 100644
--- a/plugins/Bookmark/deliciousbackupimporter.php
+++ b/plugins/Bookmark/deliciousbackupimporter.php
@@ -34,8 +34,6 @@ if (!defined('STATUSNET')) {
exit(1);
}
-require_once INSTALLDIR . '/lib/apiauth.php';
-
/**
* Importer class for Delicious bookmarks
*
@@ -47,8 +45,19 @@ require_once INSTALLDIR . '/lib/apiauth.php';
* @link http://status.net/
*/
-class DeliciousBackupImporter
+class DeliciousBackupImporter extends QueueHandler
{
+ /**
+ * Transport of the importer
+ *
+ * @return string transport string
+ */
+
+ function transport()
+ {
+ return 'dlcsback';
+ }
+
/**
* Import an in-memory bookmark list to a user's account
*
@@ -59,14 +68,15 @@ class DeliciousBackupImporter
* a bunch of
's, occasionally with 's.
* There are sometimes 's lost inside.
*
- * @param User $user User whose feed we're going to fill
- * @param string $body Body of the file
+ * @param array $data pair of user, text
*
- * @return void
+ * @return boolean success value
*/
- function importBookmarks($user, $body)
+ function handle($data)
{
+ list($user, $body) = $data;
+
$doc = $this->importHTML($body);
$dls = $doc->getElementsByTagName('dl');
@@ -117,6 +127,8 @@ class DeliciousBackupImporter
$dt = $dd = null;
}
}
+
+ return true;
}
/**
@@ -152,40 +164,9 @@ class DeliciousBackupImporter
}
}
- $as = $dt->getElementsByTagName('a');
-
- if ($as->length == 0) {
- throw new ClientException(_("No tag in a ."));
- }
-
- $a = $as->item(0);
-
- $private = $a->getAttribute('private');
-
- if ($private != 0) {
- throw new ClientException(_('Skipping private bookmark.'));
- }
-
- if (!empty($dd)) {
- $description = $dd->nodeValue;
- } else {
- $description = null;
- }
-
- $title = $a->nodeValue;
- $url = $a->getAttribute('href');
- $tags = $a->getAttribute('tags');
- $addDate = $a->getAttribute('add_date');
- $created = common_sql_date(intval($addDate));
-
- $saved = Notice_bookmark::saveNew($user,
- $title,
- $url,
- $tags,
- $description,
- array('created' => $created));
-
- return $saved;
+ $qm = QueueManager::get();
+
+ $qm->enqueue(array($user, $dt, $dd), 'dlcsbkmk');
}
/**
diff --git a/plugins/Bookmark/deliciousbookmarkimporter.php b/plugins/Bookmark/deliciousbookmarkimporter.php
new file mode 100644
index 0000000000..686e1a39c0
--- /dev/null
+++ b/plugins/Bookmark/deliciousbookmarkimporter.php
@@ -0,0 +1,108 @@
+.
+ *
+ * @category Bookmark
+ * @package StatusNet
+ * @author Evan Prodromou
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Importer class for Delicious bookmarks
+ *
+ * @category Bookmark
+ * @package StatusNet
+ * @author Evan Prodromou
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class DeliciousBookmarkImporter extends QueueHandler
+{
+ /**
+ * Return the transport for this queue handler
+ *
+ * @return string 'dlcsbkmk'
+ */
+
+ function transport()
+ {
+ return 'dlcsbkmk';
+ }
+
+ /**
+ * Handle the data
+ *
+ * @param array $data array of user, dt, dd
+ *
+ * @return boolean success value
+ */
+
+ function handle($data)
+ {
+ list($user, $dt, $dd) = $data;
+
+ $as = $dt->getElementsByTagName('a');
+
+ if ($as->length == 0) {
+ throw new ClientException(_("No tag in a ."));
+ }
+
+ $a = $as->item(0);
+
+ $private = $a->getAttribute('private');
+
+ if ($private != 0) {
+ throw new ClientException(_('Skipping private bookmark.'));
+ }
+
+ if (!empty($dd)) {
+ $description = $dd->nodeValue;
+ } else {
+ $description = null;
+ }
+
+ $title = $a->nodeValue;
+ $url = $a->getAttribute('href');
+ $tags = $a->getAttribute('tags');
+ $addDate = $a->getAttribute('add_date');
+ $created = common_sql_date(intval($addDate));
+
+ $saved = Notice_bookmark::saveNew($user,
+ $title,
+ $url,
+ $tags,
+ $description,
+ array('created' => $created));
+
+ return true;
+ }
+}
diff --git a/plugins/Bookmark/importbookmarks.php b/plugins/Bookmark/importbookmarks.php
index 991329dd6d..5518b00e97 100644
--- a/plugins/Bookmark/importbookmarks.php
+++ b/plugins/Bookmark/importbookmarks.php
@@ -83,13 +83,12 @@ function getBookmarksFile()
}
try {
- $dbi = new DeliciousBackupImporter();
-
$user = getUser();
-
$html = getBookmarksFile();
- $dbi->importBookmarks($user, $html);
+ $qm = QueueManager::get();
+
+ $qm->enqueue(array($user, $html), 'dlcsback');
} catch (Exception $e) {
print $e->getMessage()."\n";