Example #1
0
 function __construct(\Sb\Db\Model\UserBook $userBook, $addMode)
 {
     parent::__construct();
     $this->userBook = $userBook;
     $this->lendings = $userBook->getLendings();
     $this->borrowings = $userBook->getBorrowings();
     $this->addMode = $addMode;
 }
Example #2
0
 function __construct($showingConnectedUserBook, \Sb\Db\Model\UserBook $userBook = null)
 {
     parent::__construct();
     if ($userBook) {
         $this->userBook = $userBook;
         $this->book = $userBook->getBook();
         $this->user = $userBook->getUser();
     }
     $this->showingConnectedUserBook = $showingConnectedUserBook;
 }
Example #3
0
 /**
  *
  * @param type $id
  * @return boolean
  */
 public function delete(\Sb\Db\Model\UserBook $userBook)
 {
     $ratingDiff = 0;
     if ($userBook->getRating()) {
         $ratingDiff = -$userBook->getRating();
     }
     $blowOfHeartToRemove = false;
     if ($userBook->getIsBlowOfHeart()) {
         $blowOfHeartToRemove = true;
     }
     $userBook->getBook()->updateAggregateFields($ratingDiff, false, true, false, $blowOfHeartToRemove);
     $userBook->setIs_deleted(true);
     $this->entityManager->persist($userBook->getBook());
     $this->entityManager->persist($userBook);
     $this->entityManager->flush();
     return true;
 }
 function firstLetterFromAuthor(UserBook $userBook)
 {
     return strtoupper(substr($userBook->getBook()->getOrderableContributors(), 0, 1));
 }
 private function isReviewed(UserBook $userBook)
 {
     if ($userBook->getReview()) {
         return true;
     }
 }
Example #6
0
 public function prepareUserBookEvents(UserBook $oldUserBook, UserBookForm $newUserBook)
 {
     $userEvents = array();
     try {
         if ($oldUserBook->getRating() != $newUserBook->getRating()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             $userEvent->setNew_value($newUserBook->getRating());
             $userEvent->setOld_value($oldUserBook->getRating());
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_RATING_CHANGE);
             $userEvents[] = $userEvent;
         }
         if ($oldUserBook->getIsBlowOfHeart() != $newUserBook->getIsBlowOfHeart()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             $userEvent->setNew_value($newUserBook->getIsBlowOfHeart());
             $userEvent->setOld_value($oldUserBook->getIsBlowOfHeart());
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_BLOWOFHEART_CHANGE);
             $userEvents[] = $userEvent;
         }
         if ($oldUserBook->getHyperlink() != $newUserBook->getHyperLink()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             // Removing http:// or https:// from url
             $newHyperlink = str_replace("http://", "", $newUserBook->getHyperLink());
             $newHyperlink = str_replace("https://", "", $newHyperlink);
             $userEvent->setNew_value($newHyperlink);
             $userEvent->setOld_value($oldUserBook->getHyperlink());
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_HYPERLINK_CHANGE);
             $userEvents[] = $userEvent;
         }
         $oldReadingStateId = $oldUserBook->getReadingState() ? $oldUserBook->getReadingState()->getId() : -1;
         if ($oldReadingStateId != $newUserBook->getReadingStateId()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             $userEvent->setNew_value($newUserBook->getReadingStateId());
             $userEvent->setOld_value($oldUserBook->getReadingState() ? $oldUserBook->getReadingState()->getId() : null);
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_READINGSTATE_CHANGE);
             $userEvents[] = $userEvent;
         }
         if ($oldUserBook->getReview() != $newUserBook->getReview()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             $userEvent->setNew_value($newUserBook->getReview());
             $userEvent->setOld_value($oldUserBook->getReview());
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_REVIEW_CHANGE);
             $userEvents[] = $userEvent;
         }
         if ($oldUserBook->getIsWished() != $newUserBook->getIsWished()) {
             $userEvent = new \Sb\Db\Model\UserEvent();
             $userEvent->setItem_id($oldUserBook->getId());
             $userEvent->setUser($oldUserBook->getUser());
             $userEvent->setNew_value($newUserBook->getIsWished());
             $userEvent->setOld_value($oldUserBook->getIsWished());
             $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_WISHEDSTATE_CHANGE);
             $userEvents[] = $userEvent;
         }
     } catch (\Exception $exc) {
         Trace::addItem("Une erreur s'est produite lors de la préparation des événements liés au userbook");
     }
     return $userEvents;
 }
