public function disableAction() { $dest = HTTPHelper::getReferer() ? HTTPHelper::getReferer() : HTTPHelper::Link(); $id = $this->_getParam('ubgid', -1); if ($id > 0) { // Getting the userbook gift item $userbookGift = UserBookGiftDao::getInstance()->get($id); if ($userbookGift) { // Checking if the connected user is the offerer $globalContext = new \Sb\Context\Model\Context(); $connectedUser = $globalContext->getConnectedUser(); if ($userbookGift->getOfferer()->getId() == $connectedUser->getId()) { $userbookGift->setIs_active(false); $userbookGift->setLast_modification_date(new \DateTime()); if (UserBookGiftDao::getInstance()->update($userbookGift)) { Flash::addItem(__("L'option d'achat a été annulée correctement.", "s1b")); $this->_redirect($dest); exit; } } } } Flash::addItem(__("une erreur s'est produite lors de l'anulation de l'option d'achat.", "s1b")); $this->_redirect($dest); exit; }
/** * Homepage controller * @global type $globalContext */ public function indexAction() { try { $globalContext = new \Sb\Context\Model\Context(); $config = new Sb\Config\Model\Config(); $this->view->placeholder('footer')->append("<script type=\"text/javascript\" src=\"" . BASE_URL . 'Resources/js/pressReviews.js?v=' . VERSION . "\"></script>"); $this->view->placeholder('footer')->append("<script type=\"text/javascript\" src=\"" . BASE_URL . 'Resources/js/newsReader.js?v=' . VERSION . "\"></script>"); $this->view->placeholder('footer')->append("<script type=\"text/javascript\" src=\"" . BASE_URL . 'Resources/js/content.js?v=' . VERSION . "\"></script>"); $this->view->tagTitle = sprintf(__("%s : livre et littérature - tops | coups de cœur | critiques", "s1b"), \Sb\Entity\Constants::SITENAME); $this->view->metaDescription = __("Créez votre bibliothèque, partagez vos livres et coups de cœur avec la communauté de lecteurs et offrez le bon livre sans risque de doublon", "s1b"); $this->view->metaKeywords = "BD|bibliotheque|commentaires|communaute|lecteurs|critiques|livres|emprunt|littérature|livre|notice|partage|policier|polar|prêt|recommandation|roman|thriller"; $this->view->subscribeLink = HTTPHelper::Link(Urls::SUBSCRIBE); if ($config->getIsProduction()) { $facebookFrame = new FacebookFrame(); $this->view->faceBookFrame = $facebookFrame->get(); $ad = new Ad("user_login", "0457389056"); $this->view->ad = $ad->get(); $twitter = new TwitterWidget(TwitterSvc::getInstance($config)); $this->view->twitter = $twitter->get(); $googlePlus = new GooglePlus(); $this->view->googlePlus = $googlePlus->get(); } $this->view->placeholder('footer')->append("<script src=\"" . $globalContext->getBaseUrl() . 'Resources/js/simple-carousel/simple.carousel.js' . "\"></script>"); $this->view->placeholder('footer')->append("<script>\$(function() {initCarousel('carousel-items', 980, 340)});</script>"); // Getting wish list search widget $wishListSearchWidget = new WishListSearchWidget(); $this->view->wishListSearchWidget = $wishListSearchWidget->get(); // Set chronicles (last one, last from any groups except bloggers and bookstore, last from bloggers, last from bookstores) $this->setViewChronicles(); // Getting last rated books cover flip $this->view->placeholder('footer')->append("<script src=\"" . $globalContext->getBaseUrl() . 'Resources/js/waterwheel-carousel/jquery.waterwheelCarousel.min.js' . "\"></script>\n"); $this->view->placeholder('footer')->append("<script>\$(function () {initCoverFlip('lastRatedBooks', 30)});</script>\n"); $lastRatedBooks = BookSvc::getInstance()->getLastRatedBookForHomePage(); $lastRatedCoverFlip = new BookCoverFlip($lastRatedBooks, __("Derniers livres notés", "s1b"), "lastRatedBooks", ""); $this->view->lastRatedCoverFlip = $lastRatedCoverFlip->get(); // // Get last reviews // $lastReviews = UserEventSvc::getInstance()->getLastEventsOfType(EventTypes::USERBOOK_REVIEW_CHANGE); // $lastReviewsView = new LastReviews($lastReviews, __("Dernières critiques postées", "s1b")); // $this->view->lastReviews = $lastReviewsView->get(); // Press reviews subscription widget $pressReviewsSubscriptionWidget = new PressReviewsSubscriptionWidget(); $this->view->pressReviewsSubscriptionWidget = $pressReviewsSubscriptionWidget->get(); // Newsreader $pressReviews = $this->getNewsReaderPressReviews(); if ($pressReviews) { $newsReader = new NewsReader($pressReviews); $this->view->newsReader = $newsReader->get(); } } 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 submitRecommandAction() { try { $globalContext = new \Sb\Context\Model\Context(); $user = $globalContext->getConnectedUser(); // Getting params $id = $this->getParam("id"); $title = $this->getParam("title"); $message = $this->getParam("message"); $IdAddressee = $this->getParam("IdAddressee"); // Getting book $book = $this->getBook($id); if (!empty($title) && !empty($message) && !empty($IdAddressee)) { $titleVal = trim($title); $messageVal = trim($message); $recipients = $IdAddressee; $recipientsIds = explode(",", $recipients); foreach ($recipientsIds as $recipientId) { if (trim($recipientId) != "") { $recipient = UserDao::getInstance()->get($recipientId); if ($recipient) { // adding message in db $message = new Message(); $message->setSender($user); $message->setRecipient($recipient); $message->setIs_read(false); $message->setTitle($titleVal); $message->setMessage($messageVal); MessageDao::getInstance()->add($message); // Sending email if user authorized it $userSetting = $recipient->getSetting(); if ($userSetting->getEmailMe() == 'Yes') { $body = MailHelper::newMessageArrivedBody($user->getUserName()); MailSvc::getInstance()->send($recipient->getEmail(), sprintf(__("%s vous recommande %s ", "s1b"), $user->getUserName(), $book->getTitle()), $body); } } } } Flash::addItem(__("Message envoyé.", "s1b")); HTTPHelper::redirect(Urls::USER_HOME); } else { Flash::addItem(__("Au moins l'un des champs n'est pas rempli", "s1b")); HTTPHelper::redirect(Urls::USER_MAILBOX_RECOMMAND, array("message" => $message, "id" => $id)); } } 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 addUserbookCommentAction() { $this->view->setEncoding('utf-8'); $globalContext = new \Sb\Context\Model\Context(); $this->view->errorMessage = __("Une erreur s'est produite et votre commentaire n'a pas été posté correctement.", "s1b"); if ($globalContext->getConnectedUser()) { // Getting params $bookId = $this->_getParam('bookId'); $reviewPageId = $this->_getParam('reviewPageId'); $userBookId = $this->_getParam('ubid'); $commentValue = $this->_getParam('comment'); // Add userbook comment $userbook = UserBookDao::getInstance()->get($userBookId); $comment = new UserbookComment(); $comment->setValue($commentValue); $comment->setCreation_date(new \DateTime()); $comment->setOwner($globalContext->getConnectedUser()); $comment->setUserbook($userbook); // If the adding happens correctly, we forward to the get-reviews-page action if (UserbookCommentDao::getInstance()->add($comment)) { $reviewUser = $userbook->getUser(); // Sends a mail only if connected user is not the userbook owner if ($reviewUser->getId() != $globalContext->getConnectedUser()->getId() && $reviewUser->getSetting()->getEmailMe() == \Sb\Helpers\UserSettingHelper::EMAIL_ME_YES) { // Send a email to the userbook owner $subject = sprintf(__("%s - Un nouveau commentaire sur un de vos livres.", "s1b"), \Sb\Entity\Constants::SITENAME); $body = \Sb\Helpers\MailHelper::newCommentPosted($commentValue, $userbook->getBook()); \Sb\Service\MailSvc::getInstance()->send($reviewUser->getEmail(), $subject, $body); } // Forward to review page action $this->forward("get-reviews-page", "book", "default", array("key" => $bookId, "param" => $reviewPageId, "format" => "html")); } } else { $this->view->errorMessage = __("Vous devez être connecté pour poster un commentaire.", "s1b"); } // Otherwise, we let the message 'KO' get rendered by the view // This message will be intercepted in javascript code to display a coherent flash message }
public function replyAction() { return; try { $globalContext = new \Sb\Context\Model\Context(); $messageId = ArrayHelper::getSafeFromArray($_GET, 'mid', null); $redirect = false; if ($messageId) { $message = MessageDao::getInstance()->get($messageId); $this->view->message = $message; if ($message->getRecipient()->getId() != $globalContext->getConnectedUser()->getId()) { Flash::addItem(__("Vous ne pouvez pas répondre à ce message car il ne vous est pas destiné.", "s1b")); $redirect = true; } } else { Flash::addItem(__("Le message auquel vous tentez de répondre n'existe pas.", "s1b")); $redirect = true; } if ($_POST) { $title = htmlspecialchars($_POST['Title']); $messageContent = htmlspecialchars($_POST['Message']); /* test if form is not empty */ if (!empty($title) && !empty($messageContent)) { // create new message in db $reply = new Message(); $reply->setRecipient($message->getSender()); $replySender = $globalContext->getConnectedUser(); $reply->setSender($replySender); $reply->setDate(new \DateTime()); $reply->setTitle($title); $reply->setMessage($messageContent); $reply->setIs_read(false); MessageDao::getInstance()->add($reply); if ($message->getSender()->getSetting()->getEmailMe() == 'Yes') { // send a email to warn the origianl sender of the email $body = MailHelper::newMessageArrivedBody($replySender->getUserName()); MailSvc::getInstance()->send($message->getSender()->getEmail(), sprintf(__("Un message vous a été envoyé depuis le site %s", "s1b"), Constants::SITENAME), $body); } Flash::addItem(__("Message envoyé.", "s1b")); $redirect = true; } else { Flash::addItem(__("Vous devez renseigné le titre et le contenu du message.", "s1b")); } } if ($redirect) { HTTPHelper::redirect(Urls::USER_MAILBOX); } } 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 isNotMe(User $friend) { $globalContext = new \Sb\Context\Model\Context(); $user = $globalContext->getConnectedUser(); return $friend->getId() != $user->getId(); }
public function wishListAction() { try { $globalContext = new \Sb\Context\Model\Context(); $user = $globalContext->getConnectedUser(); if ($user) { // Get friend list for friend selection form $friends = $user->getAcceptedFriends(); // Order the friends list by firstname asc if ($friends && count($friends) > 0) { usort($friends, array($this, "compareFirstName")); } $this->view->friends = $friends; $this->view->user = $user; } $selectedFriendId = ArrayHelper::getSafeFromArray($_GET, "friendId", null); $selectedFriend = null; if ($selectedFriendId) { $selectedFriend = UserDao::getInstance()->get($selectedFriendId); $this->view->selectedFriend = $selectedFriend; $friendBooks = $selectedFriend->getNotDeletedUserBooks(); $friendWishedBooks = array_filter($friendBooks, array($this, "isWished")); $this->view->friendWishedBooks = $friendWishedBooks; } } 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 get() { $globalContext = new \Sb\Context\Model\Context(); $tplEvent = new \Sb\Templates\Template("userEvents/userEvent"); $friend = $this->userEvent->getUser(); $friendImg = UserHelper::getSmallImageTag($friend); if ($friendImg == "") { $friendImg = UserHelper::getSmallImageTag($friend); } $friendName = $friend->getUserName(); $friendProfileLink = HTTPHelper::Link(Urls::USER_PROFILE, array("uid" => $friend->getId())); $userBookRelated = false; $friendRelated = false; // used for cases of new friend event $additionalContent = ""; $friendId = null; $friendFriendImg = null; $friendFriendProfileLink = null; switch ($this->userEvent->getType_id()) { case EventTypes::USERBOOK_ADD: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a ajouté un livre.", $friendProfileLink, $friendName); $userBookRelated = true; break; case EventTypes::USERBOOK_RATING_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $newRating = $this->userEvent->getNew_value(); $resume = sprintf("<div class=\"ue-rating-label\"><a href=\"%s\" class=\"link\">%s</a> a noté.</div> <div class=\"rating rating-" . $newRating . "\"></div>", $friendProfileLink, $friendName); $userBookRelated = true; break; case EventTypes::USERBOOK_BLOWOFHEART_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $isBoh = $this->userEvent->getNew_value(); $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a supprimé son coup de coeur.", $friendProfileLink, $friendName); if ($isBoh) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a marqué comme coup de coeur.", $friendProfileLink, $friendName); } $userBookRelated = true; break; case EventTypes::USERBOOK_REVIEW_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $oldReview = $this->userEvent->getOld_value(); $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a modifié son commentaire.", $friendProfileLink, $friendName); if ($oldReview == "") { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a ajouté un commentaire.", $friendProfileLink, $friendName); } $additionalContent = StringHelper::tronque(strip_tags($this->userEvent->getNew_value()), 120); $userBookRelated = true; break; case EventTypes::USERBOOK_HYPERLINK_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $oldHyperLink = $this->userEvent->getOld_value(); $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a modifié son lien hypertexte.", $friendProfileLink, $friendName); if ($oldHyperLink == "") { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a ajouté un lien hypertexte.", $friendProfileLink, $friendName); } $hyperLink = "http://" . $this->userEvent->getNew_value(); $truncatedHyperLink = \Sb\Helpers\StringHelper::tronque($hyperLink, 100); $additionalContent = sprintf(__("<a href=\"%s\" target=\"_blank\" class=\"hyperlink link\" >%s</a>", "s1b"), $hyperLink, $truncatedHyperLink); $userBookRelated = true; break; case EventTypes::USERBOOK_READINGSTATE_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $newReadingSateId = $this->userEvent->getNew_value(); switch ($newReadingSateId) { case ReadingStates::NOTREAD: $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a marqué non lu.", $friendProfileLink, $friendName); break; case ReadingStates::READING: $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> lit actuellement.", $friendProfileLink, $friendName); break; case ReadingStates::READ: $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a lu.", $friendProfileLink, $friendName); break; } $userBookRelated = true; break; case EventTypes::USERBOOK_WISHEDSTATE_CHANGE: $userBook = \Sb\Db\Dao\UserBookDao::getInstance()->get($this->userEvent->getItem_id()); $newWishedSateValue = $this->userEvent->getNew_value(); $oldWishedSateValue = $this->userEvent->getOld_value(); if ($newWishedSateValue) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a marqué comme souhaité.", $friendProfileLink, $friendName); } elseif ($oldWishedSateValue) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> ne souhaite plus.", $friendProfileLink, $friendName); } $userBookRelated = true; break; case EventTypes::USER_ADD_FRIEND: $friendNewFriendProfileLink = null; $newFriendId = $this->userEvent->getNew_value(); if ($this->getContext()->getConnectedUser() && $newFriendId == $this->getContext()->getConnectedUser()->getId()) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> est ami avec moi.", $friendProfileLink, $friendName); $friendFriendImg = UserHelper::getXSmallImageTag($this->getContext()->getConnectedUser()); } else { $friendNewFriend = UserDao::getInstance()->get($newFriendId); $friendNewFriendProfileLink = HTTPHelper::Link(Urls::USER_PROFILE, array("uid" => $friendNewFriend->getId())); $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> est ami avec <a class=\"link\" href=\"%s\">%s</a>.", $friendProfileLink, $friendName, $friendNewFriendProfileLink, $friendNewFriend->getUserName()); $friendFriendImg = UserHelper::getXSmallImageTag($friendNewFriend); } $friendId = $newFriendId; $friendFriendProfileLink = $friendNewFriendProfileLink; $friendRelated = true; break; case EventTypes::USER_BORROW_USERBOOK: $lendingId = $this->userEvent->getNew_value(); $lending = LendingDao::getInstance()->get($lendingId); $userBookBorrowed = $lending->getUserBook(); $userBook = $userBookBorrowed; $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a emprunté le livre à %s.", $friendProfileLink, $friendName, $userBookBorrowed->getUser()->getUserName()); if ($this->getContext()->getConnectedUser()) { if ($userBookBorrowed->getUser()->getId() == $this->getContext()->getConnectedUser()->getId()) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> m'a emprunté le livre.", $friendProfileLink, $friendName); } } $userBookRelated = true; break; case EventTypes::USER_LEND_USERBOOK: $lendingId = $this->userEvent->getNew_value(); $lending = LendingDao::getInstance()->get($lendingId); $userBookLended = $lending->getBorrower_UserBook(); $userBook = $userBookLended; $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> a prêté le livre à %s.", $friendProfileLink, $friendName, $userBookLended->getUser()->getUserName()); if ($this->getContext()->getConnectedUser()) { if ($userBookLended->getUser()->getId() == $this->getContext()->getConnectedUser()->getId()) { $resume = sprintf("<a href=\"%s\" class=\"link\">%s</a> m'a prêté le livre.", $friendProfileLink, $friendName); } } $userBookRelated = true; break; default: break; } $creationDate = $this->userEvent->getCreation_date()->format(__("d/m/Y à H:m", "s1b")); $bookImageUrl = null; $bookLink = null; $bookTitle = null; $bookAuthor = null; $bookId = null; $bookImgTag = null; if ($userBookRelated) { $bookImageUrl = $userBook->getBook()->getSmallImageUrl(); $bookImgTag = BookHelper::getSmallImageTag($userBook->getBook(), $this->getContext()->getDefaultImage()); $bookLink = HTTPHelper::Link($userBook->getBook()->getLink()); $bookTitle = $userBook->getBook()->getTitle(); $bookAuthor = $userBook->getBook()->getOrderableContributors(); $bookId = $userBook->getBook()->getId(); } $showAddButton = false; if ($globalContext->getConnectedUser()) { $showAddButton = true; } // Set variables $tplEvent->setVariables(array("friendImg" => $friendImg, "friendName" => $friendName, "resume" => $resume, "bookImageUrl" => $bookImageUrl, "bookImgTag" => $bookImgTag, "friendProfileLink" => $friendProfileLink, "friendId" => $friendId, "bookTitle" => $bookTitle, "bookId" => $bookId, "bookAuthor" => $bookAuthor, "creationDate" => $creationDate, "bookLink" => $bookLink, "additionalContent" => $additionalContent, "userBookRelated" => $userBookRelated, "userFriendRelated" => $friendRelated, "friendFriendImg" => $friendFriendImg, "friendFriendProfileLink" => $friendFriendProfileLink, "showOwner" => $this->showOwner, "showAddButton" => $showAddButton)); return $tplEvent->output(); }
/** * Called when submitting profile settings form */ public function submitSettingsAction() { try { $globalContext = new \Sb\Context\Model\Context(); /* @var $user \Sb\Db\Model\User */ $user = $globalContext->getConnectedUser(); $userSettings = $user->getSetting(); if (!empty($_POST)) { $settings_DisplayProfile = $_POST['settings_DisplayProfile']; $settings_DisplayEmail = $_POST['settings_DisplayEmail']; $settings_SendMessages = $_POST['settings_SendMessages']; $settings_DisplayBirthDay = $_POST['settings_DisplayBirthDay']; $settings_DisplayWishList = $_POST['settings_DisplayWishList']; $settings_AllowFollowers = $_POST['settings_AllowFollowers']; $settings_EmailMe = $_POST['settings_EmailMe']; $settings_AcceptNewsletter = $_POST['settings_AcceptNewsletter'] == 1 ? true : false; $userSettings->setDisplayProfile($settings_DisplayProfile); $userSettings->setDisplayEmail($settings_DisplayEmail); $userSettings->setSendMessages($settings_SendMessages); $userSettings->setDisplayBirthday($settings_DisplayBirthDay); $userSettings->setDisplay_wishlist($settings_DisplayWishList); $userSettings->setAllowFollowers($settings_AllowFollowers); $userSettings->setEmailMe($settings_EmailMe); $userSettings->setAccept_newsletter($settings_AcceptNewsletter); UserSettingDao::getInstance()->update($userSettings); Flash::addItem(__("Vos modifications ont bien été enregistrées", "s1b")); } // Redirect to settings action HTTPHelper::redirect(Urls::USER_PROFILE_SETTINGS); } 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 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"); } }
/** * Post a message on facebook * @param Chronicle $chronicle the chronicle to post on facebook * @return boolean return TRUE if post was succesfull, FALSE otherwise */ private function postOnFacebook(Chronicle $chronicle, $facebookSvc) { try { Trace::addItem("postOnFacebook"); $globalContext = new \Sb\Context\Model\Context(); // Set facebook posts variables using a ChronicleAdapter and a PushedChronicle $chronicleAdapter = new ChronicleAdapter($chronicle); $pushedChronicle = $chronicleAdapter->getAsChronicleViewModelLight(); $facebookMessage = $pushedChronicle->getTitle(); $facebookTitle = sprintf(__("%s vient de poster une chronique sur %s", "s1b"), $globalContext->getConnectedUser()->getFirstName(), Constants::SITENAME); $facebookCaption = $pushedChronicle->getShortenText(); $facebookLink = $pushedChronicle->getDetailLink(); $facebookPicture = $pushedChronicle->getImage(); Trace::addItem("posting {$facebookMessage} with title {$facebookTitle} and caption {$facebookCaption}, link {$facebookLink} and picture {$facebookPicture}"); $post = $facebookSvc->post($facebookMessage, $facebookTitle, $facebookCaption, $facebookLink, $facebookPicture); return $post; } catch (\Exception $e) { Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString())); return false; } }
/** * Show member home page action * @global type $globalContextMe */ public function indexAction() { try { $globalContext = new \Sb\Context\Model\Context(); $globalConfig = new Sb\Config\Model\Config(); /* @var $connectedUser User */ $connectedUser = $globalContext->getConnectedUser(); // Getting friends boh $blowOfHeartFriendsBooks = BookDao::getInstance()->getListBOHFriends($connectedUser->getId()); $this->view->isShowingFriendsBOH = false; if (!$blowOfHeartFriendsBooks || count($blowOfHeartFriendsBooks) < 5) { // Setting class property with array of friend boh books ids to use it in "notInArray" function below $this->blowOfHeartFriendsBooksId = array_map(array(&$this, "getId"), $blowOfHeartFriendsBooks); // Getting all users boh $blowOfHeartBooks = BookSvc::getInstance()->getBOHForUserHomePage(); $blowOfHeartBooks = array_filter($blowOfHeartBooks, array(&$this, "notInArray")); // Merging 2 arrays if ($blowOfHeartFriendsBooks && $blowOfHeartBooks) { $blowOfHeartBooks = array_merge($blowOfHeartFriendsBooks, $blowOfHeartBooks); } $blowOfHeartBooks = array_slice($blowOfHeartBooks, 0, 5); } else { $this->view->isShowingFriendsBOH = true; $blowOfHeartBooks = $blowOfHeartFriendsBooks; } $this->view->blowOfHeartBooks = $blowOfHeartBooks; // Getting friends user events $this->view->userEvents = UserEventDao::getInstance()->getListUserFriendsUserEvents($connectedUser->getId()); // Getting top books $this->view->topsBooks = BookSvc::getInstance()->getTopsUserHomePage(); // Getting last review by friends $lastReviews = UserEventSvc::getInstance()->getFriendsLastEventsOfType($connectedUser->getId(), EventTypes::USERBOOK_REVIEW_CHANGE); $this->view->lastReviews = $lastReviews; $this->view->lastReviewsView = new LastReviews($lastReviews, __("<strong>Dernières critiques postées par vos amis</strong>", "s1b")); // Getting User Reading Widget $allCurrentlyReadingUserBooks = UserBookDao::getInstance()->getCurrentlyReadingsNow($connectedUser->getId()); $userReading = new UserReadingWidget($connectedUser, $allCurrentlyReadingUserBooks, true); // If more than one book as 'being read', we need to set the javascript carousel if (count($allCurrentlyReadingUserBooks) > 1) { $this->view->placeholder('footer')->append("<script src=\"" . $globalContext->getBaseUrl() . 'Resources/js/simple-carousel/simple.carousel.js' . "\"></script>\n"); $this->view->placeholder('footer')->append("<script>\$(function() {initCarousel('carousel-currentreadings', 270, 210)});</script>\n"); } $this->view->userReading = $userReading; // Getting user wished books widget $userWishedBooks = new UserWishedBooksWidget($connectedUser, true); $this->view->userWishedBooks = $userWishedBooks; // Getting wish list search widget $this->view->wishListSearchWidget = new WishListSearchWidget(); // Getting the ad (second paramters is not used anymore) $this->view->ad = new Ad("user_homepage", "6697829998"); // Getting twitter widget $this->view->twitter = new TwitterWidget(TwitterSvc::getInstance($globalConfig)); // Getting facebook frame $this->view->facebookFrame = new FacebookFrame(); // Get create chronicle links widget if ($connectedUser->getIs_partner() && $connectedUser->getGroupusers()) { $createChroniclesLink = new CreateChroniclesLinks($connectedUser->getGroupusers()); $this->view->createChroniclesLinkView = $createChroniclesLink->get(); } } 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"); } }
/** * Remove current connected user (if one) and admin user (id=1) * @param array of User $users * @return array of User */ private function cleanUsersList($users) { $cleanedUsers = array(); $globalContext = new \Sb\Context\Model\Context(); foreach ($users as $user) { if ($globalContext->getConnectedUser() && $globalContext->getConnectedUser()->getId() == $user->getId()) { $this->connectedUSerFound = true; } // Don't add connected user and Admin if ($globalContext->getConnectedUser() && $globalContext->getConnectedUser()->getId() != $user->getId() || !$globalContext->getConnectedUser()) { if ($user->getId() != 1) { $cleanedUsers[] = $user; } } } return $cleanedUsers; }
public function borrowAction() { try { $globalContext = new \Sb\Context\Model\Context(); $idUserBook = $_GET['ubid']; if ($idUserBook) { $userBook = UserBookDao::getInstance()->get($idUserBook); if ($userBook) { $bookId = $userBook->getBook()->getId(); // We check that the userbook we want to bororow is really owned by a friend $userBookCheck = UserBookDao::getInstance()->getBookInFriendsUserBook($bookId, $globalContext->getConnectedUser()->getId()); if ($userBookCheck) { // We check if the book is owned by the user we want to borrow the book from if ($userBook->getIsOwned()) { // We check that the book is not currently lent (no lending or an inactive lending) if (!$userBook->getActiveLending()) { $existingUserBook = UserBookDao::getInstance()->getByBookIdAndUserId($globalContext->getConnectedUser()->getId(), $bookId); // We check that the connect user doesn't already have the book if ($existingUserBook) { // the user already had that book but had deleted it if ($existingUserBook->getIs_deleted()) { $newUserBook = $existingUserBook; $newUserBook->setIs_deleted(false); $newUserBook->setLastModificationDate(new \DateTime()); $newUserBook->setBorrowedOnce(true); $newUserBookPersisted = UserBookDao::getInstance()->update($newUserBook); Flash::addItem(__("Vous aviez déjà ce livre dans votre bibliothèque mais l'aviez supprimé.", "s1b")); } else { Flash::addItem(__("Vous avez déjà ce livre dans votre bibliothèque.", "s1b")); // Redirect to the main library page HTTPHelper::redirectToLibrary(); } } else { // We create a userbook for the connected user $newUserBook = new UserBook(); $newUserBook->setBook($userBook->getBook()); $newUserBook->setCreationDate(new \DateTime()); $newUserBook->setLastModificationDate(new \DateTime()); $newUserBook->setUser($globalContext->getConnectedUser()); $newUserBook->setBorrowedOnce(true); $newUserBookPersisted = UserBookDao::getInstance()->add($newUserBook); } if ($newUserBookPersisted) { // update lent userbook with Lent Once = 1 $userBook->setLentOnce(true); UserBookDao::getInstance()->update($userBook); // Lending line creation $lending = new Lending(); $lending->setUserbook($userBook); $lending->setBorrower_userbook($newUserBook); $lending->setStartDate(new \DateTime()); $lending->setState(LendingState::ACTIV); $lendingId = LendingDao::getInstance()->Add($lending); // if ok : prepare flash message if ($lendingId) { try { $userEvent = new UserEvent(); $userEvent->setNew_value($lending->getId()); $userEvent->setType_id(EventTypes::USER_BORROW_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()); } Flash::addItem(sprintf(__("Le livre %s a été emprunté à %s et ajouté à votre bibliothèque.", "sharebook"), $userBook->getBook()->getTitle(), $userBook->getUser()->getFirstName() . " " . $userBook->getUser()->getLastName())); } } } else { Flash::addItem(__("Ce livre fait l'objet d'un prêt en cours", "s1b")); } } else { Flash::addItem(__("Ce livre n'est pas possédé par l'utilisateur à qui vous tentez d'emprunter ce livre.", "s1b")); } } else { Flash::addItem(__("Vous n'êtes pas amis avec le propriétaire de ce livre.", "s1b")); } } else { Flash::addItem(__("Le livre que vous voulez emprunter n'existe pas dans la base.", "s1b")); } } // Redirect to the main library page 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 warnBadDescriptionAction() { $globalContext = new \Sb\Context\Model\Context(); $bookId = $this->_getParam('bid'); if ($globalContext->getConnectedUser()) { if ($bookId) { $userId = $globalContext->getConnectedUser()->getId(); $mailSvc = MailSvc::getNewInstance(null, $globalContext->getConnectedUser()->getEmail()); $body = "Une description erronée a été signalée pour le livre {$bookId} par l'utilisateur {$userId}"; if ($mailSvc->send(Constants::WEBMASTER_EMAIL, "Signalisation de description erronée", $body)) { $this->view->message = __("L'administrateur du site a été averti. Nous vous remerçions pour votre aide", "s1b"); } else { $this->view->message = __("Le mail n'a pa pu être envoyé.", "s1b"); } } else { $this->view->message = __("Requête incorrecte.", "s1b"); } } else { $this->view->message = __("Vous devez être connecté pour effectuer cette action.", "s1b"); } }