/**
  * 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");
     }
 }
 /**
  * Action for displaying a static page
  */
 public function indexAction()
 {
     try {
         $this->getHelper("viewRenderer")->setNoRender(true);
         $file = BASE_PATH . "/static-files/" . $this->_getParam('file');
         if (file_exists($file)) {
             ob_start();
             include $file;
             $output = ob_get_contents();
             ob_end_clean();
             $this->getResponse()->appendBody($output);
             // Get Header information
             $routeName = Zend_Controller_Front::getInstance()->getRouter()->getCurrentRouteName();
             $headerInformation = HeaderInformationSvc::getInstance()->getByRouteName($routeName);
             $this->view->tagTitle = $headerInformation->getTitle();
             $this->view->metaDescription = $headerInformation->getDescription();
             $this->view->metaKeywords = $headerInformation->getKeywords();
         } else {
             throw new \Exception();
         }
     } catch (\Exception $exc) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $exc->getTraceAsString()));
         $this->_forward("error", "error", "default");
     }
 }
 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;
     }
 }
Beispiel #4
0
 public static function completeInfos(Book &$book)
 {
     try {
         $config = self::getConfig();
         $googleBook = new \Sb\Google\Model\GoogleBook($book->getISBN10(), $book->getISBN13(), $book->getASIN(), $config->getGoogleApiKey());
         if ($googleBook->getVolumeInfo()) {
             $bookFromGoogle = new Book();
             \Sb\Db\Mapping\BookMapper::mapFromGoogleBookVolumeInfo($bookFromGoogle, $googleBook->getVolumeInfo());
             if (!$book->getDescription() && $bookFromGoogle->getDescription()) {
                 $book->setDescription($bookFromGoogle->getDescription());
             }
             if (!$book->getImageUrl() && $bookFromGoogle->getImageUrl()) {
                 $book->setImageUrl($bookFromGoogle->getImageUrl());
             }
             if (!$book->getSmallImageUrl() && $bookFromGoogle->getSmallImageUrl()) {
                 $book->setSmallImageUrl($bookFromGoogle->getSmallImageUrl());
             }
             if (!$book->getPublishingDate() && $bookFromGoogle->getPublishingDate()) {
                 $book->setPublishingDate($bookFromGoogle->getPublishingDate());
             }
         } else {
             \Sb\Trace\Trace::addItem('Le livre n\'a pas été trouvé sur Google.');
         }
     } catch (\Exception $exc) {
         $message = sprintf("Une erreur s'est produite lors de l'appel à l'api google books : %s", $exc->getMessage());
         MailSvc::getInstance()->send(Constants::WEBMASTER_EMAIL, "Erreur interne", $message);
         \Sb\Trace\Trace::addItem($message);
     }
 }
 public function loginSucces(User $activeUser)
 {
     // Initialisation des infos de connexion dans la session
     $this->initAuthenticatedUser($activeUser);
     // Redirection vers la page d'accueil
     Trace::addItem("Connection ok,redirecting to : " . Urls::USER_HOME);
     HTTPHelper::redirect(Urls::USER_HOME);
 }
Beispiel #6
0
 protected function clearPersistentData($key)
 {
     if (!in_array($key, self::$kSupportedKeys)) {
         \Sb\Trace\Trace::addItem("'Unsupported key passed to clearPersistentData.'");
         self::errorLog('Unsupported key passed to clearPersistentData.');
         return;
     }
     $session_var_name = $this->constructSessionVariableName($key);
     unset($_SESSION[$session_var_name]);
 }
 public function exampleAction()
 {
     try {
         //global $globalContext;
         /* @var $chronicle Chronicle */
     } 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 #8
0
 public static function redirect($pageKey = "", array $params = array())
 {
     $dest = self::Link($pageKey, $params);
     if (self::getConfig()->getTracesEnabled()) {
         \Sb\Trace\Trace::addItem("<a href='{$dest}'>Suite...</a>");
     } else {
         self::redirectToUrl($dest);
         die;
     }
 }
 public function addAction()
 {
     try {
         if ($this->getContext()->getConnectedUser()) {
             $config = $this->getConfig();
             $return = \Sb\Db\Service\UserBookSvc::getInstance()->addFromPost($this->getContext()->getConnectedUser(), $config);
             $this->view->message = $return;
         } else {
             $this->view->message = __("Vous devez être connecté pour ajouter un livre.", "s1b");
         }
     } catch (\Exception $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         $this->view->message = __("Une erreur s'est produite lors de l'ajout du livre.", "s1b");
     }
 }
Beispiel #10
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;
         }
     }
 }
