X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fomb.php;h=17132a594f6ec20ea2e079270d9a791895297f2a;hb=1aeca3947d7c938b9d14334d74f0fecd57a4eaf5;hp=9133af7a05ee93345abad7d79935169f92ff5b27;hpb=cd650b090a339673f2cc7797c8cb9b0eb0196f82;p=quix0rs-gnu-social.git diff --git a/lib/omb.php b/lib/omb.php index 9133af7a05..17132a594f 100644 --- a/lib/omb.php +++ b/lib/omb.php @@ -29,11 +29,9 @@ require_once 'Auth/Yadis/Yadis.php'; function omb_oauth_consumer() { - static $con = null; - if (is_null($con)) { - $con = new OAuthConsumer(common_root_url(), ''); - } - return $con; + // Don't try to make this static. Leads to issues in + // multi-site setups - Z + return new OAuthConsumer(common_root_url(), ''); } function omb_oauth_server() @@ -67,7 +65,14 @@ function omb_hmac_sha1() function omb_broadcast_notice($notice) { - $omb_notice = notice_to_omb_notice($notice); + try { + $omb_notice = notice_to_omb_notice($notice); + } catch (Exception $e) { + // @fixme we should clean up or highlight the problem item + common_log(LOG_ERR, 'Invalid OMB outgoing notice for notice ' . $notice->id); + common_log(LOG_ERR, 'Error status '.$e); + return true; + } /* Get remote users subscribed to this profile. */ $rp = new Remote_profile(); @@ -80,19 +85,14 @@ function omb_broadcast_notice($notice) $posted = array(); while ($rp->fetch()) { - if (!array_key_exists($rp->postnoticeurl, $posted)) { - common_log(LOG_DEBUG, 'Posting to ' . $rp->postnoticeurl); - if (omb_post_notice_keys($notice, $rp->postnoticeurl, $rp->token, $rp->secret)) { - common_log(LOG_DEBUG, 'Finished to ' . $rp->postnoticeurl); - $posted[$rp->postnoticeurl] = true; - } else { - common_log(LOG_DEBUG, 'Failed posting to ' . $rp->postnoticeurl); - } + if (isset($posted[$rp->postnoticeurl])) { + /* We already posted to this url. */ + continue; } common_debug('Posting to ' . $rp->postnoticeurl, __FILE__); /* Post notice. */ - $service = new Laconica_OMB_Service_Consumer( + $service = new StatusNet_OMB_Service_Consumer( array(OMB_ENDPOINT_POSTNOTICE => $rp->postnoticeurl)); try { $service->setToken($rp->token, $rp->secret); @@ -107,7 +107,7 @@ function omb_broadcast_notice($notice) common_debug('Finished to ' . $rp->postnoticeurl, __FILE__); } - return; + return true; } function omb_broadcast_profile($profile) @@ -165,6 +165,7 @@ class StatusNet_OMB_Service_Consumer extends OMB_Service_Consumer { $this->datastore = omb_oauth_datastore(); $this->oauth_consumer = omb_oauth_consumer(); $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); + $this->fetcher->timeout = intval(common_config('omb', 'timeout')); } }