_em->createQuery($dql); $query->setParameters(array('usr_id' => $user->get_id())); $stories = $query->getResult(); foreach ($stories as $key => $story) { try { $story->getRecord()->get_title(); } catch (\Exception_Record_AdapterNotFound $e) { $this->getEntityManager()->remove($story); unset($stories[$key]); } } $this->getEntityManager()->flush(); if ($sort == 'name') { uasort($stories, array('\\Repositories\\StoryWZRepository', 'title_compare')); } return $stories; } public function findByUserAndId(\User_Adapter $user, $id) { $story = $this->find($id); if($story) { try { $story->getRecord()->get_title(); } catch (\Exception_Record_AdapterNotFound $e) { $this->getEntityManager()->remove($story); throw new \Exception_NotFound('Story not found'); } if($story->getUser()->get_id() !== $user->get_id()) { throw new \Exception_Forbidden('You have not access to ths story'); } } else { throw new \Exception_NotFound('Story not found'); } return $story; } protected static function title_compare(\Entities\StoryWZ $a, \Entities\StoryWZ $b) { if ($a->getRecord()->get_title() == $b->getRecord()->get_title()) { return 0; } return ($a->getRecord()->get_title() < $b->getRecord()->get_title()) ? -1 : 1; } public function findUserStory(\User_Adapter $user, \record_adapter $Story) { $story = $this->findOneBy( array( 'usr_id' => $user->get_id(), 'sbas_id' => $Story->get_sbas_id(), 'record_id' => $Story->get_record_id(), ) ); if ($story) { try { $record = $story->getRecord(); } catch (\Exception_Record_AdapterNotFound $e) { $this->getEntityManager()->remove($story); $this->getEntityManager()->flush(); $story = null; } } return $story; } }