public function searchListAction()
 {
     // Check the form validity
     $form = new WishListSearchForm();
     if (!$form->isValid($_GET)) {
         Flash::addItems($form->getFailureMessages());
         HTTPHelper::redirectToReferer();
     } else {
         $searchTerm = $this->_getParam('wishedListSearchTerm', "");
         Trace::addItem($searchTerm);
         $users = UserDao::getInstance()->getListByKeywordAndWishedUserBooks($searchTerm);
         // Remove connected user and admin user
         $cleanedUsers = $this->cleanUsersList($users);
         // Display specific message when connected user found in list
         if ($this->connectedUSerFound) {
             Flash::addItem(__("Si vous cherchez votre liste, c'est raté ;-) La surprise n'en sera que plus grande.", "s1b"));
         }
         if (count($cleanedUsers) == 0) {
             // Getting user without wish list
             $usersWithoutWishList = UserDao::getInstance()->getListByKeyword($searchTerm);
             $cleanedUsersWithoutWishList = $this->cleanUsersList($usersWithoutWishList);
             if (count($cleanedUsersWithoutWishList) != 0) {
                 Flash::addItem(sprintf(__("Aucun utilisateur '%s' n'a créé de liste d'envies ou bien sa liste est privée.", "s1b"), $searchTerm));
             } else {
                 Flash::addItem(__("Aucun utilisateur ne correspond à votre recherche.", "s1b"));
             }
             HTTPHelper::redirectToReferer();
         }
         $this->view->users = $cleanedUsers;
         $this->view->form = $form;
     }
 }
 /**
  * Action called for unsubscription to press reviews
  */
 public function unsubscribeAction()
 {
     try {
         $email = $this->getParam("email", null);
         if (!$email) {
             Flash::addItem(__("Requête invalide", "s1b"));
         } else {
             $email = trim($email);
             /* @var $pressReviewsSubscriber PressReviewsSubscriber */
             $pressReviewsSubscriber = PressReviewsSubscriberDao::getInstance()->getByEmail($email);
             if ($pressReviewsSubscriber) {
                 // Mark the press review subscriber as deleted
                 $pressReviewsSubscriber->setIs_deleted(true);
                 PressReviewsSubscriberDao::getInstance()->update($pressReviewsSubscriber);
                 Flash::addItem(__("Votre désinscription a bien été pris en compte.", "s1b"));
             } else {
                 Flash::addItem(__("Il n'y a pas d'abonné correspondant à l'email fourni.", "s1b"));
             }
         }
         HTTPHelper::redirectToHome();
     } catch (\Exception $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         $this->forward("error", "error", "default");
     }
 }
 public function 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;
 }
 /**
  * Check if a user is connected in session and otherwise set a flash message, persist request url in session and redirect to homepage
  */
 public function checkUserIsConnected()
 {
     if (!$this->getIsConnected()) {
         $_SESSION[\Sb\Entity\SessionKeys::RETURN_URL_AFTER_LOGIN] = $_SERVER["REQUEST_URI"];
         Flash::addItem(__("Vous devez être connecté pour accéder à cette page.", "s1b"));
         HTTPHelper::redirectToHome();
     }
 }
