Minor fix: improve import from Netscape files (now takes description into account)

git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@177 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
mensonge 2008-11-27 10:13:29 +00:00
parent 1958ddd8e1
commit ed4760018f
4 changed files with 42 additions and 22 deletions

View file

@ -34,6 +34,8 @@ isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_
$tplVars = array();
$countImportedBookmarks = 0;
$tplVars['msg'] = '';
if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) {
$userinfo = $userservice->getCurrentObjectUser();
@ -48,9 +50,15 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
$html = file_get_contents($_FILES['userfile']['tmp_name']);
// Create link array
preg_match_all('/<a\s+(.*?)\s*\/*>([^<]*)/si', $html, $matches);
//preg_match_all('/<a\s+(.*?)\s*\/*>([^<]*)/si', $html, $matches);
preg_match_all('/<a\s+(.*?)>([^<]*?)<\/a>.*?(<dd>([^<]*)|<dt>)/si', $html, $matches);
//var_dump($matches);die();
$links = $matches[1];
$titles = $matches[2];
$descriptions = $matches[4];
$size = count($links);
for ($i = 0; $i < $size; $i++) {
@ -82,28 +90,35 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
break;
}
}
$bTitle = eregi_replace('"', '&quot;', trim($titles[$i]));
$bTitle = trim($titles[$i]);
$bDescription = trim($descriptions[$i]);
if ($bookmarkservice->bookmarkExists($bAddress, $userservice->getCurrentUserId())) {
$tplVars['error'] = T_('You have already submitted this bookmark.');
$tplVars['error'] = T_('You have already submitted some of these bookmarks.');
} else {
// If bookmark is local (like javascript: or place: in Firefox3), do nothing
if(substr($bAddress, 0, 7) == "http://") {
if(substr($bAddress, 0, 7) == "http://" || substr($bAddress, 0, 8) == "https://") {
// If bookmark claims to be from the future, set it to be now instead
if (strtotime($bDatetime) > time()) {
$bDatetime = gmdate('Y-m-d H:i:s');
}
if ($bookmarkservice->addBookmark($bAddress, $bTitle, NULL, $status, $bCategories, $bDatetime, false, true)) {
$tplVars['msg'] = T_('Bookmark imported.');
if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, $status, $bCategories, $bDatetime, false, true)) {
$countImportedBookmarks++;
} else {
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
}
}
}
}
header('Location: '. createURL('bookmarks', $userinfo->getUsername()));
//header('Location: '. createURL('bookmarks', $userinfo->getUsername()));
$templatename = 'importNetscape.tpl';
$tplVars['msg'].= T_('Bookmarks found: ').$size.' ';
$tplVars['msg'].= T_('Bookmarks imported: ').' '.$countImportedBookmarks;
$tplVars['subtitle'] = T_('Import Bookmarks from Browser File');
$tplVars['formaction'] = createURL('importNetscape');
$templateservice->loadTemplate($templatename, $tplVars);
} else {
$templatename = 'importNetscape.tpl';
$tplVars['subtitle'] = T_('Import Bookmarks from Browser File');

View file

@ -42,7 +42,7 @@ class Bookmark2TagService {
}
//clean tags from strange characters
$tags = str_replace(array('"', '\''), "_", $tags);
$tags = str_replace(array('"', '\'', '/'), "_", $tags);
$tags_count = is_array($tags)?count($tags):0;

View file

@ -92,10 +92,7 @@ class BookmarkService {
return;
}
// If address doesn't contain ":", add "http://" as the default protocol
if (strpos($address, ':') === false) {
$address = 'http://'. $address;
}
$address = $this->normalize($address);
$crit = array ('bHash' => md5($address));
if (isset ($uid)) {
@ -117,13 +114,7 @@ class BookmarkService {
$sId = $userservice->getCurrentUserId();
}
// If bookmark address doesn't contain ":", add "http://" to the start as a default protocol
if (strpos($address, ':') === false) {
$address = 'http://'. $address;
}
if (substr($address, -1) == '/') {
$address = substr($address, 0, count($address)-2);
}
$address = $this->normalize($address);
// Get the client's IP address and the date; note that the date is in GMT.
if (getenv('HTTP_CLIENT_IP'))
@ -463,6 +454,20 @@ class BookmarkService {
return $this->db->sql_fetchfield(0, 0) - 1;
}
function normalize($address) {
// If bookmark address doesn't contain ":", add "http://" to the start as a default protocol
if (strpos($address, ':') === false) {
$address = 'http://'. $address;
}
// Delete final /
if (substr($address, -1) == '/') {
$address = substr($address, 0, count($address)-2);
}
return $address;
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);

View file

@ -63,10 +63,10 @@ if(!isset($_GET['popup'])) {
if (isset($subtitle)) {
echo '<h2>'. $subtitle ."</h2>\n";
}
if (isset($error)) {
if (isset($error) && $msg!='') {
echo '<p class="error">'. $error ."</p>\n";
}
if (isset($msg)) {
if (isset($msg) && $msg!='') {
echo '<p class="success">'. $msg ."</p>\n";
}
?>