public function __construct($id_stream = null)
 {
     if (!empty($id_stream)) {
         $this->id_stream = $id_stream;
         $this->stream_authorizations = NewsletterStreamsCache::load()->get_stream($this->id_stream)->get_authorizations();
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $id_stream = $request->get_int('id_stream', 0);
     $db_querier = PersistenceContext::get_querier();
     if ($this->subscriber_exist($id) || $id_stream !== 0 && $id !== 0) {
         if (!NewsletterAuthorizationsService::id_stream($id_stream)->moderation_subscribers()) {
             NewsletterAuthorizationsService::get_errors()->moderation_subscribers();
         }
         $condition = "WHERE subscriber_id = :id AND stream_id = :id_stream";
         $parameters = array('id' => $id, 'id_stream' => $id_stream);
         $db_querier->delete(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters);
         $condition = "WHERE subscriber_id = :id";
         $parameters = array('id' => $id);
         $is_last = PersistenceContext::get_querier()->count(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters) == 0;
         if ($is_last) {
             $condition = "WHERE id = :id";
             $parameters = array('id' => $id);
             $db_querier->delete(NewsletterSetup::$newsletter_table_subscribers, $condition, $parameters);
         }
         NewsletterStreamsCache::invalidate();
         $controller = new UserErrorController(LangLoader::get_message('success', 'status-messages-common'), LangLoader::get_message('process.success', 'status-messages-common'), UserErrorController::SUCCESS);
         DispatchManager::redirect($controller);
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), LangLoader::get_message('error-subscriber-not-existed', 'common', 'newsletter'));
         DispatchManager::redirect($controller);
     }
 }
 private function save($id)
 {
     $condition = "WHERE id = :id";
     $columns = array('mail' => $this->form->get_value('mail'));
     $parameters = array('id' => $id);
     PersistenceContext::get_querier()->update(NewsletterSetup::$newsletter_table_subscribers, $columns, $condition, $parameters);
     NewsletterStreamsCache::invalidate();
 }
 public function execute(HTTPRequestCustom $request)
 {
     $this->stream = NewsletterStreamsCache::load()->get_stream($request->get_int('id_stream', 0));
     if ($this->stream->get_id() == 0) {
         AppContext::get_response()->redirect(NewsletterUrlBuilder::home());
     }
     $this->init();
     $this->build_form($request);
     return $this->build_response($this->view);
 }
 private function get_streams()
 {
     $streams = array();
     $newsletter_streams = NewsletterStreamsCache::load()->get_streams();
     foreach ($newsletter_streams as $id => $stream) {
         if ($id != Category::ROOT_CATEGORY && NewsletterAuthorizationsService::id_stream($id)->subscribe()) {
             $streams[] = new FormFieldMultipleCheckboxOption($id, $stream->get_name());
         }
     }
     return $streams;
 }
 private function save()
 {
     $delete_all_streams = $this->form->get_value('delete_all_streams');
     if ($delete_all_streams) {
         if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
             NewsletterService::unsubscriber_all_streams_member(AppContext::get_current_user()->get_id());
         } else {
             NewsletterService::unsubscriber_all_streams_visitor($this->form->get_value('mail'));
         }
     } else {
         $streams = array();
         foreach ($this->form->get_value('choice') as $field => $option) {
             $streams[] = $option->get_id();
         }
         if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL) && $streams !== '') {
             NewsletterService::update_subscriptions_member_registered($streams, AppContext::get_current_user()->get_id());
         } else {
             NewsletterService::update_subscriptions_visitor($streams, $this->form->get_value('mail'));
         }
     }
     NewsletterStreamsCache::invalidate();
 }
 public static function update_subscriptions_visitor($mail, array $streams)
 {
     $subscriber_id = self::$db_querier->get_column_value(NewsletterSetup::$newsletter_table_subscribers, 'id', "WHERE mail = '" . $mail . "'");
     //Delete all entries in subscriber id
     $condition = "WHERE subscriber_id = :subscriber_id";
     $parameters = array('subscriber_id' => $subscriber_id);
     self::$db_querier->delete(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters);
     foreach ($streams as $value) {
         //Insert user and stream_id in the subscriptions table
         $columns = array('stream_id' => $value, 'subscriber_id' => $subscriber_id);
         self::$db_querier->insert(NewsletterSetup::$newsletter_table_subscriptions, $columns);
     }
     NewsletterStreamsCache::invalidate();
 }
 public static function get_streams_manager()
 {
     if (self::$streams_manager === null) {
         $categories_items_parameters = new CategoriesItemsParameters();
         $categories_items_parameters->set_table_name_contains_items(NewsletterSetup::$newsletter_table_archives);
         self::$streams_manager = new CategoriesManager(NewsletterStreamsCache::load(), $categories_items_parameters);
         self::$streams_manager->get_categories_items_parameters()->set_field_name_id_category('stream_id');
     }
     return self::$streams_manager;
 }
 private function build_response(View $view)
 {
     $body_view = new FileTemplate('newsletter/NewsletterBody.tpl');
     $body_view->add_lang($this->lang);
     $body_view->put('TEMPLATE', $view);
     $response = new SiteDisplayResponse($body_view);
     $breadcrumb = $response->get_graphical_environment()->get_breadcrumb();
     $breadcrumb->add($this->lang['newsletter'], NewsletterUrlBuilder::home()->rel());
     $breadcrumb->add($this->lang['archives.list'], NewsletterUrlBuilder::archives()->rel());
     if ($this->stream->get_id() > 0) {
         $stream = NewsletterStreamsCache::load()->get_stream($this->stream->get_id());
         $breadcrumb->add($stream->get_name(), NewsletterUrlBuilder::archives($this->stream->get_id(), $this->stream->get_rewrited_name())->rel());
     }
     $graphical_environment = $response->get_graphical_environment();
     $graphical_environment->set_page_title($this->lang['archives.list'], $this->lang['newsletter']);
     $graphical_environment->get_seo_meta_data()->set_canonical_url(NewsletterUrlBuilder::archives($this->stream->get_id(), $this->stream->get_rewrited_name()));
     return $response;
 }