增加对空间支持的判断,获取feed方法更强大

This commit is contained in:
2012-10-18 13:51:08 +08:00
parent 510e6adcc6
commit 5849e9cdd0
4 changed files with 365 additions and 335 deletions

View File

@@ -1,7 +1,7 @@
<?php <?php
/* /*
Plugin Name: Rss订阅 Plugin Name: Rss订阅
Version: 1.3.2 Version: 1.3.3
Plugin URL: http://xiaosong.org/tech/the-official-releas-of-rss-subscribe-plugin Plugin URL: http://xiaosong.org/tech/the-official-releas-of-rss-subscribe-plugin
Description: 订阅朋友的博客feed显示在自己博客~ Description: 订阅朋友的博客feed显示在自己博客~
Author: 小松 Author: 小松
@@ -13,7 +13,7 @@ require_once(EMLOG_ROOT.'/content/plugins/lastRSS/lastRSS_config.php');
require_once(EMLOG_ROOT.'/content/plugins/lastRSS/lastRSS_class.php'); require_once(EMLOG_ROOT.'/content/plugins/lastRSS/lastRSS_class.php');
$rssparser = new lastRSS; $rssparser = new lastRSS;
$rssparser->cache_dir = EMLOG_ROOT.'/content/cache/'; $rssparser->cache_dir = EMLOG_ROOT.'/content/cache/';
$rssparser->cache_time = $lastRSS_cache_time; $rssparser->cache_time = $lastRSS_cache_time;
$rssparser->items_limit = $lastRSS_item_num > 3 ? 3 : $lastRSS_item_num; $rssparser->items_limit = $lastRSS_item_num > 3 ? 3 : $lastRSS_item_num;
$rssparser->CDATA = 'content'; $rssparser->CDATA = 'content';
$rssparser->cp = 'UTF-8'; $rssparser->cp = 'UTF-8';
@@ -93,25 +93,26 @@ function updateFeed($id, $url, $title){
} }
function getTitle($rss_url){ function getTitle($rss_url){
global $rssparser; global $rssparser;
$rss = $rssparser->get($rss_url); $rss = $rssparser->Get($rss_url);
return $rss['title']; return $rss['title'];
} }
function updateLogs(){ function updateLogs(){
global $rssparser, $DB, $lastRSS_is_urlshort, $lastRSS_is_blank; global $rssparser, $DB, $lastRSS_is_urlshort, $lastRSS_is_blank;
$feeds = getRssFeeds(); $feeds = getRssFeeds();
while ($item = $DB->fetch_array($feeds)) { while ($item = $DB->fetch_array($feeds)) {
$rss = $rssparser->get($item['url']); $rss = $rssparser->Get($item['url']);
if(!empty($rss['items'])) if(!empty($rss['items'])) {
foreach ($rss['items'] as $key => $data) { foreach ($rss['items'] as $key => $data) {
$rssid = $item['id']; $rssid = $item['id'];
$hash = md5($data['title']); $hash = md5($data['title']);
$checklog = isLogExists($rssid, $hash); $checklog = isLogExists($rssid, $hash);
if ($checklog == 0) { if ($checklog == 0) {
if (trim($data['title']) != '') { if (trim($data['title']) != '') {
$link = $lastRSS_is_urlshort ? urlShort($data['link']) : $data['link']; $link = $lastRSS_is_urlshort ? urlShort($data['link']) : $data['link'];
$target = $lastRSS_is_blank ? ' target="_blank"' : ''; $target = $lastRSS_is_blank ? ' target="_blank"' : '';
$log = '<a href="'.$link.'"'.$target.'>'.strip_tags($data['title']).'</a>'; $log = '<a href="'.$link.'"'.$target.'>'.strip_tags($data['title']).'</a>';
insertLog($rssid, $log ,$hash); insertLog($rssid, $log ,$hash);
}
} }
} }
} }

View File

@@ -1,44 +1,45 @@
<?php <?php
function callback_init(){ function callback_init(){
$DB = MySql::getInstance(); if (!get_cfg_var("allow_url_fopen") && !extension_loaded('curl') && !function_exists('file_get_contents')) emMsg('该插件需要开启“allow_url_fopen”或“curl”或“file_get_contents”。请联系空间商开启');
$is_exist_rssfeeds_query = $DB->query('show tables like "'.DB_PREFIX.'rssfeeds"'); $DB = MySql::getInstance();
$is_exist_rsslogs_query = $DB->query('show tables like "'.DB_PREFIX.'rsslogs"'); $is_exist_rssfeeds_query = $DB->query('show tables like "'.DB_PREFIX.'rssfeeds"');
$dbcharset = 'utf8'; $is_exist_rsslogs_query = $DB->query('show tables like "'.DB_PREFIX.'rsslogs"');
$type = 'MYISAM'; $dbcharset = 'utf8';
$add = $DB->getMysqlVersion() > '4.1' ? "ENGINE=".$type." DEFAULT CHARSET=".$dbcharset.";":"TYPE=".$type.";"; $type = 'MYISAM';
$addone = "INSERT INTO ".DB_PREFIX."rssfeeds (url, title) VALUES('http://xiaosong.org/rss.php', '快乐忆站')"; $add = $DB->getMysqlVersion() > '4.1' ? "ENGINE=".$type." DEFAULT CHARSET=".$dbcharset.";":"TYPE=".$type.";";
if($DB->num_rows($is_exist_rssfeeds_query) == 0){ $addone = "INSERT INTO ".DB_PREFIX."rssfeeds (url, title) VALUES('http://xiaosong.org/rss.php', '快乐忆站')";
$sql_rssfeeds = " if($DB->num_rows($is_exist_rssfeeds_query) == 0){
CREATE TABLE `".DB_PREFIX."rssfeeds` ( $sql_rssfeeds = "
`id` int(10) NOT NULL AUTO_INCREMENT, CREATE TABLE `".DB_PREFIX."rssfeeds` (
`url` text NOT NULL, `id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL, `url` text NOT NULL,
PRIMARY KEY (`id`) `title` varchar(255) NOT NULL,
)".$add; PRIMARY KEY (`id`)
$DB->query($sql_rssfeeds); )".$add;
$DB->query($addone); $DB->query($sql_rssfeeds);
$DB->query($addone);
}
if($DB->num_rows($is_exist_rsslogs_query) == 0){ }
$sql_rsslogs = " if($DB->num_rows($is_exist_rsslogs_query) == 0){
CREATE TABLE `".DB_PREFIX."rsslogs` ( $sql_rsslogs = "
`id` int(10) NOT NULL AUTO_INCREMENT, CREATE TABLE `".DB_PREFIX."rsslogs` (
`rssid` int(10) NOT NULL, `id` int(10) NOT NULL AUTO_INCREMENT,
`log` text NOT NULL, `rssid` int(10) NOT NULL,
`hash` varchar(64) NOT NULL, `log` text NOT NULL,
PRIMARY KEY (`id`) `hash` varchar(64) NOT NULL,
)".$add; PRIMARY KEY (`id`)
$DB->query($sql_rsslogs); )".$add;
} $DB->query($sql_rsslogs);
} }
}
function callback_rm(){
$DB = MySql::getInstance(); function callback_rm(){
$feeds = getRssFeeds(); $DB = MySql::getInstance();
while ($item = $DB->fetch_array($feeds)) { $feeds = getRssFeeds();
deleteFeed($item['id']); while ($item = $DB->fetch_array($feeds)) {
} deleteFeed($item['id']);
$DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."rssfeeds"); }
$DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."rsslogs"); $DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."rssfeeds");
} $DB->query("DROP TABLE IF EXISTS ".DB_PREFIX."rsslogs");
}
?> ?>

View File

@@ -1,220 +1,246 @@
<?php <?php
/* /*
====================================================================== ======================================================================
lastRSS 0.9.1 lastRSS 0.9.1
Simple yet powerfull PHP class to parse RSS files. Simple yet powerfull PHP class to parse RSS files.
by Vojtech Semecky, webmaster @ webdot . cz by Vojtech Semecky, webmaster @ webdot . cz
Latest version, features, manual and examples: Latest version, features, manual and examples:
http://lastrss.webdot.cz/ http://lastrss.webdot.cz/
---------------------------------------------------------------------- ----------------------------------------------------------------------
LICENSE LICENSE
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL) modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2 as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version. of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
To read the license please visit http://www.gnu.org/copyleft/gpl.html To read the license please visit http://www.gnu.org/copyleft/gpl.html
====================================================================== ======================================================================
*/ */
/** /**
* lastRSS * lastRSS
* Simple yet powerfull PHP class to parse RSS files. * Simple yet powerfull PHP class to parse RSS files.
*/ */
class lastRSS { class lastRSS {
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Public properties // Public properties
// ------------------------------------------------------------------- // -------------------------------------------------------------------
var $default_cp = 'UTF-8'; var $default_cp = 'UTF-8';
var $CDATA = 'nochange'; var $CDATA = 'nochange';
var $cp = ''; var $cp = '';
var $items_limit = 0; var $items_limit = 0;
var $stripHTML = False; var $stripHTML = False;
var $date_format = ''; var $date_format = '';
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Private variables // Private variables
// ------------------------------------------------------------------- // -------------------------------------------------------------------
var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webMaster', 'lastBuildDate', 'rating', 'docs'); 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 $itemtags = array('title', 'link', 'description', 'author', 'category', 'comments', 'enclosure', 'guid', 'pubDate', 'source');
var $imagetags = array('title', 'url', 'link', 'width', 'height'); var $imagetags = array('title', 'url', 'link', 'width', 'height');
var $textinputtags = array('title', 'description', 'name', 'link'); var $textinputtags = array('title', 'description', 'name', 'link');
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Parse RSS file and returns associative array. // Parse RSS file and returns associative array.
// ------------------------------------------------------------------- // -------------------------------------------------------------------
function Get ($rss_url) { function Get ($rss_url) {
// If CACHE ENABLED // If CACHE ENABLED
if ($this->cache_dir != '') { if ($this->cache_dir != '') {
$cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url); $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
$timedif = @(time() - filemtime($cache_file)); $timedif = @(time() - filemtime($cache_file));
if ($timedif < $this->cache_time) { if ($timedif < $this->cache_time) {
// cached file is fresh enough, return cached array // cached file is fresh enough, return cached array
$result = unserialize(join('', file($cache_file))); $result = unserialize(join('', file($cache_file)));
// set 'cached' to 1 only if cached file is correct // set 'cached' to 1 only if cached file is correct
if ($result) $result['cached'] = 1; if ($result) $result['cached'] = 1;
} else { } else {
// cached file is too old, create new // cached file is too old, create new
$result = $this->Parse($rss_url); $result = $this->Parse($rss_url);
$serialized = serialize($result); $serialized = serialize($result);
if ($f = @fopen($cache_file, 'w')) { if ($f = @fopen($cache_file, 'w')) {
fwrite ($f, $serialized, strlen($serialized)); fwrite ($f, $serialized, strlen($serialized));
fclose($f); fclose($f);
} }
if ($result) $result['cached'] = 0; if ($result) $result['cached'] = 0;
} }
} }
// If CACHE DISABLED >> load and parse the file directly // If CACHE DISABLED >> load and parse the file directly
else { else {
$result = $this->Parse($rss_url); $result = $this->Parse($rss_url);
if ($result) $result['cached'] = 0; if ($result) $result['cached'] = 0;
} }
// return result // return result
return $result; return $result;
} }
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Modification of preg_match(); return trimed field with index 1 // Modification of preg_match(); return trimed field with index 1
// from 'classic' preg_match() array output // from 'classic' preg_match() array output
// ------------------------------------------------------------------- // -------------------------------------------------------------------
function my_preg_match ($pattern, $subject) { function my_preg_match ($pattern, $subject) {
// start regullar expression // start regullar expression
preg_match($pattern, $subject, $out); preg_match($pattern, $subject, $out);
// if there is some result... process it and return it // if there is some result... process it and return it
if(isset($out[1])) { if(isset($out[1])) {
// Process CDATA (if present) // Process CDATA (if present)
if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag) if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>'')); $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
} elseif ($this->CDATA == 'strip') { // Strip CDATA } elseif ($this->CDATA == 'strip') { // Strip CDATA
$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>'')); $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
} }
// If code page is set convert character encoding to required // If code page is set convert character encoding to required
if ($this->cp != '') if ($this->cp != '')
//$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]); //$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
$out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]); $out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]);
// Return result // Return result
return trim($out[1]); return trim($out[1]);
} else { } else {
// if there is NO result, return empty string // if there is NO result, return empty string
return ''; return '';
} }
} }
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Replace HTML entities &something; by real characters // Replace HTML entities &something; by real characters
// ------------------------------------------------------------------- // -------------------------------------------------------------------
function unhtmlentities ($string) { function unhtmlentities ($string) {
// Get HTML entities table // Get HTML entities table
$trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES); $trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES);
// Flip keys<==>values // Flip keys<==>values
$trans_tbl = array_flip ($trans_tbl); $trans_tbl = array_flip ($trans_tbl);
// Add support for &apos; entity (missing in HTML_ENTITIES) // Add support for &apos; entity (missing in HTML_ENTITIES)
$trans_tbl += array('&apos;' => "'"); $trans_tbl += array('&apos;' => "'");
// Replace entities by values // Replace entities by values
return strtr ($string, $trans_tbl); return strtr ($string, $trans_tbl);
} }
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Parse() is private method used by Get() to load and parse RSS file. // Get remote file or open url
// Don't use Parse() in your scripts - use Get($rss_file) instead. // -------------------------------------------------------------------
// ------------------------------------------------------------------- function getRemoteFile ($url){
function Parse ($rss_url) { $results = '';
// Open and load RSS file $context = stream_context_create(array(
if ($f = @fopen($rss_url, 'r')) { 'http' => array(
$rss_content = ''; 'timeout' => 3
while (!feof($f)) { )
$rss_content .= fgets($f, 4096); ));
} if (get_cfg_var('allow_url_fopen')) {
fclose($f); $f = fopen($url, 'r');
while (!feof($f)) {
// Parse document encoding $results .= fgets($f, 4096);
$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content); }
// if document codepage is specified, use it fclose($f);
if ($result['encoding'] != '') } else if (extension_loaded('curl')) {
{ $this->rsscp = $result['encoding']; } // This is used in my_preg_match() $ch = curl_init();
// otherwise use the default codepage curl_setopt($ch, CURLOPT_URL, $url);
else curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
{ $this->rsscp = $this->default_cp; } // This is used in my_preg_match() curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Curl/emlog Rss订阅插件');
// Parse CHANNEL info $results = curl_exec($ch);
preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel); curl_close($ch);
foreach($this->channeltags as $channeltag) } else {
{ $results = file_get_contents($url, 0, $context);
$temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]); }
if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty return $results;
} }
// If date_format is specified and lastBuildDate is valid
if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) { // -------------------------------------------------------------------
// convert lastBuildDate to specified date format // Parse() is private method used by Get() to load and parse RSS file.
$result['lastBuildDate'] = date($this->date_format, $timestamp); // Don't use Parse() in your scripts - use Get($rss_file) instead.
} // -------------------------------------------------------------------
function Parse ($rss_url) {
// Parse TEXTINPUT info // Open and load RSS file
preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo); $rss_content = $this->getRemoteFile($rss_url);
// This a little strange regexp means: if (!empty($rss_content)) {
// Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
if (isset($out_textinfo[2])) { // Parse document encoding
foreach($this->textinputtags as $textinputtag) { $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
$temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]); // if document codepage is specified, use it
if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty if ($result['encoding'] != '')
} { $this->rsscp = $result['encoding']; } // This is used in my_preg_match()
} // otherwise use the default codepage
// Parse IMAGE info else
preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo); { $this->rsscp = $this->default_cp; } // This is used in my_preg_match()
if (isset($out_imageinfo[1])) {
foreach($this->imagetags as $imagetag) { // Parse CHANNEL info
$temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]); preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel);
if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty foreach($this->channeltags as $channeltag)
} {
} $temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]);
// Parse ITEMS if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty
preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items); }
$rss_items = $items[2]; // If date_format is specified and lastBuildDate is valid
$i = 0; if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) {
$result['items'] = array(); // create array even if there are no items // convert lastBuildDate to specified date format
foreach($rss_items as $rss_item) { $result['lastBuildDate'] = date($this->date_format, $timestamp);
// 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) { // Parse TEXTINPUT info
$temp = $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si", $rss_item); preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo);
if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty // 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)
// Strip HTML tags and other bullshit from DESCRIPTION if (isset($out_textinfo[2])) {
if ($this->stripHTML && $result['items'][$i]['description']) foreach($this->textinputtags as $textinputtag) {
$result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description']))); $temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]);
// Strip HTML tags and other bullshit from TITLE if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty
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 // Parse IMAGE info
if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) { preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo);
// convert pubDate to specified date format if (isset($out_imageinfo[1])) {
$result['items'][$i]['pubDate'] = date($this->date_format, $timestamp); foreach($this->imagetags as $imagetag) {
} $temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]);
// Item counter if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty
$i++; }
} }
} // Parse ITEMS
preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items);
$result['items_count'] = $i; $rss_items = $items[2];
return $result; $i = 0;
} $result['items'] = array(); // create array even if there are no items
else // Error in opening return False foreach($rss_items as $rss_item) {
{ // If number of items is lower then limit: Parse one item
return False; 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;
}
}
}
?> ?>

