function __construct(\Sb\Db\Model\UserBook $userBook, $addMode) { parent::__construct(); $this->userBook = $userBook; $this->lendings = $userBook->getLendings(); $this->borrowings = $userBook->getBorrowings(); $this->addMode = $addMode; }
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; }
/** * * @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; } }
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; }
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; } }
public function setBorrower_userbook(\Sb\Db\Model\UserBook $borrower_userbook) { $this->borrower_userbook = $borrower_userbook; $borrower_userbook->addBorrowing($this); }
private function isWished(UserBook $userBook) { if ($userBook->getIsWished()) { return true; } }
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; }
/** * 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; }
private function isNotDeleted(\Sb\Db\Model\UserBook $userBook) { return !$userBook->getIs_deleted(); }
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"); } }
private function sort(UserBook $userBook1, UserBook $userBook2) { return $userBook1->getLastModificationDate() < $userBook2->getLastModificationDate(); }
private function getBookTitle(UserBook $userbook) { return $userbook->getBook()->getTitle(); }
function __construct(UserBook $userbook) { parent::__construct(); $this->book = $userbook->getBook(); $this->userbook = $userbook; }
public function getActiveGiftRelated() { $this->__load(); return parent::getActiveGiftRelated(); }