X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FProfile_tag_subscription.php;h=f7b1553300b52010faae091c0fb69916028cd61a;hb=7220b3ddd4a32b947e851c946cb6ad6146bebf7d;hp=870640c40bf448f50e7544cf7a640c763699a995;hpb=4d61760154a53e39d1e0499d5fe7a4a586e7a9f0;p=quix0rs-gnu-social.git diff --git a/classes/Profile_tag_subscription.php b/classes/Profile_tag_subscription.php index 870640c40b..f7b1553300 100644 --- a/classes/Profile_tag_subscription.php +++ b/classes/Profile_tag_subscription.php @@ -4,7 +4,7 @@ */ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class Profile_tag_subscription extends Memcached_DataObject +class Profile_tag_subscription extends Managed_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -15,16 +15,30 @@ class Profile_tag_subscription extends Memcached_DataObject public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - /* Static get */ - function staticGet($k,$v=null) - { return Memcached_DataObject::staticGet('Profile_tag_subscription',$k,$v); } - /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - function pkeyGet($kv) + public static function schemaDef() { - return Memcached_DataObject::pkeyGet('Profile_tag_subscription', $kv); + return array( + 'fields' => array( + 'profile_tag_id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile_tag'), + 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile table'), + + '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('profile_tag_id', 'profile_id'), + 'foreign keys' => array( + 'profile_tag_subscription_profile_list_id_fkey' => array('profile_list', array('profile_tag_id' => 'id')), + 'profile_tag_subscription_profile_id_fkey' => array('profile', array('profile_id' => 'id')), + ), + 'indexes' => array( + // @fixme probably we want a (profile_id, created) index here? + 'profile_tag_subscription_profile_id_idx' => array('profile_id'), + 'profile_tag_subscription_created_idx' => array('created'), + ), + ); } static function add($peopletag, $profile) @@ -50,10 +64,11 @@ class Profile_tag_subscription extends Memcached_DataObject if (!$result) { common_log_db_error($sub, 'INSERT', __FILE__); - throw new Exception(_("Adding people tag subscription failed.")); + // TRANS: Exception thrown when inserting a list subscription in the database fails. + throw new Exception(_('Adding list subscription failed.')); } - $ptag = Profile_list::staticGet('id', $peopletag->id); + $ptag = Profile_list::getKV('id', $peopletag->id); $ptag->subscriberCount(true); Event::handle('EndSubscribePeopletag', array($peopletag, $profile)); @@ -76,7 +91,8 @@ class Profile_tag_subscription extends Memcached_DataObject if (!$result) { common_log_db_error($sub, 'DELETE', __FILE__); - throw new Exception(_("Removing people tag subscription failed.")); + // TRANS: Exception thrown when deleting a list subscription from the database fails. + throw new Exception(_('Removing list subscription failed.')); } $peopletag->subscriberCount(true); @@ -93,11 +109,31 @@ class Profile_tag_subscription extends Memcached_DataObject $subs->find(); while($subs->fetch()) { - $profile = Profile::staticGet('id', $subs->profile_id); + $profile = Profile::getKV('id', $subs->profile_id); Event::handle('StartUnsubscribePeopletag', array($profile_list, $profile)); // Delete anyway $subs->delete(); Event::handle('StartUnsubscribePeopletag', array($profile_list, $profile)); } } + + function insert() + { + $result = parent::insert(); + if ($result) { + self::blow('profile_list:subscriber_count:%d', + $this->profile_tag_id); + } + return $result; + } + + function delete($useWhere=false) + { + $result = parent::delete($useWhere); + if ($result !== false) { + self::blow('profile_list:subscriber_count:%d', + $this->profile_tag_id); + } + return $result; + } }