From ad10a6467f76822b9289832eeb0d0ac2038b32d1 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Mon, 30 Dec 2019 16:57:13 +0100 Subject: Strip down for simple app for Greek verb λύω --- app/Form.php | 36 +++++ .../Controllers/Auth/ForgotPasswordController.php | 32 ---- app/Http/Controllers/Auth/LoginController.php | 39 ----- app/Http/Controllers/Auth/RegisterController.php | 76 ---------- .../Controllers/Auth/ResetPasswordController.php | 34 ----- app/Http/Controllers/FormController.php | 51 +++++++ app/Http/Controllers/RandomVerbController.php | 49 ------- app/Http/Controllers/RootController.php | 58 -------- app/Http/Controllers/VerbController.php | 161 --------------------- app/Mode.php | 29 ++++ app/Observers/UserObserver.php | 35 ----- app/PointChange.php | 35 ----- app/RandomLog.php | 4 +- app/Root.php | 37 ----- app/RootKind.php | 29 ---- app/RootTranslation.php | 29 ---- app/Stem.php | 29 ---- app/Tense.php | 4 +- app/User.php | 56 ------- app/Verb.php | 71 --------- app/VerbAction.php | 41 ------ 21 files changed, 120 insertions(+), 815 deletions(-) create mode 100644 app/Form.php delete mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php delete mode 100644 app/Http/Controllers/Auth/LoginController.php delete mode 100644 app/Http/Controllers/Auth/RegisterController.php delete mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 app/Http/Controllers/FormController.php delete mode 100644 app/Http/Controllers/RandomVerbController.php delete mode 100644 app/Http/Controllers/RootController.php delete mode 100644 app/Http/Controllers/VerbController.php create mode 100644 app/Mode.php delete mode 100644 app/Observers/UserObserver.php delete mode 100644 app/PointChange.php delete mode 100644 app/Root.php delete mode 100644 app/RootKind.php delete mode 100644 app/RootTranslation.php delete mode 100644 app/Stem.php delete mode 100644 app/User.php delete mode 100644 app/Verb.php delete mode 100644 app/VerbAction.php (limited to 'app') diff --git a/app/Form.php b/app/Form.php new file mode 100644 index 0000000..767c122 --- /dev/null +++ b/app/Form.php @@ -0,0 +1,36 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +namespace HebrewParseTrainer; + +use Illuminate\Database\Eloquent\Model; + +class Form extends Model { + + protected $table = 'forms'; + public $timestamps = false; + protected $fillable = ['form', 'tense', 'mode', 'voice', 'person', 'number', 'gender', 'case']; + + const ACCEPTED_VOTE_COUNT = 5; + + public function otherParsings() { + return self::where('form', $this->form)->get() + ->filter(function($v){return $v->form === $this->form;}); + } + +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php deleted file mode 100644 index a36a6f4..0000000 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ /dev/null @@ -1,32 +0,0 @@ -middleware('guest'); - } -} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php deleted file mode 100644 index 4c81bea..0000000 --- a/app/Http/Controllers/Auth/LoginController.php +++ /dev/null @@ -1,39 +0,0 @@ -middleware('guest', ['except' => 'logout']); - } -} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php deleted file mode 100644 index 29ec08a..0000000 --- a/app/Http/Controllers/Auth/RegisterController.php +++ /dev/null @@ -1,76 +0,0 @@ -middleware('guest'); - } - - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => 'required|max:255', - 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|min:6|confirmed', - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return User - */ - protected function create(array $data) - { - $user = new User([ - 'name' => $data['name'], - 'email' => $data['email'], - ]); - - $user->password = bcrypt($data['password']); - - $user->save(); - - return $user; - } -} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php deleted file mode 100644 index 98d1131..0000000 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ /dev/null @@ -1,34 +0,0 @@ -middleware('guest'); - } -} diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php new file mode 100644 index 0000000..a860363 --- /dev/null +++ b/app/Http/Controllers/FormController.php @@ -0,0 +1,51 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +namespace App\Http\Controllers; + +use HebrewParseTrainer\Form; +use HebrewParseTrainer\RandomLog; + +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Input; +use Illuminate\Support\Facades\Validator; + +class FormController extends Controller { + + public function random() { + $forms = Form::all(); + foreach (Input::get() as $col => $val) { + if ($col == '_token') + continue; + $vals = explode(',', $val); + $forms = $forms->whereIn($col, $vals); + } + $form = $forms->random(); + + $log = new RandomLog(); + $log->request = json_encode(Input::get()); + $log->response = $form->id; + $log->ip = $_SERVER['REMOTE_ADDR']; + $log->save(); + + $obj = ['form' => $form, 'answers' => $form->otherParsings()]; + return response()->json($obj); + } + +} diff --git a/app/Http/Controllers/RandomVerbController.php b/app/Http/Controllers/RandomVerbController.php deleted file mode 100644 index ceb5ff9..0000000 --- a/app/Http/Controllers/RandomVerbController.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace App\Http\Controllers; - -use HebrewParseTrainer\Verb; -use HebrewParseTrainer\RandomLog; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Input; - -class RandomVerbController extends Controller { - - public function show() - { - $verbs = Verb::all(); - foreach (Input::get() as $col => $val) { - $val = explode(',', $val); - $verbs = $verbs->filter(function(Verb $item) use ($col, $val) { - return in_array($item->getAttribute($col), $val); - }); - } - $verb = $verbs->random(); - - $log = new RandomLog(); - $log->request = json_encode(Input::get()); - $log->response = $verb->id; - $log->ip = $_SERVER['REMOTE_ADDR']; - $log->save(); - - $obj = ['verb' => $verb, 'answers' => $verb->otherParsings()]; - return response()->json($obj); - } - -} diff --git a/app/Http/Controllers/RootController.php b/app/Http/Controllers/RootController.php deleted file mode 100644 index 5546a1d..0000000 --- a/app/Http/Controllers/RootController.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace App\Http\Controllers; - -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Validator; - -use HebrewParseTrainer\Root; -use HebrewParseTrainer\RootKind; - -class RootController extends Controller { - - public function create(Request $request) { - $_kinds = RootKind::all(); - $kinds = []; - foreach ($_kinds as $kind) - $kinds[] = $kind->id; - - $validator = Validator::make($request->input(), [ - 'root' => 'required', - 'root_kind_id' => 'in:' . implode(',', $kinds), - ]); - - if ($validator->fails()) { - return [ - 'success' => false, - 'message' => $validator->errors()->first() - ]; - } - - $root = new Root; - $root->root = $request->input('root'); - $root->root_kind_id = $request->input('root_kind_id'); - $root->save(); - - return [ - 'success' => true, - ]; - } - -} diff --git a/app/Http/Controllers/VerbController.php b/app/Http/Controllers/VerbController.php deleted file mode 100644 index 042bfe2..0000000 --- a/app/Http/Controllers/VerbController.php +++ /dev/null @@ -1,161 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace App\Http\Controllers; - -use HebrewParseTrainer\PointChange; -use HebrewParseTrainer\Stem; -use HebrewParseTrainer\Tense; -use HebrewParseTrainer\Verb; -use HebrewParseTrainer\VerbAction; -use HebrewParseTrainer\RandomLog; - -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Input; -use Illuminate\Support\Facades\Validator; - -class VerbController extends Controller { - - public function random() { - $verbs = Verb::where('active', 1); - foreach (Input::get() as $col => $val) { - if ($col == '_token') - continue; - $vals = explode(',', $val); - $verbs = $verbs->whereIn($col, $vals); - } - $verb = $verbs->get()->random(); - - $log = new RandomLog(); - $log->request = json_encode(Input::get()); - $log->response = $verb->id; - $log->ip = $_SERVER['REMOTE_ADDR']; - $log->save(); - - $obj = ['verb' => $verb, 'answers' => $verb->otherParsings()]; - return response()->json($obj); - } - - public function suggest(Request $request) { - $_tenses = Tense::all(); - $tenses = []; - foreach ($_tenses as $tense) - $tenses[] = $tense->name; - - $_stems = Stem::all(); - $stems = []; - foreach ($_stems as $stem) - $stems[] = $stem->name; - - $validator = Validator::make($request->input(), [ - 'verb' => 'required', - 'root' => 'required', - 'stem' => 'in:' . implode(',', $stems), - 'tense' => 'in:' . implode(',', $tenses), - 'person' => 'in:,1,2,3', - 'gender' => 'in:,m,f', - 'number' => 'in:,s,p', - ]); - - if ($validator->fails()) { - return [ - 'success' => false, - 'message' => $validator->errors()->first() - ]; - } - - $verb = new Verb; - $verb->verb = $request->input('verb'); - $verb->root = $request->input('root'); - $verb->stem = $request->input('stem'); - $verb->tense = $request->input('tense'); - $verb->person = $request->input('person') ? $request->input('person') : null; - $verb->gender = $request->input('gender') ? $request->input('gender') : null; - $verb->number = $request->input('number') ? $request->input('number') : null; - $verb->active = 0; - $verb->save(); - - $action = new VerbAction; - $action->kind = VerbAction::KIND_SUGGEST; - $action->user_id = Auth::user()->id; - $action->verb_id = $verb->id; - $action->save(); - - $this->vote(1, $verb->id); - - return [ - 'success' => true, - 'id' => $verb->id, - 'accepted' => $verb->active != 0 - ]; - } - - protected function checkAccept($verb) { - if ($verb->voteCount() < Verb::ACCEPTED_VOTE_COUNT) - return false; - - $verb->active = 1; - $verb->save(); - - if (!is_null($user = $verb->suggestedBy())) { - $ptchange = new PointChange; - $ptchange->kind = PointChange::KIND_SUGGESTION_ACCEPTED; - $ptchange->change = PointChange::POINTS_SUGGESTION_ACCEPTED; - $ptchange->user_id = $user->id; - $ptchange->verb_id = $verb->id; - $ptchange->save(); - - $user->points += PointChange::POINTS_SUGGESTION_ACCEPTED; - $user->save(); - } - - return true; - } - - public function vote($verb_id, $choice) { - $verb = Verb::findOrFail($verb_id); - $user = Auth::user(); - - if ($verb->active) - return ['success' => false, 'message' => 'This verb has been accepted already.']; - - foreach ($verb->actions()->where('kind', VerbAction::KIND_VOTE)->get() as $vote) { - if ($vote->user->id == $user->id) { - $vote->delete(); - } - } - - $vote = new VerbAction; - $vote->user_id = $user->id; - $vote->verb_id = $verb_id; - $vote->kind = VerbAction::KIND_VOTE; - $vote->vote_weight = ($choice == 1 ? 1 : -1) * $user->voteWeight(); - $vote->save(); - - $accepted = $this->checkAccept($verb); - - return [ - 'success' => true, - 'vote_weight' => $user->voteWeight(), - 'accepted' => $accepted, - 'new_vote_count' => $verb->voteCount() - ]; - } - -} diff --git a/app/Mode.php b/app/Mode.php new file mode 100644 index 0000000..f7739fd --- /dev/null +++ b/app/Mode.php @@ -0,0 +1,29 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +namespace HebrewParseTrainer; + +use Illuminate\Database\Eloquent\Model; + +class Mode extends Model { + + protected $table = 'modes'; + public $timestamps = false; + protected $fillable = ['name', 'abbreviation']; + +} diff --git a/app/Observers/UserObserver.php b/app/Observers/UserObserver.php deleted file mode 100644 index b5a2421..0000000 --- a/app/Observers/UserObserver.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace App\Observers; - -use Illuminate\Support\Facades\Mail; - -use HebrewParseTrainer\User; - -class UserObserver { - - public function created(User $user) { - Mail::plain('mails.user.create', ['user' => $user], function ($msg) use ($user) { - $msg->subject('Your account'); - $msg->to([$user->email]); - $msg->cc(['info@camilstaps.nl']); - }); - } - -} diff --git a/app/PointChange.php b/app/PointChange.php deleted file mode 100644 index c157b36..0000000 --- a/app/PointChange.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class PointChange extends Model { - - protected $table = 'point_changes'; - public $timestamps = false; - protected $dates = ['date']; - protected $fillable = ['kind', 'change']; - - const KIND_SUGGESTION_ACCEPTED = 1; - const KIND_MANUAL = 3; - - const POINTS_SUGGESTION_ACCEPTED = 2; - -} diff --git a/app/RandomLog.php b/app/RandomLog.php index f0fefb9..8ba2889 100644 --- a/app/RandomLog.php +++ b/app/RandomLog.php @@ -1,7 +1,7 @@ + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present Camil Staps * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/Root.php b/app/Root.php deleted file mode 100644 index 4e5e9df..0000000 --- a/app/Root.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class Root extends Model { - - protected $table = 'roots'; - public $timestamps = false; - protected $fillable = ['root', 'root_kind_id']; - - public function kind() { - return $this->belongsTo('HebrewParseTrainer\RootKind', 'root_kind_id'); - } - - public function verbs() { - return $this->hasMany('HebrewParseTrainer\Verb', 'root', 'root'); - } - -} diff --git a/app/RootKind.php b/app/RootKind.php deleted file mode 100644 index 6c68465..0000000 --- a/app/RootKind.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class RootKind extends Model { - - protected $table = 'root_kinds'; - public $timestamps = false; - protected $fillable = ['strong', 'name']; - -} diff --git a/app/RootTranslation.php b/app/RootTranslation.php deleted file mode 100644 index 120dc5c..0000000 --- a/app/RootTranslation.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class RootTranslation extends Model { - - protected $table = 'root_translations'; - public $timestamps = false; - protected $fillable = ['root', 'translation']; - -} \ No newline at end of file diff --git a/app/Stem.php b/app/Stem.php deleted file mode 100644 index 4616b1e..0000000 --- a/app/Stem.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class Stem extends Model { - - protected $table = 'stems'; - public $timestamps = false; - protected $fillable = ['name']; - -} \ No newline at end of file diff --git a/app/Tense.php b/app/Tense.php index f30e352..b337eff 100644 --- a/app/Tense.php +++ b/app/Tense.php @@ -1,7 +1,7 @@ + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present Camil Staps * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/User.php b/app/User.php deleted file mode 100644 index ca14b40..0000000 --- a/app/User.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Facades\Hash; -use Illuminate\Foundation\Auth\User as FoundationUser; - -class User extends FoundationUser { - - protected $table = 'users'; - public $timestamps = false; - protected $fillable = ['email', 'name', 'password', 'isadmin']; - protected $hidden = ['password', 'remember_token']; - - const VOTE_WEIGHT_BASE = 5; - - public function changePoints($kind, $change, $verb = null) { - $change = new PointChange; - $change->user = $this->id; - $change->change = $change; - $change->kind = $kind; - $change->verb = is_null($verb) ? null : $verb->id; - $change->save(); - - $this->points += $change; - $this->save(); - } - - public function voteWeight() { - if ($this->isadmin) - return Verb::ACCEPTED_VOTE_COUNT; - - if ($this->points <= 0) - return 0; - - return floor(log($this->points, self::VOTE_WEIGHT_BASE)); - } - -} diff --git a/app/Verb.php b/app/Verb.php deleted file mode 100644 index 3ff79fc..0000000 --- a/app/Verb.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class Verb extends Model { - - protected $table = 'verbs'; - public $timestamps = false; - protected $fillable = ['verb', 'root', 'stem', 'tense', 'person', 'gender', 'number']; - - const ACCEPTED_VOTE_COUNT = 5; - - public function actions() { - return $this->hasMany('HebrewParseTrainer\VerbAction'); - } - - public function otherParsings() { - return self::where('verb', $this->verb)->get() - ->filter(function($v){return $v->verb === $this->verb;}); - } - - public function voteCount() { - $votes = $this->actions()->where('kind', VerbAction::KIND_VOTE)->get(); - $total = 0; - foreach ($votes as $vote) - $total += $vote->vote_weight; - return $total; - } - - public function userVote(User $user) { - $votes = $this->actions() - ->where('kind', VerbAction::KIND_VOTE) - ->where('user_id', $user->id) - ->get(); - foreach ($votes as $vote) { - return $vote->vote_weight; - } - return 0; - } - - public function suggestedBy() { - $suggs = $this->actions() - ->where('kind', VerbAction::KIND_SUGGEST) - ->get(); - - foreach ($suggs as $sugg) { - return $sugg->user; - } - - return null; - } - -} diff --git a/app/VerbAction.php b/app/VerbAction.php deleted file mode 100644 index 79c8cd0..0000000 --- a/app/VerbAction.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace HebrewParseTrainer; - -use Illuminate\Database\Eloquent\Model; - -class VerbAction extends Model { - - protected $table = 'verb_actions'; - public $timestamps = false; - protected $dates = ['date']; - protected $fillable = ['user_id', 'verb_id', 'kind', 'vote_weight', 'comment_text']; - - const KIND_SUGGEST = 1; - const KIND_VOTE = 2; - - public function verb() { - return $this->belongsTo('HebrewParseTrainer\Verb'); - } - - public function user() { - return $this->belongsTo('HebrewParseTrainer\User'); - } - -} -- cgit v1.2.3