Beispiel #11
0
 public function setInvitationsAccepted($email)
 {
     try {
         // Testing if the user registering match invitations and set them to validted and accepted if they exist
         $invitations = \Sb\Db\Dao\InvitationDao::getInstance()->getListByGuestEmail($email);
         if ($invitations && count($invitations) > 0) {
             foreach ($invitations as $invitation) {
                 if (!$invitation->getIs_accepted()) {
                     $invitation->setIs_accepted(true);
                     $invitation->setIs_validated(true);
                     $invitation->setLast_modification_date(new \DateTime());
                     \Sb\Trace\Trace::addItem("Updating invitation for " . $email);
                     \Sb\Db\Dao\InvitationDao::getInstance()->update($invitation);
                 }
             }
         }
     } catch (\Exception $exc) {
         $this->logException(get_class(), __FUNCTION__, $exc);
     }
 }
Beispiel #12
0
 private function init()
 {
     $client = new \apiClient();
     $client->setApplicationName("Share1Book Test Page");
     $client->setDeveloperKey($this->apiKey);
     $service = new \apiBooksService($client);
     $volumes = $service->volumes;
     $optParams['maxResults'] = 1;
     $optParams['country'] = 'FR';
     $optParams['fields'] = 'kind,totalItems,items(volumeInfo(title,authors,imageLinks,description,publisher,publishedDate,industryIdentifiers))';
     $q = $this->isbn10 ? $this->isbn10 : ($this->isbn13 ? $this->isbn13 : ($this->asin ? $this->asin : ""));
     \Sb\Trace\Trace::addItem("requetage de google avec {$q}");
     $this->results = $volumes->listVolumes($q, $optParams);
     if ($this->results && count($this->results) > 0) {
         if (array_key_exists('items', $this->results)) {
             if (count($this->results['items']) > 0) {
                 $bookInfo = $this->results['items'][0];
                 $this->volumeInfo = $bookInfo['volumeInfo'];
             }
         }
     }
 }
