]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
Minor fix: improve import from Netscape files (now takes description into account)
authormensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 27 Nov 2008 10:13:29 +0000 (10:13 +0000)
committermensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Thu, 27 Nov 2008 10:13:29 +0000 (10:13 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@177 b3834d28-1941-0410-a4f8-b48e95affb8f

importNetscape.php
services/bookmark2tagservice.php
services/bookmarkservice.php
templates/top.inc.php

index 5e70387541e25f0ce27efbd6b8a119e1c06ec8be..8a12ff8529d3e82525b066efe455c6704799df53 100644 (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,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('/<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++) {
 
                //      echo "<hr/>";
                //      echo $links[$i]."<br/>";
-                
+                       
                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('"', '&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');
index 26a05c132bc8f5fe95e4d029e54120ea591334e7..347df9c0271a5019b1e2918271acd99d4cda471e 100644 (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;
index 4c3cbca01a6ed300fc9de41ded728b6856290360..ee7e169b73ce7a4b2dd58ddaf1b8651e65a72764 100644 (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'))
@@ -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() .'`';
index 633e3f8496e55cd402429d4a44263e397bcb639e..b886e76c7b7ea88c628824f830d4664480e3b888 100644 (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";
 }
 ?>
\ No newline at end of file