Example #7
0
 private static function isBookValidForSearch(\Sb\Db\Model\UserBook $userBook)
 {
     $book = $userBook->getBook();
     $ret = false;
     $pattern = "/" . self::$searchValue . "/i";
     if ($book) {
         if (preg_match($pattern, $book->getTitle())) {
             \Sb\Trace\Trace::addItem("trouvé => pattern : " . $pattern . " dans :" . $book->getTitle());
             $ret = true;
         }
         if (preg_match($pattern, $book->getOrderableContributors())) {
             \Sb\Trace\Trace::addItem("trouvé => pattern : " . $pattern . " dans :" . $book->getOrderableContributors());
             $ret = true;
         }
     }
     return $ret;
 }
 function isWished(\Sb\Db\Model\UserBook $userBook)
 {
     if ($userBook->getIsWished()) {
         return true;
     }
 }
Example #9
0
 public function setBorrower_userbook(\Sb\Db\Model\UserBook $borrower_userbook)
 {
     $this->borrower_userbook = $borrower_userbook;
     $borrower_userbook->addBorrowing($this);
 }
Example #10
0
 private function isWished(UserBook $userBook)
 {
     if ($userBook->getIsWished()) {
         return true;
     }
 }
Example #11
0
 public static function getStatusPictos(\Sb\Db\Model\UserBook $userBook, $friendLibraryView = false)
 {
     $config = self::getConfig();
     $lendings = $userBook->getLendings();
     $borrowings = $userBook->getBorrowings();
     //        var_dump($lending);
     $isBorrowed = false;
     $isLent = false;
     $isOwned = $userBook->getIsOwned();
     $isWished = $userBook->getIsWished();
     $borrowedOnce = $userBook->getBorrowedOnce();
     $link = \Sb\Helpers\HTTPHelper::Link(\Sb\Entity\Urls::LENDING_EDIT, array("ubid" => $userBook->getId()));
     $borrowerName = "";
     $lenderName = "";
     $lendingStartDate = "";
     $borrowingStartDate = "";
     $oneActiveLending = false;
     $oneActiveBorrowing = false;
     $oneLendingWaitingInactivation = false;
     if ($lendings) {
         $lending = new \Sb\Db\Model\Lending();
         foreach ($lendings as $lending) {
             if ($lending->getState() != \Sb\Lending\Model\LendingState::IN_ACTIVE) {
                 $oneActiveLending = true;
                 $borrowerName = $lending->getBorrower_userbook()->getUser()->getFirstName() . " " . $lending->getBorrower_userbook()->getUser()->getLastName();
                 $lendingStartDate = $lending->getStartDate()->format(__("d/m/Y", "s1b"));
             }
             if ($lending->getState() == \Sb\Lending\Model\LendingState::WAITING_INACTIVATION) {
                 $oneLendingWaitingInactivation = true;
             }
         }
     }
     if ($borrowings) {
         $borrowing = new \Sb\Db\Model\Lending();
         foreach ($borrowings as $borrowing) {
             if ($borrowing->getState() != \Sb\Lending\Model\LendingState::IN_ACTIVE) {
                 $oneActiveBorrowing = true;
                 if ($borrowing->getUserbook()) {
                     $lenderName = $borrowing->getUserbook()->getUser()->getFirstName() . " " . $borrowing->getUserBook()->getUser()->getLastName();
                 } elseif ($borrowing->getGuest()) {
                     $lenderName = sprintf("%s (invité)", $borrowing->getGuest()->getName());
                 }
                 $borrowingStartDate = $borrowing->getStartDate()->format(__("d/m/Y", "s1b"));
             }
             //                if ($borrowing->getState() == \Sb\Lending\Model\LendingState::WAITING_INACTIVATION) {
             //                    $oneLendingWaitingInactivation = true;
             //                }
         }
     }
     // Y'a t'il un prêt en cours pour ce livre ?
     if ($oneActiveLending) {
         $editLendingInfo = sprintf("Prêté à %s depuis le %s", $borrowerName, $lendingStartDate);
         $isLent = true;
     } elseif ($oneActiveBorrowing) {
         $editLendingInfo = sprintf("Emprunté à %s depuis le %s", $lenderName, $borrowingStartDate);
         $isBorrowed = true;
     } else {
         $editLendingInfo = __("Prétez ce livre", "s1b");
     }
     $pictos = "";
     if ($isOwned) {
         $pictos .= \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_OWNED);
     }
     if ($isWished) {
         $pictos .= \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_WISHED);
     }
     if ($isLent) {
         if ($friendLibraryView) {
             $pictos .= \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_LENT);
         } else {
             $pictos .= sprintf("<a href=\"%s\" title=\"%s\">%s</a>", $link, $editLendingInfo, \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_LENT));
         }
     }
     if ($isBorrowed) {
         if ($friendLibraryView) {
             $pictos .= \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_BORROWED);
         } else {
             $pictos .= sprintf("<a href=\"%s\" title=\"%s\">%s</a>", $link, $editLendingInfo, \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_BORROWED));
         }
     }
     if (!$friendLibraryView) {
         if ($isOwned && !$isLent && !$isBorrowed && !$isWished) {
             if ($friendLibraryView) {
                 $pictos .= \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_LENDING);
             } else {
                 $pictos .= sprintf("<a href=\"%s\" title=\"%s\">%s</a>", $link, $editLendingInfo, \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_LENDING));
             }
         }
     }
     if ($oneLendingWaitingInactivation) {
         $pictos .= sprintf("<a href=\"%s\" title=\"%s\">%s</a>", $link, $editLendingInfo, \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_RETURN_TO_VALIDATE));
     }
     //        if (!$isBorrowed && $borrowedOnce)
     //            $pictos.=sprintf("<span title=\"%s\">%s</span>", __("Ce livre a fait l'objet d'un emprunt dans le passé.", "s1b"), \Sb\Helpers\BooksHelper::getStatusPicto(\Sb\Helpers\BooksHelper::PICTO_BORROWED_ONCE));
     return $pictos;
 }
