]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
add URI members to social activity classes
authorEvan Prodromou <evan@status.net>
Mon, 22 Aug 2011 20:36:23 +0000 (16:36 -0400)
committerEvan Prodromou <evan@status.net>
Mon, 22 Aug 2011 20:36:23 +0000 (16:36 -0400)
classes/Fave.php
classes/Group_member.php
classes/Subscription.php
db/core.php

index c69a6816d000a13c69bc9f9e990043a0c7cdf4fa..d954117292d2f15ab8dbff689f6d0611fdd1799f 100644 (file)
@@ -12,6 +12,7 @@ class Fave extends Memcached_DataObject
     public $__table = 'fave';                            // table name
     public $notice_id;                       // int(4)  primary_key not_null
     public $user_id;                         // int(4)  primary_key not_null
+    public $uri;                             // varchar(255)
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
     /* Static get */
@@ -39,7 +40,10 @@ class Fave extends Memcached_DataObject
 
             $fave->user_id   = $profile->id;
             $fave->notice_id = $notice->id;
-
+            $fave->modified  = common_sql_now();
+            $fave->uri       = self::newURI($fave->user_id,
+                                            $fave->notice_id,
+                                            $fave->modified);
             if (!$fave->insert()) {
                 common_log_db_error($fave, 'INSERT', __FILE__);
                 return false;
@@ -102,10 +106,7 @@ class Fave extends Memcached_DataObject
 
         // FIXME: rationalize this with URL below
 
-        $act->id   = TagURI::mint('favor:%d:%d:%s',
-                                  $profile->id,
-                                  $notice->id,
-                                  common_date_iso8601($this->modified));
+        $act->id   = $this->getURI();
 
         $act->time    = strtotime($this->modified);
         // TRANS: Activity title when marking a notice as favorite.
@@ -156,4 +157,21 @@ class Fave extends Memcached_DataObject
 
         return $fav;
     }
+
+    function getURI()
+    {
+        if (!empty($this->uri)) {
+            return $this->uri;
+        } else {
+            return self::newURI($this->user_id, $this->notice_id, $this->modified);
+        }
+    }
+
+    static function newURI($profile_id, $notice_id, $modified)
+    {
+        return TagURI::mint('favor:%d:%d:%s',
+                            $profile_id,
+                            $notice_id,
+                            common_date_iso8601($modified));
+    }
 }
index 5385e0f4874133d4ad2da47c798cac374204dce3..a553af3475a4fc7aa59b7b3d29b289bb760692d4 100644 (file)
@@ -12,6 +12,7 @@ class Group_member extends Memcached_DataObject
     public $group_id;                        // int(4)  primary_key not_null
     public $profile_id;                      // int(4)  primary_key not_null
     public $is_admin;                        // tinyint(1)
+    public $uri;                             // varchar(255)
     public $created;                         // datetime()   not_null
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
@@ -43,6 +44,7 @@ class Group_member extends Memcached_DataObject
         $member->group_id   = $group_id;
         $member->profile_id = $profile_id;
         $member->created    = common_sql_now();
+        $member->uri        = self::newURI($profile_id, $group_id, $member->created);
 
         $result = $member->insert();
 
@@ -134,10 +136,7 @@ class Group_member extends Memcached_DataObject
 
         $act = new Activity();
 
-        $act->id = TagURI::mint('join:%d:%d:%s',
-                                $member->id,
-                                $group->id,
-                                common_date_iso8601($this->created));
+        $act->id = $this->getURI();
 
         $act->actor     = ActivityObject::fromProfile($member);
         $act->verb      = ActivityVerb::JOIN;
@@ -171,4 +170,21 @@ class Group_member extends Memcached_DataObject
     {
         mail_notify_group_join($this->getGroup(), $this->getMember());
     }
+
+    function getURI()
+    {
+        if (!empty($this->uri)) {
+            return $this->uri;
+        } else {
+            return self::newURI($this->member_id, $this->group_id, $this->created);
+        }
+    }
+
+    static function newURI($member_id, $group_id, $created)
+    {
+        return TagURI::mint('join:%d:%d:%s',
+                            $member_id,
+                            $group_id,
+                            common_date_iso8601($created));
+    }
 }
