/** * Register all of the hooks related to the dashboard functionality * of the plugin. * * @since 1.0.0 * @access private */ private function define_admin_hooks() { $ip_admin = new IssuePress_Admin($this->get_plugin_name(), $this->get_version(), $this); $this->loader->add_action('admin_notices', $ip_admin, 'deferred_admin_notices'); $this->loader->add_action('admin_enqueue_scripts', $ip_admin, 'enqueue_styles'); $this->loader->add_action('admin_enqueue_scripts', $ip_admin, 'enqueue_scripts'); $this->loader->add_action('admin_init', $ip_admin, 'register_ip_settings'); $this->loader->add_action('admin_init', $ip_admin, 'register_general_section'); $this->loader->add_action('admin_init', $ip_admin, 'register_extensions_section'); $this->loader->add_filter('manage_' . get_ip_support_request_post_type() . '_posts_columns', $ip_admin, 'add_status_column'); $this->loader->add_action('manage_' . get_ip_support_request_post_type() . '_posts_custom_column', $ip_admin, 'add_status_column_data', 10, 2); $this->loader->add_filter('manage_edit-' . get_ip_support_request_post_type() . '_sortable_columns', $ip_admin, 'sortable_status_column'); $this->loader->add_filter('request', $ip_admin, 'status_column_orderby'); $this->loader->add_action('add_meta_boxes', $ip_admin, 'add_meta_boxes'); $this->loader->add_action('add_meta_boxes_' . get_ip_support_request_post_type(), $ip_admin, 'remove_sections_metabox'); $this->loader->add_action('save_post_' . get_ip_support_request_post_type(), $ip_admin, 'save_support_request_meta'); $this->loader->add_action('admin_menu', $ip_admin, 'register_admin_menu'); $this->loader->add_filter('plugin_action_links_' . $this->plugin_basename, $ip_admin, 'add_action_links'); $this->loader->add_filter('plugin_row_meta', $ip_admin, 'add_meta_links', 10, 2); $this->loader->add_action('wp_ajax_ip-create-page', $ip_admin, 'ajax_create_page'); $this->loader->add_action('template_redirect', $ip_admin, 'ip_template_redirect', 8); $this->loader->add_action('ip_template_redirect', $ip_admin, 'ip_post_request'); $this->loader->add_action('ip_post_request', $ip_admin, 'ip_new_support_request_handler'); }
/** * Filter the_content for IssuePress Support Requests * * @since 1.0.0 */ public function filter_the_content($content) { global $post; $ip_meta = ''; if ($post->post_type == get_ip_support_request_post_type()) { $template_loader = $this->plugin->get_template_loader(); $template_loader->get_template_part('support', 'meta'); } return $content; }
/** * Handles support request form submissions * * @since 1.0.0 */ public function ip_new_support_request_handler($action = '') { // Bail if action is not ip-create-support-request if ($action !== 'ip-create-support-request') { return; } // Nonce check if (!wp_verify_nonce($_REQUEST['_wpnonce'], $action)) { return; } $request_author = get_current_user_id(); $request_content = $request_title = ''; if (!empty($_POST['ip-support-description'])) { $request_content = esc_attr(strip_tags($_POST['ip-support-description'])); } else { ip_add_error('ip_support_content', __('<strong>ERROR</strong>: Support Requests require a description.', $this->name)); } if (!empty($_POST['ip-support-title'])) { $request_title = esc_attr(strip_tags($_POST['ip-support-title'])); } else { ip_add_error('ip_support_title', __('<strong>ERROR</strong>: Support Requests require a title.', $this->name)); } if (!empty($_POST['ip-support-section'])) { $request_section = $_POST['ip-support-section']; } else { $request_section = get_ip_default_section(); } if (ip_has_errors()) { return; } $post_status = $this->plugin->get_plugin_setting_by_key('ip_default_post_status'); $support_request_data = apply_filters('ip_new_support_request_pre_insert', array('post_author' => $request_author, 'post_title' => $request_title, 'post_content' => $request_content, 'post_type' => get_ip_support_request_post_type(), 'post_status' => $post_status ? $post_status : 'draft', 'comment_status' => 'open', 'ping_status' => 'closed')); $support_request_id = wp_insert_post($support_request_data); if (!empty($support_request_id)) { update_post_meta($support_request_id, 'status', 'open'); wp_set_post_terms($support_request_id, $request_section, get_ip_support_section_taxonomy()); do_action('ip_new_support_request_post_insert', $support_request_id); } }
/** * Get array of support requests based on status in a given section * * @since 1.0.0 * @param $status (String) 'open', 'closed', 'all'. Defaults to 'all'. * @param $section (Int) Optional. The Section Term ID to look in * @return Array */ function ip_get_support_requests_by_status($status = 'all', $section = '') { $status = strtolower($status); $args = array('posts_per_page' => -1, 'post_type' => get_ip_support_request_post_type()); if (!$status != "all") { $args['meta_key'] = 'status'; } if ($status == "open") { $args['meta_value'] = 'open'; } if ($status == "closed") { $args['meta_value'] = 'closed'; } if (!empty($section)) { $args['tax_query'] = array(array('taxonomy' => get_ip_support_section_taxonomy(), 'terms' => $section->term_id)); } return $support_requests = get_posts($args); }