Browse Source

Merge pull request #2533 from pixelfed/staging

Staging
daniel 4 years ago
parent
commit
e5a164f065

+ 1 - 0
CHANGELOG.md

@@ -23,6 +23,7 @@
 - Add Blurhash encoder ([fad102bf](https://github.com/pixelfed/pixelfed/commit/fad102bf))
 - Add autospam feature ([b892bcf0](https://github.com/pixelfed/pixelfed/commit/b892bcf0))
 - Add hCaptcha ([082c1ccb](https://github.com/pixelfed/pixelfed/commit/082c1ccb))
+- Add StatusView model to store views for discover algorithm ([7a68ee94](https://github.com/pixelfed/pixelfed/commit/7a68ee94))
 
 ### Updated
 - Updated PostComponent, fix remote urls ([42716ccc](https://github.com/pixelfed/pixelfed/commit/42716ccc))

+ 9 - 0
app/Http/Controllers/LikeController.php

@@ -43,6 +43,15 @@ class LikeController extends Controller
             if($like->wasRecentlyCreated == true) {
                 $count++;
                 $status->likes_count = $count;
+                $like->status_profile_id = $status->profile_id;
+                $like->is_comment = in_array($status->type, [
+                    'photo',
+                    'photo:album',
+                    'video',
+                    'video:album',
+                    'photo:video:album'
+                    ]) == false;
+                $like->save();
                 $status->save();
                 LikePipeline::dispatch($like);
             }

+ 6 - 10
app/Http/Controllers/SiteController.php

@@ -62,20 +62,16 @@ class SiteController extends Controller
 
     public function about()
     {
-        return Cache::remember('site:about', now()->addHours(12), function() {
-            app()->setLocale('en');
-            $page = Page::whereSlug('/site/about')->whereActive(true)->first();
-            $stats = [
-                'posts' => Status::whereLocal(true)->count(),
+        $page = Page::whereSlug('/site/about')->whereActive(true)->first();
+        $stats = Cache::remember('site:about:stats-v1', now()->addHours(12), function() {
+            return [
+                'posts' => Status::count(),
                 'users' => User::whereNull('status')->count(),
                 'admin' => User::whereIsAdmin(true)->first()
             ];
-            if($page) {
-                return View::make('site.about-custom')->with(compact('page', 'stats'))->render();
-            } else {
-                return View::make('site.about')->with(compact('stats'))->render();
-            }
         });
+        $path = $page ? 'site.about-custom' : 'site.about';
+        return view($path, compact('page', 'stats'));
     }
 
     public function language()

+ 9 - 0
app/Http/Controllers/StatusController.php

@@ -10,6 +10,7 @@ use App\AccountInterstitial;
 use App\Media;
 use App\Profile;
 use App\Status;
+use App\StatusView;
 use App\Transformer\ActivityPub\StatusTransformer;
 use App\Transformer\ActivityPub\Verb\Note;
 use App\User;
@@ -59,6 +60,14 @@ class StatusController extends Controller
             }
         }
 
+        if($request->user() && $request->user()->profile_id != $status->profile_id) {
+            StatusView::firstOrCreate([
+                'status_id' => $status->id,
+                'status_profile_id' => $status->profile_id,
+                'profile_id' => $request->user()->profile_id
+            ]);
+        }
+
         if ($request->wantsJson() && config('federation.activitypub.enabled')) {
             return $this->showActivityPub($request, $status);
         }

+ 17 - 0
app/StatusView.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class StatusView extends Model
+{
+    use HasFactory;
+
+    protected $fillable = [
+    	'status_id',
+    	'status_profile_id',
+    	'profile_id'
+    ];
+}

+ 35 - 0
database/migrations/2020_12_24_063410_create_status_views_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStatusViewsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('status_views', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->bigInteger('status_id')->unsigned()->nullable()->index();
+            $table->bigInteger('status_profile_id')->unsigned()->nullable()->index();
+            $table->bigInteger('profile_id')->unsigned()->nullable()->index();
+            $table->unique(['status_id', 'profile_id']);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('status_views');
+    }
+}

+ 36 - 0
database/migrations/2020_12_25_220825_add_status_profile_id_to_likes_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddStatusProfileIdToLikesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('likes', function (Blueprint $table) {
+            $table->bigInteger('status_profile_id')->nullable()->unsigned()->index()->after('status_id');
+            $table->boolean('is_comment')->nullable()->index()->after('status_profile_id');
+            $table->dropColumn('flagged');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('likes', function (Blueprint $table) {
+            $table->dropColumn('status_profile_id');
+            $table->dropColumn('is_comment');
+            $table->boolean('flagged')->default(false);
+        });
+    }
+}

+ 32 - 0
database/migrations/2020_12_27_013953_add_text_column_to_media_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddTextColumnToMediaTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('media', function (Blueprint $table) {
+            $table->text('cdn_url')->nullable()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('media', function (Blueprint $table) {
+            $table->string('cdn_url')->nullable()->change();
+        });
+    }
+}