123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- if (!defined('STATUSNET')) {
- exit(1);
- }
- require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
- class Fave_tally extends Managed_DataObject
- {
-
-
- public $__table = 'fave_tally';
- public $notice_id;
- public $count;
- public $created;
- public $modified;
-
-
- public static function schemaDef()
- {
- return array(
- 'fields' => array(
- 'notice_id' => array('type' => 'int', 'not null' => true, 'description' => 'notice id'),
- 'count' => array('type' => 'int', 'not null' => true, 'description' => 'the fave tally count'),
- 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
- 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
- ),
- 'primary key' => array('notice_id'),
- 'foreign keys' => array(
- 'fave_tally_notice_id_fkey' => array('notice', array('notice_id' => 'id')),
- ),
- );
- }
-
- static function increment($noticeID)
- {
- $tally = Fave_tally::ensureTally($noticeID);
- $orig = clone($tally);
- $tally->count++;
- $result = $tally->update($orig);
- if (!$result) {
- $msg = sprintf(
-
-
- _m("Could not update favorite tally for notice ID %d."),
- $noticeID
- );
- throw new ServerException($msg);
- }
- return $tally;
- }
-
- static function decrement($noticeID)
- {
- $tally = Fave_tally::ensureTally($noticeID);
- if ($tally->count > 0) {
- $orig = clone($tally);
- $tally->count--;
- $result = $tally->update($orig);
- if (!$result) {
- $msg = sprintf(
-
-
- _m("Could not update favorite tally for notice ID %d."),
- $noticeID
- );
- throw new ServerException($msg);
- }
- }
- return $tally;
- }
-
- static function ensureTally($noticeID)
- {
- $tally = Fave_tally::getKV('notice_id', $noticeID);
- if (!$tally) {
- $tally = new Fave_tally();
- $tally->notice_id = $noticeID;
- $tally->count = Fave_tally::countExistingFaves($noticeID);
- $result = $tally->insert();
- if (!$result) {
- $msg = sprintf(
-
-
- _m("Could not create favorite tally for notice ID %d."),
- $noticeID
- );
- throw new ServerException($msg);
- }
- }
- return $tally;
- }
-
- static function countExistingFaves($noticeID)
- {
- $fave = new Fave();
- $fave->notice_id = $noticeID;
- $total = $fave->count();
- return $total;
- }
- }
|