]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
part of request #2830224: prepare API for short url service
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Mon, 23 Nov 2009 19:11:33 +0000 (19:11 +0000)
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Mon, 23 Nov 2009 19:11:33 +0000 (19:11 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@570 b3834d28-1941-0410-a4f8-b48e95affb8f

data/tables.sql
doc/UPGRADE.txt
scripts/create-testbookmarks.php
src/SemanticScuttle/Service/Bookmark.php
tests/BookmarkTest.php
tests/Tag2TagTest.php
tests/TestBase.php
www/api/posts_add.php
www/import.php
www/importNetscape.php

index b028d17ca15473be036c12359e3da10d15baf13b..c61c2f5baf8903b7f8daf23a04bb232c75b1b0af 100644 (file)
@@ -19,6 +19,7 @@ CREATE TABLE `sc_bookmarks` (
   `bHash` varchar(32) NOT NULL default '',
   `bVotes` int(11) NOT NULL,
   `bVoting` int(11) NOT NULL,
+  `bShort` varchar(16) default NULL,
   PRIMARY KEY  (`bId`),
   KEY `sc_bookmarks_usd` (`uId`,`bStatus`,`bDatetime`),
   KEY `sc_bookmarks_hui` (`bHash`,`uId`,`bId`),
index 1aec5f410ee872aa609017461a9301ff6793eae4..3e23640e5de649932fbce415ee8e99d927f0f825 100644 (file)
@@ -1,7 +1,17 @@
 Upgrading SemanticScuttle from a previous version
 =================================================
 
-From versin 0.94 to 0.95.0
+From version 0.95 to 0.96
+-------------------------
+Update your database:
+- ALTER TABLE `sc_bookmarks` ADD `bShort` VARCHAR(16) NULL DEFAULT NULL;
+
+API:
+The method signatures of addBookmark() and updateBookmark()
+changed due to the addition of the $short parameter.
+
+
+From version 0.94 to 0.95
 --------------------------
 The file structure completely changed in 0.95.0 compared
 to previous versions. We recommend that you start with a
index b0d2756d8ed50fab6940caef26ada1e73ca497a0..d92a0072ca45c2909e430cfd0f5e081d66b135a1 100644 (file)
@@ -20,7 +20,7 @@ for ($nA = 0; $nA < 10; $nA++) {
         null,
         0,
         array('unittest'),
-        null, false, false,
+        null, null, false, false,
         $uid
     );
 }
index f671fbaf4036c385cdd32882aef38c6fed628c76..7fdcd2eefbf4300c8e7633ade5966e377128efb5 100644 (file)
@@ -286,6 +286,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
      *                             1 - shared
      *                             2 - private
      * @param array   $tags        Array of tags
+     * @param string  $short       Short URL name. May be null
      * @param string  $date        Date when the bookmark has been created
      *                             originally. Used in combination with
      *                             $fromImport. Has to be a strtotime()
@@ -298,6 +299,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
      */
     public function addBookmark(
         $address, $title, $description, $privateNote, $status, $tags,
+        $short = null,
         $date = null, $fromApi = false, $fromImport = false, $sId = null
     ) {
         if ($sId === null) {
@@ -327,6 +329,10 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
         }
         $datetime = gmdate('Y-m-d H:i:s', $time);
 
+        if ($short === '') {
+            $short = null;
+        }
+
         // Set up the SQL insert statement and execute it.
         $values = array(
             'uId' => intval($sId),
@@ -338,7 +344,8 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
             'bDescription' => $description,
             'bPrivateNote' => $privateNote,
             'bStatus' => intval($status),
-            'bHash' => md5($address)
+            'bHash' => md5($address),
+            'bShort' => $short
         );
 
         $sql = 'INSERT INTO '. $this->getTableName()
@@ -402,6 +409,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
      *                             1 - shared
      *                             2 - private
      * @param array   $categories  Array of tags
+     * @param string  $short       Short URL name. May be null.
      * @param string  $date        Date when the bookmark has been created
      *                             originally. Used in combination with
      *                             $fromImport. Has to be a strtotime()
@@ -412,7 +420,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
      */
     public function updateBookmark(
         $bId, $address, $title, $description, $privateNote, $status,
-        $categories, $date = NULL, $fromApi = false
+        $categories, $short = null, $date = null, $fromApi = false
     ) {
         if (!is_numeric($bId)) {
             return false;
@@ -431,15 +439,31 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
 
         $address = $this->normalize($address);
 
-        //check if a new address ($address) doesn't already exist for another bookmark from the same user
+        //check if a new address ($address) doesn't already exist
+        // for another bookmark from the same user
         $bookmark = $this->getBookmark($bId);
-        if($bookmark['bAddress'] != $address && $this->bookmarkExists($address, $bookmark['uId'])) {
+        if ($bookmark['bAddress'] != $address
+            && $this->bookmarkExists($address, $bookmark['uId'])
+        ) {
             message_die(GENERAL_ERROR, 'Could not update bookmark (URL already existing = '.$address.')', '', __LINE__, __FILE__);
             return false;
         }
 
+        if ($short === '') {
+            $short = null;
+        }
+
         // Set up the SQL update statement and execute it.
-        $updates = array('bModified' => $moddatetime, 'bTitle' => $title, 'bAddress' => $address, 'bDescription' => $description, 'bPrivateNote' => $privateNote, 'bStatus' => $status, 'bHash' => md5($address));
+        $updates = array(
+            'bModified' => $moddatetime,
+            'bTitle' => $title,
+            'bAddress' => $address,
+            'bDescription' => $description,
+            'bPrivateNote' => $privateNote,
+            'bStatus' => $status,
+            'bHash' => md5($address),
+            'bShort' => $short
+        );
 
         if (!is_null($date)) {
             $datetime = gmdate('Y-m-d H:i:s', strtotime($date));
index 0b47bc265659de7b862473092631e86e258c6a20..741b6bf862a8daf9354819480558993b74a95729 100644 (file)
@@ -69,6 +69,24 @@ class BookmarkTest extends TestBase
         $this->vs->deleteAll();
     }
 
+    /**
+     * Tests if adding a bookmark with short url name
+     * saves it in the database.
+     *
+     * @return void
+     */
+    public function testAddBookmarkShort()
+    {
+        $bid = $this->bs->addBookmark(
+            'http://example.org', 'title', 'desc', 'priv',
+            0, array(), 'myShortName'
+        );
+        $bm = $this->bs->getBookmark($bid);
+        $this->assertEquals('http://example.org', $bm['bAddress']);
+        $this->assertArrayHasKey('bShort', $bm);
+        $this->assertEquals('myShortName', $bm['bShort']);
+    }
+
     public function testHardCharactersInBookmarks()
     {
         $bs = $this->bs;
@@ -81,7 +99,7 @@ class BookmarkTest extends TestBase
         $bid = $bs->addBookmark(
             'http://site1.com', $title, $desc, 'note',
             0, array($tag1, $tag2),
-            null, false, false, $uid
+            null, null, false, false, $uid
         );
 
         $bookmarks = $bs->getBookmarks(0, 1);
@@ -108,12 +126,12 @@ class BookmarkTest extends TestBase
 
         $bs->addBookmark(
             'http://site1.com', "title", "description", 'note',
-            0, array('tag1'), null, false, false,
+            0, array('tag1'), null, null, false, false,
             $uid
         );
         $bs->addBookmark(
             "http://site1.com", "title2", "description2", 'note',
-            0, array('tag2'), null, false, false,
+            0, array('tag2'), null, null, false, false,
             $uid2
         );
 
@@ -280,7 +298,7 @@ class BookmarkTest extends TestBase
         $this->bs->addBookmark(
             'http://test', 'test', 'desc', 'note',
             2,//private
-            array(), null, false, false, $uid
+            array(), null, null, false, false, $uid
         );
         $this->assertEquals(0, $this->bs->countBookmarks($uid));
         $this->assertEquals(0, $this->bs->countBookmarks($uid, 'public'));
@@ -302,7 +320,7 @@ class BookmarkTest extends TestBase
         $this->bs->addBookmark(
             'http://test', 'test', 'desc', 'note',
             1,//shared
-            array(), null, false, false, $uid
+            array(), null, null, false, false, $uid
         );
         $this->assertEquals(0, $this->bs->countBookmarks($uid));
         $this->assertEquals(0, $this->bs->countBookmarks($uid, 'public'));
@@ -734,6 +752,32 @@ class BookmarkTest extends TestBase
         $this->assertEquals(1, count($bm['tags']));
         $this->assertContains('new', $bm['tags']);
     }
+
+    /**
+     * Tests if updating a bookmark's short url name
+     * saves it in the database.
+     *
+     * @return void
+     */
+    public function testUpdateBookmarkShort()
+    {
+        $bid = $this->bs->addBookmark(
+            'http://example.org', 'title', 'desc', 'priv',
+            0, array(), 'myShortName'
+        );
+        $bm = $this->bs->getBookmark($bid);
+        $this->assertEquals('myShortName', $bm['bShort']);
+
+        $this->assertTrue(
+            $this->bs->updateBookmark(
+                $bid, 'http://example2.org', 'my title', 'desc',
+                'priv', 0, array(), 'newShortNambb'
+            )
+        );
+        $bm = $this->bs->getBookmark($bid);
+        $this->assertEquals('newShortNambb', $bm['bShort']);
+    }
+
 }
 
 
index f888dd5ecec69356be1a1f853b15155a4f2194eb..d1b610030ea3ae95d008e4198538b03e22037a8f 100644 (file)
@@ -274,7 +274,7 @@ class Tag2TagTest extends TestBase
         $uid  = $this->addUser();
         $bs->addBookmark(
             "http://google.com", "title", "description", 'note',
-            0, $tags, null, false, false,
+            0, $tags, null, null, false, false,
             $uid
         );
         $bookmark = $bs->getBookmarkByAddress("http://google.com");
@@ -312,17 +312,17 @@ class Tag2TagTest extends TestBase
         $tags = array('aa>bb>cc', 'dd');
         $bs->addBookmark(
             "web1.com", "B1", "description", 'note', 0,
-            $tags, null, false, false, 1
+            $tags, null, null, false, false, 1
         );
         $tags = array('bb>gg', 'ee>ff');
         $bs->addBookmark(
             "web2.com", "B2", "description", 'note', 0,
-            $tags, null, false, false, 1
+            $tags, null, null, false, false, 1
         );
         $tags = array('ee=ii');
         $bs->addBookmark(
             "web3.com", "B3", "description", 'note', 0,
-            $tags, null, false, false, 1
+            $tags, null, null, false, false, 1
         );
 
         // Query format:
@@ -489,12 +489,12 @@ class Tag2TagTest extends TestBase
         // with classic tags (users 10 & 20)
         $bid1 = $bs->addBookmark(
             "http://site1.com", "title", "description", 'note', 0,
-            array('tag1', 'tag11', 'tag111'), null, false, false,
+            array('tag1', 'tag11', 'tag111'), null, null, false, false,
             $uid1
         );
         $bid2 = $bs->addBookmark(
             "http://site1.com", "title2", "description2", 'note', 0,
-            array('tag2', 'tag22', 'tag222'), null, false, false,
+            array('tag2', 'tag22', 'tag222'), null, null, false, false,
             $uid2
         );
 
index 86519f3421fdee3aacadb40a9b83bd84ea0ad77a..05988a5871d2e7241d4385781acd888f540b4047 100644 (file)
@@ -48,7 +48,7 @@ class TestBase extends PHPUnit_Framework_TestCase
             null,
             0,
             array('unittest'),
-            null, false, false,
+            null, null, false, false,
             $user
         );
         return $bid;
index aff8771da0342fc61926edb624c955dc6e35dd0c..441965c2d71a66a502ce6b751d2bed11b3de5592 100644 (file)
@@ -73,7 +73,7 @@ if (is_null($url) || is_null($description)) {
     if ($bookmarkservice->bookmarkExists($url, $userservice->getCurrentUserId()))
         $added = false;
     else
-        $added = $bookmarkservice->addBookmark($url, $description, $extended, '', $status, $tags, $dt, true);
+        $added = $bookmarkservice->addBookmark($url, $description, $extended, '', $status, $tags, null, $dt, true);
 }
 
 // Set up the XML file and output the result.
index 87f0a9a71f2b43c7f7ad55b8ae46e59115e4014b..01056260c0068ffab86baf3a482f72a72a98f7cf 100644 (file)
@@ -100,7 +100,7 @@ function startElement($parser, $name, $attrs) {
                                $bDatetime = gmdate('Y-m-d H:i:s');
                        }
 
-                       if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, '', $status, $tags, $bDatetime, true, true))
+                       if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, '', $status, $tags, null, $bDatetime, true, true))
                        $tplVars['msg'] = T_('Bookmark imported.');
                        else
                        $tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
index a941145c887962e56a6ba32d3ada265744a44b0d..dab1ba295c69a7093beac323fac33f722f0d3c0f 100644 (file)
@@ -102,7 +102,7 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
                                        $bDatetime = gmdate('Y-m-d H:i:s');
                                }
 
-                               if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, $bPrivateNote, $status, $bCategories, $bDatetime, false, true)) {
+                               if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, $bPrivateNote, $status, $bCategories, null, $bDatetime, false, true)) {
                                        $countImportedBookmarks++;
                                } else {
                                        $tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');