Break up delicious import into a queue manager by bookmark
This commit is contained in:
parent
b8a182dc44
commit
ccb290cb68
@ -134,6 +134,7 @@ class BookmarkPlugin extends Plugin
|
|||||||
return false;
|
return false;
|
||||||
case 'BookmarkForm':
|
case 'BookmarkForm':
|
||||||
case 'DeliciousBackupImporter':
|
case 'DeliciousBackupImporter':
|
||||||
|
case 'DeliciousBookmarkImporter':
|
||||||
include_once $dir.'/'.strtolower($cls).'.php';
|
include_once $dir.'/'.strtolower($cls).'.php';
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
@ -286,6 +287,13 @@ class BookmarkPlugin extends Plugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onEndInitializeQueueManager($qm)
|
||||||
|
{
|
||||||
|
$qm->connect('dlcsback', 'DeliciousBackupImporter');
|
||||||
|
$qm->connect('dlcsbkmk', 'DeliciousBookmarkImporter');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin version data
|
* Plugin version data
|
||||||
*
|
*
|
||||||
|
@ -34,8 +34,6 @@ if (!defined('STATUSNET')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once INSTALLDIR . '/lib/apiauth.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Importer class for Delicious bookmarks
|
* Importer class for Delicious bookmarks
|
||||||
*
|
*
|
||||||
@ -47,8 +45,19 @@ require_once INSTALLDIR . '/lib/apiauth.php';
|
|||||||
* @link http://status.net/
|
* @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
|
* Import an in-memory bookmark list to a user's account
|
||||||
*
|
*
|
||||||
@ -59,14 +68,15 @@ class DeliciousBackupImporter
|
|||||||
* a bunch of <dt>'s, occasionally with <dd>'s.
|
* a bunch of <dt>'s, occasionally with <dd>'s.
|
||||||
* There are sometimes <p>'s lost inside.
|
* There are sometimes <p>'s lost inside.
|
||||||
*
|
*
|
||||||
* @param User $user User whose feed we're going to fill
|
* @param array $data pair of user, text
|
||||||
* @param string $body Body of the file
|
|
||||||
*
|
*
|
||||||
* @return void
|
* @return boolean success value
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function importBookmarks($user, $body)
|
function handle($data)
|
||||||
{
|
{
|
||||||
|
list($user, $body) = $data;
|
||||||
|
|
||||||
$doc = $this->importHTML($body);
|
$doc = $this->importHTML($body);
|
||||||
|
|
||||||
$dls = $doc->getElementsByTagName('dl');
|
$dls = $doc->getElementsByTagName('dl');
|
||||||
@ -117,6 +127,8 @@ class DeliciousBackupImporter
|
|||||||
$dt = $dd = null;
|
$dt = $dd = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -152,40 +164,9 @@ class DeliciousBackupImporter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$as = $dt->getElementsByTagName('a');
|
$qm = QueueManager::get();
|
||||||
|
|
||||||
if ($as->length == 0) {
|
$qm->enqueue(array($user, $dt, $dd), 'dlcsbkmk');
|
||||||
throw new ClientException(_("No <A> tag in a <DT>."));
|
|
||||||
}
|
|
||||||
|
|
||||||
$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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
108
plugins/Bookmark/deliciousbookmarkimporter.php
Normal file
108
plugins/Bookmark/deliciousbookmarkimporter.php
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* StatusNet - the distributed open-source microblogging tool
|
||||||
|
* Copyright (C) 2010, StatusNet, Inc.
|
||||||
|
*
|
||||||
|
* Importer class for Delicious.com bookmarks
|
||||||
|
*
|
||||||
|
* PHP version 5
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @category Bookmark
|
||||||
|
* @package StatusNet
|
||||||
|
* @author Evan Prodromou <evan@status.net>
|
||||||
|
* @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 <evan@status.net>
|
||||||
|
* @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 <A> tag in a <DT>."));
|
||||||
|
}
|
||||||
|
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
}
|
@ -83,13 +83,12 @@ function getBookmarksFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$dbi = new DeliciousBackupImporter();
|
|
||||||
|
|
||||||
$user = getUser();
|
$user = getUser();
|
||||||
|
|
||||||
$html = getBookmarksFile();
|
$html = getBookmarksFile();
|
||||||
|
|
||||||
$dbi->importBookmarks($user, $html);
|
$qm = QueueManager::get();
|
||||||
|
|
||||||
|
$qm->enqueue(array($user, $html), 'dlcsback');
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
print $e->getMessage()."\n";
|
print $e->getMessage()."\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user