| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * DescriptionContains.php | 
					
						
							| 
									
										
										
										
											2016-04-01 16:44:46 +02:00
										 |  |  |  * Copyright (C) 2016 thegrumpydictator@gmail.com | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This software may be modified and distributed under the terms | 
					
						
							|  |  |  |  * of the MIT license.  See the LICENSE file for details. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  | declare(strict_types = 1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  | namespace FireflyIII\Rules\Triggers; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use FireflyIII\Models\TransactionJournal; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Class DescriptionContains | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package FireflyIII\Rules\Triggers | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-02-17 21:55:00 +01:00
										 |  |  | final class DescriptionContains extends AbstractTrigger implements TriggerInterface | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-02-17 19:07:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-17 18:00:13 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * A trigger is said to "match anything", or match any given transaction, | 
					
						
							|  |  |  |      * when the trigger value is very vague or has no restrictions. Easy examples | 
					
						
							|  |  |  |      * are the "AmountMore"-trigger combined with an amount of 0: any given transaction | 
					
						
							|  |  |  |      * has an amount of more than zero! Other examples are all the "Description"-triggers | 
					
						
							|  |  |  |      * which have hard time handling empty trigger values such as "" or "*" (wild cards). | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * If the user tries to create such a trigger, this method MUST return true so Firefly III | 
					
						
							|  |  |  |      * can stop the storing / updating the trigger. If the trigger is in any way restrictive | 
					
						
							|  |  |  |      * (even if it will still include 99.9% of the users transactions), this method MUST return | 
					
						
							|  |  |  |      * false. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param null $value | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return bool | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function willMatchEverything($value = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!is_null($value)) { | 
					
						
							| 
									
										
										
										
											2016-02-17 21:55:00 +01:00
										 |  |  |             return strval($value) === ''; | 
					
						
							| 
									
										
										
										
											2016-02-17 18:00:13 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-17 19:07:20 +01:00
										 |  |  |      * @param TransactionJournal $journal | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  |      * @return bool | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-04-05 22:00:03 +02:00
										 |  |  |     public function triggered(TransactionJournal $journal): bool | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-17 20:19:44 +01:00
										 |  |  |         $search = strtolower($this->triggerValue); | 
					
						
							| 
									
										
										
										
											2016-02-17 19:07:20 +01:00
										 |  |  |         $source = strtolower($journal->description); | 
					
						
							| 
									
										
										
										
											2016-01-13 07:47:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $strpos = strpos($source, $search); | 
					
						
							|  |  |  |         if (!($strpos === false)) { | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-01-28 21:50:20 +01:00
										 |  |  | } |