Пример #1
0
 public function get_search_request($args)
 {
     $now = new Date();
     $authorized_categories = NewsService::get_authorized_categories(Category::ROOT_CATEGORY);
     $weight = isset($args['weight']) && is_numeric($args['weight']) ? $args['weight'] : 1;
     return "SELECT " . $args['id_search'] . " AS id_search,\n\t\t\tn.id AS id_content,\n\t\t\tn.name AS title,\n\t\t\t( 2 * FT_SEARCH_RELEVANCE(n.name, '" . $args['search'] . "') + (FT_SEARCH_RELEVANCE(n.contents, '" . $args['search'] . "') +\n\t\t\tFT_SEARCH_RELEVANCE(n.short_contents, '" . $args['search'] . "')) / 2 ) / 3 * " . $weight . " AS relevance,\n\t\t\tCONCAT('" . PATH_TO_ROOT . "/news/index.php?url=/', id_category, '-', IF(id_category != 0, cat.rewrited_name, 'root'), '/', n.id, '-', n.rewrited_name) AS link\n\t\t\tFROM " . NewsSetup::$news_table . " n\n\t\t\tLEFT JOIN " . NewsSetup::$news_cats_table . " cat ON n.id_category = cat.id\n\t\t\tWHERE ( FT_SEARCH(n.name, '" . $args['search'] . "') OR FT_SEARCH(n.contents, '" . $args['search'] . "') OR FT_SEARCH_RELEVANCE(n.short_contents, '" . $args['search'] . "') )\n\t\t\tAND id_category IN(" . implode(", ", $authorized_categories) . ")\n\t\t\tAND (approbation_type = 1 OR (approbation_type = 2 AND start_date < '" . $now->get_timestamp() . "' AND (end_date > '" . $now->get_timestamp() . "' OR end_date = 0)))\n\t\t\tORDER BY relevance DESC\n\t\t\tLIMIT 100 OFFSET 0";
 }
