diff options
| author | cweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-11-23 19:11:33 +0000 | 
|---|---|---|
| committer | cweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-11-23 19:11:33 +0000 | 
| commit | 82b17be34671852feba16d77f75741e124d76073 (patch) | |
| tree | 2a498d0cdba92fa9b7b0df525f21cfb133f5306a | |
| parent | 60fa8fd540a01c0d4379bf1735f828f5c2124f33 (diff) | |
| download | semanticscuttle-82b17be34671852feba16d77f75741e124d76073.tar.gz semanticscuttle-82b17be34671852feba16d77f75741e124d76073.tar.bz2  | |
part of request #2830224: prepare API for short url service
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@570 b3834d28-1941-0410-a4f8-b48e95affb8f
| -rw-r--r-- | data/tables.sql | 1 | ||||
| -rw-r--r-- | doc/UPGRADE.txt | 12 | ||||
| -rw-r--r-- | scripts/create-testbookmarks.php | 2 | ||||
| -rw-r--r-- | src/SemanticScuttle/Service/Bookmark.php | 34 | ||||
| -rw-r--r-- | tests/BookmarkTest.php | 54 | ||||
| -rw-r--r-- | tests/Tag2TagTest.php | 12 | ||||
| -rw-r--r-- | tests/TestBase.php | 2 | ||||
| -rw-r--r-- | www/api/posts_add.php | 2 | ||||
| -rw-r--r-- | www/import.php | 2 | ||||
| -rw-r--r-- | www/importNetscape.php | 2 | 
10 files changed, 101 insertions, 22 deletions
diff --git a/data/tables.sql b/data/tables.sql index b028d17..c61c2f5 100644 --- a/data/tables.sql +++ b/data/tables.sql @@ -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`), diff --git a/doc/UPGRADE.txt b/doc/UPGRADE.txt index 1aec5f4..3e23640 100644 --- a/doc/UPGRADE.txt +++ b/doc/UPGRADE.txt @@ -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 diff --git a/scripts/create-testbookmarks.php b/scripts/create-testbookmarks.php index b0d2756..d92a007 100644 --- a/scripts/create-testbookmarks.php +++ b/scripts/create-testbookmarks.php @@ -20,7 +20,7 @@ for ($nA = 0; $nA < 10; $nA++) {          null,          0,          array('unittest'), -        null, false, false, +        null, null, false, false,          $uid      );  } diff --git a/src/SemanticScuttle/Service/Bookmark.php b/src/SemanticScuttle/Service/Bookmark.php index f671fba..7fdcd2e 100644 --- a/src/SemanticScuttle/Service/Bookmark.php +++ b/src/SemanticScuttle/Service/Bookmark.php @@ -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)); diff --git a/tests/BookmarkTest.php b/tests/BookmarkTest.php index 0b47bc2..741b6bf 100644 --- a/tests/BookmarkTest.php +++ b/tests/BookmarkTest.php @@ -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']); +    } +  } diff --git a/tests/Tag2TagTest.php b/tests/Tag2TagTest.php index f888dd5..d1b6100 100644 --- a/tests/Tag2TagTest.php +++ b/tests/Tag2TagTest.php @@ -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          ); diff --git a/tests/TestBase.php b/tests/TestBase.php index 86519f3..05988a5 100644 --- a/tests/TestBase.php +++ b/tests/TestBase.php @@ -48,7 +48,7 @@ class TestBase extends PHPUnit_Framework_TestCase              null,              0,              array('unittest'), -            null, false, false, +            null, null, false, false,              $user          );          return $bid; diff --git a/www/api/posts_add.php b/www/api/posts_add.php index aff8771..441965c 100644 --- a/www/api/posts_add.php +++ b/www/api/posts_add.php @@ -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. diff --git a/www/import.php b/www/import.php index 87f0a9a..0105626 100644 --- a/www/import.php +++ b/www/import.php @@ -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.'); diff --git a/www/importNetscape.php b/www/importNetscape.php index a941145..dab1ba2 100644 --- a/www/importNetscape.php +++ b/www/importNetscape.php @@ -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.');  | 
