/** * @param string $feeduri * @return FeedSub * @throws FeedSubException if feed is invalid or lacks PuSH setup */ public static function ensureFeed($feeduri) { $current = self::staticGet('uri', $feeduri); if ($current) { return $current; } $discover = new FeedDiscovery(); $discover->discoverFromFeedURL($feeduri); $huburi = $discover->getHubLink(); if (!$huburi && !common_config('feedsub', 'fallback_hub')) { throw new FeedSubNoHubException(); } $feedsub = new FeedSub(); $feedsub->uri = $feeduri; $feedsub->huburi = $huburi; $feedsub->sub_state = 'inactive'; $feedsub->created = common_sql_now(); $feedsub->modified = common_sql_now(); $result = $feedsub->insert(); if (empty($result)) { throw new FeedDBException($feedsub); } return $feedsub; }