about summary refs log tree commit diff
path: root/laravel/app
diff options
context:
space:
mode:
Diffstat (limited to 'laravel/app')
-rw-r--r--laravel/app/Http/Controllers/SongController.php6
-rw-r--r--laravel/app/Song.php11
2 files changed, 16 insertions, 1 deletions
diff --git a/laravel/app/Http/Controllers/SongController.php b/laravel/app/Http/Controllers/SongController.php
index d4369ae..1a0ec18 100644
--- a/laravel/app/Http/Controllers/SongController.php
+++ b/laravel/app/Http/Controllers/SongController.php
@@ -257,7 +257,11 @@ class SongController extends Controller
     {
         $song->title  = $request->title;
         $song->author = $request->author;
-        $song->key    = $request->key;
+        try {
+            $song->key    = $request->key;
+        } catch (\Exception $e){
+            return redirect("/s/{$song->id}/edit")->withErrors(['key' => $e->getMessage()])->withInput();
+        }
         $song->text   = $_POST['text'];//request->text strips whitespace.
         $song->verse  = $request->verse;
         $song->save();
diff --git a/laravel/app/Song.php b/laravel/app/Song.php
index c723e3a..a6cb0c0 100644
--- a/laravel/app/Song.php
+++ b/laravel/app/Song.php
@@ -31,6 +31,17 @@ class Song extends Model
         }
         return $sc->transposeBlock($this->text, $transp);
     }
+
+    public function setKeyAttribute($value)
+    {
+        if (!$value) return;
+        if ($value[0]>="A"&&$value[0]<="G"){
+            $this->attributes['key'] = $value;
+        } else {
+            throw new \Exception("Invalid key: $value");
+        }
+    }
+    
     public function getNameAttribute()
     {
         return $this->title