Beispiel #13
0
 private function searchData($searchTerm, $nbResultsToShow, $amazonApiKey, $amazonSecretKey, $amazonAssociateTag, $amazonNumberOfPageRequested)
 {
     if ($searchTerm) {
         $searchTerm = trim($searchTerm);
         // faire la recherche dans la base de donnée
         $this->allResults = \Sb\Db\Dao\BookDao::getInstance()->getListByKeyword($searchTerm);
         try {
             $amazonResults = null;
             // si pas de résultat ou nb de resultats < à ce que l'on souhaite afficher, faire la recherche Amazon
             if (!$this->allResults || count($this->allResults) < $nbResultsToShow) {
                 // Requesting amazon FR first
                 $amazonResults = $this->getAmazonResults($searchTerm, $amazonApiKey, $amazonSecretKey, $amazonAssociateTag, $amazonNumberOfPageRequested, 'FR');
                 // Requesting amazon US
                 if (!$amazonResults) {
                     $amazonResults = $this->getAmazonResults($searchTerm, $amazonApiKey, $amazonSecretKey, $amazonAssociateTag, $amazonNumberOfPageRequested, 'US');
                 }
             }
             // si des résultats ont été trouvés avec Amazon
             // si des résultats avaient été trouvés dans la base
             // ==> ils doivent être mergés ensemble
             if ($this->allResults && $amazonResults) {
                 $allResultsKeys = array_map(array(&$this, "extractKey"), $this->allResults);
                 $this->allResults = array_combine($allResultsKeys, $this->allResults);
                 // Adding the books not present in sql found on amazon after the books that are already in sql
                 $this->allResults = $this->allResults + array_diff_key($amazonResults, $this->allResults);
             } elseif ($amazonResults) {
                 $this->allResults = $amazonResults;
             }
             // Sort books by publishing date desc
             $sorting = new Sorting();
             $sorting->setDirection(EntityHelper::DESC);
             $sorting->setField('publishing_date');
             BooksHelper::sort($this->allResults, $sorting);
         } catch (\Exception $exc) {
             \Sb\Trace\Trace::addItem(sprintf("Une erreur s'est produite lors de l'appel à l'api amazon : %s", $exc->getMessage()));
         }
     }
 }
 public function get()
 {
     if ($this->userBooks) {
         $templatesBooks = "";
         foreach ($this->userBooks as $userBookExt) {
             $pushedBookView = new \Sb\View\PushedUserBook($this->showingConnectedUserBook, $userBookExt);
             $templatesBooks .= $pushedBookView->get();
         }
         $tpl = new \Sb\Templates\Template("pushedBooks");
         $tpl->set("books", $templatesBooks);
         \Sb\Trace\Trace::addItem("Nb books in total : " . count($this->userBooks));
         \Sb\Trace\Trace::addItem("Nb books shown by default : " . $this->nbBooksShownByDefault);
         $nbBooks = count($this->userBooks);
         if ($nbBooks <= $this->nbBooksShownByDefault) {
             $tpl->set("bottomLink", "");
         } else {
             $tplBottomLink = new \Sb\Templates\Template("components/seeMore");
             $tpl->set("bottomLink", $tplBottomLink->output());
         }
         return $tpl->output();
     } else {
         return "";
     }
 }
