about summary refs log tree commit diff
path: root/laravel
diff options
context:
space:
mode:
Diffstat (limited to 'laravel')
-rw-r--r--laravel/app/Http/Controllers/SongController.php6
-rw-r--r--laravel/app/Song.php6
2 files changed, 10 insertions, 2 deletions
diff --git a/laravel/app/Http/Controllers/SongController.php b/laravel/app/Http/Controllers/SongController.php
index 4e4dee5..301e469 100644
--- a/laravel/app/Http/Controllers/SongController.php
+++ b/laravel/app/Http/Controllers/SongController.php
@@ -65,9 +65,11 @@ class SongController extends Controller
             $params['next'] = Song::where('id', '>', $song->id)->orderBy('id', 'asc' )->first();
         }
         if ($playlist){
-            $params['suggestions'] = $playlist->songs()->inRandomOrder()->limit(5)->get();
+            $params['suggestions'] = $playlist->songs()->inRandomOrderSeeded($song->id)->limit(5)->get();
         } else {
-            $params['suggestions'] = Song::inRandomOrder()->limit(5)->get();
+            $params['suggestions'] = Song::query()
+                ->inRandomOrderSeeded($song->id)
+                ->limit(5)->get();
             $plName = ($user->name ?? 'anon') . 'favs';
             if(! $song->playlists()->where('name',$plName)->exists()){
                 $params['addToPlaylist'] = ($user->name ?? 'anon') . 'favs';
diff --git a/laravel/app/Song.php b/laravel/app/Song.php
index b8d2e4c..ed2bf25 100644
--- a/laravel/app/Song.php
+++ b/laravel/app/Song.php
@@ -3,6 +3,7 @@
 namespace App;
 
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\DB;
 use App\Http\Controllers\SongController;
 use TechWilk\BibleVerseParser\BiblePassageParser;
 
@@ -13,6 +14,11 @@ class Song extends Model
     {
         return $this->belongsToMany('App\Playlist');
     }
+    public function scopeInRandomOrderSeeded($query, $id = 0) {
+        $seed = ((intval(now()->unix()/600) . $id)%100000)/100000;
+        DB::query()->selectRaw("SETSEED($seed)")->get();
+        $query->inRandomOrder();
+    }
     public static function whereVerse($passage)
     {
     	$parser = new BiblePassageParser();