diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/AnonymousFave/Fave_tally.php | 38 | ||||
-rw-r--r-- | plugins/AnonymousFave/scripts/initialize_fave_tallys.php | 38 |
2 files changed, 67 insertions, 9 deletions
diff --git a/plugins/AnonymousFave/Fave_tally.php b/plugins/AnonymousFave/Fave_tally.php index 0eaa3fdc7..35ace6d01 100644 --- a/plugins/AnonymousFave/Fave_tally.php +++ b/plugins/AnonymousFave/Fave_tally.php @@ -36,7 +36,7 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; /** * Data class for favorites tally * - * A class representing a total number of times a notice has been favorited + * A class representing a total number of times a notice has been favored * * @category Action * @package StatusNet @@ -159,7 +159,7 @@ class Fave_tally extends Memcached_DataObject if (!$result) { $msg = sprintf( _m("Couldn't update favorite tally for notice ID %d."), - $notice_id + $noticeID ); throw new ServerException($msg); } @@ -189,7 +189,7 @@ class Fave_tally extends Memcached_DataObject if (!$result) { $msg = sprintf( _m("Couldn't update favorite tally for notice ID %d."), - $notice_id + $noticeID ); throw new ServerException($msg); } @@ -200,7 +200,7 @@ class Fave_tally extends Memcached_DataObject /** * Ensure a tally exists for a given notice. If we can't find - * one create one. + * one create one with the total number of existing faves * * @param integer $noticeID * @@ -209,18 +209,18 @@ class Fave_tally extends Memcached_DataObject static function ensureTally($noticeID) { - $tally = Fave_tally::staticGet('notice_id', $notice_id); + $tally = Fave_tally::staticGet('notice_id', $noticeID); if (!$tally) { - common_debug("Fave_tally::ensureTally - creating tally for notice " . $notice_id); + common_debug("Fave_tally::ensureTally - creating tally for notice " . $noticeID); $tally = new Fave_tally(); - $tally->notice_id = $notice_id; - $tally->count = 0; + $tally->notice_id = $noticeID; + $tally->count = Fave_tally::countExistingFaves($noticeID); $result = $tally->insert(); if (!$result) { $msg = sprintf( _m("Couldn't create favorite tally for notice ID %d."), - $notice_id + $noticeID ); throw new ServerException($msg); } @@ -228,4 +228,24 @@ class Fave_tally extends Memcached_DataObject return $tally; } + + /** + * Count the number of faves a notice already has. Used to initalize + * a tally for a notice. + * + * @param integer $noticeID ID of the notice to count faves for + * + * @return integer $total total number of time the notice has been favored + */ + + static function countExistingFaves($noticeID) + { + $fave = new Fave(); + $fave->notice_id = $noticeID; + $total = $fave->count(); + + common_debug("ZZZZZZZ notice " . $noticeID . ' has ' . $total . " faves"); + + return $total; + } } diff --git a/plugins/AnonymousFave/scripts/initialize_fave_tallys.php b/plugins/AnonymousFave/scripts/initialize_fave_tallys.php new file mode 100644 index 000000000..f7ea6d1ef --- /dev/null +++ b/plugins/AnonymousFave/scripts/initialize_fave_tallys.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); + +$helptext = <<<ENDOFHELP +USAGE: initialize_fave_tallys.php + +Offline script to initialize notice fave tallys + +ENDOFHELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +$notice = new Notice(); +$notice->find(); + +while ($notice->fetch()) { + Fave_tally::ensureTally($notice->id); +} + |