_dataMapper = $dataMapper; $this->_queryBuilderFactory = $queryBuilderFactory; $this->_facebookSessionFactory = $faceBookSessionFactory; } public function findById($id) { $queryBuilder = $this->_queryBuilderFactory->createInstance(); $queryBuilder->where('id', '=', $id); $results = $this->_dataMapper->map( 'User', $queryBuilder ); return reset($results); } public function findAll() { $queryBuilder = $this->_queryBuilderFactory->createInstance(); $queryBuilder->where('id', '>', 0); return $this->_dataMapper->map( 'User', $queryBuilder ); } public function findRange($id, $limit) { return $this->_dataMapper->findRange( 'User', 'SELECT * FROM %s WHERE id>=' . $id . ' LIMIT ' . $limit ); } public function findByFacebookId($id) { $queryBuilder = $this->_queryBuilderFactory->createInstance(); $queryBuilder->where('facebook_id', '=', "$id"); $results = $this->_dataMapper->map( 'User', $queryBuilder ); return reset($results); } public function findByAuthToken($token) { $facebookSession = $this->_facebookSessionFactory->createInstance($token); $facebookRequest = (new FacebookRequest($facebookSession, 'GET', '/me?fields=hometown,first_name,last_name'))->execute(); $id = $facebookRequest->getGraphObject(GraphUser::className())->getId(); return $this->findByFacebookId($id); } public function save(IUser $entity) { $this->_dataMapper->save($entity); } //TODO: Implement public function remove(IUser $entity) { ; } }