<?php
// RSS To Post
// By DennisTT
// Version 1.1.0 - Änderungen von Michael (Zeilen 289-307)
// This plugin (C) DennisTT 2006. You may not redistribute this plugin without the permission from DennisTT.
function rss2post_info()
{
return array(
"name" => "RSS To Post",
"description" => "Analysiert RSS-Feeds und stellt neue Infos in ein spezifisches Forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.",
"website" => "http://www.dennistt.net",
"author" => "DennisTT",
"authorsite" => "http://www.dennistt.net",
"version" => "1.1.0",
);
}
/*
function rss2post_info()
{
return array(
"name" => "RSS To Post",
"description" => "Parses RSS feeds and posts new items onto a specified forum.<br />==>> Credits to Vojtech Semecky for RSS parser class.",
"website" => "http://www.dennistt.net",
"author" => "DennisTT",
"authorsite" => "http://www.dennistt.net",
"version" => "1.1.0",
);
}
*/
function rss2post_activate()
{
global $db, $cache;
$cache->update('rss2post', 0);
$db->query("
CREATE TABLE `".TABLE_PREFIX."rss2post` (
`fid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` VARCHAR( 255 ) NOT NULL ,
`forum` INT( 10 ) UNSIGNED NOT NULL
) ENGINE = MYISAM ;
");
$info = rss2post_info();
$setting_group_array = array(
'name' => str_replace(' ', '_', 'dennistt_'.strtolower($info['name'])),
'title' => "$info[name] (DennisTT)",
//'description' => "Settings for the $info[name] plugin",
'description' => "Einstellungen für das Plugin \"$info[name]\"",
'disporder' => 1,
'isdefault' => 'no',
);
$db->insert_query(TABLE_PREFIX.'settinggroups', $setting_group_array);
$group = $db->insert_id();
/*
$setting_group_array = array(
'name' => str_replace(' ', '_', 'dennistt_'.strtolower($info['name'])),
'title' => "$info[name] (DennisTT)",
'description' => "Settings for the $info[name] plugin",
'disporder' => 1,
'isdefault' => 'no',
);
$db->insert_query(TABLE_PREFIX.'settinggroups', $setting_group_array);
$group = $db->insert_id();
*/
$settings = array(
'rss2post_auto' => array('Automatischer Scan?', 'Wenn \"Ja\" gewählt ist, werden die RSS-Feeds nach einer bestimmten Zeit neu gescannt.<br />Wenn \"Nein\" gewählt ist, werden die RSS-Feeds nur manuell über das Plugin-CP neu eingelesen.', 'yesno', 'yes'),
'rss2post_userid' => array('Benutzer-ID', 'ID des Benutzers, der als Autor erwänt wird.', 'text', '1'),
'rss2post_interval' => array('Time-Out-Intervall', 'Intervall zwischen den Scans in Minuten', 'text', '90'),
'rss2post_striphtml' => array('Strip HTML', 'Soll der Feed-Inhalt aufgelöst werden, wenn er HTML-Code enthält?', 'yesno', 'yes'),
'rss2post_forcerunpw' => array('Force Run Password', 'Dies ist das Passwort, das via URL jedes Mal hinzugefügt wird, wenn das Plugin "forced-run" ausgeführt wird. (siehe auch "RSS To Post - Konfigurationshinweise" für weitere Informationen über "force-run")', 'text', rand(100, 999)),
);
$i = 1;
foreach($settings as $name => $sinfo)
{
$db->query("INSERT INTO ".TABLE_PREFIX."settings (name,title,description,optionscode,value,gid,disporder) VALUES ('$name', '$sinfo[0]', '$sinfo[1]', '$sinfo[2]', '$sinfo[3]', $group, $i)");
$i++;
}
rebuildsettings();
echo '<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>';
}
function rss2post_deactivate()
{
global $db;
$info = rss2post_info();
$result = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE title = '$info[name] (DennisTT)' LIMIT 1");
$group = $db->fetch_array($result);
if(!empty($group['gid']))
{
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid = $group[gid] LIMIT 1");
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid = $group[gid]");
rebuildsettings();
}
$db->query("DROP TABLE ".TABLE_PREFIX."rss2post");
$db->delete_query(TABLE_PREFIX."datacache", "title='rss2post'");
echo '<script type="text/javascript">parent.nav.location.href = parent.nav.location.href;</script>';
}
$plugins->add_hook("admin_index_navigation_end", "rss2post_admin_menu");
function rss2post_admin_menu()
{
global $menu, $lang;
$menu[] = array(
"title" => "RSS To Post",
"items" => array(
10 => array("title" => $lang->nav_manage, "url" => "index.php?".SID."&plugin=rss2post&pluginaction=list"),
)
);
}
$plugins->add_hook("admin_index_start", "rss2post_admin");
function rss2post_admin()
{
global $mybb, $db, $lang;
if(isset($mybb->input['plugin']) && $mybb->input['plugin'] == 'rss2post')
{
addacpnav("RSS To Post", "index.php?".SID."&plugin=rss2post&pluginaction=list");
$action = (isset($mybb->input['pluginaction'])) ? $mybb->input['pluginaction'] : 'list';
if($action == 'do_update')
{
// Update existing feed info
if(is_array($mybb->input['url']))
{
foreach($mybb->input['url'] as $fid => $url)
{
// Delete if requested
if(isset($mybb->input['delete'][$fid]) && $mybb->input['delete'][$fid] == 'true')
{
$db->delete_query(TABLE_PREFIX."rss2post", "fid='{$fid}'", 1);
continue;
}
// Validate variables
$forum = intval($mybb->input['forum'][$fid]);
$query = $db->simple_select(TABLE_PREFIX."forums", "fid", "type='f' AND fid='{$forum}'");
if($db->num_rows($query) == 0)
{
cperror("One of the forum IDs you have provided is invalid. Please go back and correct it.");
}
$update_array = array(
'url' => $db->escape_string($url),
'forum' => $forum
);
$db->update_query(TABLE_PREFIX."rss2post", $update_array, "fid='{$fid}'");
if(isset($mybb->input['run'][$fid]) && $mybb->input['run'][$fid] == 'true')
{
rss2post_process_feed($url, $forum);
}
}
}
if(!empty($mybb->input['newurl']))
{
$forum = intval($mybb->input['newforum']);
$query = $db->simple_select(TABLE_PREFIX."forums", "fid", "type='f' AND fid='{$forum}'");
if($db->num_rows($query) == 0)
{
cperror("One of the forum IDs you have provided is invalid. Please go back and correct it.");
}
$insert_array = array(
'url' => $db->escape_string($mybb->input['newurl']),
'forum' => $forum
);
$db->insert_query(TABLE_PREFIX."rss2post", $insert_array);
if(isset($mybb->input['newrun']) && $mybb->input['newrun'] == 'true')
{
rss2post_process_feed($mybb->input['newurl'], $forum);
}
}
cpredirect("index.php?".SID."&plugin=rss2post&pluginaction=list", "Die \"RSS To Post\"-Informationen wurden erfolgreich aktualiesiert.");
die();
}
cpheader();
starttable();
startform("index.php");
makehiddencode('plugin', 'rss2post');
makehiddencode('pluginaction', 'do_update');
tableheader('RSS To Post - Configuration', '', 4);
tablesubheader(array('URL', 'Forum-ID', 'Löschen', 'Ausführen'));
$query = $db->simple_select(TABLE_PREFIX."rss2post", "*");
if($db->num_rows($query) > 0)
{
while($row = $db->fetch_array($query))
{
$bg = getaltbg();
echo '<tr>';
echo "\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"url[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['url'])."\" style=\"width:100%\" /></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"forum[{$row['fid']}]\" value=\"".htmlspecialchars_uni($row['forum'])."\" style=\"width:100%\" /></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"delete[{$row['fid']}]\" value=\"true\" /></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"run[{$row['fid']}]\" value=\"true\" /></td>";
echo '</tr>';
}
}
else
{
echo '<tr><td colspan="4" class="trow1">No RSS feeds to display</td></tr>';
}
tablesubheader('Neuer RSS-Feed', '', 4);
$bg = getaltbg();
echo '<tr>';
echo "\n<td class=\"{$bg}\" style=\"width:70%\"><input type=\"text\" name=\"newurl\" value=\"\" style=\"width:100%\" /></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%\"><input type=\"text\" name=\"newforum\" value=\"\" style=\"width:100%\" /></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"></td>";
echo "\n<td class=\"{$bg}\" style=\"width:10%; text-align:center\"><input type=\"checkbox\" name=\"newrun\" value=\"true\" checked=\"checked\" /></td>";
echo '</tr>';
endtable();
endform("RSS To Post-Konfiguration aktualisieren", $lang->reset_button);
echo "<h3>Zusätzliche Plugin-Info:</h3><p><strong>Force Run:</strong> Wenn die Möglichkeit für \"cronjobs\" auf dem Server besteht, kannst du einen \"cronjob\" einrichten, der<br /><br /> <a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a><br /><br />im angegebenen Intervall ausführt. Alternativ kannst du diese URL verwenden, um das Plugin manuell auszuführen.</p>";
//echo "<h3>Additional Plugin Info:</h3><p><strong>Force Run:</strong> If you have access to create cronjobs on your server, you can create a cronjob that runs <a href=\"{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}\">{$mybb->settings['bburl']}/index.php?forcerss2post&rsspw={$mybb->settings['rss2post_forcerunpw']}</a> at the interval of your choice. Alternatively you can use this URL to run the plugin manually whenever you choose.</p>";
rss2post_cpfooter();
die();
}
}
$plugins->add_hook("global_end", "rss2post_run");
function rss2post_run()
{
global $cache, $mybb, $db;
// Quit if automatic mode is not turned on and run isn't being forced
if($mybb->settings['rss2post_auto'] == 'no' && !isset($mybb->input['forcerss2post']))
{
return;
}
// If the run isn't forced, or the password is not correct, check timeout interval
if(!isset($mybb->input['forcerss2post']) || $mybb->input['rsspw'] != $mybb->settings['rss2post_forcerunpw'])
{
$minutes_before_next_run = $mybb->settings['rss2post_interval']; // Minutes to wait before allowing another run.
$last_run = $cache->read('rss2post');
if($last_run > (time() - $minutes_before_next_run*60))
{
return;
}
}
// Clear error data cache
$cache->update('rss2post_errors', '');
// Find out what feeds there are to update.
$query = $db->simple_select(TABLE_PREFIX."rss2post");
while($row = $db->fetch_array($query))
{
rss2post_process_feed($row['url'], $row['forum']);
}
$cache->update('rss2post', time());
}
function rss2post_process_feed($url, $forum)
{
global $db, $mybb, $cache;
// Create feed reader
$feeder = new lastRSS;
$feeder->CDATA = 'content';
$uid = intval($mybb->settings['rss2post_userid']);
$query = $db->simple_select(TABLE_PREFIX."users", "username", "uid='{$uid}'");
$user = $db->fetch_array($query);
// Get the feed
if($feed = $feeder->Get($url))
{
$items = $feed['items'];
// Loop through each item
foreach($items as $item_data)
{
// Make a title if none exists
if(empty($item_data['title']))
{
$item_data['title'] = substr($item_data['description'], 0, 60);
if(strlen($item_data['description']) > 60)
{
$item_data['title'] .= '...';
}
}
/* // See if title exists in posting forum
$subject = html_entity_decode($item_data['title']);
$subject_sql = $db->escape_string($subject);
$query = $db->simple_select(TABLE_PREFIX."threads", "tid", "subject='{$subject_sql}' AND fid='{$forum}'");
if($db->num_rows($query) == 0)
{
// Add thread to forum (code based on MyBB 1.2.1 newthread.php)
// Set up posthandler.
require_once MYBB_ROOT."inc/datahandlers/post.php";
$posthandler = new PostDataHandler("insert");
$posthandler->action = "thread";
$message = html_entity_decode($item_data['description']);
*/
// See if title exists in posting forum
$filetype = ".".array_pop(explode(".", $url));
if($filetype == "xml") {
utf8_encode($subject);
}
$subject = html_entity_decode($item_data['title']);
$subject_sql = $db->escape_string($subject);
$query = $db->simple_select(TABLE_PREFIX."threads", "tid", "subject='{$subject_sql}' AND fid='{$forum}'");
if($db->num_rows($query) == 0)
{
// Add thread to forum (code based on MyBB 1.2.1 newthread.php)
// Set up posthandler.
require_once MYBB_ROOT."inc/datahandlers/post.php";
$posthandler = new PostDataHandler("insert");
$posthandler->action = "thread";
if($filetype == "xml") {
utf8_encode($item_data['description']);
}
$message = html_entity_decode($item_data['description']);
$meta_info = '';
if(!empty($item_data['link']))
{
$meta_info .= ''.$item_data['link'];
}
if(!empty($meta_info))
{
$message .= "\n\nQuelle: ".$meta_info;
}
if(!empty($item_data['author']))
{
$message .= "\nAuthor: {$item_data['author']}";
}
if(!empty($item_data['comments']))
{
$message .= "\nComments: {$item_data['comments']}";
}
// Strip HTML tags if required
if($mybb->settings['rss2post_striphtml'] == 'yes')
{
$message = strip_tags($message);
}
// Set the thread data
$new_thread = array(
"fid" => $forum,
"subject" => $subject,
if(my_strlen($subject) > 25)
{
$subject = my_substr($lastpost_subject, 0, 25) . "...";
}
"icon" => -1,
"uid" => $uid,
"username" => $user['username'],
"message" => $message,
"ipaddress" => '127.0.0.1',
"posthash" => '',
"savedraft" => 0,
);
// Set up the thread options
$new_thread['options'] = array(
"signature" => 'yes',
"emailnotify" => 'no',
"disablesmilies" => 'no'
);
$posthandler->set_data($new_thread);
// Now let the post handler do all the hard work.
if($posthandler->validate_thread())
{
$thread_info = $posthandler->insert_thread();
}
else
{
$errors = $cache->read("rss2post_errors");
if($errors === false)
{
$errors = '';
}
$errors .= 'Date: ' . gmdate('r') . "\n";
$errors .= "URL: {$url}\n";
$errors .= "Forum ID: {$forum}\n";
ob_start();
var_dump($item_data);
$errors .= ob_get_clean();
$datahandler_errors = $posthandler->get_errors();
ob_start();
var_dump($datahandler_errors);
$errors .= ob_get_clean();
$errors .= "\n\n===========================================\n\n";
$cache->update('rss2post_errors', $errors);
}
}
}
}
else
{
$errors = $cache->read("rss2post_errors");
if($errors === false)
{
$errors = '';
}
$errors .= 'Date: ' . gmdate('r') . "\n";
$errors .= "URL: {$url}\n";
$errors .= "Forum ID: {$forum}\n";
$errors .= "There was a problem accessing the URL.";
$errors .= "\n\n===========================================\n\n";
$cache->update('rss2post_errors', $errors);
}
}
function rss2post_cpfooter()
{
echo "<div align=\"center\">\n<br />\n<br />\n<font size=\"1\" face=\"Verdana,Arial,Helvetica\">\nRSS To Post Plugin by <a href=\"http://www.dennistt.net\">DennisTT</a>\n</font>\n</div>\n";
cpfooter();
}
if(!function_exists('htmlspecialchars_decode'))
{
// Courtesy of people commenting @ php.net manual
function htmlspecialchars_decode($text)
{
return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
}
}
/*
======================================================================
lastRSS 0.9.1
Simple yet powerfull PHP class to parse RSS files.
by Vojtech Semecky, webmaster @ webdot . cz
Latest version, features, manual and examples:
http://lastrss.webdot.cz/
----------------------------------------------------------------------
LICENSE
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To read the license please visit http://www.gnu.org/copyleft/gpl.html
======================================================================
*/
/**
* lastRSS
* Simple yet powerfull PHP class to parse RSS files.
*/
class lastRSS {
// -------------------------------------------------------------------
// Public properties
// -------------------------------------------------------------------
var $default_cp = 'UTF-8';
var $CDATA = 'nochange';
var $cp = '';
var $items_limit = 0;
var $stripHTML = False;
var $date_format = '';
// -------------------------------------------------------------------
// Private variables
// -------------------------------------------------------------------
var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webMaster', 'lastBuildDate', 'rating', 'docs');
var $itemtags = array('title', 'link', 'description', 'author', 'category', 'comments', 'enclosure', 'guid', 'pubDate', 'source');
var $imagetags = array('title', 'url', 'link', 'width', 'height');
var $textinputtags = array('title', 'description', 'name', 'link');
// -------------------------------------------------------------------
// Parse RSS file and returns associative array.
// -------------------------------------------------------------------
function Get ($rss_url) {
// If CACHE ENABLED
if ($this->cache_dir != '') {
$cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
$timedif = @(time() - filemtime($cache_file));
if ($timedif < $this->cache_time) {
// cached file is fresh enough, return cached array
$result = unserialize(join('', file($cache_file)));
// set 'cached' to 1 only if cached file is correct
if ($result) $result['cached'] = 1;
} else {
// cached file is too old, create new
$result = $this->Parse($rss_url);
$serialized = serialize($result);
if ($f = @fopen($cache_file, 'w')) {
fwrite ($f, $serialized, strlen($serialized));
fclose($f);
}
if ($result) $result['cached'] = 0;
}
}
// If CACHE DISABLED >> load and parse the file directly
else {
$result = $this->Parse($rss_url);
if ($result) $result['cached'] = 0;
}
// return result
return $result;
}
// -------------------------------------------------------------------
// Modification of preg_match(); return trimed field with index 1
// from 'classic' preg_match() array output
// -------------------------------------------------------------------
function my_preg_match ($pattern, $subject) {
// start regullar expression
preg_match($pattern, $subject, $out);
// if there is some result... process it and return it
if(isset($out[1])) {
// Process CDATA (if present)
if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
} elseif ($this->CDATA == 'strip') { // Strip CDATA
$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
}
// If code page is set convert character encoding to required
if ($this->cp != '')
//$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
$out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]);
// Return result
return trim($out[1]);
} else {
// if there is NO result, return empty string
return '';
}
}
// -------------------------------------------------------------------
// Replace HTML entities &something; by real characters
// -------------------------------------------------------------------
function unhtmlentities ($string) {
// Get HTML entities table
$trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES);
// Flip keys<==>values
$trans_tbl = array_flip ($trans_tbl);
// Add support for ' entity (missing in HTML_ENTITIES)
$trans_tbl += array(''' => "'");
// Replace entities by values
return strtr ($string, $trans_tbl);
}
// -------------------------------------------------------------------
// Parse() is private method used by Get() to load and parse RSS file.
// Don't use Parse() in your scripts - use Get($rss_file) instead.
// -------------------------------------------------------------------
function Parse ($rss_url) {
// Open and load RSS file
if ($f = @fopen($rss_url, 'r')) {
$rss_content = '';
while (!feof($f)) {
$rss_content .= fgets($f, 4096);
}
fclose($f);
// Parse document encoding
$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
// if document codepage is specified, use it
if ($result['encoding'] != '')
{ $this->rsscp = $result['encoding']; } // This is used in my_preg_match()
// otherwise use the default codepage
else
{ $this->rsscp = $this->default_cp; } // This is used in my_preg_match()
// Parse CHANNEL info
preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel);
foreach($this->channeltags as $channeltag)
{
$temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]);
if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty
}
// If date_format is specified and lastBuildDate is valid
if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) {
// convert lastBuildDate to specified date format
$result['lastBuildDate'] = date($this->date_format, $timestamp);
}
// Parse TEXTINPUT info
preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo);
// This a little strange regexp means:
// Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
if (isset($out_textinfo[2])) {
foreach($this->textinputtags as $textinputtag) {
$temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]);
if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty
}
}
// Parse IMAGE info
preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo);
if (isset($out_imageinfo[1])) {
foreach($this->imagetags as $imagetag) {
$temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]);
if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty
}
}
// Parse ITEMS
preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items);
$rss_items = $items[2];
$i = 0;
$result['items'] = array(); // create array even if there are no items
foreach($rss_items as $rss_item) {
// If number of items is lower then limit: Parse one item
if ($i < $this->items_limit || $this->items_limit == 0) {
foreach($this->itemtags as $itemtag) {
$temp = $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si", $rss_item);
if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty
}
// Strip HTML tags and other bullshit from DESCRIPTION
if ($this->stripHTML && $result['items'][$i]['description'])
$result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
// Strip HTML tags and other bullshit from TITLE
if ($this->stripHTML && $result['items'][$i]['title'])
$result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
// If date_format is specified and pubDate is valid
if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) {
// convert pubDate to specified date format
$result['items'][$i]['pubDate'] = date($this->date_format, $timestamp);
}
// Item counter
$i++;
}
}
$result['items_count'] = $i;
return $result;
}
else // Error in opening return False
{
return False;
}
}
}
?>