api/posts/add respects the "replace" parameter now
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@777 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
parent
66af94feaf
commit
8e2b25a095
3 changed files with 145 additions and 7 deletions
|
@ -3,12 +3,13 @@ ChangeLog for SemantiScuttle
|
||||||
|
|
||||||
0.9X.X - 2010-XX-XX
|
0.9X.X - 2010-XX-XX
|
||||||
-------------------
|
-------------------
|
||||||
- Fix bug getTagsForBookmarks() that fetched all tags
|
- Fix bug in getTagsForBookmarks() that fetched all tags
|
||||||
|
- Fix bug #3073215: Updating bookmark time does not work
|
||||||
|
- Fix bug #3074816: French translation breaks edit javascript
|
||||||
- Show error message on mysqli connection errors
|
- Show error message on mysqli connection errors
|
||||||
- Implement patch #3059829: update FR_CA translation
|
- Implement patch #3059829: update FR_CA translation
|
||||||
- Update php-gettext library to 1.0.10
|
- Update php-gettext library to 1.0.10
|
||||||
- Fix bug #3073215: Updating bookmark time does not work
|
- api/posts/add respects the "replace" parameter now
|
||||||
- Fix bug #3074816: French translation breaks edit javascript
|
|
||||||
|
|
||||||
|
|
||||||
0.97.0 - 2010-06-09
|
0.97.0 - 2010-06-09
|
||||||
|
|
|
@ -306,6 +306,127 @@ TXT;
|
||||||
$data = $this->bs->getBookmarks(0, null, $uId);
|
$data = $this->bs->getBookmarks(0, null, $uId);
|
||||||
$this->assertEquals(0, $data['total']);
|
$this->assertEquals(0, $data['total']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that the replace=no parameter prevents the bookmark from being
|
||||||
|
* overwritten.
|
||||||
|
*/
|
||||||
|
public function testReplaceNo()
|
||||||
|
{
|
||||||
|
$this->bs->deleteAll();
|
||||||
|
|
||||||
|
$url = 'http://example.org/tag2';
|
||||||
|
$title1 = 'foo bar 1';
|
||||||
|
$title2 = 'bar 2 foo';
|
||||||
|
|
||||||
|
list($req, $uId) = $this->getAuthRequest();
|
||||||
|
$req->setMethod(HTTP_Request2::METHOD_POST);
|
||||||
|
$req->addPostParameter('url', $url);
|
||||||
|
$req->addPostParameter('description', $title1);
|
||||||
|
$res = $req->send();
|
||||||
|
|
||||||
|
//all should be well
|
||||||
|
$this->assertEquals(200, $res->getStatus());
|
||||||
|
|
||||||
|
//send it a second time, with different title
|
||||||
|
list($req, $dummy) = $this->getAuthRequest();
|
||||||
|
$req->setMethod(HTTP_Request2::METHOD_POST);
|
||||||
|
$req->addPostParameter('url', $url);
|
||||||
|
$req->addPostParameter('description', $title2);
|
||||||
|
$req->addPostParameter('replace', 'no');
|
||||||
|
$res = $req->send();
|
||||||
|
|
||||||
|
//this time we should get an error
|
||||||
|
$this->assertEquals(409, $res->getStatus());
|
||||||
|
//verify MIME content type
|
||||||
|
$this->assertEquals(
|
||||||
|
'text/xml; charset=utf-8',
|
||||||
|
$res->getHeader('content-type')
|
||||||
|
);
|
||||||
|
|
||||||
|
//verify xml
|
||||||
|
$this->assertTag(
|
||||||
|
array(
|
||||||
|
'tag' => 'result',
|
||||||
|
'attributes' => array('code' => 'bookmark does already exist')
|
||||||
|
),
|
||||||
|
$res->getBody(),
|
||||||
|
null, false
|
||||||
|
);
|
||||||
|
|
||||||
|
//user still has 1 bookmark now
|
||||||
|
$data = $this->bs->getBookmarks(0, null, $uId);
|
||||||
|
$this->assertEquals(1, $data['total']);
|
||||||
|
$this->assertEquals($title1, $data['bookmarks'][0]['bTitle']);
|
||||||
|
|
||||||
|
//send it a third time, without the replace parameter
|
||||||
|
// it defaults to "no", so the bookmark should not get overwritten
|
||||||
|
list($req, $dummy) = $this->getAuthRequest();
|
||||||
|
$req->setMethod(HTTP_Request2::METHOD_POST);
|
||||||
|
$req->addPostParameter('url', $url);
|
||||||
|
$req->addPostParameter('description', $title2);
|
||||||
|
$res = $req->send();
|
||||||
|
|
||||||
|
//this time we should get an error
|
||||||
|
$this->assertEquals(409, $res->getStatus());
|
||||||
|
|
||||||
|
//bookmark should not have changed
|
||||||
|
$data = $this->bs->getBookmarks(0, null, $uId);
|
||||||
|
$this->assertEquals(1, $data['total']);
|
||||||
|
$this->assertEquals($title1, $data['bookmarks'][0]['bTitle']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that the replace=yes parameter causes the bookmark to be updated.
|
||||||
|
*/
|
||||||
|
public function testReplaceYes()
|
||||||
|
{
|
||||||
|
$this->bs->deleteAll();
|
||||||
|
|
||||||
|
$url = 'http://example.org/tag2';
|
||||||
|
$title1 = 'foo bar 1';
|
||||||
|
$title2 = 'bar 2 foo';
|
||||||
|
|
||||||
|
list($req, $uId) = $this->getAuthRequest();
|
||||||
|
$req->setMethod(HTTP_Request2::METHOD_POST);
|
||||||
|
$req->addPostParameter('url', $url);
|
||||||
|
$req->addPostParameter('description', $title1);
|
||||||
|
$res = $req->send();
|
||||||
|
|
||||||
|
//all should be well
|
||||||
|
$this->assertEquals(200, $res->getStatus());
|
||||||
|
|
||||||
|
//send it a second time, with different title
|
||||||
|
list($req, $dummy) = $this->getAuthRequest();
|
||||||
|
$req->setMethod(HTTP_Request2::METHOD_POST);
|
||||||
|
$req->addPostParameter('url', $url);
|
||||||
|
$req->addPostParameter('description', $title2);
|
||||||
|
$req->addPostParameter('replace', 'yes');
|
||||||
|
$res = $req->send();
|
||||||
|
|
||||||
|
//no error
|
||||||
|
$this->assertEquals(200, $res->getStatus());
|
||||||
|
//verify MIME content type
|
||||||
|
$this->assertEquals(
|
||||||
|
'text/xml; charset=utf-8',
|
||||||
|
$res->getHeader('content-type')
|
||||||
|
);
|
||||||
|
|
||||||
|
//verify xml
|
||||||
|
$this->assertTag(
|
||||||
|
array(
|
||||||
|
'tag' => 'result',
|
||||||
|
'attributes' => array('code' => 'done')
|
||||||
|
),
|
||||||
|
$res->getBody(),
|
||||||
|
null, false
|
||||||
|
);
|
||||||
|
|
||||||
|
//user still has 1 bookmark now, but with the new title
|
||||||
|
$data = $this->bs->getBookmarks(0, null, $uId);
|
||||||
|
$this->assertEquals(1, $data['total']);
|
||||||
|
$this->assertEquals($title2, $data['bookmarks'][0]['bTitle']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PHPUnit_MAIN_METHOD == 'Api_PostsAddTest::main') {
|
if (PHPUnit_MAIN_METHOD == 'Api_PostsAddTest::main') {
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
* - 0 or 'public': Everyone can see the bookmark
|
* - 0 or 'public': Everyone can see the bookmark
|
||||||
* @param string $shared "no" or "yes": Switches between private and
|
* @param string $shared "no" or "yes": Switches between private and
|
||||||
* public (optional)
|
* public (optional)
|
||||||
|
* @param string $replace "yes" or "no" - replaces a bookmark with the
|
||||||
|
* same URL (optional)
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* - tags cannot have spaces
|
* - tags cannot have spaces
|
||||||
|
@ -23,7 +25,6 @@
|
||||||
* - delicious "description" is the "title" in SemanticScuttle
|
* - delicious "description" is the "title" in SemanticScuttle
|
||||||
* - delicious "extended" is the "description" in SemanticScuttle
|
* - delicious "extended" is the "description" in SemanticScuttle
|
||||||
* - "status" is a SemanticScuttle addition to this API method
|
* - "status" is a SemanticScuttle addition to this API method
|
||||||
* - SemanticScuttle currently ignores the "replace" parameter
|
|
||||||
*
|
*
|
||||||
* SemanticScuttle - your social bookmark manager.
|
* SemanticScuttle - your social bookmark manager.
|
||||||
*
|
*
|
||||||
|
@ -78,6 +79,8 @@ if (isset($_REQUEST['dt']) && (trim($_REQUEST['dt']) != '')) {
|
||||||
$dt = null;
|
$dt = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$replace = isset($_REQUEST['replace']) && ($_REQUEST['replace'] == 'yes');
|
||||||
|
|
||||||
$status = 0;
|
$status = 0;
|
||||||
if (isset($_REQUEST['status'])) {
|
if (isset($_REQUEST['status'])) {
|
||||||
$status_str = trim($_REQUEST['status']);
|
$status_str = trim($_REQUEST['status']);
|
||||||
|
@ -114,9 +117,22 @@ if (is_null($url)) {
|
||||||
$msg = 'Description missing';
|
$msg = 'Description missing';
|
||||||
} else {
|
} else {
|
||||||
// We're good with info; now insert it!
|
// We're good with info; now insert it!
|
||||||
if ($bs->bookmarkExists($url, $userservice->getCurrentUserId())) {
|
$exists = $bs->bookmarkExists($url, $userservice->getCurrentUserId());
|
||||||
$msg = 'something went wrong';
|
if ($exists) {
|
||||||
|
if (!$replace) {
|
||||||
|
header('HTTP/1.0 409 Conflict');
|
||||||
|
$msg = 'bookmark does already exist';
|
||||||
} else {
|
} else {
|
||||||
|
//delete it before we re-add it
|
||||||
|
$bookmark = $bs->getBookmarkByAddress($url, false);
|
||||||
|
$bId = $bookmark['bId'];
|
||||||
|
$bs->deleteBookmark($bId);
|
||||||
|
|
||||||
|
$exists = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$exists) {
|
||||||
$added = $bs->addBookmark(
|
$added = $bs->addBookmark(
|
||||||
$url, $description, $extended, '', $status, $tags, null, $dt, true
|
$url, $description, $extended, '', $status, $tags, null, $dt, true
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue