diff --git a/includes/sp-event-has-outcome-filter.php b/includes/sp-event-has-outcome-filter.php
new file mode 100644
index 0000000..0dd1559
--- /dev/null
+++ b/includes/sp-event-has-outcome-filter.php
@@ -0,0 +1,101 @@
+ "AND",
+ [
+ "key" => "sp_results",
+ "value" => '"outcome"',
+ "compare" => "LIKE",
+ ],
+ [
+ "key" => "sp_results",
+ "value" => 's:7:"outcome";a:0:{}', // i.e. a blank outcome
+ "compare" => "NOT LIKE",
+ ],
+ ];
+ } elseif (!$has_outcome) {
+ return [
+ "relation" => "OR",
+ [
+ "key" => "sp_results",
+ "value" => '"outcome"',
+ "compare" => "NOT LIKE",
+ ],
+ [
+ "key" => "sp_results",
+ "value" => 's:7:"outcome";a:0:{}', // i.e. a blank outcome
+ "compare" => "LIKE",
+ ],
+ ];
+ }
+}
+
+// Add the custom filter dropdown
+function outcome_filter_dropdown()
+{
+ $current_screen = get_current_screen();
+
+ if ($current_screen->id == "edit-sp_event") {
+ if (isset($_GET["has-outcome"])) {
+ switch ($_GET["has-outcome"]) {
+ case 'true':
+ $selected="has-outcome";break;
+ case 'false':
+ $selected="has-no-outcome";break;
+ case '':
+ $selected='';break;
+ }
+ }; ?>
+
+ set("meta_query", $meta_query);
+ }
+ elseif ($_GET["has-outcome"] == "true") {
+ $meta_query = get_sp_event_has_outcome_meta_query_args(true);
+ $query->set("meta_query", $meta_query);
+ }
+ }
+}
+
+add_action("pre_get_posts", "outcome_filter_query");
\ No newline at end of file
diff --git a/includes/sp-event-has-outcome.php b/includes/sp-event-has-outcome.php
new file mode 100644
index 0000000..06aefac
--- /dev/null
+++ b/includes/sp-event-has-outcome.php
@@ -0,0 +1,105 @@
+ "AND",
+ [
+ "key" => "sp_results",
+ "value" => '"outcome"',
+ "compare" => "LIKE",
+ ],
+ [
+ "key" => "sp_results",
+ "value" => 's:7:"outcome";a:0:{}', // i.e. a blank outcome
+ "compare" => "NOT LIKE",
+ ],
+ ];
+ } elseif (!$has_outcome) {
+ return [
+ "relation" => "OR",
+ [
+ "key" => "sp_results",
+ "value" => '"outcome"',
+ "compare" => "NOT LIKE",
+ ],
+ [
+ "key" => "sp_results",
+ "value" => 's:7:"outcome";a:0:{}', // i.e. a blank outcome
+ "compare" => "LIKE",
+ ],
+ ];
+ }
+}
+
+add_filter("views_edit-sp_event", "wp37_sp_event_does_not_have_outcome_filter");
+function wp37_sp_event_does_not_have_outcome_filter($views)
+
+{
+ if (is_admin() && $_GET["post_type"] == "sp_event") {
+ global $wp_query;
+ $filter_name = "Missing Results";
+
+ $result = new WP_Query([
+ "post_type" => "sp_event",
+ "meta_query" => [get_sp_event_has_outcome_meta_query_args(false)],
+ ]);
+
+ // $link = add_query_arg("sp_event_has_outcome", "false");
+ $link="#";
+ // $link = admin_url( "edit.php?post_type=sp_event&sp_event_has_outcome=false" );
+
+ $sp_event_has_outcome =
+ get_query_var("sp_event_has_outcome") === "false";
+ $class = $sp_event_has_outcome === true ? ' class="current"' : "";
+ $views["sp_event_does_not_have_outcome"] = sprintf(
+ '" . $filter_name . " (%d)",
+ $link,
+ $result->found_posts
+ );
+
+ return $views;
+ }
+}
+
+add_action("init", "wpse246143_register_sp_event_has_outcome");
+function wpse246143_register_sp_event_has_outcome()
+{
+ global $wp;
+ $wp->add_query_var("sp_event_has_outcome");
+}
+
+add_action("parse_query", "wpse246143_map_sp_event_has_outcome");
+function wpse246143_map_sp_event_has_outcome($wp_query)
+{
+ if (
+ isset($wp_query->query["post_type"]) and
+ $wp_query->query["post_type"] == "sp_event" and
+ $wp_query->get("sp_event_has_outcome")
+ ) {
+ $sp_event_has_outcome =
+ get_query_var("sp_event_has_outcome") === "true";
+
+ if ($sp_event_has_outcome) {
+ $meta_query = get_sp_event_has_outcome_meta_query_args(true);
+ } elseif (!$sp_event_has_outcome) {
+ $meta_query = get_sp_event_has_outcome_meta_query_args(false);
+ }
+
+ $wp_query->set("meta_query", $meta_query);
+ }
+}
+
diff --git a/includes/sp-event-status-filter.php b/includes/sp-event-status-filter.php
new file mode 100644
index 0000000..f4768bf
--- /dev/null
+++ b/includes/sp-event-status-filter.php
@@ -0,0 +1,58 @@
+id == "edit-sp_event") {
+ $selected = isset($_GET["sp_status"]) ? $_GET["sp_status"] : ""; ?>
+
+ set("meta_query", [[
+ "key" => "sp_status",
+ "value" => $_GET["sp_status"],
+ "compare" => "=",
+ ]]
+ );
+ }
+}
+
+add_action("pre_get_posts", "sp_status_filter_query");
\ No newline at end of file
diff --git a/includes/timeframe-filter.php b/includes/timeframe-filter.php
new file mode 100644
index 0000000..e9fedd2
--- /dev/null
+++ b/includes/timeframe-filter.php
@@ -0,0 +1,70 @@
+id == "edit-sp_event") {
+ $selected = isset($_GET["timeframe"]) ? $_GET["timeframe"] : ""; ?>
+
+ date("Y-m-d", strtotime("-3 days")),
+ ],
+ ];
+ } elseif ($_GET["timeframe"] == "last7days") {
+ $date_query = [
+ [
+ "after" => date("Y-m-d", strtotime("-1 week")),
+ ],
+ ];
+ } elseif ($_GET["timeframe"] == "plusminus3days") {
+ $date_query = [
+ [
+ "after" => date("Y-m-d", strtotime("-3 days")),
+ "before" => date("Y-m-d", strtotime("+3 days")),
+ ],
+ ];
+ }
+
+ if (!$_GET["timeframe"] == "") {
+ $query->set("date_query", $date_query);
+ }
+ }
+}
+
+add_action("pre_get_posts", "timeframe_filter_query");
\ No newline at end of file
diff --git a/tonys-sportspress-enhancements.php b/tonys-sportspress-enhancements.php
index 4e9c954..878d560 100644
--- a/tonys-sportspress-enhancements.php
+++ b/tonys-sportspress-enhancements.php
@@ -14,3 +14,7 @@
// Include other files here
+// require_once plugin_dir_path(__FILE__) . 'includes/sp-event-has-outcome.php';
+require_once plugin_dir_path(__FILE__) . 'includes/sp-event-has-outcome-filter.php';
+require_once plugin_dir_path(__FILE__) . 'includes/timeframe-filter.php';
+require_once plugin_dir_path(__FILE__) . 'includes/sp-event-status-filter.php';
\ No newline at end of file