]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Fave.php
Merge branch '1.0.x' into activity
[quix0rs-gnu-social.git] / classes / Fave.php
index c5dae31b0257fd24a7301e226c99e937fffba705..467465ba0544ab7bda036cc7dac29d77591a7dc2 100644 (file)
@@ -12,6 +12,7 @@ class Fave extends Managed_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 */
@@ -27,9 +28,13 @@ class Fave extends Managed_DataObject
             '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
@@ -60,7 +65,10 @@ class Fave extends Managed_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;
@@ -123,10 +131,7 @@ class Fave extends Managed_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.
@@ -177,4 +182,21 @@ class Fave extends Managed_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));
+    }
 }