diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/Form.php (renamed from app/Root.php) | 19 | ||||
| -rw-r--r-- | app/Http/Controllers/Auth/ForgotPasswordController.php | 32 | ||||
| -rw-r--r-- | app/Http/Controllers/Auth/LoginController.php | 39 | ||||
| -rw-r--r-- | app/Http/Controllers/Auth/RegisterController.php | 76 | ||||
| -rw-r--r-- | app/Http/Controllers/Auth/ResetPasswordController.php | 34 | ||||
| -rw-r--r-- | app/Http/Controllers/FormController.php (renamed from app/Http/Controllers/RandomVerbController.php) | 30 | ||||
| -rw-r--r-- | app/Http/Controllers/RootController.php | 58 | ||||
| -rw-r--r-- | app/Http/Controllers/VerbController.php | 161 | ||||
| -rw-r--r-- | app/Mode.php (renamed from app/RootKind.php) | 10 | ||||
| -rw-r--r-- | app/Observers/UserObserver.php | 35 | ||||
| -rw-r--r-- | app/PointChange.php | 35 | ||||
| -rw-r--r-- | app/RandomLog.php | 4 | ||||
| -rw-r--r-- | app/RootTranslation.php | 29 | ||||
| -rw-r--r-- | app/Stem.php | 29 | ||||
| -rw-r--r-- | app/Tense.php | 4 | ||||
| -rw-r--r-- | app/User.php | 56 | ||||
| -rw-r--r-- | app/Verb.php | 71 | ||||
| -rw-r--r-- | app/VerbAction.php | 41 | 
18 files changed, 34 insertions, 729 deletions
| diff --git a/app/Root.php b/app/Form.php index 4e5e9df..767c122 100644 --- a/app/Root.php +++ b/app/Form.php @@ -1,7 +1,7 @@  <?php  /** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present  Camil Staps <info@camilstaps.nl>   *   * 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 @@ -20,18 +20,17 @@ namespace HebrewParseTrainer;  use Illuminate\Database\Eloquent\Model; -class Root extends Model { +class Form extends Model { -	protected $table = 'roots'; +	protected $table = 'forms';  	public $timestamps = false; -	protected $fillable = ['root', 'root_kind_id']; +	protected $fillable = ['form', 'tense', 'mode', 'voice', 'person', 'number', 'gender', 'case']; -	public function kind() { -		return $this->belongsTo('HebrewParseTrainer\RootKind', 'root_kind_id'); -	} +	const ACCEPTED_VOTE_COUNT = 5; -	public function verbs() { -		return $this->hasMany('HebrewParseTrainer\Verb', 'root', 'root'); +	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 @@ -<?php - -namespace App\Http\Controllers\Auth; - -use App\Http\Controllers\Controller; -use Illuminate\Foundation\Auth\SendsPasswordResetEmails; - -class ForgotPasswordController extends Controller -{ -	/* -	|-------------------------------------------------------------------------- -	| Password Reset Controller -	|-------------------------------------------------------------------------- -	| -	| This controller is responsible for handling password reset emails and -	| includes a trait which assists in sending these notifications from -	| your application to your users. Feel free to explore this trait. -	| -	*/ - -	use SendsPasswordResetEmails; - -	/** -	 * Create a new controller instance. -	 * -	 * @return void -	 */ -	public function __construct() -	{ -		$this->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 @@ -<?php - -namespace App\Http\Controllers\Auth; - -use App\Http\Controllers\Controller; -use Illuminate\Foundation\Auth\AuthenticatesUsers; - -class LoginController extends Controller -{ -	/* -	|-------------------------------------------------------------------------- -	| Login Controller -	|-------------------------------------------------------------------------- -	| -	| This controller handles authenticating users for the application and -	| redirecting them to your home screen. The controller uses a trait -	| to conveniently provide its functionality to your applications. -	| -	*/ - -	use AuthenticatesUsers; - -	/** -	 * Where to redirect users after login. -	 * -	 * @var string -	 */ -	protected $redirectTo = '/contribute'; - -	/** -	 * Create a new controller instance. -	 * -	 * @return void -	 */ -	public function __construct() -	{ -		$this->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 @@ -<?php - -namespace App\Http\Controllers\Auth; - -use HebrewParseTrainer\User; -use Validator; -use App\Http\Controllers\Controller; -use Illuminate\Foundation\Auth\RegistersUsers; - -class RegisterController extends Controller -{ -	/* -	|-------------------------------------------------------------------------- -	| Register Controller -	|-------------------------------------------------------------------------- -	| -	| This controller handles the registration of new users as well as their -	| validation and creation. By default this controller uses a trait to -	| provide this functionality without requiring any additional code. -	| -	*/ - -	use RegistersUsers; - -	/** -	 * Where to redirect users after login / registration. -	 * -	 * @var string -	 */ -	protected $redirectTo = '/'; - -	/** -	 * Create a new controller instance. -	 * -	 * @return void -	 */ -	public function __construct() -	{ -		$this->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 @@ -<?php - -namespace App\Http\Controllers\Auth; - -use App\Http\Controllers\Controller; -use Illuminate\Foundation\Auth\ResetsPasswords; - -class ResetPasswordController extends Controller -{ -	/* -	|-------------------------------------------------------------------------- -	| Password Reset Controller -	|-------------------------------------------------------------------------- -	| -	| This controller is responsible for handling password reset requests -	| and uses a simple trait to include this behavior. You're free to -	| explore this trait and override any methods you wish to tweak. -	| -	*/ - -	use ResetsPasswords; - -	protected $redirectTo = '/'; - -	/** -	 * Create a new controller instance. -	 * -	 * @return void -	 */ -	public function __construct() -	{ -		$this->middleware('guest'); -	} -} diff --git a/app/Http/Controllers/RandomVerbController.php b/app/Http/Controllers/FormController.php index ceb5ff9..a860363 100644 --- a/app/Http/Controllers/RandomVerbController.php +++ b/app/Http/Controllers/FormController.php @@ -1,7 +1,7 @@  <?php  /** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present  Camil Staps <info@camilstaps.nl>   *   * 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 @@ -18,31 +18,33 @@   */  namespace App\Http\Controllers; -use HebrewParseTrainer\Verb; +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 RandomVerbController extends Controller { +class FormController extends Controller { -	public function show() -	{ -		$verbs = Verb::all(); +	public function random() { +		$forms = Form::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); -			}); +			if ($col == '_token') +				continue; +			$vals = explode(',', $val); +			$forms = $forms->whereIn($col, $vals);  		} -		$verb = $verbs->random(); +		$form = $forms->random();  		$log = new RandomLog();  		$log->request = json_encode(Input::get()); -		$log->response = $verb->id; +		$log->response = $form->id;  		$log->ip = $_SERVER['REMOTE_ADDR'];  		$log->save(); -		$obj = ['verb' => $verb, 'answers' => $verb->otherParsings()]; +		$obj = ['form' => $form, 'answers' => $form->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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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/RootKind.php b/app/Mode.php index 6c68465..f7739fd 100644 --- a/app/RootKind.php +++ b/app/Mode.php @@ -1,7 +1,7 @@  <?php  /** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present  Camil Staps <info@camilstaps.nl>   *   * 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 @@ -20,10 +20,10 @@ namespace HebrewParseTrainer;  use Illuminate\Database\Eloquent\Model; -class RootKind extends Model { +class Mode extends Model { -    protected $table = 'root_kinds'; +    protected $table = 'modes';      public $timestamps = false; -    protected $fillable = ['strong', 'name']; +    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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@  <?php  /** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present  Camil Staps <info@camilstaps.nl>   *   * 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/RootTranslation.php b/app/RootTranslation.php deleted file mode 100644 index 120dc5c..0000000 --- a/app/RootTranslation.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@  <?php  /** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> + * Luo Parse Trainer - practice Ancient Greek verb forms + * Copyright (C) 2015-present  Camil Staps <info@camilstaps.nl>   *   * 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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015  Camil Staps <info@camilstaps.nl> - * - * 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 <http://www.gnu.org/licenses/>. - */ -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'); -	} - -} | 
