Przeglądaj źródła

Remove hashids from Status model, add new methods

Daniel Supernault 7 lat temu
rodzic
commit
7c1b70060c
1 zmienionych plików z 52 dodań i 3 usunięć
  1. 52 3
      app/Status.php

+ 52 - 3
app/Status.php

@@ -23,11 +23,16 @@ class Status extends Model
       return $this->hasMany(Media::class)->orderBy('order', 'asc')->first();
       return $this->hasMany(Media::class)->orderBy('order', 'asc')->first();
     }
     }
 
 
+    public function thumb()
+    {
+      return url(Storage::url($this->firstMedia()->thumbnail_path));
+    }
+
     public function url()
     public function url()
     {
     {
-      $hid = Hashids::encode($this->id);
+      $id = $this->id;
       $username = $this->profile->username;
       $username = $this->profile->username;
-      return url("/p/@{$username}/{$hid}");
+      return url(config('app.url') . "/p/@{$username}/{$id}");
     }
     }
 
 
     public function mediaUrl()
     public function mediaUrl()
@@ -44,7 +49,51 @@ class Status extends Model
 
 
     public function comments()
     public function comments()
     {
     {
-      return $this->hasMany(Comment::class);
+      return $this->hasMany(Status::class, 'in_reply_to_id');
+    }
+
+    public function parent()
+    {
+      if(!empty($this->in_reply_to_id)) {
+        return Status::findOrFail($this->in_reply_to_id);
+      }
+    }
+
+    public function conversation()
+    {
+      return $this->hasOne(Conversation::class);
+    }
+
+    public function hashtags()
+    {
+      return $this->hasManyThrough(
+        Hashtag::class,
+        StatusHashtag::class,
+        'status_id',
+        'id',
+        'id',
+        'hashtag_id'
+      );
+    }
+
+    public function toActivityStream()
+    {
+      $media = $this->media;
+      $mediaCollection = [];
+      foreach($media as $image) {
+        $mediaCollection[] = [
+          "type" => "Link",
+          "href" => $image->url(),
+          "mediaType" => $image->mime
+        ];
+      }
+      $obj = [
+        "@context" => "https://www.w3.org/ns/activitystreams",
+        "type" => "Image",
+        "name" => null,
+        "url" => $mediaCollection
+      ];
+      return $obj;
     }
     }
 
 
 }
 }