]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Fave.php
Show a single favorite for AtomPub
[quix0rs-gnu-social.git] / classes / Fave.php
index 0b6eec2bc40af2e2742332fcc1dae6883521e218..030e67b56138fc796552e8edd149126a880b9d97 100644 (file)
@@ -21,7 +21,15 @@ class Fave extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    static function addNew($profile, $notice) {
+    /**
+     * Save a favorite record.
+     * @fixme post-author notification should be moved here
+     *
+     * @param Profile $profile the local or remote user who likes
+     * @param Notice $notice the notice that is liked
+     * @return mixed false on failure, or Fave record on success
+     */
+    static function addNew(Profile $profile, Notice $notice) {
 
         $fave = null;
 
@@ -67,17 +75,17 @@ class Fave extends Memcached_DataObject
         return Memcached_DataObject::pkeyGet('Fave', $kv);
     }
 
-    function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false)
+    function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false, $since_id=0, $max_id=0)
     {
         $ids = Notice::stream(array('Fave', '_streamDirect'),
                               array($user_id, $own),
                               ($own) ? 'fave:ids_by_user_own:'.$user_id :
                               'fave:ids_by_user:'.$user_id,
-                              $offset, $limit);
+                              $offset, $limit, $since_id, $max_id);
         return $ids;
     }
 
-    function _streamDirect($user_id, $own, $offset, $limit, $since_id, $max_id, $since)
+    function _streamDirect($user_id, $own, $offset, $limit, $since_id, $max_id)
     {
         $fav = new Fave();
         $qry = null;
@@ -100,10 +108,6 @@ class Fave extends Memcached_DataObject
             $qry .= 'AND notice_id <= ' . $max_id . ' ';
         }
 
-        if (!is_null($since)) {
-            $qry .= 'AND modified > \'' . date('Y-m-d H:i:s', $since) . '\' ';
-        }
-
         // NOTE: we sort by fave time, not by notice time!
 
         $qry .= 'ORDER BY modified DESC ';
@@ -125,4 +129,42 @@ class Fave extends Memcached_DataObject
 
         return $ids;
     }
+
+    function asActivity()
+    {
+        $notice  = Notice::staticGet('id', $this->notice_id);
+        $profile = Profile::staticGet('id', $this->user_id);
+
+        $act = new Activity();
+
+        $act->verb = ActivityVerb::FAVORITE;
+
+        // FIXME: rationalize this with URL below
+
+        $act->id   = TagURI::mint('favor:%d:%d:%s',
+                                  $profile->id,
+                                  $notice->id,
+                                  common_date_iso8601($this->modified));
+
+        $act->time    = strtotime($this->modified);
+        // TRANS: Activity title when marking a notice as favorite.
+        $act->title   = _("Favor");
+        // TRANS: Ntofication given when a user marks a notice as favorite.
+        // TRANS: %1$s is a user nickname or full name, %2$s is a notice URI.
+        $act->content = sprintf(_('%1$s marked notice %2$s as a favorite.'),
+                               $profile->getBestName(),
+                               $notice->uri);
+
+        $act->actor     = ActivityObject::fromProfile($profile);
+        $act->objects[] = ActivityObject::fromNotice($notice);
+
+        $url = common_local_url('AtomPubShowFavorite',
+                                          array('profile' => $this->user_id,
+                                                'notice'  => $this->notice_id));
+
+        $act->selfLink = $url;
+        $act->editLink = $url;
+
+        return $act;
+    }
 }