/**
* Handler for GET verification requests from the hub.
*/
- function handleGet()
+ public function handleGet()
{
$mode = $this->arg('hub_mode');
$topic = $this->arg('hub_topic');
$challenge = $this->arg('hub_challenge');
- $lease_seconds = $this->arg('hub_lease_seconds'); // Must be >0 for PuSH 0.4!
+ $lease_seconds = $this->arg('hub_lease_seconds'); // Must be >0 for PuSH 0.4! And only checked on mode='subscribe' of course
common_log(LOG_INFO, __METHOD__ . ": sub verification mode: $mode topic: $topic challenge: $challenge lease_seconds: $lease_seconds");
if ($mode != 'subscribe' && $mode != 'unsubscribe') {
}
if ($mode == 'subscribe') {
- if ($feedsub->sub_state == 'active') {
+ $renewal = ($feedsub->sub_state == 'active');
+ if ($renewal) {
common_log(LOG_INFO, __METHOD__ . ': sub update confirmed');
} else {
common_log(LOG_INFO, __METHOD__ . ': sub confirmed');
}
+
$feedsub->confirmSubscribe($lease_seconds);
+
+ if (!$renewal) {
+ // Kickstart the feed by importing its most recent backlog
+ // FIXME: Send this to background queue handling
+ common_log(LOG_INFO, __METHOD__ . ': Confirmed a new subscription, importing backlog...');
+ $feedsub->importFeed();
+ }
} else {
common_log(LOG_INFO, __METHOD__ . ": unsub confirmed; deleting sub record for $topic");
$feedsub->confirmUnsubscribe();