Example #12
0
 /**
  * Add or update a chronicle based on a userbook review
  *
  * @param \Sb\Db\Model\UserBook $userBook
  * @param unknown $groupId
  */
 public function addOrUpdateFromUserBook(\Sb\Db\Model\UserBook $userBook)
 {
     $bloggerGroupId = 2;
     /* @var $user \Sb\Db\Model\User */
     $user = $userBook->getUser();
     /* @var $user \Sb\Db\Model\Book */
     $book = $userBook->getBook();
     /* @var $existingChronicle \Sb\Db\Model\Chronicle */
     $chronicle = $this->getChronicle($user->getId(), $book->getId());
     if (is_null($chronicle)) {
         $chronicle = new Chronicle();
     }
     $chronicle->setUser($user);
     $chronicle->setBook($userBook->getBook());
     $chronicle->setCreation_date(new \DateTime());
     $chronicle->setGroup(\Sb\Db\Dao\GroupDao::getInstance()->get($bloggerGroupId));
     $chronicle->setIs_validated(true);
     $chronicle->setLink($userBook->getHyperlink() ? 'http://' . $userBook->getHyperlink() : '');
     $chronicle->setLink_type(ChronicleLinkType::URL);
     $chronicle->setText($userBook->getReview());
     $chronicle->setTitle($book->getTitle());
     $chronicle->setType_id(ChronicleType::BOOK_CHRONICLE);
     $chronicle->setKeywords($book->getTitle() . ', ' . $book->getOrderableContributors() . ', ' . $book->getPublisher()->getName());
     $tags = $userBook->getTags();
     if (count($tags) > 0) {
         $chronicle->setTag($userBook->getTags()->first());
     }
     $this->getDao()->add($chronicle);
 }
 private function IsBorrowable(UserBook $userBook)
 {
     // test if user owns the book
     if (!$userBook->getIsOwned()) {
         return false;
     }
     // test if books is not lent
     $activeLending = $userBook->getActiveLending();
     if ($activeLending) {
         return false;
     }
     return true;
 }
 private function addUserBook($bookId, \Sb\Context\Model\Context $context)
 {
     $userBook = new \Sb\Db\Model\UserBook();
     $userBook->setUserId($context->getConnectedUser()->getId());
     $userBook->setBookId($bookId);
     $userBook->setIsOwned(true);
     $userBookDao = \Sb\Db\Dao\UserBookDao::getInstance();
     $returnId = $userBookDao->Add($userBook);
     if ($returnId) {
         \Sb\Trace\Trace::addItem("Le livre a été ajouté à la biblio correctement.");
     } else {
         \Sb\Trace\Trace::addItem("KO : Le livre n'a pas été ajouté à la biblio.");
     }
     return $returnId;
 }
Example #15
0
 private function isNotDeleted(\Sb\Db\Model\UserBook $userBook)
 {
     return !$userBook->getIs_deleted();
 }
