File "ExportToRSS.php"
Full Path: /www/wwwroot/shphe-en.com/wp-content/plugins/contact-form-7-to-database-extension/ExportToRSS.php
File size: 4.65 KB
MIME-type: --
Charset: utf-8
<?php
/*
"Contact Form to Database" Copyright (C) 2011-2013 Michael Simpson (email : michael.d.simpson@gmail.com)
This file is part of Contact Form to Database.
Contact Form to Database is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Contact Form to Database 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.
You should have received a copy of the GNU General Public License
along with Contact Form to Database.
If not, see <http://www.gnu.org/licenses/>.
*/
require_once('ExportBase.php');
require_once('CFDBExport.php');
class ExportToRSS extends ExportBase implements CFDBExport {
public function export($formName, $options = null) {
$this->setOptions($options);
$this->setCommonOptions(true);
// Security Check
if (get_option('CF7DBPlugin_AllowRSS') !== 'true') {
if (!$this->isAuthorized()) {
$this->assertSecurityErrorMessage();
return;
}
}
$contentType = 'Content-Type: application/rss+xml; charset=UTF-8';
$this->echoHeaders($contentType);
// Get the data
$this->setDataIterator($formName);
if ($this->isFromShortCode) {
ob_start();
}
$this->echoRSS($formName);
if ($this->isFromShortCode) {
// If called from a shortcode, need to return the text,
// otherwise it can appear out of order on the page
$output = ob_get_contents();
ob_end_clean();
return $output;
}
}
protected function echoRSS($formName) {
$rssUrl = get_site_url() . $_SERVER['REQUEST_URI'];
$escapedRssUrl = htmlspecialchars($rssUrl);
$htmlVersionOfRss = get_site_url() . str_replace('enc=RSS', 'enc=HTML', $_SERVER['REQUEST_URI']);
$htmlSingleRow = $htmlVersionOfRss;
// Set up $htmlSingleRow to have a "{submit_time}" value to be string replaced later
if (strpos($htmlSingleRow, 'filter=') === false) {
$htmlSingleRow .= '&filter=submit_time={submit_time}';
}
else {
$htmlSingleRow = str_replace('filter=', 'filter=submit_time={submit_time}' . urlencode('&&'), $htmlSingleRow);
}
$this->setTimezone();
$dateString = date('r');
$titleColunm = 'Submitted';
if (isset($this->options['itemtitle'])) {
$titleColunm = $this->options['itemtitle'];
}
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title><?php echo htmlspecialchars($formName) ?></title>
<description>Contact Form DB plugin Submissions</description>
<link><?php echo $escapedRssUrl ?></link>
<lastBuildDate><?php echo $dateString ?></lastBuildDate>
<pubDate><?php echo $dateString ?></pubDate>
<atom:link href="<?php echo $escapedRssUrl; ?>" rel="self" type="application/rss+xml" />
<ttl>60</ttl><?php
while ($this->dataIterator->nextRow()) {?>
<item>
<title><?php echo $this->dataIterator->row[$titleColunm]; ?></title>
<description><?php
$rowUrl = htmlspecialchars(str_replace('{submit_time}', $this->dataIterator->row['submit_time'], $htmlSingleRow));
foreach ($this->dataIterator->displayColumns as $aCol) {
if ($aCol != 'Submitted') {
$cell = htmlspecialchars($this->dataIterator->row[$aCol], null, 'UTF-8');
echo "$aCol=$cell \n";
}
}
?></description>
<link><?php echo $rowUrl; ?></link>
<guid><?php echo $rowUrl ?></guid>
<pubDate><?php echo date('r', $this->dataIterator->row['submit_time']); ?></pubDate>
</item>
<?php
}?>
</channel>
</rss>
<?php
}
protected function setTimezone()
{
if (function_exists('get_option')) {
$tz = get_option('CF7DBPlugin_Timezone'); // see CFDBPlugin->setTimezone()
if (!$tz) {
$tz = get_option('timezone_string');
}
if ($tz) {
date_default_timezone_set($tz);
}
}
}
}