Beispiel #15
0
 private function addUserBook(\Sb\Db\Model\Book $book, \Sb\Db\Model\User $user, \Sb\Config\Model\Config $config)
 {
     $userBookDao = UserBookDao::getInstance();
     $userBook = $userBookDao->getByBookIdAndUserId($user->getId(), $book->getId());
     // Testing if the user :
     // - doesn't already have that book or
     // - have it but is deleted : in this case we will undelete the book
     if ($userBook && !$userBook->getIs_deleted()) {
         $returnMsg = __("Vous avez déjà ce livre dans votre bibliothèque.", "s1b");
     } else {
         // Getting current user current nb userbooks in libary
         $userNbUserBooks = count($user->getNotDeletedUserBooks());
         if ($userNbUserBooks >= $config->getMaximumNbUserBooksForPublic()) {
             $returnMsg = sprintf(__("Vous ne pouvez pas avoir plus de %s livres dans votre bibliothèque.", "s1b"), $config->getMaximumNbUserBooksForPublic());
         } else {
             // Ajout du UserBook
             $existingUserBook = false;
             $userBook = UserBookDao::getInstance()->getByBookIdAndUserId($user->getId(), $book->getId());
             // testing if the user already had the book but deleted it :
             // if yes, then the userbook is undeleted
             if ($userBook && $userBook->getIs_deleted()) {
                 $userBook->setIs_deleted(false);
                 $existingUserBook = true;
             } else {
                 // Création du UserBoook
                 $userBook = new \Sb\Db\Model\UserBook();
                 $userBook->setCreationDate(new \DateTime());
             }
             // Updating userbook data
             $userBook->setLastModificationDate(new \DateTime());
             $userBook->setUser($user);
             $userBook->setBook($book);
             $bookLink = \Sb\Helpers\HTTPHelper::Link($book->getLink());
             // Persisting userbook in DB
             $addOk = false;
             if ($existingUserBook) {
                 if (UserBookDao::getInstance()->update($userBook)) {
                     $editUserBookLink = \Sb\Helpers\HTTPHelper::Link(\Sb\Entity\Urls::USER_BOOK_EDIT, array("ubid" => $userBook->getId()));
                     $returnMsg = sprintf(__("Vous aviez déjà le livre \"%s\" dans votre bibliothèque mais l'aviez supprimé. Il a été rajouté.<br/><a class=\"link\" href=\"%s\">Remplir votre fiche de lecture</a> ou <a class=\"link\" href=\"%s\">Voir ce livre</a>", "s1b"), $book->getTitle(), $editUserBookLink, $bookLink);
                     $addOk = true;
                 }
             } else {
                 if (UserBookDao::getInstance()->add($userBook)) {
                     $editUserBookLink = \Sb\Helpers\HTTPHelper::Link(\Sb\Entity\Urls::USER_BOOK_EDIT, array("ubid" => $userBook->getId()));
                     $returnMsg = sprintf(__("Le livre \"%s\" a été ajouté à votre bibliothèque.<br/><a class=\"link\" href=\"%s\">Remplir votre fiche de lecture</a> ou <a class=\"link\" href=\"%s\">Voir ce livre</a>", "s1b"), $book->getTitle(), $editUserBookLink, $bookLink);
                     $addOk = true;
                 }
             }
             if ($addOk) {
                 try {
                     $userEvent = new \Sb\Db\Model\UserEvent();
                     $userEvent->setItem_id($userBook->getId());
                     $userEvent->setType_id(\Sb\Entity\EventTypes::USERBOOK_ADD);
                     $userEvent->setUser($user);
                     \Sb\Db\Dao\UserEventDao::getInstance()->add($userEvent);
                 } catch (\Exception $exc) {
                     Trace::addItem("Une erreur s'est produite lors de l'ajout de l'événement suite à l'ajout d'un livre " . $exc->getMessage());
                 }
             }
         }
     }
     return $returnMsg;
 }
 /**
  * Action for press review search (video or articles)
  */
 public function searchAction()
 {
     try {
         // Get press review type
         $typeId = $this->getParam('pageKey', null);
         // Get search parameters : tag id and search term
         $tagId = $this->getParam('tid', null);
         $searchTerm = $this->getParam("contentSearchTerm", null);
         $pageNumber = $this->getParam($this->navigationParamName, null);
         if ($pageNumber) {
             // Get press reviews from session when paging
             $pressReviews = $this->getResultsInSession($typeId);
         } else {
             // Get press reviews from sql and and store them into session
             $pressReviews = $this->getPressReviews($typeId, $tagId, $searchTerm, false);
             $this->setResultsInSession($typeId, $pressReviews);
         }
         // Add common items to model view
         $this->addCommonListItemsToModelView($pageNumber, $tagId, $searchTerm, $pressReviews, $typeId);
         switch ($typeId) {
             case PressReviewTypes::ARTICLE:
                 $this->render("list");
                 break;
             case PressReviewTypes::VIDEO:
                 $this->render("videos");
                 break;
         }
     } 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");
     }
 }
 /**
  * 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 #18
0
 public function getListByKeywordAndWishedUserBooks($keyword)
 {
     $dql = "SELECT u FROM " . self::MODEL . " u \n            JOIN u.userbooks ub \n            JOIN u.setting s\n            WHERE (u.email LIKE :keyword \n                OR u.user_name LIKE :keyword \n                OR u.last_name LIKE :keyword \n                OR u.first_name LIKE :keyword \n                OR u.user_name LIKE :keyword)\n            AND ub.is_deleted != 1 \n            AND ub.is_wished = 1\n            AND s.display_wishlist = '" . UserDataVisibility::ALL . "'  \n            ORDER BY ub.last_modification_date DESC";
     $query = $this->entityManager->createQuery($dql);
     $query->setParameter("keyword", "%" . $keyword . "%");
     $query->setMaxResults(10);
     Trace::addItem($query->getSQL());
     $result = $this->getResults($query);
     return $result;
 }
 protected function logException($className, $functionName, \Exception $exc)
 {
     Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", $className, $functionName, $exc->getTraceAsString()));
 }
 /**
  * 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;
     }
 }
Beispiel #21
0
 public function persistAll($userEvents)
 {
     try {
         if ($userEvents && count($userEvents) > 0) {
             foreach ($userEvents as $userEvent) {
                 $this->getDao()->add($userEvent);
             }
         }
     } catch (\Exception $exc) {
         Trace::addItem("Une erreur s'est produite lors de l'enregistrement des uservents");
     }
 }
 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");
     }
 }
 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");
     }
 }
 /**
  * Show and submit registration page
  */
 public function registerAction()
 {
     try {
         if ($_POST) {
             if ($this->validateRegistrationForm()) {
                 // Test if user already in DB
                 $userInDB = UserDao::getInstance()->getByEmail($_POST['email']);
                 // If yes => show message and redirect to login page
                 if ($userInDB) {
                     if ($userInDB->getDeleted()) {
                         Flash::addItem(__("Un compte correspondant à cet email existe mais il a été supprimé. Merci de nous contacter via le formulaire de contact.", "s1b"));
                     } else {
                         Flash::addItem(__("Vous avez déjà créé un compte avec cet email. Si vous l'avez créé avec Facebook, vous pouvez vous connecter avec Facebook et ajouter un mot de passe dans votre profil section mot de passe. Si ce n'est pas le cas et que vous ne vous souvenez pas du mot de passe, vous pouvez demandez à réinitialiser le mot de passe en cliquant sur le lien \"Mot de passe perdu\"", "s1b"));
                     }
                     HTTPHelper::redirect(\Sb\Entity\Urls::LOGIN);
                 } else {
                     // If Not
                     // ==> create user
                     // ==> send welcome email
                     // ==> create welcome message in internal mailbox
                     //
                     $userFromPost = new User();
                     UserMapper::map($userFromPost, $_POST);
                     $userFromPost->setToken(sha1(uniqid(rand())));
                     $userFromPost->setActivated(false);
                     $userFromPost->setDeleted(false);
                     $userFromPost->setFacebookId("");
                     $userFromPost->setGender("");
                     $userFromPost->setFacebookLanguage("");
                     $userFromPost->setTokenFacebook("");
                     $userFromPost->setPicture("");
                     $userFromPost->setPictureBig("");
                     $setting = new UserSetting();
                     UserSettingHelper::loadDefaultSettings($setting);
                     $userFromPost->setSetting($setting);
                     $userInDB = UserDao::getInstance()->add($userFromPost);
                     // send confirmation email
                     $subject = sprintf(__("Votre compte %s a été créé", "s1b"), Constants::SITENAME);
                     MailSvc::getInstance()->send($userInDB->getEmail(), $subject, MailHelper::validationAccountEmailBody($userInDB->getFirstName(), $userInDB->getToken(), $userInDB->getEmail()));
                     // Send warning email to webmaster
                     MailSvc::getInstance()->send(Constants::WEBMASTER_EMAIL . ", berliozd@gmail.com, rebiffe_olivier@yahoo.fr", __("nouveau user", "s1b"), $userInDB->getEmail());
                     // create message in user internal mailbox
                     MessageSvc::getInstance()->createWelcomeMessage($userInDB->getId());
                     // redirect to user homepage
                     $successMsg = __("Votre compte a été créé correctement. N'oubliez pas de l'activer grâce à l'email que vous avez reçu avant toute première connexion. <strong>Attention cet email pourrait tomber dans vos spams.</strong>", "s1b");
                     Flash::addItem($successMsg);
                     // Testing if the user registering match invitations and set them to validated and accepted if they exist
                     InvitationSvc::getInstance()->setInvitationsAccepted($userInDB->getEmail());
                     HTTPHelper::redirect(Urls::LOGIN);
                 }
             }
         }
     } 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");
     }
 }
 /**
  * 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");
     }
 }
Beispiel #26
0
 public function startQuery($sql, array $params = null, array $types = null)
 {
     \Sb\Trace\Trace::addItem($sql . ($params ? "-- params : " . implode(",", $params) : "") . ($types ? " -- types : " . implode(",", $types) : ""));
 }
Beispiel #27
0
 private static function isBookValidForSearch(\Sb\Db\Model\UserBook $userBook)
 {
     $book = $userBook->getBook();
     $ret = false;
     $pattern = "/" . self::$searchValue . "/i";
     if ($book) {
         if (preg_match($pattern, $book->getTitle())) {
             \Sb\Trace\Trace::addItem("trouvé => pattern : " . $pattern . " dans :" . $book->getTitle());
             $ret = true;
         }
         if (preg_match($pattern, $book->getOrderableContributors())) {
             \Sb\Trace\Trace::addItem("trouvé => pattern : " . $pattern . " dans :" . $book->getOrderableContributors());
             $ret = true;
         }
     }
     return $ret;
 }
 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");
     }
 }
Beispiel #29
0
 public function post($message, $title, $caption, $link, $picture = null)
 {
     try {
         $options = array('message' => stripslashes($message), 'name' => stripslashes($title), 'caption' => stripslashes($caption), 'link' => $link);
         if ($picture) {
             $options["picture"] = $picture;
         }
         $ret = $this->facebook->api('/me/feed/', 'POST', $options);
         return true;
     } catch (\FacebookApiException $e) {
         Trace::addItem(sprintf("Une erreur s'est produite dans \"%s->%s\", TRACE : %s\"", get_class(), __FUNCTION__, $e->getTraceAsString()));
         return false;
     }
     return false;
 }
 /**
  * Action for chronicles list pages
  */
 public function searchAction()
 {
     try {
         $pageNumber = $this->getParam($this->navigationParamName, null);
         // Get key that define what type of chronicles to display
         $key = $this->getParam("pageKey", self::PAGE_KEY_ANY_GROUPS);
         // Get search paramaters : tag id and search term
         $searchTerm = $this->getParam("contentSearchTerm", null);
         $tagId = $this->getParam('tid', null);
         // Get chronicles : from session if paging or from SQL without using cache it not paging
         switch ($key) {
             case self::PAGE_KEY_ANY_GROUPS:
                 if ($pageNumber) {
                     // Get chronicles from session when paging
                     $chronicles = $this->getResultsInSession($key);
                 } else {
                     // Get chronicles from SQL without using cache and store them into session
                     $chronicles = ChronicleSvc::getInstance()->getLastChronicles(100, null, null, false, $searchTerm, null, $tagId);
                     $this->setResultsInSession($key, $chronicles);
                 }
                 $initUrl = $this->view->url(array(), 'chroniclesLastAnyType');
                 break;
             case self::PAGE_KEY_BLOGGERS:
                 if ($pageNumber) {
                     // Get chronicles from session when paging
                     $chronicles = $this->getResultsInSession($key);
                 } else {
                     // Get chronicles from SQL without using cache and store them into session
                     $chronicles = ChronicleSvc::getInstance()->getLastChronicles(100, GroupTypes::BLOGGER, null, false, $searchTerm, null, $tagId);
                     $this->setResultsInSession($key, $chronicles);
                 }
                 $initUrl = $this->view->url(array(), 'chroniclesLastBloggers');
                 break;
             case self::PAGE_KEY_BOOKSTORES:
                 if ($pageNumber) {
                     // Get chronicles from session when paging
                     $chronicles = $this->getResultsInSession($key);
                 } else {
                     // Get chronicles from SQL without using cache and store them into session
                     $chronicles = ChronicleSvc::getInstance()->getLastChronicles(100, GroupTypes::BOOK_STORE, null, false, $searchTerm, null, $tagId);
                     $this->setResultsInSession($key, $chronicles);
                 }
                 $initUrl = $this->view->url(array(), 'chroniclesLastBookStores');
                 break;
         }
         // Add common items to model view
         $this->addCommonItemsToModelView();
         // Add chronicles list action common items to model view
         $this->addCommonListItemsToModelView($key, $chronicles, $pageNumber, $tagId, $searchTerm, $initUrl);
         $this->render("list");
     } 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");
     }
 }