]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Subscription.php
Merge branch '1.1.x'
[quix0rs-gnu-social.git] / classes / Subscription.php
index 3dbccea422ffb4cd7d587f6d379c5f239f61c52c..f40239989c7cd7674b7d4a954325dc546d65f700 100644 (file)
@@ -39,6 +39,7 @@ class Subscription extends Managed_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
 
@@ -52,10 +53,14 @@ class Subscription extends Managed_DataObject
                 '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'),
@@ -160,6 +165,9 @@ class Subscription extends Managed_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();
 
@@ -260,10 +268,7 @@ class Subscription extends Managed_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.
@@ -426,4 +431,21 @@ class Subscription extends Managed_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));
+    }
 }