proc_run('php',"include/queue.php");
+ // expire any expired accounts
+
+ q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
+ AND `account_expires_on` != '0000-00-00 00:00:00'
+ AND `account_expires_on` < UTC_TIMESTAMP() ");
+
// once daily run expire in background
$d1 = get_config('system','last_expire_day');
$d = datetime_convert();
if(! $restart)
- call_hooks('cron', $d);
+ proc_run('php','include/cronhooks.php');
+ // Only poll from those with suitable relationships,
+ // and which have a polling address and ignore Diaspora since
+ // we are unable to match those posts with a Diaspora GUID and prevent duplicates.
- $contacts = q("SELECT `id` FROM `contact`
+ $contacts = q("SELECT `contact`.`id` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
+ AND `network` != '%s'
$sql_extra
- AND `self` = 0 AND `blocked` = 0 AND `readonly` = 0 ORDER BY RAND()",
- intval(REL_FAN),
- intval(REL_BUD)
+ AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
+ AND `user`.`account_expired` = 0 ORDER BY RAND()",
+ intval(CONTACT_IS_SHARING),
+ intval(CONTACT_IS_FRIEND),
+ dbesc(NETWORK_DIASPORA)
);
if(! count($contacts)) {
intval($c['id'])
);
- if(! count($res))
+ if((! $res) || (! count($res)))
continue;
foreach($res as $contact) {
if((datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) || $force)
$hub_update = true;
}
+ else
+ $hub_update = false;
/**
* Based on $contact['priority'], should we poll this site now? Or later?
// Upgrading DB fields from an older Friendika version
// Will only do this once per notify-enabled OStatus contact
+ // or if relationship changes
- if(($contact['notify']) && (! $contact['writable'])) {
- q("UPDATE `contact` SET `writable` = 1 WHERE `id` = %d LIMIT 1",
+ $stat_writeable = ((($contact['notify']) && ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['rel'] == CONTACT_IS_FRIEND)) ? 1 : 0);
+
+ if($stat_writeable != $contact['writable']) {
+ q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
+ intval($stat_writeable),
intval($contact['id'])
);
}
+ // Are we allowed to import from this person?
+
+ if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
+ continue;
+
$xml = fetch_url($contact['poll']);
}
elseif($contact['network'] === NETWORK_MAIL) {
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
+ if(! get_pconfig($importer_uid,'system','allow_public_email_replies')) {
+ $datarray['private'] = 1;
+ $datarray['allow_cid'] = '<' . $contact['id'] . '>';
+ }
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
}
}
elseif($contact['network'] === NETWORK_FACEBOOK) {
- // TODO: work in progress
+ // This is picked up by the Facebook plugin on a cron hook.
+ // Ignored here.
}
if($xml) {
consume_feed($xml,$importer,$contact,$hub,1);
+ $hubmode = 'subscribe';
+ if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
+ $hubmode = 'unsubscribe';
- if((strlen($hub)) && ($hub_update) && (($contact['rel'] == REL_BUD) || (($contact['network'] === NETWORK_OSTATUS) && (! $contact['readonly'])))) {
- logger('poller: subscribing to hub(s) : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
+ if((strlen($hub)) && ($hub_update) && ($contact['rel'] != CONTACT_IS_FOLLOWER)) {
+ logger('poller: hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
$hubs = explode(',', $hub);
if(count($hubs)) {
foreach($hubs as $h) {
$h = trim($h);
if(! strlen($h))
continue;
- subscribe_to_hub($h,$importer,$contact);
+ subscribe_to_hub($h,$importer,$contact,$hubmode);
}
}
}
}
+
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",