From d05aebe54e02ab4a8362088ca09caaff265fa670 Mon Sep 17 00:00:00 2001 From: cweiske Date: Mon, 2 Nov 2009 09:35:38 +0000 Subject: allow changing of votes git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@493 b3834d28-1941-0410-a4f8-b48e95affb8f --- src/SemanticScuttle/Service/Vote.php | 41 +++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/SemanticScuttle/Service/Vote.php b/src/SemanticScuttle/Service/Vote.php index 89088f0..c0c4995 100644 --- a/src/SemanticScuttle/Service/Vote.php +++ b/src/SemanticScuttle/Service/Vote.php @@ -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 -- cgit v1.2.3-54-g00ecf