* - send subscription requests to the hub
*
* @param string $topic URL to subscribe to
+ * @param string $hub URL of the hub subscribing to
*
* @return void
*/
- public function create($topic)
+ public function create($topic, $hub)
{
$stmt = $this->db->prepare(
'INSERT INTO subscriptions'
. ' (sub_topic, sub_status, sub_lease_seconds, sub_expires'
- . ', sub_secret, sub_capkey, sub_created, sub_updated'
+ . ', sub_secret, sub_capkey, sub_hub, sub_created, sub_updated'
. ', sub_pings, sub_lastping, sub_statusmessage)'
. ' VALUES '
. ' (:topic, "subscribing", :lease_seconds, "0000-00-00 00:00:00"'
- . ', :secret, :capkey, NOW(), NOW()'
+ . ', :secret, :capkey, :hub, NOW(), NOW()'
. ', 0, "0000-00-00 00:00:00", "")'
);
$stmt->execute(
':lease_seconds' => 86400 * 30,
':secret' => bin2hex(openssl_random_pseudo_bytes(16)),
':capkey' => bin2hex(openssl_random_pseudo_bytes(16)),
+ ':hub' => $hub,
]
);
}
}
/**
- * Mark a subscription as "unsubscribed"
+ * Begin removal of a a subscription: Set its status to "unsubscribing"
*
* @param integer $subId Subscription ID
*
* @return void
*/
- public function unsubscribed($subId)
+ public function unsubscribing($subId)
{
$this->db->prepare(
'UPDATE subscriptions'
- . ' SET sub_status = "unsubscribed"'
+ . ' SET sub_status = "unsubscribing"'
. ' , sub_updated = NOW()'
. ' WHERE sub_id = :id'
)->execute([':id' => $subId]);
}
+ /**
+ * Mark a subscription as "unsubscribed" - delete it
+ *
+ * @param integer $subId Subscription ID
+ *
+ * @return void
+ */
+ public function unsubscribed($subId)
+ {
+ $this->db
+ ->prepare('DELETE FROM subscriptions WHERE sub_id = :id')
+ ->execute([':id' => $subId]);
+ }
+
/**
* Subscription has been cancelled/denied for some reason
*
$urls = $hue->getUrls($url);
//we violate the spec by not requiring a self URL
$topicUrl = isset($urls['self']) ? $urls['self'] : $url;
- $hubUrl = isset($urls['hub']) ? $urls['hub'] : null;
+ $hubUrl = isset($urls['hub'][0]) ? $urls['hub'][0] : null;
return array($topicUrl, $hubUrl);
}