public function get_actions_tree_links()
 {
     $lang = LangLoader::get('common', 'newsletter');
     $tree = new ModuleTreeLinks();
     $manage_newsletter_link = new AdminModuleLink($lang['newsletter.streams.manage'], NewsletterUrlBuilder::manage_streams());
     $manage_newsletter_link->add_sub_link(new AdminModuleLink($lang['newsletter.streams.manage'], NewsletterUrlBuilder::manage_streams()));
     $manage_newsletter_link->add_sub_link(new AdminModuleLink($lang['stream.add'], NewsletterUrlBuilder::add_stream()));
     $tree->add_link($manage_newsletter_link);
     $tree->add_link(new AdminModuleLink(LangLoader::get_message('configuration', 'admin'), NewsletterUrlBuilder::configuration()));
     $tree->add_link(new ModuleLink($lang['newsletter-add'], NewsletterUrlBuilder::add_newsletter(), NewsletterAuthorizationsService::default_authorizations()->create_newsletters()));
     $tree->add_link(new ModuleLink($lang['newsletter.archives'], NewsletterUrlBuilder::archives(), NewsletterAuthorizationsService::default_authorizations()->read_archives()));
     return $tree;
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $id_stream = $request->get_int('id_stream', 0);
     if ($this->archive_exist($id) || $id_stream !== 0 && $id !== 0) {
         if (!NewsletterAuthorizationsService::id_stream($id_stream)->moderation_subscribers()) {
             NewsletterAuthorizationsService::get_errors()->moderation_archives();
         }
         NewsletterService::delete_archive($id);
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : NewsletterUrlBuilder::archives($id_stream), LangLoader::get_message('newsletter.message.success.delete', 'common', 'newsletter'));
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error-archive-not-existed']);
         DispatchManager::redirect($controller);
     }
 }
    private function build_form($request)
    {
        $pagination = $this->get_pagination();
        $result = PersistenceContext::get_querier()->select('SELECT @id_stream:= id, newsletter_streams.*,
			(SELECT COUNT(*)
			FROM ' . NewsletterSetup::$newsletter_table_subscriptions . ' subscriptions
			LEFT JOIN ' . NewsletterSetup::$newsletter_table_subscribers . ' subscribers ON subscriptions.subscriber_id = subscribers.id
			LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON subscribers.user_id = member.user_id
			WHERE (subscribers.mail <> \'\' OR member.email <> \'\') AND subscriptions.stream_id = @id_stream
			) AS subscribers_number
		FROM ' . NewsletterSetup::$newsletter_table_streams . ' newsletter_streams
		LIMIT :number_items_per_page OFFSET :display_from', array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from()));
        while ($row = $result->fetch()) {
            if (NewsletterAuthorizationsService::id_stream($row['id'])->read()) {
                $this->view->assign_block_vars('streams_list', array('C_VIEW_ARCHIVES' => NewsletterAuthorizationsService::id_stream($row['id'])->read_archives(), 'C_VIEW_SUBSCRIBERS' => NewsletterAuthorizationsService::id_stream($row['id'])->read_subscribers(), 'IMAGE' => Url::to_rel($row['image']), 'NAME' => $row['name'], 'DESCRIPTION' => $row['description'], 'SUBSCRIBERS_NUMBER' => $row['subscribers_number'], 'U_VIEW_ARCHIVES' => NewsletterUrlBuilder::archives($row['id'], $row['rewrited_name'])->absolute(), 'U_VIEW_SUBSCRIBERS' => NewsletterUrlBuilder::subscribers($row['id'], $row['rewrited_name'])->absolute()));
            }
        }
        $this->view->put_all(array('C_SUSCRIBE' => NewsletterAuthorizationsService::check_authorizations()->subscribe(), 'C_STREAMS' => $result->get_rows_count() != 0, 'C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display()));
        $result->dispose();
    }
 protected function get_category_url(Category $category)
 {
     return NewsletterUrlBuilder::archives($category->get_id(), $category->get_rewrited_name());
 }
 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;
 }