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;
 }
Example #2
0
 /**
  * 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");
     }
 }
Example #3
0
 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();
 }
Example #7
0
 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");
     }
 }
Example #8
0
 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;
     }
 }
Example #12
0
 /**
  * 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");
     }
 }
Example #15
0
 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");
     }
 }