5 use DataAccess\IUserRepository
;
6 use DataAccess\DataMapper\IDataMapper
;
7 use Domain\Entities\IUser
;
8 use DataAccess\Queries\IQueryBuilderFactory
;
9 use Services\IFacebookSessionFactory
;
11 //TODO: Implement some sort of caching. Probably OK for now not to worry.
12 class UserRepository
implements IUserRepository
15 private $_queryBuilderFactory;
16 private $_facebookSessionFactory;
18 public function __construct(IDataMapper
$dataMapper, IQueryBuilderFactory
$queryBuilderFactory, IFacebookSessionFactory
$faceBookSessionFactory) {
19 $this->_dataMapper
= $dataMapper;
20 $this->_queryBuilderFactory
= $queryBuilderFactory;
21 $this->_facebookSessionFactory
= $faceBookSessionFactory;
24 public function findById($id) {
25 $queryBuilder = $this->_queryBuilderFactory
->createInstance();
26 $queryBuilder->where('id', '=', "$id");
28 return $this->_dataMapper
->map(
34 public function findRange($id, $limit)
36 return $this->_dataMapper
->findRange(
38 'SELECT * FROM %s WHERE id>=' . $id . ' LIMIT ' . $limit
42 public function findByFacebookId($id) {
43 $queryBuilder = $this->_queryBuilderFactory
->createInstance();
44 $queryBuilder->where('facebook_id', '=', "$id");
46 $results = $this->_dataMapper
->map(
51 return reset($results);
54 public function findByAuthToken($token) {
55 $facebookSession = $this->_facebookSessionFactory
->createInstance($token);
56 $id = $facebookSession->getGraphObject(GraphUser
::className())->getId();
58 return $this->findByFacebookId($id);
61 public function save(IUser
$entity) {
62 $this->_dataMapper
->save($entity);
66 public function remove(IUser
$entity) {