/** * add_ics_feed function * * Adds submitted ics feed to the database * * @return string JSON output * */ public function add_ics_feed() { check_ajax_referer('ai1ec_ics_feed_nonce', 'nonce'); $db = $this->_registry->get('dbi.dbi'); $table_name = $db->get_table_name('ai1ec_event_feeds'); $feed_categories = empty($_REQUEST['feed_category']) ? '' : implode(',', $_REQUEST['feed_category']); $entry = array('feed_url' => $_REQUEST['feed_url'], 'feed_category' => $feed_categories, 'feed_tags' => $_REQUEST['feed_tags'], 'comments_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['comments_enabled']), 'map_display_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['map_display_enabled']), 'keep_tags_categories' => Ai1ec_Primitive_Int::db_bool($_REQUEST['keep_tags_categories']), 'keep_old_events' => Ai1ec_Primitive_Int::db_bool($_REQUEST['keep_old_events'])); $entry = apply_filters('ai1ec_ics_feed_entry', $entry); if (is_wp_error($entry)) { $output = array('error' => true, 'message' => $entry->get_error_message()); $json_strategy = $this->_registry->get('http.response.render.strategy.json'); return $json_strategy->render(array('data' => $output)); } $format = array('%s', '%s', '%s', '%d', '%d', '%d', '%d'); $res = $db->insert($table_name, $entry, $format); $feed_id = $db->get_insert_id(); $categories = array(); if (!empty($_REQUEST['feed_category'])) { foreach ($_REQUEST['feed_category'] as $cat_id) { $feed_category = get_term($cat_id, 'events_categories'); $categories[] = $feed_category->name; } } $args = array('feed_url' => $_REQUEST['feed_url'], 'event_category' => implode(', ', $categories), 'tags' => str_replace(',', ', ', $_REQUEST['feed_tags']), 'feed_id' => $feed_id, 'comments_enabled' => (bool) intval($_REQUEST['comments_enabled']), 'map_display_enabled' => (bool) intval($_REQUEST['map_display_enabled']), 'events' => 0, 'keep_tags_categories' => (bool) intval($_REQUEST['keep_tags_categories']), 'keep_old_events' => (bool) intval($_REQUEST['keep_old_events'])); $loader = $this->_registry->get('theme.loader'); // display added feed row $file = $loader->get_file('feed_row.php', $args, true); $output = $file->get_content(); $output = array('error' => false, 'message' => stripslashes($output)); $json_strategy = $this->_registry->get('http.response.render.strategy.json'); return $json_strategy->render(array('data' => $output)); }
/** * add_ics_feed function * * Adds submitted ics feed to the database * * @return string JSON output * */ public function add_ics_feed() { check_ajax_referer('ai1ec_ics_feed_nonce', 'nonce'); if (!current_user_can('manage_ai1ec_feeds')) { wp_die(Ai1ec_I18n::__('Oh, submission was not accepted.')); } $db = $this->_registry->get('dbi.dbi'); $table_name = $db->get_table_name('ai1ec_event_feeds'); $feed_categories = empty($_REQUEST['feed_category']) ? '' : implode(',', $_REQUEST['feed_category']); $entry = array('feed_url' => $_REQUEST['feed_url'], 'feed_name' => $_REQUEST['feed_url'], 'feed_category' => $feed_categories, 'feed_tags' => $_REQUEST['feed_tags'], 'comments_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['comments_enabled']), 'map_display_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['map_display_enabled']), 'keep_tags_categories' => Ai1ec_Primitive_Int::db_bool($_REQUEST['keep_tags_categories']), 'keep_old_events' => Ai1ec_Primitive_Int::db_bool($_REQUEST['keep_old_events']), 'import_timezone' => Ai1ec_Primitive_Int::db_bool($_REQUEST['feed_import_timezone'])); $entry = apply_filters('ai1ec_ics_feed_entry', $entry); $json_strategy = $this->_registry->get('http.response.render.strategy.json'); if (is_wp_error($entry)) { $output = array('error' => true, 'message' => $entry->get_error_message()); return $json_strategy->render(array('data' => $output)); } $format = array('%s', '%s', '%s', '%s', '%d', '%d', '%d', '%d', '%d'); if (!empty($_REQUEST['feed_id'])) { $feed_id = $_REQUEST['feed_id']; $db->update($table_name, $entry, array('feed_id' => $feed_id)); } else { $res = $db->insert($table_name, $entry, $format); $feed_id = $db->get_insert_id(); } $categories = array(); do_action('ai1ec_ics_feed_added', $feed_id, $entry); $update = $this->update_ics_feed($feed_id); if ($update['data']['error']) { $this->delete_ics_feed(false, $feed_id); return $json_strategy->render($update); } $feed_name = $update['data']['name']; $db->update($table_name, array('feed_name' => $feed_name), array('feed_id' => $feed_id)); $cat_ids = ''; if (!empty($_REQUEST['feed_category'])) { foreach ($_REQUEST['feed_category'] as $cat_id) { $feed_category = get_term($cat_id, 'events_categories'); $categories[] = $feed_category->name; } $cat_ids = implode(',', $_REQUEST['feed_category']); } $args = array('feed_url' => $_REQUEST['feed_url'], 'feed_name' => $feed_name, 'event_category' => implode(', ', $categories), 'categories_ids' => $cat_ids, 'tags' => str_replace(',', ', ', $_REQUEST['feed_tags']), 'tags_ids' => $_REQUEST['feed_tags'], 'feed_id' => $feed_id, 'comments_enabled' => (bool) intval($_REQUEST['comments_enabled']), 'map_display_enabled' => (bool) intval($_REQUEST['map_display_enabled']), 'events' => 0, 'keep_tags_categories' => (bool) intval($_REQUEST['keep_tags_categories']), 'keep_old_events' => (bool) intval($_REQUEST['keep_old_events']), 'feed_import_timezone' => (bool) intval($_REQUEST['feed_import_timezone'])); // Display added feed row. $loader = $this->_registry->get('theme.loader'); $file = $loader->get_file('feed_row.php', $args, true); $output = $file->get_content(); $output = array('error' => false, 'message' => stripslashes($output), 'update' => $update); return $json_strategy->render(array('data' => $output)); }
/** * add_ics_feed function * * Adds submitted ics feed to the database * * @return string JSON output * */ public function add_ics_feed() { $db = $this->_registry->get('dbi.dbi'); $table_name = $db->get_table_name('ai1ec_event_feeds'); $feed_categories = empty($_REQUEST['feed_category']) ? '' : implode(',', $_REQUEST['feed_category']); $entry = array('feed_url' => $_REQUEST['feed_url'], 'feed_category' => $feed_categories, 'feed_tags' => $_REQUEST['feed_tags'], 'comments_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['comments_enabled']), 'map_display_enabled' => Ai1ec_Primitive_Int::db_bool($_REQUEST['map_display_enabled']), 'keep_tags_categories' => Ai1ec_Primitive_Int::db_bool($_REQUEST['keep_tags_categories'])); $format = array('%s', '%s', '%s', '%d', '%d', '%d'); $res = $db->insert($table_name, $entry, $format); $feed_id = $db->get_insert_id(); $categories = array(); if (!empty($_REQUEST['feed_category'])) { foreach ($_REQUEST['feed_category'] as $cat_id) { $feed_category = get_term($cat_id, 'events_categories'); $categories[] = $feed_category->name; } } $args = array('feed_url' => $_REQUEST['feed_url'], 'event_category' => implode(', ', $categories), 'tags' => str_replace(',', ', ', $_REQUEST['feed_tags']), 'feed_id' => $feed_id, 'comments_enabled' => (bool) intval($_REQUEST['comments_enabled']), 'map_display_enabled' => (bool) intval($_REQUEST['map_display_enabled']), 'events' => 0, 'keep_tags_categories' => (bool) intval($_REQUEST['keep_tags_categories'])); $loader = $this->_registry->get('theme.loader'); // display added feed row $file = $loader->get_file('feed_row.php', $args, true); $output = $file->get_content(); $output = array("error" => 0, "message" => stripslashes($output)); echo json_encode($output); exit; }