From ed4760018fe8a60ab89e4bab58fde04faa4ccd0e Mon Sep 17 00:00:00 2001
From: mensonge
Date: Thu, 27 Nov 2008 10:13:29 +0000
Subject: 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
---
importNetscape.php | 31 +++++++++++++++++++++++--------
services/bookmark2tagservice.php | 2 +-
services/bookmarkservice.php | 27 ++++++++++++++++-----------
templates/top.inc.php | 4 ++--
4 files changed, 42 insertions(+), 22 deletions(-)
diff --git a/importNetscape.php b/importNetscape.php
index 5e70387..8a12ff8 100644
--- a/importNetscape.php
+++ b/importNetscape.php
@@ -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,16 +50,22 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
$html = file_get_contents($_FILES['userfile']['tmp_name']);
// Create link array
- preg_match_all('/([^<]*)/si', $html, $matches);
+ //preg_match_all('/([^<]*)/si', $html, $matches);
+ preg_match_all('/([^<]*?)<\/a>.*?(([^<]*)|)/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++) {
// echo "
";
// echo $links[$i]."
";
-
+
preg_match_all('/(\w*\s*=\s*"[^"]*")/', $links[$i], $attributes);
//$attributes = $attributes[0]; // we keep just one row
@@ -82,28 +90,35 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
break;
}
}
- $bTitle = eregi_replace('"', '"', 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');
diff --git a/services/bookmark2tagservice.php b/services/bookmark2tagservice.php
index 26a05c1..347df9c 100644
--- a/services/bookmark2tagservice.php
+++ b/services/bookmark2tagservice.php
@@ -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;
diff --git a/services/bookmarkservice.php b/services/bookmarkservice.php
index 4c3cbca..ee7e169 100644
--- a/services/bookmarkservice.php
+++ b/services/bookmarkservice.php
@@ -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'))
@@ -462,6 +453,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() .'`';
diff --git a/templates/top.inc.php b/templates/top.inc.php
index 633e3f8..b886e76 100644
--- a/templates/top.inc.php
+++ b/templates/top.inc.php
@@ -63,10 +63,10 @@ if(!isset($_GET['popup'])) {
if (isset($subtitle)) {
echo ''. $subtitle ."
\n";
}
-if (isset($error)) {
+if (isset($error) && $msg!='') {
echo ''. $error ."
\n";
}
-if (isset($msg)) {
+if (isset($msg) && $msg!='') {
echo ''. $msg ."
\n";
}
?>
\ No newline at end of file
--
cgit v1.2.3-54-g00ecf