id = $id; $this->news_per_page = $news_per_page; $this->current_time = time(); $this->_localization = Localization::getInstance(); $category_identifier_length = strlen(CATEGORY_IDENTIFIER); if(isset($_GET['get_1']) && substr($_GET['get_1'], 0, $category_identifier_length)==CATEGORY_IDENTIFIER) { $this->category = str_replace(AMPERSAND_REPLACEMENT,'&',substr($_GET['get_1'],$category_identifier_length)); $this->category_urlencoded = str_replace('%26',AMPERSAND_REPLACEMENT,urlencode($this->category)); } if(isset($_GET['get_2'])) $this->current_page = intval($_GET['get_2']); else $this->current_page = 1; if($this->current_page==0) $this->current_page = 1; } public function get_news() { if($this->category) { $dbr = Database::$content->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['pages_table']." WHERE include_page=:include_page AND category=:category AND time<=:time AND status!=0"); $dbr->bindParam(':category', $this->category, PDO::PARAM_STR); } else { $dbr = Database::$content->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['pages_table']." WHERE include_page=:include_page AND time<=:time AND status!=0"); } $dbr->bindParam(':include_page', $this->id, PDO::PARAM_INT); $dbr->bindParam(':time', $this->current_time, PDO::PARAM_INT); $dbr->execute(); $news_count = $dbr->fetchColumn(); if($this->category && $news_count==0) { header('Location: '.BASE_URL.PAGE); exit; } $this->total_pages = ceil($news_count / $this->news_per_page); if($this->current_page>$this->total_pages) $this->current_page = $this->total_pages; $this->_localization->replacePlaceholder('current_page', $this->current_page, 'pagination'); $this->_localization->replacePlaceholder('total_pages', $this->total_pages, 'pagination'); if($this->category) { $dbr = Database::$content->prepare("SELECT id, page, title, page_title, category, type, time, teaser_headline, teaser, teaser_img, link_name, headline, content FROM ".Database::$db_settings['pages_table']." WHERE include_page=:include_page AND time<=:time AND category=:category AND status!=0 ORDER BY time DESC LIMIT ".(($this->current_page-1)*$this->news_per_page).", ".$this->news_per_page); $dbr->bindParam(':category', $this->category, PDO::PARAM_STR); } else { $dbr = Database::$content->prepare("SELECT id, page, title, page_title, category, type, time, teaser_headline, teaser, teaser_img, link_name, headline, content FROM ".Database::$db_settings['pages_table']." WHERE include_page=:include_page AND time<=:time AND status!=0 ORDER BY time DESC LIMIT ".(($this->current_page-1)*$this->news_per_page).", ".$this->news_per_page); } $dbr->bindParam(':include_page', $this->id, PDO::PARAM_INT); $dbr->bindParam(':time', $this->current_time, PDO::PARAM_INT); $dbr->execute(); $i=0; while($news_data = $dbr->fetch()) { if($news_data['type']=='commentable_page') { $dbr2 = Database::$entries->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['comment_table']." WHERE type=0 AND comment_id=:comment_id"); $dbr2->bindParam(':comment_id', $news_data['id'], PDO::PARAM_INT); $dbr2->execute(); #$comment_count = $dbr2->fetchColumn(); $news[$i]['comments'] = $dbr2->fetchColumn(); #$this->lang_replacements[$news_data['id']]['comments'] = $news[$i]['comments']; $this->_localization->bindId('number_of_comments', $news_data['id']); switch($news[$i]['comments']) { case 0: $this->_localization->selectBoundVariant('number_of_comments', $news_data['id'], 0); break; case 1: $this->_localization->selectBoundVariant('number_of_comments', $news_data['id'], 1); break; default: $this->_localization->selectBoundVariant('number_of_comments', $news_data['id'], 2); $this->_localization->replacePlaceholderBound('comments', $news[$i]['comments'], 'number_of_comments', $news_data['id']); } } $news[$i]['id'] = $news_data['id']; $news[$i]['category'] = $news_data['category']; $news[$i]['category_urlencoded'] = str_replace('%26',AMPERSAND_REPLACEMENT,urlencode($news_data['category'])); $news[$i]['title'] = $news_data['title']; if($news_data['teaser_headline']!='') { $news[$i]['teaser_headline'] = $news_data['teaser_headline']; } elseif($news_data['headline']!='') { $news[$i]['teaser_headline'] = $news_data['headline']; } elseif($news_data['title']!='') { $news[$i]['teaser_headline'] = $news_data['title']; } elseif($news_data['page_title']!='') { $news[$i]['teaser_headline'] = $news_data['page_title']; } else { $news[$i]['teaser_headline'] = $news_data['page']; } if($news_data['teaser']!='') { $news[$i]['teaser'] = $news_data['teaser']; $news[$i]['more'] = true; } else { #if($news_data['content_formatting']==1) # { # $news[$i]['teaser'] = auto_html($news_data['content']); # } #else # { $news[$i]['teaser'] = $news_data['content']; # } $news[$i]['teaser'] = parse_special_tags($news[$i]['teaser'], $news_data['page']); $news[$i]['more'] = false; } #$this -> news[$i]['teaser'] = stripslashes($teaser); $news[$i]['page'] = $news_data['page']; $news[$i]['timestamp'] = $news_data['time']; #$news[$i]['time'] = $news_data['time']; #$news[$i]['formated_time'] = format_time(TIME_FORMAT_FULL, $news_data['time']); #$this->lang_replacements[$news_data['id']]['time'] = $news_data['time']; $this->_localization->bindReplacePlaceholder($news_data['id'], 'time', $news_data['time'], 'news_time', Localization::FORMAT_TIME); #$loc->bind_id('news_time', $key); #$loc->replace_placeholder_bound('time', $val['time'], 'news_time', $key, Localization::FORMAT_TIME); if(trim($news_data['teaser_img']!='')) { $news[$i]['teaser_img'] = $news_data['teaser_img']; $teaser_img_info = getimagesize(BASE_PATH.MEDIA_DIR.$news_data['teaser_img']); $news[$i]['teaser_img_width'] = $teaser_img_info[0]; $news[$i]['teaser_img_height'] = $teaser_img_info[1]; } $news[$i]['link_name'] = stripslashes($news_data['link_name']); $i++; } if(isset($news)) return $news; return false; } public function get_feed($rss_maximum_items=20, $fullfeed=false) { $dbr = Database::$content->prepare("SELECT id, page, type, category, title, teaser, teaser_img, headline, content, time, last_modified FROM ".Database::$db_settings['pages_table']." WHERE include_page=:include_page AND time<=:time AND status!=0 ORDER BY time DESC LIMIT ".$rss_maximum_items); $dbr->bindParam(':include_page', $this->id, PDO::PARAM_INT); $dbr->bindParam(':time', $this->current_time, PDO::PARAM_INT); $dbr->execute(); $i=0; while($rss_data = $dbr->fetch()) { $rss_items[$i]['category'] = htmlspecialchars($rss_data['category']); $rss_items[$i]['title'] = htmlspecialchars($rss_data['title']); if($rss_data['headline'] && $fullfeed || empty($rss_data['teaser_headline'])) $rss_items[$i]['title'] = htmlspecialchars($rss_data['headline']); elseif($rss_data['teaser_headline']) $rss_items[$i]['title'] = htmlspecialchars($rss_data['teaser_headline']); else $rss_items[$i]['title'] = htmlspecialchars($rss_data['title']); if($fullfeed || $rss_data['teaser']=='') { #if($rss_data['content_formatting']==1) # { # $rss_items[$i]['content'] = auto_html($rss_data['content']); # } #else # { $rss_items[$i]['content'] = $rss_data['content']; # } $rss_items[$i]['content'] = parse_special_tags($rss_items[$i]['content'], $parent_page=$rss_data['page'], $rss=true); } else { #if($rss_data['teaser_formatting']==1) # { $rss_items[$i]['content'] = auto_html($rss_data['teaser']); # } #else # { $rss_items[$i]['content'] = $rss_data['teaser']; # } } if(!$fullfeed && $rss_data['teaser_img']) { $rss_items[$i]['teaser_img'] = $rss_data['teaser_img']; $teaser_img_info = getimagesize(BASE_PATH.MEDIA_DIR.$rss_data['teaser_img']); $rss_items[$i]['teaser_img_width'] = $teaser_img_info[0]; $rss_items[$i]['teaser_img_height'] = $teaser_img_info[1]; } $rss_items[$i]['link'] = BASE_URL.$rss_data['page']; $rss_items[$i]['pubdate'] = gmdate('r',$rss_data['time']); if($rss_data['type']=='commentable_page') { $this->wfw = true; $rss_items[$i]['commentrss'] = BASE_URL.$rss_data['page'].',commentrss'; } $i++; } if(isset($rss_items)) return $rss_items; return false; } } ?>