/** * Inserts a REST API log custom post type record and corresponding * post meta and taxonomy terms * * @param array $args * @return int */ public function insert($args) { $args = wp_parse_args($args, array('time' => current_time('mysql'), 'ip_address' => filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_SANITIZE_STRING), 'http_x_forwarded_for' => filter_input(INPUT_SERVER, 'HTTP_X_FORWARDED_FOR', FILTER_SANITIZE_STRING), 'route' => '', 'source' => 'WP REST API', 'method' => filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING), 'status' => 200, 'request' => array('body' => ''), 'response' => array('body' => ''), 'milliseconds' => 0, 'post_meta' => array())); if (empty($args['milliseconds'])) { global $wp_rest_api_log_start; $now = WP_REST_API_Log_Common::current_milliseconds(); $args['milliseconds'] = absint($now - $wp_rest_api_log_start); } // allow filtering $args = apply_filters(self::plugin_name() . '-pre-insert', $args); $new_post = array('post_author' => 0, 'post_type' => self::POST_TYPE, 'post_title' => $args['route'], 'post_content' => wp_json_encode($args['response']['body'], JSON_PRETTY_PRINT), 'post_status' => 'publish', 'post_name' => sanitize_title($args['route']) . '-' . wp_generate_password(6)); // allow filtering $new_post = apply_filters(self::plugin_name() . '-pre-insert-new-post', $new_post, $args); $post_id = wp_insert_post($new_post); if (!empty($post_id)) { $this->insert_post_terms($post_id, $args); $this->insert_post_meta($post_id, $args); $this->insert_request_meta($post_id, $args); $this->insert_response_meta($post_id, $args); global $wp_rest_api_log_new_entry_id; $wp_rest_api_log_new_entry_id = $post_id; } return $post_id; }
} $plugin_class_file = 'wp-rest-api-log'; $includes = array('includes/class-' . $plugin_class_file . '-common.php', 'includes/class-' . $plugin_class_file . '-db.php', 'includes/class-' . $plugin_class_file . '-post-type.php', 'includes/class-' . $plugin_class_file . '-i18n.php', 'includes/class-' . $plugin_class_file . '-controller.php', 'includes/class-' . $plugin_class_file . '-request-response-base.php', 'includes/class-' . $plugin_class_file . '-request.php', 'includes/class-' . $plugin_class_file . '-response.php', 'includes/class-' . $plugin_class_file . '-entry.php', 'includes/class-' . $plugin_class_file . '-response-base.php', 'includes/class-' . $plugin_class_file . '-delete-response.php', 'includes/class-' . $plugin_class_file . '-routes-response.php', 'includes/class-' . $plugin_class_file . '-elasticpress.php', 'includes/class-' . $plugin_class_file . '.php', 'includes/settings/class-' . $plugin_class_file . '-settings-base.php', 'includes/settings/class-' . $plugin_class_file . '-settings-general.php', 'includes/settings/class-' . $plugin_class_file . '-settings-routes.php', 'includes/settings/class-' . $plugin_class_file . '-settings-elasticpress.php', 'includes/settings/class-' . $plugin_class_file . '-settings-help.php', 'includes/settings/class-' . $plugin_class_file . '-settings.php', 'admin/class-' . $plugin_class_file . '-admin.php', 'admin/class-' . $plugin_class_file . '-admin-list-table.php'); $class_base = 'WP_REST_API_Log'; $classes = array($class_base . '_Common', $class_base . '_DB', $class_base . '_Post_Type', $class_base . '_i18n', $class_base . '_Controller', $class_base . '', $class_base . '_Admin', $class_base . '_Admin_List_Table'); /* Include classes */ foreach ($includes as $include) { require_once WP_REST_API_LOG_PATH . $include; } if (defined('WP_CLI') && WP_CLI) { require_once WP_REST_API_LOG_PATH . 'includes/wp-cli/setup.php'; } /* Record the start time so we can log total millisecons */ if (class_exists('WP_REST_API_Log_Common')) { global $wp_rest_api_log_start; $wp_rest_api_log_start = WP_REST_API_Log_Common::current_milliseconds(); } /* Instantiate classes and hook into WordPress */ foreach ($classes as $class) { $plugin = new $class(); if (method_exists($class, 'plugins_loaded')) { add_action('plugins_loaded', array($plugin, 'plugins_loaded'), 1); } } WP_REST_API_Log_ElasticPress::plugins_loaded(); WP_REST_API_Log_Settings::plugins_loaded(); WP_REST_API_Log_Settings_General::plugins_loaded(); WP_REST_API_Log_Settings_Routes::plugins_loaded(); WP_REST_API_Log_Settings_ElasticPress::plugins_loaded(); WP_REST_API_Log_Settings_Help::plugins_loaded(); /* Activation hook */