Example #16
0
 private function isReviewd(\Sb\Db\Model\UserBook $userBook)
 {
     if ($userBook->getReview()) {
         return true;
     }
 }
 public function submitAction()
 {
     try {
         $globalContext = new \Sb\Context\Model\Context();
         if ($_REQUEST['LendingType'] == "NEW") {
             $userBookId = $_POST['ubid'];
             // getting userbook lent
             $userBook = UserBookDao::getInstance()->get($userBookId);
             $userBook->setLentOnce(true);
             // getting borrower userbook (new one)
             // checking if borrower alreday have the book
             $borrowerId = $_POST['BorrowerId'];
             $userBookBorrower = UserBookDao::getInstance()->getByBookIdAndUserId($borrowerId, $userBook->getBook()->getId());
             // if not creating a new one
             if (!$userBookBorrower) {
                 $userBookBorrower = new UserBook();
                 $userBookBorrower->setCreationDate(new \DateTime());
                 $userBookBorrower->setLastModificationDate(new \DateTime());
                 $userBookBorrower->setBook($userBook->getBook());
                 $borrower = UserDao::getInstance()->get($borrowerId);
                 $userBookBorrower->setUser($borrower);
             }
             $userBookBorrower->setIs_deleted(false);
             // set is_deleted to false in case the borrower already had the book but deleted it in the past
             $userBookBorrower->setBorrowedOnce(true);
             // creating lending
             $lending = new Lending();
             $lending->setUserbook($userBook);
             $lending->setBorrower_userbook($userBookBorrower);
             $lending->setStartDate(new \DateTime());
             $lending->setCreationDate(new \DateTime());
             $lending->setLastModificationDate(new \DateTime());
             $lending->setState(LendingState::ACTIV);
             if (LendingDao::getInstance()->add($lending)) {
                 Trace::addItem("Lending créé avec succès.");
                 Flash::addItem(__("Les informations de prêt ont bien été mises à jour.", "s1b"));
                 try {
                     $userEvent = new UserEvent();
                     $userEvent->setNew_value($lending->getId());
                     $userEvent->setType_id(EventTypes::USER_LEND_USERBOOK);
                     $userEvent->setUser($globalContext->getConnectedUser());
                     UserEventDao::getInstance()->add($userEvent);
                 } catch (Exception $exc) {
                     Trace::addItem("erreur lors de l'ajout de l'évènement suite au prêt : " . $exc->getMessages());
                 }
             }
         } else {
             // editing a lending -> ending it
             $lendingId = $_POST["LendingId"];
             $lending = LendingDao::getInstance()->get($lendingId);
             if ($lending) {
                 // Testing if the user editing the lending is either the lender or the borrower
                 $canEditLending = false;
                 if ($lending->getUserbook() && $lending->getUserbook()->getUser()->getId() == $globalContext->getConnectedUser()->getId()) {
                     $canEditLending = true;
                 }
                 if ($lending->getBorrower_userbook() && $lending->getBorrower_userbook()->getUser()->getId() == $globalContext->getConnectedUser()->getId()) {
                     $canEditLending = true;
                 }
                 if ($canEditLending) {
                     $lending->setEndDate(new \DateTime());
                     // End date set to today
                     $userIsLender = $lending->getUserbook() && $lending->getUserbook()->getUser()->getId() == $globalContext->getConnectedUser()->getId();
                     $userIsBorrower = $lending->getBorrower_userbook() && $lending->getBorrower_userbook()->getUser()->getId() == $globalContext->getConnectedUser()->getId();
                     $isBorrowedToGuest = $lending->getGuest();
                     if ($userIsLender) {
                         $lending->setState(LendingState::IN_ACTIVE);
                         // user is the lender, State set to IN_ACTIVE
                     } elseif ($userIsBorrower) {
                         if (!$isBorrowedToGuest) {
                             $lending->setState(LendingState::WAITING_INACTIVATION);
                         } else {
                             $lending->setState(LendingState::IN_ACTIVE);
                         }
                         // user is the borrower but is borrowed to a guest, State set to IN_ACTIVE
                     }
                     $lending->setLastModificationDate(new \DateTime());
                     if (LendingDao::getInstance()->update($lending)) {
                         // Send email to owner to remind him that he needs to validate the lending end
                         if ($userIsBorrower && !$isBorrowedToGuest) {
                             MailSvc::getInstance()->send($lending->getUserbook()->getUser()->getEmail(), __("Prêt en attente de retour de validation", "s1b"), $this->emailReturnValidationRequiredBody($lending->getUserbook()->getBook()->getTitle(), $lending->getBorrower_userbook()->getUser()->getUserName()));
                         }
                         Trace::addItem("Mise à jour (FIN) du lending correctement.");
                         if ($userIsBorrower && !$isBorrowedToGuest) {
                             Flash::addItem(__("Les informations de prêt ont bien été mises à jour mais le retour doit être validé par le prêteur.", "share1book"));
                         } else {
                             Flash::addItem(__("Les informations de prêt ont bien été mises à jour.", "s1b"));
                         }
                     }
                 }
             }
         }
         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");
     }
 }
Example #18
0
 private function sort(UserBook $userBook1, UserBook $userBook2)
 {
     return $userBook1->getLastModificationDate() < $userBook2->getLastModificationDate();
 }
Example #19
0
 private function getBookTitle(UserBook $userbook)
 {
     return $userbook->getBook()->getTitle();
 }
Example #20
0
 function __construct(UserBook $userbook)
 {
     parent::__construct();
     $this->book = $userbook->getBook();
     $this->userbook = $userbook;
 }
 public function getActiveGiftRelated()
 {
     $this->__load();
     return parent::getActiveGiftRelated();
 }