From 0a03a710b326dc6c21ade1d769348e67100457c6 Mon Sep 17 00:00:00 2001 From: Friendika Date: Thu, 25 Nov 2010 15:03:59 -0800 Subject: [PATCH] ensuring all non-deliveries get in the queue --- boot.php | 4 ++++ include/items.php | 18 +++++++++++++++--- mod/dfrn_notify.php | 39 ++++++++++++++++++++------------------- 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/boot.php b/boot.php index 6d1ea165cb..a17f078bf0 100644 --- a/boot.php +++ b/boot.php @@ -416,6 +416,8 @@ function fetch_url($url,$binary = false, &$redirects = 0) { if($binary) curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); + $a->set_curl_code(0); + $s = curl_exec($ch); $http_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE)); @@ -474,6 +476,8 @@ function post_url($url,$params, $headers = null, &$redirects = 0) { curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); } + $a->set_curl_code(0); + $s = curl_exec($ch); $http_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE)); diff --git a/include/items.php b/include/items.php index c5857f7fd3..27cb01f250 100644 --- a/include/items.php +++ b/include/items.php @@ -536,7 +536,6 @@ function item_store($arr) { $arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : ''); $arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : ''); $arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : ''); - $arr['body'] = ((x($arr,'body')) ? escape_tags(trim($arr['body'])) : ''); $arr['last-child'] = ((x($arr,'last-child')) ? intval($arr['last-child']) : 0 ); $arr['visible'] = ((x($arr,'visible') !== false) ? intval($arr['visible']) : 1 ); $arr['deleted'] = 0; @@ -550,6 +549,13 @@ function item_store($arr) { $arr['allow_gid'] = ((x($arr,'allow_gid')) ? trim($arr['allow_gid']) : ''); $arr['deny_cid'] = ((x($arr,'deny_cid')) ? trim($arr['deny_cid']) : ''); $arr['deny_gid'] = ((x($arr,'deny_gid')) ? trim($arr['deny_gid']) : ''); + $arr['body'] = ((x($arr,'body')) ? escape_tags(trim($arr['body'])) : ''); + + // The content body has been through a lot of filtering and transport escaping by now. + // We don't want to skip any filters, however a side effect of all this filtering + // is that ampersands will have been double encoded. + + $arr['body'] = str_replace('&','&',$arr['body']); @@ -640,6 +646,7 @@ function get_item_contact($item,$contacts) { function dfrn_deliver($owner,$contact,$atom) { + $a = get_app(); if((! strlen($contact['dfrn-id'])) && (! $contact['duplex']) && (! ($owner['page-flags'] == PAGE_COMMUNITY))) return 3; @@ -657,6 +664,10 @@ function dfrn_deliver($owner,$contact,$atom) { $xml = fetch_url($url); + $curl_stat = $a->get_curl_code(); + if(! $curl_stat) + return(-1); // timed out + logger('dfrn_deliver: ' . $xml); if(! $xml) @@ -711,8 +722,9 @@ function dfrn_deliver($owner,$contact,$atom) { logger('dfrn_deliver: ' . "SENDING: " . print_r($postvars,true) . "\n" . "RECEIVING: " . $xml, LOGGER_DATA); - if(! strlen($xml)) - return(-1); + $curl_stat = $a->get_curl_code(); + if((! $curl_stat) || (! strlen($xml))) + return(-1); // timed out $res = simplexml_load_string($xml); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index f0c4f0c643..d7166f6aec 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -149,6 +149,8 @@ function dfrn_notify_post(&$a) { xml_status(0); // NOTREACHED } + + logger('dfrn_notify: feed item count = ' . $feed->get_item_quantity()); foreach($feed->get_items() as $item) { @@ -223,6 +225,7 @@ function dfrn_notify_post(&$a) { if($is_reply) { if($feed->get_item_quantity() == 1) { + logger('dfrn_notify: received remote comment'); // remote reply to our post. Import and then notify everybody else. $datarray = get_atom_elements($feed,$item); $datarray['type'] = 'remote-comment'; @@ -254,29 +257,27 @@ function dfrn_notify_post(&$a) { intval($posted_id) ); - if($datarray['type'] == 'remote-comment') { - $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); + $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); - proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &", - array(),$foo)); + proc_close(proc_open("\"$php_path\" \"include/notifier.php\" \"comment-import\" \"$posted_id\" &", + array(),$foo)); - if(($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) { - require_once('bbcode.php'); - $from = stripslashes($datarray['author-name']); - $tpl = load_view_file('view/cmnt_received_eml.tpl'); - $email_tpl = replace_macros($tpl, array( - '$sitename' => $a->config['sitename'], - '$siteurl' => $a->get_baseurl(), - '$username' => $importer['username'], - '$email' => $importer['email'], - '$display' => $a->get_baseurl() . '/display/' . $posted_id, - '$from' => $from, + if(($importer['notify-flags'] & NOTIFY_COMMENT) && (! $importer['self'])) { + require_once('bbcode.php'); + $from = stripslashes($datarray['author-name']); + $tpl = load_view_file('view/cmnt_received_eml.tpl'); + $email_tpl = replace_macros($tpl, array( + '$sitename' => $a->config['sitename'], + '$siteurl' => $a->get_baseurl(), + '$username' => $importer['username'], + '$email' => $importer['email'], + '$display' => $a->get_baseurl() . '/display/' . $posted_id, + '$from' => $from, '$body' => strip_tags(bbcode(stripslashes($datarray['body']))) - )); + )); - $res = mail($importer['email'], $from . t(" commented on your item at ") . $a->config['sitename'], - $email_tpl,t("From: Administrator@") . $a->get_hostname() ); - } + $res = mail($importer['email'], $from . t(" commented on your item at ") . $a->config['sitename'], + $email_tpl,t("From: Administrator@") . $a->get_hostname() ); } } xml_status(0);