View File

@@ -61,6 +61,66 @@ function plugin_setting_view(){
endif; endif;
} }
?> ?>
<?php
function plugin_setting(){
$do = isset($_GET['do']) ? addslashes($_GET['do']) : '';
if ($do == 'del') {
$id = intval($_GET['id']);
if ($id != 0) {
deleteFeed($id);
header("Location:plugin.php?plugin=lastRSS&setting=true");
}
} elseif ($do == 'update') {
$id = intval($_POST['id']);
$url = isset($_POST['url']) ? trim($_POST['url']) : '';
if (!empty($url)) {
$title = (isset($_POST['title']) && trim($_POST['title']) !='') ? $_POST['title'] : getTitle($url);
$title = addslashes($title);
if (!empty($title)) {
updateFeed($id, $url, $title);
header("Location:plugin.php?plugin=lastRSS&setting=true");
} else {
emMsg("RSS修改失败插件无法获取{$url}的标题请自行添加标题再添加该RSS");
}
} else {
emMsg("RSS修改失败RSS地址不能为空");
}
} elseif ($do == 'add') {
$url = isset($_POST['url']) ? trim($_POST['url']) : '';
if (!empty($url)) {
$title = (isset($_POST['title']) && trim($_POST['title']) !='') ? $_POST['title'] : getTitle($url);
$title = addslashes($title);
if (!empty($title)) {
insertFeed($url, $title);
updateLogs();
header("Location:plugin.php?plugin=lastRSS&setting=true");
} else {
emMsg("RSS导入失败插件无法获取{$url}的标题请自行添加标题再导入该RSS");
}
} else {
emMsg("RSS导入失败RSS地址不能为空");
}
} elseif ($do == 'config') {
$lastRSS_cache_time = isset($_POST['lastRSS_cache_time']) ? intval($_POST['lastRSS_cache_time']) : 0;
$lastRSS_item_num = isset($_POST['lastRSS_item_num']) ? intval($_POST['lastRSS_item_num']) : 2;
$lastRSS_is_urlshort = isset($_POST['lastRSS_is_urlshort']) ? intval($_POST['lastRSS_is_urlshort']) : 0;
$lastRSS_urlshort_domain = isset($_POST['lastRSS_urlshort_domain']) ? trim($_POST['lastRSS_urlshort_domain']) : 't.cn';
$lastRSS_is_blank = isset($_POST['lastRSS_is_blank']) ? intval($_POST['lastRSS_is_blank']) : 0;
$data = "<?php
\$lastRSS_cache_time = ".$lastRSS_cache_time.";
\$lastRSS_item_num = ".$lastRSS_item_num.";
\$lastRSS_is_urlshort = ".$lastRSS_is_urlshort.";
\$lastRSS_urlshort_domain = '".$lastRSS_urlshort_domain."';
\$lastRSS_is_blank = ".$lastRSS_is_blank.";
?>";
$file = EMLOG_ROOT.'/content/plugins/lastRSS/lastRSS_config.php';
@ $fp = fopen($file, 'wb') OR emMsg('读取文件失败如果您使用的是Unix/Linux主机请修改文件/content/plugins/lastRSS/lastRSS_config.php的权限为777。如果您使用的是Windows主机请联系管理员将该文件设为everyone可写');
@ $fw = fwrite($fp,$data) OR emMsg('写入文件失败如果您使用的是Unix/Linux主机请修改文件/content/plugins/lastRSS/lastRSS_config.php的权限为777。如果您使用的是Windows主机请联系管理员将该文件设为everyone可写');
fclose($fp);
header("Location:plugin.php?plugin=lastRSS&setting=true");
}
}
?>
</ol> </ol>
<script type="text/javascript"> <script type="text/javascript">
$(function(){ $(function(){
@@ -88,61 +148,3 @@ function plugin_setting_view(){
}) })
}) })
</script> </script>
<?php
$do = isset($_GET['do']) ? addslashes($_GET['do']) : '';
if ($do == 'del') {
$id = intval($_GET['id']);
if ($id != 0) {
deleteFeed($id);
header("Location:plugin.php?plugin=lastRSS&setting=true");
}
} elseif ($do == 'update') {
$id = intval($_POST['id']);
$url = isset($_POST['url']) ? trim($_POST['url']) : '';
if (!empty($url)) {
$title = (isset($_POST['title']) && trim($_POST['title']) !='') ? $_POST['title'] : getTitle($url);
$title = addslashes($title);
if (!empty($title)) {
updateFeed($id, $url, $title);
header("Location:plugin.php?plugin=lastRSS&setting=true");
} else {
emMsg("RSS修改失败插件无法获取{$url}的标题请自行添加标题再添加该RSS");
}
} else {
emMsg("RSS修改失败RSS地址不能为空");
}
} elseif ($do == 'add') {
$url = isset($_POST['url']) ? trim($_POST['url']) : '';
if (!empty($url)) {
$title = (isset($_POST['title']) && trim($_POST['title']) !='') ? $_POST['title'] : getTitle($url);
$title = addslashes($title);
if (!empty($title)) {
insertFeed($url, $title);
updateLogs();
header("Location:plugin.php?plugin=lastRSS&setting=true");
} else {
emMsg("RSS导入失败插件无法获取{$url}的标题请自行添加标题再导入该RSS");
}
} else {
emMsg("RSS导入失败RSS地址不能为空");
}
} elseif ($do == 'config') {
$lastRSS_cache_time = isset($_POST['lastRSS_cache_time']) ? intval($_POST['lastRSS_cache_time']) : 0;
$lastRSS_item_num = isset($_POST['lastRSS_item_num']) ? intval($_POST['lastRSS_item_num']) : 2;
$lastRSS_is_urlshort = isset($_POST['lastRSS_is_urlshort']) ? intval($_POST['lastRSS_is_urlshort']) : 0;
$lastRSS_urlshort_domain = isset($_POST['lastRSS_urlshort_domain']) ? trim($_POST['lastRSS_urlshort_domain']) : 't.cn';
$lastRSS_is_blank = isset($_POST['lastRSS_is_blank']) ? intval($_POST['lastRSS_is_blank']) : 0;
$data = "<?php
\$lastRSS_cache_time = ".$lastRSS_cache_time.";
\$lastRSS_item_num = ".$lastRSS_item_num.";
\$lastRSS_is_urlshort = ".$lastRSS_is_urlshort.";
\$lastRSS_urlshort_domain = '".$lastRSS_urlshort_domain."';
\$lastRSS_is_blank = ".$lastRSS_is_blank.";
?>";
$file = EMLOG_ROOT.'/content/plugins/lastRSS/lastRSS_config.php';
@ $fp = fopen($file, 'wb') OR emMsg('读取文件失败如果您使用的是Unix/Linux主机请修改文件/content/plugins/lastRSS/lastRSS_config.php的权限为777。如果您使用的是Windows主机请联系管理员将该文件设为everyone可写');
@ $fw = fwrite($fp,$data) OR emMsg('写入文件失败如果您使用的是Unix/Linux主机请修改文件/content/plugins/lastRSS/lastRSS_config.php的权限为777。如果您使用的是Windows主机请联系管理员将该文件设为everyone可写');
fclose($fp);
header("Location:plugin.php?plugin=lastRSS&setting=true");
}
?>