* Re-calculates all votings for all bookmarks
* and updates the voting values in the bookmarks
* table.
+ * This is mainly meant to be an administrative method
+ * to fix a broken database.
*
* @return void
*/
public function rewriteVotings()
{
- throw new Exception('Not implemented yet');
- //FIXME
- $bm = SemanticScuttle_Service_Factory::get('Bookmark');
- $sql = 'UPDATE ' . $bm->getTableName() . ' as B SET bVoting = '
+ $bm = SemanticScuttle_Service_Factory::get('Bookmark');
+ $query = 'UPDATE ' . $bm->getTableName() . ' as B SET bVoting = '
. '(SELECT SUM(vote) FROM ' . $this->getTableName() . ' as V'
. ' WHERE V.bId = B.bId GROUP BY bid)';
+ $this->db->sql_query($query);
}
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
}
+
+
+ /**
+ * Test that rewriting votings does work
+ *
+ * @return void
+ */
+ public function testRewriteVotings()
+ {
+ $uid = 1;
+ $bid = $this->addBookmark();
+ $this->assertTrue($this->vs->vote($bid, $uid, 1));
+
+ $bm = $this->bs->getBookmark($bid);
+ $this->assertEquals(1, $bm['bVoting']);
+
+ $this->vs->deleteAll();
+ //we assume that $vs->deleteAll() does *not* reset
+ //voting in bookmarks table
+ $bm = $this->bs->getBookmark($bid);
+ $this->assertEquals(1, $bm['bVoting']);
+
+ $this->vs->rewriteVotings();
+ $bm = $this->bs->getBookmark($bid);
+ //now it should be reset to 0
+ $this->assertEquals(0, $bm['bVoting']);
+ }
+
}//class VoteTest extends TestBase