Created
May 19, 2014 17:22
-
-
Save shadowhand/e834c30c42cf1fe7f6ef to your computer and use it in GitHub Desktop.
User repository implements multiple interfaces
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php defined('SYSPATH') OR die('No direct access allowed.'); | |
/** | |
* Ushahidi User Repository | |
* | |
* Also implements registration checks | |
* | |
* @author Ushahidi Team <team@ushahidi.com> | |
* @package Ushahidi\Application | |
* @copyright 2014 Ushahidi | |
* @license https://www.gnu.org/licenses/agpl-3.0.html GNU Affero General Public License Version 3 (AGPL3) | |
*/ | |
use Ushahidi\Entity\User; | |
use Ushahidi\Usecase\User\RegisterRepository; | |
use Ushahidi\Usecase\User\LoginUserRepository; | |
class Ushahidi_Repository_User implements | |
LoginUserRepository, | |
// todo: RegisterUserRepository | |
RegisterRepository | |
{ | |
// LoginUserRepository | |
public function getByUsername($username) | |
{ | |
$query = DB::select('*') | |
->from('users') | |
->where('username', '=', $username) | |
; | |
$result = $query->execute(); | |
return new User($result->current()); | |
} | |
// LoginUserRepository | |
public function getPasswordHashByUsername($username) | |
{ | |
$query = DB::select('password') | |
->from('users') | |
->where('username', '=', $username); | |
$result = $query->execute(); | |
return $result->get('password'); | |
} | |
// RegisterRepository | |
public function isUniqueUsername($username) | |
{ | |
$query = DB::select('id') | |
->from('users') | |
->where('username', '=', $username) | |
; | |
$results = $query->execute(); | |
return (count($results) === 0); | |
} | |
// RegisterRepository | |
public function isUniqueEmail($email) | |
{ | |
$query = DB::select('id') | |
->from('users') | |
->where('email', '=', $email) | |
; | |
$results = $query->execute(); | |
return (count($results) === 0); | |
} | |
// RegisterRepository | |
public function register($email, $username, $password) | |
{ | |
$data = compact('email', 'username', 'password'); | |
$query = DB::insert('users') | |
->columns(array_keys($data)) | |
->values(array_values($data)) | |
; | |
list($userid) = $query->execute(); | |
return $userid; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment