Skip to content

Instantly share code, notes, and snippets.

@shadowhand
Created May 19, 2014 17:22
Show Gist options
  • Save shadowhand/e834c30c42cf1fe7f6ef to your computer and use it in GitHub Desktop.
Save shadowhand/e834c30c42cf1fe7f6ef to your computer and use it in GitHub Desktop.
User repository implements multiple interfaces
<?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