[geeklog-cvs] geeklog: Fixed enabling/disabling feeds from the admin list (sam...
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Sat Feb 20 10:35:44 EST 2010
changeset 7736:e6e3f00d2e53
url: http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/e6e3f00d2e53
user: Dirk Haun <dirk at haun-online.de>
date: Sat Feb 20 14:32:17 2010 +0100
description:
Fixed enabling/disabling feeds from the admin list (same issue as with blocks); also ensure newly enabled feeds are updated and disabled feeds display "N/A" as the "last updated" date
diffstat:
public_html/admin/syndication.php | 71 +++++++++++++++++++++++------------
system/lib-admin.php | 10 +++-
2 files changed, 54 insertions(+), 27 deletions(-)
diffs (139 lines):
diff -r ef9b20942a0b -r e6e3f00d2e53 public_html/admin/syndication.php
--- a/public_html/admin/syndication.php Sat Feb 20 13:41:51 2010 +0100
+++ b/public_html/admin/syndication.php Sat Feb 20 14:32:17 2010 +0100
@@ -77,36 +77,51 @@
/**
* Toggle status of a feed from enabled to disabled and back
*
-* @param int $fid ID of the feed
+* @param array $enabledfeeds array containing ids of enabled feeds
+* @param array $visiblefeeds array containing ids of visible feeds
* @return void
*
*/
-function changeFeedStatus($fid_arr)
+function changeFeedStatus($enabledfeeds, $visiblefeeds)
{
global $_TABLES;
- $changes = false;
+ $enabled_feed = 0;
- // first disable all
- DB_query("UPDATE {$_TABLES['syndication']} SET is_enabled = 0");
- if (isset($fid_arr)) {
- foreach ($fid_arr as $fid) {
- $feed_id = addslashes(COM_applyFilter($fid, true));
- if (!empty($fid)) {
- // now enable those in the array
- DB_query("UPDATE {$_TABLES['syndication']} SET is_enabled = 1 WHERE fid = '$fid'");
- $changes = true;
- }
- }
+ $disabled = array_diff($visiblefeeds, $enabledfeeds);
+
+ // disable feeds
+ $in = implode(',', $disabled);
+ if (! empty($in)) {
+ $sql = "UPDATE {$_TABLES['syndication']} SET is_enabled = 0 WHERE fid IN ($in)";
+ DB_query($sql);
}
- if ($changes) {
- $result = DB_query("SELECT filename FROM {$_TABLES['syndication']} WHERE is_enabled = 0");
- $num_feeds_off = DB_numRows($result);
- for ($i = 0; $i < $num_feeds_off; $i++) {
- list($feedfile) = DB_fetchArray($result);
- deleteFeedFile($feedfile);
+ // enable feeds
+ $in = implode(',', $enabledfeeds);
+ if (! empty($in)) {
+ // if we just enabled a feed, figure out which one it was
+ $sql = "SELECT fid FROM {$_TABLES['syndication']} WHERE fid IN ($in) AND is_enabled = 0";
+ $result = DB_query($sql);
+ if (DB_numRows($result) > 0) {
+ list($enabled_feed) = DB_fetchArray($result);
}
+
+ $sql = "UPDATE {$_TABLES['syndication']} SET is_enabled = 1 WHERE fid IN ($in)";
+ DB_query($sql);
+ }
+
+ // ensure files for disabled feeds are deleted
+ $result = DB_query("SELECT filename FROM {$_TABLES['syndication']} WHERE is_enabled = 0");
+ $num_feeds_off = DB_numRows($result);
+ for ($i = 0; $i < $num_feeds_off; $i++) {
+ list($feedfile) = DB_fetchArray($result);
+ deleteFeedFile($feedfile);
+ }
+
+ // if we enabled a feed, update it
+ if ($enabled_feed > 0) {
+ SYND_updateFeed($enabled_feed);
}
}
@@ -271,7 +286,7 @@
$A['is_enabled'] = 1;
$A['updated'] = '';
$A['update_info'] = '';
- $A['date'] = time ();
+ $A['date'] = time();
} else {
return COM_refresh ($_CONF['site_admin_url'] . '/syndication.php');
}
@@ -349,8 +364,12 @@
$feed_template->set_var ('feed_charset', $A['charset']);
$feed_template->set_var ('feed_language', $A['language']);
- $nicedate = COM_getUserDateTimeFormat ($A['date']);
- $feed_template->set_var ('feed_updated', $nicedate[0]);
+ if (($A['is_enabled'] == 1) && !empty($A['updated'])) {
+ $nicedate = COM_getUserDateTimeFormat($A['date']);
+ $feed_template->set_var('feed_updated', $nicedate[0]);
+ } else {
+ $feed_template->set_var('feed_updated', $LANG_ADMIN['na']);
+ }
$formats = find_feedFormats ();
$selection = '<select name="format">' . LB;
@@ -613,7 +632,11 @@
if (isset($_POST['enabledfeeds'])) {
$enabledfeeds = $_POST['enabledfeeds'];
}
- changeFeedStatus($enabledfeeds);
+ $visiblefeeds = array();
+ if (isset($_POST['visiblefeeds'])) {
+ $visiblefeeds = $_POST['visiblefeeds'];
+ }
+ changeFeedStatus($enabledfeeds, $visiblefeeds);
}
$mode = '';
if (isset($_REQUEST['mode'])) {
diff -r ef9b20942a0b -r e6e3f00d2e53 system/lib-admin.php
--- a/system/lib-admin.php Sat Feb 20 13:41:51 2010 +0100
+++ b/system/lib-admin.php Sat Feb 20 14:32:17 2010 +0100
@@ -1036,7 +1036,11 @@
break;
case 'updated':
- $retval = strftime($_CONF['daytime'], $A['date']);
+ if ($A['is_enabled'] == 1) {
+ $retval = strftime($_CONF['daytime'], $A['date']);
+ } else {
+ $retval = $LANG_ADMIN['na'];
+ }
break;
case 'is_enabled':
@@ -1045,8 +1049,8 @@
} else {
$switch = '';
}
- $retval = "<input type=\"checkbox\" name=\"enabledfeeds[]\" "
- . "onclick=\"submit()\" value=\"{$A['fid']}\"$switch" . XHTML . ">";
+ $retval = '<input type="checkbox" name="enabledfeeds[]" onclick="submit()" value="' . $A['fid'] . '"' . $switch . XHTML . '>'
+ . '<input type="hidden" name="visiblefeeds[]" value="' . $A['fid'] . '"' . XHTML . '>';
break;
case 'header_tid':
More information about the geeklog-cvs
mailing list