55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | namespace Grav\Plugin\Admin; | ||
|  | 
 | ||
|  | use Grav\Common\Grav; | ||
|  | use Grav\Common\User\Interfaces\UserCollectionInterface; | ||
|  | use Grav\Common\User\Interfaces\UserInterface; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Admin utils class | ||
|  |  * | ||
|  |  * @license MIT | ||
|  |  */ | ||
|  | class Utils | ||
|  | { | ||
|  |     /** | ||
|  |      * Matches an email to a user | ||
|  |      * | ||
|  |      * @param string $email | ||
|  |      * | ||
|  |      * @return UserInterface | ||
|  |      */ | ||
|  |     public static function findUserByEmail(string $email) | ||
|  |     { | ||
|  |         $grav = Grav::instance(); | ||
|  | 
 | ||
|  |         /** @var UserCollectionInterface $users */ | ||
|  |         $users = $grav['accounts']; | ||
|  | 
 | ||
|  |         return $users->find($email, ['email']); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Generates a slug of the given string | ||
|  |      * | ||
|  |      * @param string $str | ||
|  |      * @return string | ||
|  |      */ | ||
|  |     public static function slug(string $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; | ||
|  |     } | ||
|  | } |