| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Attachment.php | 
					
						
							|  |  |  |  * Copyright (C) 2016 thegrumpydictator@gmail.com | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This software may be modified and distributed under the terms | 
					
						
							|  |  |  |  * of the MIT license.  See the LICENSE file for details. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-05 12:08:25 +01:00
										 |  |  | declare(strict_types = 1); | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Models; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-09 15:53:11 +01:00
										 |  |  | use Auth; | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  | use Crypt; | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | use Illuminate\Database\Eloquent\Model; | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  | use Illuminate\Database\Eloquent\Relations\BelongsTo; | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\Relations\MorphTo; | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | use Illuminate\Database\Eloquent\SoftDeletes; | 
					
						
							| 
									
										
										
										
											2016-01-09 15:53:11 +01:00
										 |  |  | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2016-01-01 21:49:27 +01:00
										 |  |  |  * FireflyIII\Models\Attachment | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2016-01-28 22:06:16 +01:00
										 |  |  |  * @property integer               $id | 
					
						
							|  |  |  |  * @property \Carbon\Carbon        $created_at | 
					
						
							|  |  |  |  * @property \Carbon\Carbon        $updated_at | 
					
						
							|  |  |  |  * @property string                $deleted_at | 
					
						
							|  |  |  |  * @property integer               $attachable_id | 
					
						
							|  |  |  |  * @property string                $attachable_type | 
					
						
							|  |  |  |  * @property integer               $user_id | 
					
						
							|  |  |  |  * @property string                $md5 | 
					
						
							|  |  |  |  * @property string                $filename | 
					
						
							|  |  |  |  * @property string                $title | 
					
						
							|  |  |  |  * @property string                $description | 
					
						
							|  |  |  |  * @property string                $notes | 
					
						
							|  |  |  |  * @property string                $mime | 
					
						
							|  |  |  |  * @property integer               $size | 
					
						
							|  |  |  |  * @property boolean               $uploaded | 
					
						
							|  |  |  |  * @property-read Attachment       $attachable | 
					
						
							|  |  |  |  * @property-read \FireflyIII\User $user | 
					
						
							| 
									
										
										
										
											2016-03-12 07:36:23 +01:00
										 |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereId($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereCreatedAt($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereUpdatedAt($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereDeletedAt($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereAttachableId($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereAttachableType($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereUserId($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereMd5($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereFilename($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereTitle($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereDescription($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereNotes($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereMime($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereSize($value) | 
					
						
							|  |  |  |  * @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Attachment whereUploaded($value) | 
					
						
							|  |  |  |  * @mixin \Eloquent | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | class Attachment extends Model | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     use SoftDeletes; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     protected $fillable = ['attachable_id', 'attachable_type', 'user_id', 'md5', 'filename', 'mime', 'title', 'notes', 'description', 'size', 'uploaded']; | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param Attachment $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Attachment | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function routeBinder(Attachment $value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (Auth::check()) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if ($value->user_id == Auth::user()->id) { | 
					
						
							|  |  |  |                 return $value; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         throw new NotFoundHttpException; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get all of the owning imageable models. | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return MorphTo | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function attachable(): MorphTo | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         return $this->morphTo(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |      * Returns the expected filename for this attachment. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     public function fileName(): string | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |         return sprintf('at-%s.data', strval($this->id)); | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return null|string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     public function getDescriptionAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         if (is_null($value)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return Crypt::decrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |      * @param $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return null|string | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     public function getFilenameAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |         if (is_null($value)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return Crypt::decrypt($value); | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return null|string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getMimeAttribute($value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (is_null($value)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return Crypt::decrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return null|string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     public function getNotesAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         if (is_null($value)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return Crypt::decrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return null|string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     public function getTitleAttribute($value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         if (is_null($value)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return Crypt::decrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string $value | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function setDescriptionAttribute(string $value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->attributes['description'] = Crypt::encrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |      * @param string $value | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function setFilenameAttribute(string $value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |         $this->attributes['filename'] = Crypt::encrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @param string $value | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function setMimeAttribute(string $value) | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->attributes['mime'] = Crypt::encrypt($value); | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string $value | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function setNotesAttribute(string $value) | 
					
						
							| 
									
										
										
										
											2015-07-19 09:37:28 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->attributes['notes'] = Crypt::encrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-15 17:38:09 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |      * @param string $value | 
					
						
							| 
									
										
										
										
											2016-01-15 17:38:09 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function setTitleAttribute(string $value) | 
					
						
							| 
									
										
										
										
											2016-01-09 15:53:11 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |         $this->attributes['title'] = Crypt::encrypt($value); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-01-09 15:53:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |      * @return BelongsTo | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-06 09:27:45 +02:00
										 |  |  |     public function user(): BelongsTo | 
					
						
							| 
									
										
										
										
											2016-02-23 06:54:51 +01:00
										 |  |  |     { | 
					
						
							|  |  |  |         return $this->belongsTo('FireflyIII\User'); | 
					
						
							| 
									
										
										
										
											2016-01-09 15:53:11 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 09:38:44 +02:00
										 |  |  | } |