You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

234 lines
9.4 KiB

<?php
class News
{
#var $news = false;
public $total_pages;
public $current_page = 1;
public $news_per_page;
public $category='';
public $category_urlencoded='';
public $wfw=false;
private $id;
#private $pdo;
#private $db_settings;
private $current_time;
private $_localization;
public function __construct($id, $news_per_page)
{
$this->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;
}
}
?>