/** * Import new feed from url * * @param mixed $url * @param RDR_Category $category * @return RDR_Event The last event for that import */ static function addFeed($url, RDR_Category $category) { $feed = RDR_Feed::get($url); if ($feed->getId()) { $categories = user()->getCategories(); $feedExist = false; foreach ($categories as $category) { if ($category->getByKey("feeds", $feed->getId())) { $feedExist = true; break; } } if (!$feedExist) { $category->add("feeds", $feed); $category->store(); return RDR_Event::log(RDR_Event::TYPE_FEED_ADD_OK, array("feed" => $feed)); } return RDR_Event::log(RDR_Event::TYPE_FEED_EXIST, array("text" => $url)); } $xml = self::getSimpleXMLFromUrl($feed->url); if (!$xml) { return RDR_Event::$lastEvent; } $title = ""; $tmp = $xml->xpath("/rss/channel/title"); if ($tmp) { $title = self::xmlValue($tmp); } if (!$title) { $tmp = $xml->title; if ($tmp) { $title = self::xmlValue($tmp); } } if (!$title) { $tmp = $xml->channel && $xml->channel->title ? $xml->channel->title : null; if ($tmp) { $title = self::xmlValue($tmp); } } if (!$title) { return RDR_Event::log(RDR_Event::TYPE_MISSING_PARSER, array("text" => $url . ":title")); } $feed->name = trim($title); $feed->store(); $category->add("feeds", $feed); $category->store(); return RDR_Event::log(RDR_Event::TYPE_FEED_ADD_OK, array("feed" => $feed)); }