allow changing of votes
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@493 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
parent
b569921136
commit
d05aebe54e
@ -225,12 +225,12 @@ class SemanticScuttle_Service_Vote extends SemanticScuttle_DbService
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->hasVoted($bookmark, $user)) {
|
||||
if ($vote != -1 && $vote != 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($vote != -1 && $vote != 1) {
|
||||
return false;
|
||||
if ($this->hasVoted($bookmark, $user)) {
|
||||
$this->removeVote($bookmark, $user);
|
||||
}
|
||||
|
||||
$res = $this->db->sql_query(
|
||||
@ -257,6 +257,41 @@ class SemanticScuttle_Service_Vote extends SemanticScuttle_DbService
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Removes a vote from the database
|
||||
*
|
||||
* @param integer $bookmark Bookmark ID
|
||||
* @param integer $user User ID
|
||||
*
|
||||
* @return boolean True if all went well, false if not
|
||||
*/
|
||||
protected function removeVote($bookmark, $user)
|
||||
{
|
||||
$vote = $this->getVote($bookmark, $user);
|
||||
if ($vote === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//remove from votes table
|
||||
$query = 'DELETE FROM ' . $this->getTableName()
|
||||
. ' WHERE bId = ' . (int)$bookmark
|
||||
. ' AND uId = ' . (int)$user;
|
||||
$this->db->sql_query($query);
|
||||
|
||||
//change voting sum in bookmarks table
|
||||
$bm = SemanticScuttle_Service_Factory::get('Bookmark');
|
||||
$res = $this->db->sql_query(
|
||||
$sql='UPDATE ' . $bm->getTableName()
|
||||
. ' SET bVoting = bVoting - ' . (int)$vote
|
||||
. ' WHERE bId = ' . (int)$bookmark
|
||||
);
|
||||
$this->db->sql_freeresult($res);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Re-calculates all votings for all bookmarks
|
||||
* and updates the voting values in the bookmarks
|
||||
|
@ -35,6 +35,13 @@ class VoteTest extends TestBase
|
||||
*/
|
||||
protected $vs = null;
|
||||
|
||||
/**
|
||||
* Bookmark service instance.
|
||||
*
|
||||
* @var SemanticScuttle_Service_Bookmark
|
||||
*/
|
||||
protected $bs = null;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -293,11 +300,11 @@ class VoteTest extends TestBase
|
||||
$uid = 1;
|
||||
$bid = $this->addBookmark();
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertFalse($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
|
||||
$bid = $this->addBookmark();
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, -1));
|
||||
$this->assertFalse($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
}
|
||||
|
||||
|
||||
@ -332,6 +339,122 @@ class VoteTest extends TestBase
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify that changing the vote from positive to negative
|
||||
* works.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVoteChangePosNeg()
|
||||
{
|
||||
$uid = 1;
|
||||
$bid = $this->addBookmark();
|
||||
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertEquals(1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(1, $b['bVoting']);
|
||||
|
||||
//change vote
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, -1));
|
||||
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(-1, $b['bVoting']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify that changing the vote from negative to positive
|
||||
* works.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVoteChangeNegPos()
|
||||
{
|
||||
$uid = 1;
|
||||
$bid = $this->addBookmark();
|
||||
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, -1));
|
||||
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(-1, $b['bVoting']);
|
||||
|
||||
//change vote
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertEquals(1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(1, $b['bVoting']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify that changing the vote from postitive to positive
|
||||
* has no strange effects
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVoteChangePosPos()
|
||||
{
|
||||
$uid = 1;
|
||||
$bid = $this->addBookmark();
|
||||
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertEquals(1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(1, $b['bVoting']);
|
||||
|
||||
//change vote
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, 1));
|
||||
$this->assertEquals(1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(1, $b['bVoting']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verify that changing the vote from postitive to positive
|
||||
* has no strange effects
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVoteChangeNegNeg()
|
||||
{
|
||||
$uid = 1;
|
||||
$bid = $this->addBookmark();
|
||||
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, -1));
|
||||
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(-1, $b['bVoting']);
|
||||
|
||||
//change vote to same value
|
||||
$this->assertTrue($this->vs->vote($bid, $uid, -1));
|
||||
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
|
||||
$this->assertEquals(1, $this->vs->getVotes($bid));
|
||||
|
||||
$b = $this->bs->getBookmark($bid);
|
||||
$this->assertEquals(-1, $b['bVoting']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Test that rewriting votings does work
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user