X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fnotifier.php;h=9dac5f114b177d617956a9772d733194d13bd0f1;hb=6ddf62bdf703f1dda6dddab96bf71928bc1f0891;hp=67d5cdbbd869b7181a2b4f4b97913a7159cb2d27;hpb=bc6e5a4f2db07ddccfc0b6d0ac5ca088b4a277b1;p=friendica.git diff --git a/include/notifier.php b/include/notifier.php index 67d5cdbbd8..9dac5f114b 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -3,6 +3,7 @@ require_once("boot.php"); require_once('include/queue_fn.php'); require_once('include/html2plain.php'); require_once("include/Scrape.php"); +require_once('include/diaspora.php'); /* * This file was at one time responsible for doing all deliveries, but this caused @@ -294,7 +295,7 @@ function notifier_run(&$argv, &$argc){ $relay_to_owner = false; if($relay_to_owner) { - logger('notifier: followup', LOGGER_DEBUG); + logger('notifier: followup '.$target_item["guid"], LOGGER_DEBUG); // local followup to remote post $followup = true; $public_message = false; // not public @@ -330,6 +331,8 @@ function notifier_run(&$argv, &$argc){ } else { $followup = false; + logger('Distributing directly '.$target_item["guid"], LOGGER_DEBUG); + // don't send deletions onward for other people's stuff if($target_item['deleted'] && (! intval($target_item['wall']))) { @@ -377,7 +380,7 @@ function notifier_run(&$argv, &$argc){ } if (count($url_recipients)) - logger('notifier: url_recipients ' . print_r($url_recipients,true)); + logger('notifier: '.$target_item["guid"].' url_recipients ' . print_r($url_recipients,true)); $conversants = array_unique($conversants); @@ -393,6 +396,8 @@ function notifier_run(&$argv, &$argc){ // We have not only to look at the parent, since it could be a Friendica thread. if (($thr_parent AND ($thr_parent[0]['network'] == NETWORK_OSTATUS)) OR ($parent['network'] == NETWORK_OSTATUS)) { + logger('Some parent is OStatus for '.$target_item["guid"], LOGGER_DEBUG); + // Send a salmon notification to every person we mentioned in the post $arr = explode(',',$target_item['tag']); foreach($arr as $x) { @@ -610,6 +615,10 @@ function notifier_run(&$argv, &$argc){ $interval = ((get_config('system','delivery_interval') === false) ? 2 : intval(get_config('system','delivery_interval'))); + // If we are using the worker we don't need a delivery interval + if (get_config("system", "worker")) + $interval = false; + // delivery loop if(count($r)) { @@ -629,7 +638,7 @@ function notifier_run(&$argv, &$argc){ // This controls the number of deliveries to execute with each separate delivery process. // By default we'll perform one delivery per process. Assuming a hostile shared hosting - // provider, this provides the greatest chance of deliveries if processes start getting + // provider, this provides the greatest chance of deliveries if processes start getting // killed. We can also space them out with the delivery_interval to also help avoid them // getting whacked. @@ -637,8 +646,10 @@ function notifier_run(&$argv, &$argc){ // together into a single process. This will reduce the overall number of processes // spawned for each delivery, but they will run longer. + // When using the workerqueue, we don't need this functionality. + $deliveries_per_process = intval(get_config('system','delivery_batch_count')); - if($deliveries_per_process <= 0) + if (($deliveries_per_process <= 0) OR get_config("system", "worker")) $deliveries_per_process = 1; $this_batch = array(); @@ -649,7 +660,7 @@ function notifier_run(&$argv, &$argc){ if($contact['self']) continue; - logger("Deliver to ".$contact['url'], LOGGER_DEBUG); + logger("Deliver ".$target_item["guid"]." to ".$contact['url'], LOGGER_DEBUG); // potentially more than one recipient. Start a new process and space them out a bit. // we will deliver single recipient types of message and email recipients here. @@ -723,9 +734,9 @@ function notifier_run(&$argv, &$argc){ $ssl_policy = get_config('system','ssl_policy'); fix_contact_ssl_policy($x[0],$ssl_policy); - // If we are setup as a soapbox we aren't accepting input from this person + // If we are setup as a soapbox we aren't accepting top level posts from this person - if($x[0]['page-flags'] == PAGE_SOAPBOX) + if (($x[0]['page-flags'] == PAGE_SOAPBOX) AND $top_level) break; require_once('library/simplepie/simplepie.inc'); @@ -874,8 +885,6 @@ function notifier_run(&$argv, &$argc){ } break; case NETWORK_DIASPORA: - require_once('include/diaspora.php'); - if(get_config('system','dfrn_only') || (! get_config('system','diaspora_enabled'))) break; @@ -899,11 +908,16 @@ function notifier_run(&$argv, &$argc){ if(! $contact['pubkey']) break; - if($target_item['verb'] === ACTIVITY_DISLIKE) { - // unsupported - break; + $unsupported_activities = array(ACTIVITY_DISLIKE, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); + + //don't transmit activities which are not supported by diaspora + foreach($unsupported_activities as $act) { + if(activity_match($target_item['verb'],$act)) { + break 2; + } } - elseif(($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) { + + if(($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) { // send both top-level retractions and relayable retractions for owner to relay diaspora_send_retraction($target_item,$owner,$contact); break; @@ -958,6 +972,11 @@ function notifier_run(&$argv, &$argc){ if($public_message) { + if (!$followup) + $r0 = diaspora_fetch_relay(); + else + $r0 = array(); + $r1 = q("SELECT DISTINCT(`batch`), `id`, `name`,`network` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `rel` != %d group by `batch` ORDER BY rand() ", dbesc(NETWORK_DIASPORA), @@ -974,7 +993,7 @@ function notifier_run(&$argv, &$argc){ intval(CONTACT_IS_SHARING) ); - $r = array_merge($r2,$r1); + $r = array_merge($r2,$r1,$r0); if(count($r)) { logger('pubdeliver: ' . print_r($r,true), LOGGER_DEBUG);