ORDER BY ttrss_feeds.id $query_limit");
if (db_num_rows($tmp_result) > 0) {
+ $rss = false;
+
while ($tline = db_fetch_assoc($tmp_result)) {
if($debug) _debug(" => " . $tline["last_updated"] . ", " . $tline["id"] . " " . $tline["owner_uid"]);
- update_rss_feed($tline["id"], true);
+ $rss = update_rss_feed($tline["id"], true, false, $rss);
+ _debug_suppress(false);
++$nf;
}
}
} // function update_daemon_common
// ignore_daemon is not used
- function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false) {
+ function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false, $rss = false) {
$debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug'];
- if (!$debug_enabled) define('SUPPRESS_DEBUGGING', true);
-
+ _debug_suppress(!$debug_enabled);
_debug("start", $debug_enabled);
$result = db_query("SELECT id,update_interval,auth_login,
$pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid);
$pluginhost->load_data();
- $rss = false;
- $rss_hash = false;
+ if ($rss && is_object($rss) && get_class($rss) == "FeedParser") {
+ _debug("using previously initialized parser object");
+ } else {
+ $rss_hash = false;
- $force_refetch = isset($_REQUEST["force_refetch"]);
+ $force_refetch = isset($_REQUEST["force_refetch"]);
- if (file_exists($cache_filename) &&
- is_readable($cache_filename) &&
- !$auth_login && !$auth_pass &&
- filemtime($cache_filename) > time() - 30) {
+ if (file_exists($cache_filename) &&
+ is_readable($cache_filename) &&
+ !$auth_login && !$auth_pass &&
+ filemtime($cache_filename) > time() - 30) {
- _debug("using local cache.", $debug_enabled);
+ _debug("using local cache.", $debug_enabled);
- @$feed_data = file_get_contents($cache_filename);
+ @$feed_data = file_get_contents($cache_filename);
- if ($feed_data) {
- $rss_hash = sha1($feed_data);
- }
+ if ($feed_data) {
+ $rss_hash = sha1($feed_data);
+ }
- } else {
- _debug("local cache will not be used for this feed", $debug_enabled);
+ } else {
+ _debug("local cache will not be used for this feed", $debug_enabled);
+ }
}
if (!$rss) {
$rss->init();
}
- require_once "lib/languagedetect/LanguageDetect.php";
+ if (DETECT_ARTICLE_LANGUAGE) {
+ require_once "lib/languagedetect/LanguageDetect.php";
- $lang = new Text_LanguageDetect();
- $lang->setNameMode(2);
+ $lang = new Text_LanguageDetect();
+ $lang->setNameMode(2);
+ }
// print_r($rss);
_debug("feed hub url: $feed_hub_url", $debug_enabled);
- if ($feed_hub_url && function_exists('curl_init') &&
+ $feed_self_url = $fetch_url;
+
+ $links = $rss->get_links('self');
+
+ if ($links && is_array($links)) {
+ foreach ($links as $l) {
+ $feed_self_url = $l;
+ break;
+ }
+ }
+
+ _debug("feed self url = $feed_self_url");
+
+ if ($feed_hub_url && $feed_self_url && function_exists('curl_init') &&
!ini_get("open_basedir")) {
require_once 'lib/pubsubhubbub/subscriber.php';
$s = new Subscriber($feed_hub_url, $callback_url);
- $rc = $s->subscribe($fetch_url);
+ $rc = $s->subscribe($feed_self_url);
_debug("feed hub url found, subscribe request sent.", $debug_enabled);
print "\n";
}
- $entry_language = $lang->detect($entry_content, 1);
+ $entry_language = "";
- if (count($entry_language) > 0) {
- $entry_language = array_keys($entry_language);
- $entry_language = db_escape_string(substr($entry_language[0], 0, 2));
+ if (DETECT_ARTICLE_LANGUAGE) {
+ $entry_language = $lang->detect($entry_title . " " . $entry_content, 1);
- _debug("detected language: $entry_language", $debug_enabled);
- } else{
- $entry_language = "";
+ if (count($entry_language) > 0) {
+ $entry_language = array_keys($entry_language);
+
+ // the fuck?
+ if (is_array($entry_language))
+ $entry_language = "";
+ else
+ $entry_language = db_escape_string(substr($entry_language[0], 0, 2));
+
+ _debug("detected language: $entry_language", $debug_enabled);
+ }
}
$entry_comments = $item->get_comments_url();
$error_msg = db_escape_string(mb_substr($rss->error(), 0, 245));
- _debug("error fetching feed: $error_msg", $debug_enabled);
+ _debug("fetch error: $error_msg", $debug_enabled);
+
+ if (count($rss->errors()) > 1) {
+ foreach ($rss->errors() as $error) {
+ _debug("+ $error");
+ }
+ }
db_query(
"UPDATE ttrss_feeds SET last_error = '$error_msg',
- last_updated = NOW() WHERE id = '$feed'");
- }
+ last_updated = NOW() WHERE id = '$feed'");
- unset($rss);
+ unset($rss);
+ }
_debug("done", $debug_enabled);
+
+ return $rss;
}
function cache_images($html, $site_url, $debug) {