Beispiel #5
0
 public function prepare()
 {
     if ($this->allResults) {
         //Application des options de liste (tri, pagination, search, filering)
         $pageId = null;
         if ($this->listOptions) {
             // Sorting
             if ($this->listOptions->getSorting()) {
                 \Sb\Trace\Trace::addItem("Tri de la liste de livre ");
                 \Sb\Helpers\BooksHelper::sort($this->allResults, $this->listOptions->getSorting());
             }
             // Paging
             if ($this->listOptions->getPaging()) {
                 $pageId = $this->listOptions->getPaging()->getCurrentPageId();
             }
             // Searching
             if ($this->listOptions->getSearch()) {
                 $backedUpBooks = $this->allResults;
                 $tmpRes = \Sb\Helpers\BooksHelper::search($this->allResults, $this->listOptions->getSearch()->getValue());
                 if (!$tmpRes) {
                     \Sb\Flash\Flash::addItem(__("Aucun livre ne correspond à votre recherche.", "s1b"));
                     $this->allResults = $backedUpBooks;
                 }
             }
             // Filtering
             if ($this->listOptions->getFiltering()) {
                 \Sb\Helpers\BooksHelper::filter($this->allResults, $this->listOptions->getFiltering()->getValue(), $this->listOptions->getFiltering()->getType());
             }
         }
         $params = array('itemData' => $this->allResults, 'perPage' => $this->nbResultsPerPage, 'delta' => 8, 'append' => true, 'clearIfVoid' => false, 'urlVar' => 'pagenumber', 'useSessions' => false, 'closeSession' => false, 'mode' => 'Jumping', 'httpMethod' => 'GET');
         $pager = \Sb\Lists\Pager\Pager::factory($params);
         $pageData = $pager->getPageData($pageId);
         $this->pagerLinks = $pager->getLinks($pageId);
         $this->nbItemsTot = $pager->numItems();
         $this->shownResults = $pageData;
         $offSet = $pager->getOffsetByPageId($pageId);
         if ($offSet && count($offSet) >= 2) {
             $this->firstItemIdx = $offSet[0];
             $this->lastItemIdx = $offSet[1];
         }
         if ($this->shownResults) {
             $this->hasResults = true;
         }
     }
 }
 public function sendByEmailAction()
 {
     $uid = $this->_getParam('uid');
     $emails = $this->_getParam('emails');
     $origin = $this->getRequest()->getHeader('referer');
     $origin .= "&emails=" . $emails;
     // Checking if parameters are passed
     if ($uid && $emails) {
         // Checking if uid is a valid user
         $user = UserDao::getInstance()->get($uid);
         if ($user) {
             // Getting user wished books
             $wishedUserbooks = $user->getNotDeletedUserBooks();
             $wishedUserbooks = array_filter($wishedUserbooks, array(&$this, "isWished"));
             // Cheking if some valid emails are passed
             $emailsArray = array($emails);
             if (strpos(",", $emails) !== 0) {
                 $emailsArray = explode(",", $emails);
             }
             foreach ($emailsArray as $email) {
                 if (!StringHelper::isValidEmail($email)) {
                     Flash::addItem(__("Un des emails renseigné n'est pas valide.", "s1b"));
                     $this->_redirect($origin);
                     exit;
                 }
             }
             // Building the mail content
             $emailContent = \Sb\Helpers\MailHelper::wishedUserBooksEmailBody($user, $wishedUserbooks);
             // Sending mail
             MailSvc::getInstance()->send($emails, sprintf(__("%s - Liste des livres souhaités par %s", "s1b"), Constants::SITENAME, $user->getFriendlyName()), $emailContent);
             Flash::addItem(__("La liste a bien été envoyée par email.", "s1b"));
             $this->_redirect($origin);
             exit;
         }
     }
     Flash::addItem(__("Une erreur s'est produite lors de l'envoi de la liste par email", "s1b"));
     $this->_redirect($origin);
     exit;
 }
 /**
  * The default action - show a chronicle detail page
  */
 public function indexAction()
 {
     try {
         // Get chronicle id from request
         $chronicleId = $this->getParam("cid");
         // Get chronicle page
         $chroniclePage = ChroniclePageSvc::getInstance()->get($chronicleId);
         if ($chroniclePage) {
             // Check chronicle validity
             if (!$chroniclePage->getChronicle()->getIs_validated()) {
                 Flash::addItem(__("La chronique que vous souhaitez consulter n'existe pas.", "s1b"));
                 HTTPHelper::redirectToReferer();
             }
             // Increment chronicle nb views
             $this->incrementChronicleNbViews($chroniclePage->getChronicle()->getId());
             // Add main chronicle view model to model view
             $chronicleView = new ChronicleDetail($this->getRequest(), $chroniclePage->getChronicleViewModel());
             $this->view->chronicle = $chronicleView->get();
             // Get similar chronicles (with same tag or with similar keywords) and add it to model view
             $similarChronicles = $chroniclePage->getSimilarChronicles();
             if ($similarChronicles && count($similarChronicles) > 0) {
                 $otherChoniclesSameTypeView = new OtherChroniclesSameType($similarChronicles);
                 $this->view->otherChoniclesSameType = $otherChoniclesSameTypeView->get();
             }
             // Get same author chronicles and add it to model view
             if ($chroniclePage->getSameAuthorChronicles()) {
                 $authorChroniclesView = new ChroniclesBlock($chroniclePage->getSameAuthorChronicles(), __("<strong>Chroniques</strong> du même auteur", "s1b"));
                 // Add author chronicles to model
                 $this->view->authorChroniclesView = $authorChroniclesView->get();
             }
             // Get press reviews
             if ($chroniclePage->getPressReviews()) {
                 $pressReviewsView = new BookPressReviews($chroniclePage->getPressReviews());
                 $this->view->pressReviewsView = $pressReviewsView->get();
             }
             // Get reviews and add it to model view
             if ($chroniclePage->getUserBooksReviews()) {
                 $paginatedList = new PaginatedList($chroniclePage->getUserBooksReviews(), 5);
                 $reviewsView = new BookReviews($paginatedList, $chroniclePage->getChronicle()->getBook()->getId());
                 $this->view->reviews = $reviewsView->get();
             }
             // Get video press review and add it to view model
             if ($chroniclePage->getVideoPressReview()) {
                 $this->view->videoUrl = $chroniclePage->getVideoPressReview()->getLink();
             }
             //
             // Add common items to model view
             $this->addCommonItemsToModelView();
             // Set SEO information
             $headerInformation = HeaderInformationSvc::getInstance()->getForChroniclePage($chroniclePage);
             $this->view->tagTitle = $headerInformation->getTitle();
             $this->view->metaDescription = $headerInformation->getDescription();
             $this->view->metaKeywords = $headerInformation->getKeywords();
             $this->view->urlCanonical = $headerInformation->getUrlCanonical();
             $this->view->pageImage = $headerInformation->getPageImage();
         } else {
             Flash::addItem(__("La chronique que vous souhaitez consulter n'existe pas.", "s1b"));
             HTTPHelper::redirectToReferer();
         }
     } 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 logOffAction()
 {
     try {
         $globalConfig = new Sb\Config\Model\Config();
         if (isset($_COOKIES) && array_key_exists("PHPSESSID", $_COOKIES)) {
             unset($_COOKIES["PHPSESSID"]);
         }
         // destruction du cookie de connexion PHPSESSID 3600 correspond à 60 min
         if (ini_get("session.use_cookies")) {
             $params = session_get_cookie_params();
             setcookie(session_name(), '', time() - 3600, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
         }
         $tmpLang = null;
         if (isset($_SESSION) && array_key_exists('WPLANG', $_SESSION)) {
             $tmpLang = $_SESSION['WPLANG'];
         }
         session_destroy();
         $_SESSION['WPLANG'] = $tmpLang;
         $facebookSvc = new FacebookSvc($globalConfig->getFacebookApiId(), $globalConfig->getFacebookSecret(), HTTPHelper::Link(Urls::USER_HOME), HTTPHelper::Link(Urls::LOGIN), HTTPHelper::Link(Urls::LOGIN));
         $faceBookUser = $facebookSvc->getUser();
         $facebookSvc->cleanUser();
         if ($faceBookUser) {
             HTTPHelper::redirect($facebookSvc->getFacebookLogOutUrl());
         }
         Flash::addItem(__("Déconnexion réussie", "s1b"));
         // Redirecting to login page
         HTTPHelper::redirect("");
     } 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 validateUserInputForm()
 {
     $ret = true;
     if ($_POST) {
         if (strlen(ArrayHelper::getSafeFromArray($_POST, "guest_name", NULL)) < 3) {
             Flash::addItem(__("Le nom doit comprendre au moins 3 caractères.", "s1b"));
             $ret = false;
         }
         if (ArrayHelper::getSafeFromArray($_POST, "send_invitation", NULL) == 1) {
             $guestEmail = ArrayHelper::getSafeFromArray($_POST, "guest_email", NULL);
             if (!$guestEmail) {
                 Flash::addItem(__("Vous devez renseigné un email si vous souhaitez envoyer une invitation.", "s1b"));
                 $ret = false;
             } else {
                 if (!StringHelper::isValidEmail($guestEmail)) {
                     Flash::addItem(__("L'email que vous avez renseigné n'est pas valide. Merci de réessayer.", "s1b"));
                     $ret = false;
                 }
             }
         }
     } else {
         $ret = false;
     }
     return $ret;
 }
 private function redirectToHome()
 {
     Flash::addItem(__("Vos critères de recherche ne nous ont pas permis de trouver de livre.", "s1b"));
     HTTPHelper::redirectToHome();
 }
 public function profileAction()
 {
     $globalContext = new \Sb\Context\Model\Context();
     // Users profile are only accessible for connected users
     AuthentificationSvc::getInstance()->checkUserIsConnected();
     $noUser = true;
     $friendId = $this->_getParam("uid");
     if ($friendId) {
         $friend = UserDao::getInstance()->get($friendId);
         $this->view->friend = $friend;
         if ($friend) {
             $noUser = false;
             if ($friend->getId() == $globalContext->getConnectedUser()->getId()) {
                 Flash::addItem(__("Il s'agit de votre profil!", "s1b"));
                 HTTPHelper::redirectToReferer();
             } else {
                 $requestingUser = $globalContext->getConnectedUser();
                 if (SecurityHelper::IsUserAccessible($friend, $requestingUser)) {
                     $this->view->friendSetting = $friend->getSetting();
                     $this->view->isFriend = UserSvc::getInstance()->areUsersFriends($globalContext->getConnectedUser(), $friend);
                     // getting currently reading or lastly read books
                     $currentlyReading = UserBookDao::getInstance()->getReadingNow($friend->getId());
                     $lastlyReads = UserBookDao::getInstance()->getListLastlyRead($friend->getId());
                     if ($currentlyReading && $lastlyReads) {
                         $this->view->currentlyReadingOrLastlyReadBooks = array_merge(array($currentlyReading), $lastlyReads);
                     } elseif ($lastlyReads) {
                         $this->view->currentlyReadingOrLastlyReadBooks = $lastlyReads;
                     } elseif ($currentlyReading) {
                         $this->view->currentlyReadingOrLastlyReadBooks = array($currentlyReading);
                     }
                     // Getting friend currently reading user books
                     $this->view->allCurrentlyReadingUserBooks = UserBookDao::getInstance()->getCurrentlyReadingsNow($friend->getId());
                     if (count($this->view->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', 298, 190)});</script>\n");
                     }
                     // Getting friend last boh books
                     $bohUserBooks = UserBookDao::getInstance()->getListUserBOH($friend->getId());
                     $this->view->bohBooks = array_map(array($this, "getBook"), $bohUserBooks);
                     // Getting books friend could like
                     $this->view->booksHeCouldLikes = BookSvc::getInstance()->getBooksUserCouldLike($friend->getId());
                     if ($this->view->booksHeCouldLikes && count($this->view->booksHeCouldLikes) > 0) {
                         $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('bookUserCouldLike', 90)});</script>\n");
                     }
                     // Getting friend's friends last reviews
                     $this->view->friendLastReviews = UserEventSvc::getInstance()->getUserLastEventsOfType($friend->getId(), EventTypes::USERBOOK_REVIEW_CHANGE);
                     // Getting friend last friends added events
                     $this->view->friendLastFriendsAddedEvents = UserEventSvc::getInstance()->getUserLastEventsOfType($friend->getId(), EventTypes::USER_ADD_FRIEND);
                     if (count($this->view->friendLastFriendsAddedEvents) > 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-friendlastfriends', 298, 85)});</script>\n");
                     }
                     // Getting friend last events
                     $this->view->friendLastEvents = UserEventSvc::getInstance()->getUserLastEventsOfType($friend->getId(), null, 15);
                     $this->view->placeholder('footer')->append("<script>\n\n                            toInit.push(\"attachUserEventsExpandCollapse()\");\n\n                            function attachUserEventsExpandCollapse() {_attachExpandCollapseBehavior(\"js_userLastEvents\", \"userEvent\", \"Voir moins d'activités\", \"Voir plus d'activités\");}\n\n                        </script>\n");
                 } else {
                     Flash::addItem(__("Vous ne pouvez pas accéder à ce profil.", "s1b"));
                     HTTPHelper::redirectToReferer();
                 }
             }
         }
     }
     if ($noUser) {
         Flash::addItem(__("Cet utilisateur n'existe pas.", "s1b"));
         HTTPHelper::redirectToReferer();
     }
 }
 /**
  * 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");
     }
 }
 private function validateRegistrationForm()
 {
     $ret = true;
     if (strlen($_POST['last_name']) < 3) {
         Flash::addItem(__("Votre nom doit comprendre au moins 3 caractères.", "s1b"));
         $ret = false;
     }
     if (strlen($_POST['first_name']) < 1) {
         Flash::addItem(__("Merci d'indiquer votre prénom.", "s1b"));
         $ret = false;
     }
     if (strlen($_POST['user_name']) < 1) {
         Flash::addItem(__("Merci d'indiquer un identifiant.", "s1b"));
         $ret = false;
     }
     if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
         Flash::addItem(__("Votre email n'est pas valide, merci de réessayer.", "s1b"));
         $ret = false;
     }
     if (strlen($_POST['password']) < 8) {
         Flash::addItem(__("Votre mot de passe doit faire au moins 8 caractères.", "s1b"));
         $ret = false;
     }
     if (!ArrayHelper::getSafeFromArray($_POST, 'cgu_validation', false)) {
         Flash::addItem(__("Vous devez accepter les CGU.", "s1b"));
         $ret = false;
     }
     return $ret;
 }
Beispiel #14
0
 private function getBook($bookId)
 {
     if (!$bookId) {
         Flash::addItem(__("Vous devez sélectionner un livre.", "s1b"));
         HTTPHelper::redirectToReferer();
     }
     $book = BookDao::getInstance()->get($bookId);
     if (!$book) {
         Flash::addItem(__("Le livre n'existe pas.", "s1b"));
         HTTPHelper::redirectToReferer();
     }
     return $book;
 }
 /**
  * Show pending friends request and allow to accepet or refuse it
  */
 public function pendingRequestsAction()
 {
     try {
         $globalContext = new \Sb\Context\Model\Context();
         $user = $globalContext->getConnectedUser();
         $this->view->user = $user;
         // Show pending requests
         if (!$_POST) {
             $totalPendingRequests = $user->getPendingFriendShips();
             if ($totalPendingRequests && count($totalPendingRequests) > 0) {
                 // Preparing pagination
                 $paginatedList = new PaginatedList($totalPendingRequests, 6);
                 $this->view->firstItemIdx = $paginatedList->getFirstPage();
                 $this->view->lastItemIdx = $paginatedList->getLastPage();
                 $this->view->nbItemsTot = $paginatedList->getTotalPages();
                 $this->view->navigation = $paginatedList->getNavigationBar();
                 $this->view->pendingRequests = $paginatedList->getItems();
             }
         } else {
             $friendShipId = ArrayHelper::getSafeFromArray($_POST, 'friendShipId', null);
             $Title = ArrayHelper::getSafeFromArray($_POST, 'Title', null);
             $Message = ArrayHelper::getSafeFromArray($_POST, 'Message', null);
             $Refused = ArrayHelper::getSafeFromArray($_POST, 'Refused', null);
             if ($friendShipId) {
                 if ($Refused == 0) {
                     // Update the requested friendship
                     $friendShip = FriendShipDao::getInstance()->get($friendShipId);
                     if ($friendShip) {
                         $friendShip->setAccepted(true);
                         $friendShip->setValidated(true);
                         if (FriendShipDao::getInstance()->update($friendShip)) {
                             // Add the userEvent
                             try {
                                 $userEvent = new UserEvent();
                                 $userEvent->setNew_value($user->getId());
                                 $userEvent->setType_id(EventTypes::USER_ADD_FRIEND);
                                 $userEvent->setUser($friendShip->getUser_source());
                                 UserEventDao::getInstance()->add($userEvent);
                             } catch (\Exception $exc) {
                                 Trace::addItem("Erreur lors de l'ajout de l'événement : " . $exc->getMEssage());
                             }
                         }
                     }
                     // Create a friendship on the other side
                     $inverseFriendShip = new FriendShip();
                     $inverseFriendShip->setAccepted(true);
                     $inverseFriendShip->setValidated(true);
                     $inverseFriendShip->setCreationDate(new \DateTime());
                     $inverseFriendShip->setUser_source($user);
                     $inverseFriendShip->setUser_target($friendShip->getUser_source());
                     if (FriendShipDao::getInstance()->add($inverseFriendShip)) {
                         // Add the userEvent
                         try {
                             $userEvent = new UserEvent();
                             $userEvent->setNew_value($friendShip->getUser_source()->getId());
                             $userEvent->setType_id(EventTypes::USER_ADD_FRIEND);
                             $userEvent->setUser($user);
                             UserEventDao::getInstance()->add($userEvent);
                         } catch (\Exception $exc) {
                             Trace::addItem("Erreur lors de l'ajout de l'événement : " . $exc->getMEssage());
                         }
                     }
                     // Send email to the requesting user
                     MailSvc::getInstance()->send($friendShip->getUser_source()->getEmail(), __("Demande d'ami", "s1b"), MailHelper::friendShipAcceptationEmailBody($user->getFirstName() . " " . $user->getLastName()));
                     // add a message in requesting user internal mailbox
                     $message = new \Sb\Db\Model\Message();
                     $message->setDate(new \DateTime());
                     $message->setMessage($Message);
                     $message->setTitle($Title);
                     $message->setRecipient($friendShip->getUser_source());
                     $message->setSender($user);
                     MessageDao::getInstance()->add($message);
                     // redirect to pending request page
                     Flash::addItem("Demande acceptée.");
                     HTTPHelper::redirect(Urls::USER_FRIENDS_PENDING_REQUEST);
                 } elseif ($Refused == 1) {
                     // update the requested friendship
                     $friendShip = FriendShipDao::getInstance()->get($friendShipId);
                     if ($friendShip) {
                         $friendShip->setAccepted(false);
                         $friendShip->setValidated(true);
                         FriendShipDao::getInstance()->update($friendShip);
                     }
                     // send email to the requesting user
                     MailSvc::getInstance()->send($friendShip->getUser_source()->getEmail(), __("Votre demande d'ami a été refusée", "s1b"), MailHelper::friendShipDenyEmailBody($user->getFirstName() . " " . $user->getLastName()));
                     // add a message in requesting user internal mailbox
                     $message = new Message();
                     $message->setDate(new \DateTime());
                     $message->setMessage($Message);
                     $message->setTitle($Title);
                     $message->setRecipient($friendShip->getUser_source());
                     $message->setSender($user);
                     MessageDao::getInstance()->add($message);
                     // redirect to pending request page
                     Flash::addItem(__("Demande refusée.", "s1b"));
                     HTTPHelper::redirect(Urls::USER_FRIENDS_PENDING_REQUEST);
                 }
             } else {
                 Flash::addItem(__("Vous devez sélectionner une demande d'ami.", "s1b"));
                 HTTPHelper::redirect(Urls::USER_FRIENDS_PENDING_REQUEST);
             }
         }
     } 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");
     }
 }
Beispiel #16
0
 public static function showFlashes()
 {
     $flashes = null;
     // Récupération des messages flashes éventuels
     if (\Sb\Flash\Flash::hasItems()) {
         $flashes = \Sb\Flash\Flash::getItems();
     }
     $ret = "";
     if ($flashes) {
         $ret .= "<div id=\"flashes-wrap\"><div id=\"flashes-background\"></div><div id='flashes'><div id='flashes-close-button'></div><ul>";
         foreach ($flashes as $flash) {
             $ret .= "<li>" . $flash . "</li>";
         }
         $ret .= "</ul></div></div>";
     }
     echo $ret;
 }
 public function validateAction()
 {
     try {
         if (array_key_exists("lid", $_GET)) {
             $lendingId = $_GET["lid"];
             $lendingDao = LendingDao::getInstance();
             $lending = $lendingDao->GetById($lendingId);
             if ($lending) {
                 $lending->setState(LendingState::ACTIV);
                 $lending->setStartDate(new \DateTime());
                 $lending->setLastModificationDate(new \DateTime());
                 if ($lendingDao->Update($lending, $lendingId)) {
                     Flash::addItem(__("Le prêt à été validé.", "s1b"));
                 }
             } else {
                 Flash::addItem(__("L'identifiant reçu ne correspond à aucun prêt.", "s1b"));
             }
         } else {
             Flash::addItem(__("Identifiant manquant", "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 checkUserCanEditChronicle(Chronicle $chronicle)
 {
     $globalContext = new \Sb\Context\Model\Context();
     $chronicleGroupId = $chronicle->getGroup()->getId();
     $found = false;
     foreach ($globalContext->getConnectedUser()->getGroupusers() as $groupUser) {
         /* @var $groupUser GroupUser */
         if ($groupUser->getGroup()->getId() == $chronicleGroupId) {
             $found = true;
             break;
         }
     }
     if (!$found) {
         Flash::addItem(__("Vous ne pouvez pas éditer cette chronique.", "s1b"));
         HTTPHelper::redirectToReferer();
     }
 }
 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");
     }
 }
 public function friendLibraryAction()
 {
     try {
         // Set friend library data
         $this->setFriendLibaryData();
         $key = $this->getListKey();
         // Get the list key (allBooks, wishedBooks, etc...)
         $fullKey = $this->formateListKey($key);
         // Reset the list options (sorting, searching, paging, filtering) if requested
         if (ArrayHelper::getSafeFromArray($_GET, "reset", false)) {
             $this->resetListOption($fullKey);
         }
         $filteringOrSearching = array_key_exists("searchvalue", $_GET) || array_key_exists("filter", $_GET) && array_key_exists("filtertype", $_GET);
         // Get the books
         $books = UserBookSvc::getInstance()->getUserBooks($key, $this->getContext()->getLibraryUserId(), $filteringOrSearching);
         // Set list meta data if getting list first time
         if (!$filteringOrSearching) {
             $this->setListMetaData($books, $fullKey);
         }
         // Set filtering and searching options
         if ($filteringOrSearching) {
             $this->setFilteringAndSearching($fullKey);
         }
         $booksTableView = $this->createBookTableView($key, $books, false);
         $this->view->list = new BookListView($key, $booksTableView, $key);
         $this->view->header = new LibraryHeader($this->getContext()->getLibraryUserId(), $key);
         $this->view->friendLibrary = $this->getContext()->getIsShowingFriendLibrary();
     } catch (\Exception $e) {
         Flash::addItem($e->getMessage());
         HTTPHelper::redirectToReferer();
     }
 }