/** * Public function to create a new feed for a user. * @param import_url, user_id * @return true on success, on failure will throw an exception */ public function save() { Logger::log("Enter: ExternalFeed::save"); //check for feed, whether it exists in the system or not $sql = 'SELECT feed_id FROM {external_feed} WHERE import_url = ?'; $res = Dal::query($sql, array($this->import_url)); if ($res->numRows()) { //feed url already exists in the system $row = $res->fetchRow(DB_FETCHMODE_OBJECT); $this->feed_id = $row->feed_id; $sql = 'SELECT * FROM {user_feed} WHERE user_id = ? AND feed_id = ?'; $res = Dal::query($sql, array($this->user_id, $this->feed_id)); if ($res->numRows()) { // Import url already exists for given user. Logger::log("Feed url = {$this->import_url} already exists for user_id = {$this->user_id}"); throw new CNException(IMPORT_URL_ALREADY_EXISTS, 'Import URL exists already for user.'); } else { //saving feed for the user $this->save_user_feed(); //refreshing the data for the feed $this->do_refresh = true; $this->refresh_feed_data(); } } else { //This is a new feed and will be added to the existing feeds in the system $this->feed_id = Dal::next_id('ExternalFeed'); $sql = 'INSERT INTO {external_feed} ( feed_id, import_url, max_posts, is_active, feed_type, last_build_date ) VALUES ( ?, ?, ?, ?, ?, ? )'; $data = array($this->feed_id, $this->import_url, $this->max_posts, $this->is_active, $this->feed_type, time()); try { //Inserting the feed to external_feed table $res = Dal::query($sql, $data); } catch (CNException $e) { Logger::log("ExternalFeed::save failed for user_id = {$this->user_id}. Associated sql = {$sql}"); throw $e; } //saving feed for the user $this->save_user_feed(); try { $this->import_posts(); //importing the posts for given feed } catch (CNException $e) { Logger::log("{$e->message}"); ExternalFeed::delete_user_feed($this->feed_id, $this->user_id); // deleting the inserted feed if import_posts fails. throw $e; } } Logger::log("Exit: ExternalFeed::save"); return true; }
include_once "web/includes/page.php"; require_once "api/UserProfileFeed/UserProfileFeed.php"; if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { $msg = __("Blog Feed sucessfully deleted."); if (!empty($_REQUEST['feed_url']) && is_object(PA::$login_user)) { try { PA::$login_user->delete_profile_field('blogs_rss', 'blog_feed', (int) $_REQUEST['section_id']); PA::$login_user->delete_profile_field('blogs_rss', 'blog_title', (int) $_REQUEST['section_id']); PA::$login_user->delete_profile_field('blogs_rss', 'blog_url', (int) $_REQUEST['section_id']); $feeds = new UserProfileFeed(); $feeds->user_id = PA::$login_uid; $feeds->set_feed_type(USER_PROFILE_FEED); $feed_data = $feeds->get_user_feeds(); $feed_id = null; foreach ($feed_data as $user_feed) { if ($user_feed->import_url == $_REQUEST['feed_url']) { $feed_id = $user_feed->feed_id; } } if ($feed_id) { $feeds->set_feed_id((int) $feed_id); $feeds->delete_user_feed_data(); ExternalFeed::delete_user_feed($feed_id, PA::$login_uid); ExternalFeed::deleteByID($feed_id); } } catch (Exception $e) { $msg = "Error deleting feed: <pre>" . $e->getMessge() . "</pre>"; } } } echo $msg;