aboutsummaryrefslogtreecommitdiffstats
path: root/include/notifier.php
diff options
context:
space:
mode:
authorfabrixxm <fabrix.xm@gmail.com>2011-02-01 07:18:23 +0100
committerfabrixxm <fabrix.xm@gmail.com>2011-02-01 07:18:23 +0100
commit0bec0fc5fb5bfb02a80c6a84581d9daeb9f17813 (patch)
tree26afc64e0e9f7b1b240798bc457d4aa3c5fe5614 /include/notifier.php
parente7d87e4ab3086b7cc10e92bfee769179f80a4d0d (diff)
parent7dbdf8e6faf082e962772b76511f0fd24b6227cc (diff)
downloadvolse-hubzilla-0bec0fc5fb5bfb02a80c6a84581d9daeb9f17813.tar.gz
volse-hubzilla-0bec0fc5fb5bfb02a80c6a84581d9daeb9f17813.tar.bz2
volse-hubzilla-0bec0fc5fb5bfb02a80c6a84581d9daeb9f17813.zip
Merge branch 'friendika-master'
Diffstat (limited to 'include/notifier.php')
-rw-r--r--include/notifier.php52
1 files changed, 50 insertions, 2 deletions
diff --git a/include/notifier.php b/include/notifier.php
index dd5d55ed0..87095e814 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -255,7 +255,7 @@ function notifier_run($argv, $argc){
$recip_str = implode(', ', $recipients);
- $r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 ",
+ $r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
dbesc($recip_str)
);
if(! count($r)){
@@ -363,13 +363,61 @@ function notifier_run($argv, $argc){
continue;
$params = 'hub.mode=publish&hub.url=' . urlencode($a->get_baseurl() . '/dfrn_poll/' . $owner['nickname'] );
post_url($h,$params);
- logger('pubsub: publish: ' . $h . ' returned ' . $a->get_curl_code());
+ logger('pubsub: publish: ' . $h . ' ' . $params . ' returned ' . $a->get_curl_code());
if(count($hubs) > 1)
sleep(7); // try and avoid multiple hubs responding at precisely the same time
}
}
}
+ if($notify_hub) {
+
+ /**
+ *
+ * If you have less than 150 dfrn friends and it's a public message,
+ * we'll just go ahead and push them out securely with dfrn/rino.
+ * If you've got more than that, you'll have to rely on PuSH delivery.
+ *
+ */
+
+ $max_allowed = ((get_config('system','maxpubdeliver') === false) ? 150 : intval(get_config('system','maxdeliver')));
+
+
+ /**
+ *
+ * Only get the bare essentials and go back for the full record.
+ * If you've got a lot of friends and we grab all the details at once it could exhaust memory.
+ *
+ */
+
+ $r = q("SELECT `id`, `name` FROM `contact`
+ WHERE `network` = 'dfrn' AND `uid` = %d AND `blocked` = 0 AND `pending` = 0
+ AND `rel` != %d ",
+ intval($owner['uid']),
+ intval(REL_FAN)
+ );
+
+ if((count($r)) && ($max_allowed < count($r))) {
+ foreach($r as $rr) {
+
+ /* Don't deliver to folks who have already been delivered to */
+
+ if(! in_array($rr['id'], $conversants)) {
+ $n = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
+ intval($rr['id'])
+ );
+ if(count($n)) {
+
+ logger('notifier: dfrnpubdelivery: ' . $n[0]['name']);
+ $deliver_status = dfrn_deliver($owner,$n[0],$atom);
+ }
+ }
+ else
+ logger('notifier: dfrnpubdelivery: ignoring ' . $rr['name']);
+ }
+ }
+ }
+
return;
}