index e83621eb86ba3bac099f61504c62bc2905276a9c..e0c5b5ab0e5fe0e93c8a10badfc8a6ef94a09274 100644 (file)
@@ -39,6 +39,7 @@ class Subscription extends Memcached_DataObject
     public $sms;                             // tinyint(1)   default_1
     public $token;                           // varchar(255)
     public $secret;                          // varchar(255)
+    public $uri;                             // varchar(255)
     public $created;                         // datetime()   not_null
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
@@ -138,6 +139,9 @@ class Subscription extends Memcached_DataObject
         $sub->jabber     = 1;
         $sub->sms        = 1;
         $sub->created    = common_sql_now();
+        $sub->uri        = self::newURI($sub->subscriber,
+                                        $sub->subscribed,
+                                        $sub->created);
 
         $result = $sub->insert();
 
@@ -238,10 +242,7 @@ class Subscription extends Memcached_DataObject
 
         // XXX: rationalize this with the URL
 
-        $act->id   = TagURI::mint('follow:%d:%d:%s',
-                                  $subscriber->id,
-                                  $subscribed->id,
-                                  common_date_iso8601($this->created));
+        $act->id   = $this->getURI();
 
         $act->time    = strtotime($this->created);
         // TRANS: Activity title when subscribing to another person.
@@ -404,4 +405,21 @@ class Subscription extends Memcached_DataObject
 
         return $result;
     }
+
+    function getURI()
+    {
+        if (!empty($this->uri)) {
+            return $this->uri;
+        } else {
+            return self::newURI($this->subscriber, $this->subscribed, $this->created);
+        }
+    }
+
+    static function newURI($subscriber_id, $subscribed_id, $created)
+    {
+        return TagURI::mint('follow:%d:%d:%s',
+                            $subscriber_id,
+                            $subscribed_id,
+                            common_date_iso8601($created));
+    }
 }
index 72970810794e6638d19b838386d6c472afcf9bd3..cfecd23d47b590cf32745cdecf41c840d104b7d2 100644 (file)
@@ -170,10 +170,14 @@ $schema['subscription'] = array(
         'sms' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'deliver sms messages'),
         'token' => array('type' => 'varchar', 'length' => 255, 'description' => 'authorization token'),
         'secret' => array('type' => 'varchar', 'length' => 255, 'description' => 'token secret'),
+        'uri' => array('type' => 'varchar', 'length' => 255, 'description' => 'universally unique identifier'),
         '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('subscriber', 'subscribed'),
+    'unique keys' => array(
+        'subscription_uri_key' => array('uri'),
+    ),
     'indexes' => array(
         'subscription_subscriber_idx' => array('subscriber', 'created'),
         'subscription_subscribed_idx' => array('subscribed', 'created'),
@@ -263,9 +267,13 @@ $schema['fave'] = array(
     'fields' => array(
         'notice_id' => array('type' => 'int', 'not null' => true, 'description' => 'notice that is the favorite'),
         'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'user who likes this notice'),
+        'uri' => array('type' => 'varchar', 'length' => 255, 'description' => 'universally unique identifier, usually a tag URI'),
         'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
     ),
     'primary key' => array('notice_id', 'user_id'),
+    'unique keys' => array(
+        'fave_uri_key' => array('uri'),
+    ),
     'foreign keys' => array(
         'fave_notice_id_fkey' => array('notice', array('notice_id' => 'id')),
         'fave_user_id_fkey' => array('profile', array('user_id' => 'id')), // note: formerly referenced notice.id, but we can now record remote users' favorites
@@ -742,11 +750,14 @@ $schema['group_member'] = array(
         'group_id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to user_group'),
         'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile table'),
         'is_admin' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'is this user an admin?'),
-
+        'uri' => array('type' => 'varchar', 'length' => 255, 'description' => 'universal identifier'),
         '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('group_id', 'profile_id'),
+    'unique keys' => array(
+        'group_member_uri_key' => array('uri'),
+    ),
     'foreign keys' => array(
         'group_member_group_id_fkey' => array('user_group', array('group_id' => 'id')),
         'group_member_profile_id_fkey' => array('profile', array('profile_id' => 'id')),