/** * Verify password change link * @param $key * @param bool|false $returnUser * @return bool|User|string * @throws UsersException */ public static function verify($key, $returnUser = false) { $db = DB::getInstance(Users::getDB()); $data = $db->fetchRow('SELECT * FROM `user_recover` WHERE `recover`=?', [$key]); if (empty($data)) { throw new UsersException(self::RECOVER_INVALID); } if ($data['used']) { throw new UsersException(self::RECOVER_USED); } $date = $data['date_requested']; $date = explode(' ', $date); $day = explode('-', $date[0]); $time = explode(':', $date[1]); $day1 = mktime($time[0], $time[1], $time[2], $day[1], $day[2], $day[0]); if ($day1 and time() - $day1 > 3600 * Users::getRecoverTTL()) { throw new UsersException(self::RECOVER_OUTDATED); } return $returnUser ? User::getById($data['user']) : true; }