Пример #2
0
 public static function get_keywords_manager()
 {
     if (self::$keywords_manager === null) {
         self::$keywords_manager = new KeywordsManager('news');
     }
     return self::$keywords_manager;
 }
 private function get_news()
 {
     if ($this->news === null) {
         $this->news = NewsService::get_news('WHERE id=:id', array('id' => $this->get_id_in_module()));
     }
     return $this->news;
 }
    public function build_view()
    {
        $now = new Date();
        $authorized_categories = NewsService::get_authorized_categories(Category::ROOT_CATEGORY);
        $news_config = NewsConfig::load();
        $condition = 'WHERE id_category IN :authorized_categories
		' . (!NewsAuthorizationsService::check_authorizations()->moderation() ? ' AND author_user_id = :user_id' : '') . '
		AND (approbation_type = 0 OR (approbation_type = 2 AND (start_date > :timestamp_now OR (end_date != 0 AND end_date < :timestamp_now))))';
        $parameters = array('authorized_categories' => $authorized_categories, 'user_id' => AppContext::get_current_user()->get_id(), 'timestamp_now' => $now->get_timestamp());
        $page = AppContext::get_request()->get_getint('page', 1);
        $pagination = $this->get_pagination($condition, $parameters, $page);
        $result = PersistenceContext::get_querier()->select('SELECT news.*, member.*
		FROM ' . NewsSetup::$news_table . ' news
		LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = news.author_user_id
		' . $condition . '
		ORDER BY top_list_enabled DESC, news.creation_date DESC
		LIMIT :number_items_per_page OFFSET :display_from', array_merge($parameters, array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from())));
        $number_columns_display_news = $news_config->get_number_columns_display_news();
        $this->tpl->put_all(array('C_DISPLAY_BLOCK_TYPE' => $news_config->get_display_type() == NewsConfig::DISPLAY_BLOCK, 'C_DISPLAY_LIST_TYPE' => $news_config->get_display_type() == NewsConfig::DISPLAY_LIST, 'C_DISPLAY_CONDENSED_CONTENT' => $news_config->get_display_condensed_enabled(), 'C_COMMENTS_ENABLED' => $news_config->get_comments_enabled(), 'C_NEWS_NO_AVAILABLE' => $result->get_rows_count() == 0, 'C_PENDING_NEWS' => true, 'C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display(), 'C_SEVERAL_COLUMNS' => $number_columns_display_news > 1, 'NUMBER_COLUMNS' => $number_columns_display_news));
        while ($row = $result->fetch()) {
            $news = new News();
            $news->set_properties($row);
            $this->tpl->assign_block_vars('news', $news->get_array_tpl_vars());
            $this->build_sources_view($news);
        }
        $result->dispose();
    }
 private function get_news(HTTPRequestCustom $request)
 {
     $id = $request->get_getint('id', 0);
     if (!empty($id)) {
         try {
             return NewsService::get_news('WHERE id=:id', array('id' => $id));
         } catch (RowNotFoundException $e) {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
 }
Пример #6
0
    public function get_feed_data_struct($idcat = 0, $name = '')
    {
        if (NewsService::get_categories_manager()->get_categories_cache()->category_exists($idcat)) {
            $querier = PersistenceContext::get_querier();
            $category = NewsService::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('feed.name', 'common', 'news');
            $data = new FeedData();
            $data->set_title($feed_module_name . ' - ' . $site_name);
            $data->set_date(new Date());
            $data->set_link(SyndicationUrlBuilder::rss('news', $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 = NewsService::get_categories_manager()->get_childrens($idcat, new SearchCategoryChildrensOptions(), true);
            $ids_categories = array_keys($categories);
            $now = new Date();
            $results = $querier->select('SELECT news.id, news.id_category, news.name, news.rewrited_name, news.contents, news.short_contents, news.creation_date, news.picture_url, cat.rewrited_name AS rewrited_name_cat
				FROM ' . NewsSetup::$news_table . ' news
				LEFT JOIN ' . NewsSetup::$news_cats_table . ' cat ON cat.id = news.id_category
				WHERE id_category IN :cats_ids
				AND (approbation_type = 1 OR (approbation_type = 2 AND start_date < :timestamp_now AND (end_date > :timestamp_now OR end_date = 0))) 
				ORDER BY news.creation_date 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 = NewsUrlBuilder::display_news($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_name']);
                $item = new FeedItem();
                $item->set_title($row['name']);
                $item->set_link($link);
                $item->set_guid($link);
                $item->set_desc(FormatingHelper::second_parse($row['contents']));
                $item->set_date(new Date($row['creation_date'], Timezone::SERVER_TIMEZONE));
                $item->set_image_url($row['picture_url']);
                $item->set_auth(NewsService::get_categories_manager()->get_heritated_authorizations($row['id_category'], Category::READ_AUTHORIZATIONS, Authorizations::AUTH_PARENT_PRIORITY));
                $data->add_item($item);
            }
            $results->dispose();
            return $data;
        }
    }
 private function get_keyword()
 {
     if ($this->keyword === null) {
         $rewrited_name = AppContext::get_request()->get_getstring('tag', '');
         if (!empty($rewrited_name)) {
             try {
                 $this->keyword = NewsService::get_keywords_manager()->get_keyword('WHERE rewrited_name=:rewrited_name', array('rewrited_name' => $rewrited_name));
             } catch (RowNotFoundException $e) {
                 $error_controller = PHPBoostErrors::unexisting_page();
                 DispatchManager::redirect($error_controller);
             }
         } else {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
     return $this->keyword;
 }
 private function save()
 {
     $this->config->set_number_news_per_page($this->form->get_value('number_news_per_page'));
     $this->config->set_number_columns_display_news($this->form->get_value('number_columns_display_news'));
     $this->config->set_display_condensed_enabled($this->form->get_value('display_condensed'));
     if ($this->config->get_display_condensed_enabled()) {
         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_number_character_to_cut($this->form->get_value('number_character_to_cut', $this->config->get_number_character_to_cut()));
     $this->config->set_comments_enabled($this->form->get_value('comments_enabled'));
     $this->config->set_news_suggestions_enabled($this->form->get_value('news_suggestions_enabled'));
     $this->config->set_author_displayed($this->form->get_value('author_displayed'));
     $this->config->set_display_type($this->form->get_value('display_type')->get_raw_value());
     $this->config->set_authorizations($this->form->get_value('authorizations')->build_auth_array());
     NewsConfig::save();
     NewsService::get_categories_manager()->regenerate_cache();
 }
 /**
  * Prepare datas for News preview panel
  * 
  * @param Template $t
  */
 private function prepareDatasForNewsPanel(Template $t)
 {
     $newsService = new NewsService();
     $t->newsPreviewList = $newsService->search(true, false, 0, $this->newsPreviewCount);
     //$date = new DateTimeFrench("now",new DateTimeZone('UTC'));
     $date = new DateTimeCustom(DateTimeCustom::NOW);
     $t->newsPreviewDate = $date->format("d F");
     $t->newsFileLocation = News::fileDefaultLocation;
     return $t;
 }
 private function generate_response()
 {
     $response = new SiteDisplayResponse($this->tpl);
     $graphical_environment = $response->get_graphical_environment();
     $graphical_environment->set_page_title($this->get_category()->get_name(), $this->lang['news']);
     $graphical_environment->get_seo_meta_data()->set_description($this->get_category()->get_description());
     $graphical_environment->get_seo_meta_data()->set_canonical_url(NewsUrlBuilder::display_category($this->get_category()->get_id(), $this->get_category()->get_rewrited_name(), AppContext::get_request()->get_getint('page', 1)));
     $breadcrumb = $graphical_environment->get_breadcrumb();
     $breadcrumb->add($this->lang['news'], NewsUrlBuilder::home());
     $categories = array_reverse(NewsService::get_categories_manager()->get_parents($this->get_category()->get_id(), true));
     foreach ($categories as $id => $category) {
         if ($category->get_id() != Category::ROOT_CATEGORY) {
             $breadcrumb->add($category->get_name(), NewsUrlBuilder::display_category($category->get_id(), $category->get_rewrited_name()));
         }
     }
     return $response;
 }
 protected function get_categories_manager()
 {
     return NewsService::get_categories_manager();
 }
Пример #12
0
 public function get_keywords()
 {
     if ($this->keywords === null) {
         $this->keywords = NewsService::get_keywords_manager()->get_keywords($this->id);
     }
     return $this->keywords;
 }
 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);
 }
 private function is_authorized($bit, $mode = Authorizations::AUTH_CHILD_PRIORITY)
 {
     $auth = NewsService::get_categories_manager()->get_heritated_authorizations($this->id_category, $bit, $mode);
     return AppContext::get_current_user()->check_auth($auth, $bit);
 }
 private function generate_response(View $tpl)
 {
     $news = $this->get_news();
     $response = new SiteDisplayResponse($tpl);
     $graphical_environment = $response->get_graphical_environment();
     $breadcrumb = $graphical_environment->get_breadcrumb();
     $breadcrumb->add($this->lang['news'], NewsUrlBuilder::home());
     if ($this->get_news()->get_id() === null) {
         $graphical_environment->set_page_title($this->lang['news.add'], $this->lang['news']);
         $breadcrumb->add($this->lang['news.add'], NewsUrlBuilder::add_news($news->get_id_cat()));
         $graphical_environment->get_seo_meta_data()->set_description($this->lang['news.add']);
         $graphical_environment->get_seo_meta_data()->set_canonical_url(NewsUrlBuilder::add_news($news->get_id_cat()));
     } else {
         $graphical_environment->set_page_title($this->lang['news.edit'], $this->lang['news']);
         $graphical_environment->get_seo_meta_data()->set_description($this->lang['news.edit']);
         $graphical_environment->get_seo_meta_data()->set_canonical_url(NewsUrlBuilder::edit_news($news->get_id()));
         $categories = array_reverse(NewsService::get_categories_manager()->get_parents($news->get_id_cat(), true));
         foreach ($categories as $id => $category) {
             if ($category->get_id() != Category::ROOT_CATEGORY) {
                 $breadcrumb->add($category->get_name(), NewsUrlBuilder::display_category($category->get_id(), $category->get_rewrited_name()));
             }
         }
         $category = $news->get_category();
         $breadcrumb->add($news->get_name(), NewsUrlBuilder::display_news($category->get_id(), $category->get_rewrited_name(), $news->get_id(), $news->get_rewrited_name()));
         $breadcrumb->add($this->lang['news.edit'], NewsUrlBuilder::edit_news($news->get_id()));
     }
     return $response;
 }
 public function __construct()
 {
     parent::__construct(NewsService::get_categories_manager());
 }
Пример #17
0
 public function actionShare($id = 0)
 {
     echo CJSON::encode(NewsService::instance()->share(NewsService::instance()->getNews($id)));
 }
Пример #18
0
 public function uninstall()
 {
     $this->drop_tables();
     ConfigManager::delete('news', 'config');
     NewsService::get_keywords_manager()->delete_module_relations();
 }
Пример #19
0
     echo json_encode(GoodsService::getNextGoodCode($code));
     break;
 case 'uploadImagesForGood':
     $id = Utils::getFromPOST('id');
     $data = $_POST['data'];
     $oldKey = Utils::getFromPOST('old_good_key');
     echo json_encode(GoodsService::updateImages($id, $oldKey, $data));
     break;
 case 'updatePrices':
     $data = $_POST['data'];
     echo json_encode(PriceService::updatePrices($data));
     break;
 case 'loadNews':
     $page = Utils::getFromPOST('page');
     $offset = Utils::getFromPOST('offset');
     echo json_encode(NewsService::loadNews($page, $offset));
     break;
     /*****************************************Booklets*************************************/
 /*****************************************Booklets*************************************/
 case 'listBooklets':
     $mapping = Utils::getFromPOST('mapping');
     echo json_encode(BookletService::getList($mapping));
     break;
 case 'getBooklet':
     //json_encode() will execute in BookletService::get() method
     $id = Utils::getFromPOST('id');
     $mapping = Utils::getFromPOST('mapping');
     echo BookletService::get($id, $mapping);
     break;
 case 'saveBooklet':
     $data = $_POST['data'];