コード例 #1
0
    public function get_feed_data_struct($idcat = 0, $name = '')
    {
        if (ArticlesService::get_categories_manager()->get_categories_cache()->category_exists($idcat)) {
            $querier = PersistenceContext::get_querier();
            $category = ArticlesService::get_categories_manager()->get_categories_cache()->get_category($idcat);
            $site_name = GeneralConfig::load()->get_site_name();
            $site_name = $idcat != Category::ROOT_CATEGORY ? $site_name . ' : ' . $category->get_name() : $site_name;
            $feed_module_name = LangLoader::get_message('articles.feed_name', 'common', 'articles');
            $data = new FeedData();
            $data->set_title($feed_module_name . ' - ' . $site_name);
            $data->set_date(new Date());
            $data->set_link(SyndicationUrlBuilder::rss('articles', $idcat));
            $data->set_host(HOST);
            $data->set_desc($feed_module_name . ' - ' . $site_name);
            $data->set_lang(LangLoader::get_message('xml_lang', 'main'));
            $data->set_auth_bit(Category::READ_AUTHORIZATIONS);
            $categories = ArticlesService::get_categories_manager()->get_childrens($idcat, new SearchCategoryChildrensOptions(), true);
            $ids_categories = array_keys($categories);
            $now = new Date();
            $results = $querier->select('SELECT articles.id, articles.id_category, articles.title, articles.rewrited_title, articles.picture_url, 
			articles.contents, articles.description, articles.date_created, cat.rewrited_name AS rewrited_name_cat
			FROM ' . ArticlesSetup::$articles_table . ' articles
			LEFT JOIN ' . ArticlesSetup::$articles_cats_table . ' cat ON cat.id = articles.id_category
			WHERE articles.id_category IN :cats_ids
			AND (published = 1 OR (published = 2 AND publishing_start_date < :timestamp_now AND (publishing_end_date > :timestamp_now OR publishing_end_date = 0)))
			ORDER BY articles.date_created DESC', array('cats_ids' => $ids_categories, 'timestamp_now' => $now->get_timestamp()));
            foreach ($results as $row) {
                $row['rewrited_name_cat'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root';
                $link = ArticlesUrlBuilder::display_article($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_title']);
                $item = new FeedItem();
                $item->set_title($row['title']);
                $item->set_link($link);
                $item->set_guid($link);
                $item->set_desc(FormatingHelper::second_parse($row['contents']));
                $item->set_date(new Date($row['date_created'], Timezone::SERVER_TIMEZONE));
                $item->set_image_url($row['picture_url']);
                $item->set_auth(ArticlesService::get_categories_manager()->get_heritated_authorizations($row['id_category'], Category::READ_AUTHORIZATIONS, Authorizations::AUTH_PARENT_PRIORITY));
                $data->add_item($item);
            }
            $results->dispose();
            return $data;
        }
    }
コード例 #2
0
 private function build_response(View $tpl)
 {
     $article = $this->get_article();
     $response = new SiteDisplayResponse($tpl);
     $graphical_environment = $response->get_graphical_environment();
     $breadcrumb = $graphical_environment->get_breadcrumb();
     $breadcrumb->add($this->lang['articles'], ArticlesUrlBuilder::home());
     if ($article->get_id() === null) {
         $breadcrumb->add($this->lang['articles.add'], ArticlesUrlBuilder::add_article($article->get_id_category()));
         $graphical_environment->set_page_title($this->lang['articles.add'], $this->lang['articles']);
         $graphical_environment->get_seo_meta_data()->set_description($this->lang['articles.add']);
         $graphical_environment->get_seo_meta_data()->set_canonical_url(ArticlesUrlBuilder::add_article($article->get_id_category()));
     } else {
         $categories = array_reverse(ArticlesService::get_categories_manager()->get_parents($article->get_id_category(), true));
         foreach ($categories as $id => $category) {
             if ($category->get_id() != Category::ROOT_CATEGORY) {
                 $breadcrumb->add($category->get_name(), ArticlesUrlBuilder::display_category($category->get_id(), $category->get_rewrited_name()));
             }
         }
         $breadcrumb->add($article->get_title(), ArticlesUrlBuilder::display_article($category->get_id(), $category->get_rewrited_name(), $article->get_id(), $article->get_rewrited_title()));
         $breadcrumb->add($this->lang['articles.edit'], ArticlesUrlBuilder::edit_article($article->get_id()));
         $graphical_environment->set_page_title($this->lang['articles.edit'], $this->lang['articles']);
         $graphical_environment->get_seo_meta_data()->set_description($this->lang['articles.edit']);
         $graphical_environment->get_seo_meta_data()->set_canonical_url(ArticlesUrlBuilder::edit_article($article->get_id()));
     }
     return $response;
 }
コード例 #3
0
 protected function get_categories_manager()
 {
     return ArticlesService::get_categories_manager();
 }
コード例 #4
0
 public function __construct()
 {
     parent::__construct(ArticlesService::get_categories_manager());
 }
コード例 #5
0
 private function is_authorized($bit, $mode = Authorizations::AUTH_CHILD_PRIORITY)
 {
     $auth = ArticlesService::get_categories_manager()->get_heritated_authorizations($this->id_category, $bit, $mode);
     return AppContext::get_current_user()->check_auth($auth, $bit);
 }
コード例 #6
0
 public function url_mappings()
 {
     $db_querier = PersistenceContext::get_querier();
     $phpboost_4_1_release_date = new Date('2014-07-15');
     if (GeneralConfig::load()->get_site_install_date()->is_anterior_to($phpboost_4_1_release_date)) {
         // Articles
         if (class_exists('ArticlesService')) {
             $this->urls_mappings[] = new UrlMapping('^articles/articles.php$', '/articles/', 'L,R=301');
             $categories = ArticlesService::get_categories_manager()->get_categories_cache()->get_categories();
             foreach ($categories as $id => $category) {
                 $this->urls_mappings[] = new UrlMapping('^articles/articles-' . $id . '\\+([^.]*).php$', '/articles/' . $id . '-' . $category->get_rewrited_name() . '/', 'L,R=301');
                 $this->urls_mappings[] = new UrlMapping('^articles/articles-' . $id . '-([0-9]*)\\+([^.]*).php$', '/articles/' . $id . '-' . $category->get_rewrited_name() . '/$1-$2/', 'L,R=301');
             }
         }
         // Calendar
         if (class_exists('CalendarService')) {
             $this->urls_mappings[] = new UrlMapping('^calendar/calendar$', '/calendar/', 'L,R=301');
             $this->urls_mappings[] = new UrlMapping('^calendar/calendar-([0-9]+)-([0-9]+)-([0-9]+)-?([0-9]*).php$', '/calendar/$3-$2-$1/', 'L,R=301');
         }
         // Guestbook
         if (class_exists('GuestbookService')) {
             $this->urls_mappings[] = new UrlMapping('^guestbook/guestbook.php$', '/guestbook/', 'L,R=301');
         }
         // News
         if (class_exists('NewsService')) {
             $this->urls_mappings[] = new UrlMapping('^news/news.php$', '/news/', 'L,R=301');
             $categories = NewsService::get_categories_manager()->get_categories_cache()->get_categories();
             foreach ($categories as $id => $category) {
                 $this->urls_mappings[] = new UrlMapping('^news/news-' . $id . '\\+([^.]*).php$', '/news/' . $id . '-' . $category->get_rewrited_name() . '/', 'L,R=301');
                 $this->urls_mappings[] = new UrlMapping('^news/news-' . $id . '-([0-9]*)\\+([^.]*).php$', '/news/' . $id . '-' . $category->get_rewrited_name() . '/$1-$2/', 'L,R=301');
             }
         }
     }
     // Download
     if (class_exists('DownloadService')) {
         $this->urls_mappings[] = new UrlMapping('^download/download\\.php$', '/download/', 'L,R=301');
         $categories = DownloadService::get_categories_manager()->get_categories_cache()->get_categories();
         $result = $db_querier->select_rows(PREFIX . 'download', array('id', 'id_category', 'rewrited_name'));
         while ($row = $result->fetch()) {
             $category = $categories[$row['id_category']];
             if (!empty($category)) {
                 $this->urls_mappings[] = new UrlMapping('^download/download-' . $row['id'] . '(-?[^.]*)\\.php$', '/download/' . $category->get_id() . '-' . $category->get_rewrited_name() . '/' . $row['id'] . '-' . $row['rewrited_name'], 'L,R=301');
                 $this->urls_mappings[] = new UrlMapping('^download/file-' . $row['id'] . '(-?[^.]*)\\.php$', '/download/' . $category->get_id() . '-' . $category->get_rewrited_name() . '/' . $row['id'] . '-' . $row['rewrited_name'], 'L,R=301');
             }
         }
         $result->dispose();
         foreach ($categories as $id => $category) {
             $this->urls_mappings[] = new UrlMapping('^download/category-' . $id . '(-?[^.]*)\\.php$', '/download/' . $id . '-' . $category->get_rewrited_name() . '/', 'L,R=301');
         }
     }
     // FAQ
     if (class_exists('FaqService')) {
         $this->urls_mappings[] = new UrlMapping('^faq/faq\\.php$', '/faq/', 'L,R=301');
         $categories = FaqService::get_categories_manager()->get_categories_cache()->get_categories();
         foreach ($categories as $id => $category) {
             $this->urls_mappings[] = new UrlMapping('^faq/faq-' . $category->get_id() . '(\\+?[^.]*)\\.php$', '/faq/' . $id . '-' . $category->get_rewrited_name() . '/', 'L,R=301');
         }
     }
     // Shoutbox
     if (class_exists('ShoutboxService')) {
         $this->urls_mappings[] = new UrlMapping('^shoutbox/shoutbox\\.php$', '/shoutbox/', 'L,R=301');
     }
     // Web
     if (class_exists('WebService')) {
         $this->urls_mappings[] = new UrlMapping('^web/web\\.php$', '/web/', 'L,R=301');
         $categories = WebService::get_categories_manager()->get_categories_cache()->get_categories();
         $result = $db_querier->select_rows(PREFIX . 'web', array('id', 'id_category', 'rewrited_name'));
         while ($row = $result->fetch()) {
             $category = $categories[$row['id_category']];
             if (!empty($category)) {
                 $this->urls_mappings[] = new UrlMapping('^web/web-' . $category->get_id() . '-' . $row['id'] . '([^.]*)\\.php$', '/web/' . $category->get_id() . '-' . $category->get_rewrited_name() . '/' . $row['id'] . '-' . $row['rewrited_name'], 'L,R=301');
             }
         }
         $result->dispose();
         foreach ($categories as $id => $category) {
             $this->urls_mappings[] = new UrlMapping('^web/web-' . $category->get_id() . '(-?[^.]*)\\.php$', '/web/' . $id . '-' . $category->get_rewrited_name() . '/', 'L,R=301');
         }
     }
     return new UrlMappings($this->urls_mappings);
 }
コード例 #7
0
 private function generate_response()
 {
     $response = new SiteDisplayResponse($this->tpl);
     $graphical_environment = $response->get_graphical_environment();
     $graphical_environment->set_page_title($this->article->get_title(), $this->lang['articles']);
     $graphical_environment->get_seo_meta_data()->set_description($this->article->get_description());
     $graphical_environment->get_seo_meta_data()->set_canonical_url(ArticlesUrlBuilder::display_article($this->category->get_id(), $this->category->get_rewrited_name(), $this->article->get_id(), $this->article->get_rewrited_title(), AppContext::get_request()->get_getint('page', 1)));
     $breadcrumb = $graphical_environment->get_breadcrumb();
     $breadcrumb->add($this->lang['articles'], ArticlesUrlBuilder::home());
     $categories = array_reverse(ArticlesService::get_categories_manager()->get_parents($this->article->get_id_category(), true));
     foreach ($categories as $id => $category) {
         if ($category->get_id() != Category::ROOT_CATEGORY) {
             $breadcrumb->add($category->get_name(), ArticlesUrlBuilder::display_category($category->get_id(), $category->get_rewrited_name()));
         }
     }
     $breadcrumb->add($this->article->get_title(), ArticlesUrlBuilder::display_article($category->get_id(), $category->get_rewrited_name(), $this->article->get_id(), $this->article->get_rewrited_title()));
     return $response;
 }
コード例 #8
0
ファイル: Article.class.php プロジェクト: AroundPBT/PHPBoost
 public function get_category()
 {
     return ArticlesService::get_categories_manager()->get_categories_cache()->get_category($this->id_category);
 }
コード例 #9
0
 private function save()
 {
     $this->config->set_number_articles_per_page($this->form->get_value('number_articles_per_page'));
     if ($this->form->get_value('display_icon_cats')) {
         $this->config->enable_cats_icon();
         $this->config->set_number_cols_display_cats($this->form->get_value('number_cols_display_cats'));
     } else {
         $this->config->disable_cats_icon();
     }
     $this->config->set_number_categories_per_page($this->form->get_value('number_categories_per_page'));
     $this->config->set_number_character_to_cut($this->form->get_value('number_character_to_cut', $this->config->get_number_character_to_cut()));
     if ($this->form->get_value('notation_enabled')) {
         $this->config->enable_notation();
         $this->config->set_notation_scale($this->form->get_value('notation_scale'));
         if ($this->form->get_value('notation_scale') != $this->config->get_notation_scale()) {
             NotationService::update_notation_scale('articles', $this->config->get_notation_scale(), $this->form->get_value('notation_scale'));
         }
     } else {
         $this->config->disable_notation();
     }
     if ($this->form->get_value('comments_enabled')) {
         $this->config->enable_comments();
     } else {
         $this->config->disable_comments();
     }
     if ($this->form->get_value('display_descriptions_to_guests')) {
         $this->config->display_descriptions_to_guests();
     } else {
         $this->config->hide_descriptions_to_guests();
     }
     $this->config->set_display_type($this->form->get_value('display_type')->get_raw_value());
     $this->config->set_root_category_description($this->form->get_value('root_category_description'));
     $this->config->set_authorizations($this->form->get_value('authorizations')->build_auth_array());
     ArticlesConfig::save();
     ArticlesService::get_categories_manager()->regenerate_cache();
 }