public function editAction()
 {
     try {
         $globalContext = new \Sb\Context\Model\Context();
         if ($globalContext->getIsShowingFriendLibrary()) {
             Flash::addItem(__("You cannot edit a lending from a friend's library"));
             HTTPHelper::redirectToHome();
         }
         $userBookId = $_GET['ubid'];
         $userBook = UserBookDao::getInstance()->get($userBookId);
         if ($userBook) {
             // Check user is user book owner
             if ($globalContext->getConnectedUser()->getId() != $userBook->getUser()->getId()) {
                 Flash::addItem(__("Le livre que vous souhaitez éditer ne correspond pas à l'utilisateur connecté.", "share1book"));
                 HTTPHelper::redirectToLibrary();
             }
             $book = $userBook->getBook();
             $bookView = new BookView($book, false, false, false);
             $this->view->book = $bookView->get();
             $lendingView = new LendingView($userBook, $globalContext->getConnectedUser()->getId());
             $this->view->bookForm = $lendingView->get();
             $buttonsBar = new ButtonsBar(false);
             $this->view->buttonsBar = $buttonsBar->get();
         } else {
             Flash::addItem("Le livre que vous souhaitez éditer n'existe pas.");
             HTTPHelper::redirectToLibrary();
         }
     } catch (\Exception $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         $this->forward("error", "error", "default");
     }
 }
 public function borrowFromFriendsAction()
 {
     try {
         $globalContext = new \Sb\Context\Model\Context();
         $bookIdInIQS = ArrayHelper::getSafeFromArray($_GET, "bid", null);
         if ($bookIdInIQS) {
             $book = BookDao::getInstance()->get($bookIdInIQS);
         } else {
             // Get Book to add from cache
             $book = ZendFileCache::getInstance()->load(Constants::BOOK_TO_ADD_PREFIX . session_id());
         }
         if ($book) {
             $userBookInDb = UserBookDao::getInstance()->getByBookIdAndUserId($globalContext->getConnectedUser()->getId(), $book->getId());
             if ($userBookInDb && !$userBookInDb->getIs_deleted()) {
                 Flash::addItem(__("Vous avez déjà ce livre dans votre bibliothèque.", "s1b"));
                 HTTPHelper::redirectToLibrary();
             } else {
                 // Checking if a friend has this book in his library
                 $userBookDao = UserBookDao::getInstance();
                 $user = $globalContext->getConnectedUser();
                 $friends = $user->getAcceptedFriends();
                 if ($friends) {
                     $userBooks = $userBookDao->getBookInFriendsUserBook($book->getId(), $globalContext->getConnectedUser()->getId());
                     if ($userBooks) {
                         $this->view->friendUserBooks = array_filter($userBooks, array(&$this, "IsBorrowable"));
                     }
                 }
                 $bookView = new \Sb\View\Book($book, false, false, true, null, null, null, false);
                 $this->view->book = $bookView->get();
             }
         } else {
             HTTPHelper::redirectToHome();
         }
     } catch (\Exception $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         $this->forward("error", "error", "default");
     }
 }
 public function displayAddingChoiceAction()
 {
     try {
         $globalContext = new \Sb\Context\Model\Context();
         if ($globalContext->getIsShowingFriendLibrary()) {
             Flash::addItem(__("Vous ne pouvez pas ajouter un livre à la bibliothèque d'un ami.", "s1b"));
         }
         // Récupération du Book depuis le cache
         $book = ZendFileCache::getInstance()->load(Constants::BOOK_TO_ADD_PREFIX . session_id());
         // If id is known, getting the book from db to have all associated members and userbooks to show the potential reviews
         $booksAlsoLiked = null;
         $booksWithSameTags = null;
         $reviewdUserBooks = null;
         if ($book->getId()) {
             $book = BookDao::getInstance()->get($book->getId());
             $bookPage = BookPageSvc::getInstance()->get($book->getId());
             $booksAlsoLiked = $bookPage->getBooksAlsoLiked();
             $booksWithSameTags = $bookPage->getBooksWithSameTags();
             $reviewdUserBooks = $bookPage->getReviewedUserBooks();
         }
         $bookView = new BookView($book, true, true, true, $booksAlsoLiked, $booksWithSameTags, $reviewdUserBooks);
         $this->view->book = $bookView->get();
         $buttonsBar = new ButtonsBar(false);
         $this->view->buttonsBar = $buttonsBar->get();
         $this->view->referer = HTTPHelper::getReferer();
     } catch (\Exception $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         $this->forward("error", "error", "default");
     }
 }