| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | namespace Grav\Plugin\Admin; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Grav\Common\Grav; | 
					
						
							|  |  |  | use Grav\Common\User\User; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Admin utils class | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @license MIT | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class Utils | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Matches an email to a user | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-11-07 09:54:10 -07:00
										 |  |  |      * @param $email | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  |      * @return User | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-07-07 18:53:37 +02:00
										 |  |  |     public static function findUserByEmail($email) | 
					
						
							| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         $account_dir = Grav::instance()['locator']->findResource('account://'); | 
					
						
							| 
									
										
										
										
											2018-05-09 12:24:01 +03:00
										 |  |  |         $files       = array_diff(scandir($account_dir, SCANDIR_SORT_ASCENDING), ['.', '..']); | 
					
						
							| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         foreach ($files as $file) { | 
					
						
							|  |  |  |             if (strpos($file, '.yaml') !== false) { | 
					
						
							|  |  |  |                 $user = User::load(trim(substr($file, 0, -5))); | 
					
						
							| 
									
										
										
										
											2018-05-09 12:24:01 +03:00
										 |  |  |                 if ($user['email'] === $email) { | 
					
						
							| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  |                     return $user; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // If a User with the provided email cannot be found, then load user with that email as the username
 | 
					
						
							|  |  |  |         return User::load($email); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-05-16 17:31:57 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Generates a slug of the given string | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $str | 
					
						
							|  |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function slug($str) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (function_exists('transliterator_transliterate')) { | 
					
						
							|  |  |  |             $str = transliterator_transliterate('Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove;', $str); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $str = strtolower($str); | 
					
						
							|  |  |  |         $str = preg_replace('/[-\s]+/', '-', $str); | 
					
						
							|  |  |  |         $str = preg_replace('/[^a-z0-9-]/i', '', $str); | 
					
						
							|  |  |  |         $str = trim($str, '-'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $str; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-07-07 18:47:48 +02:00
										 |  |  | } |