From b93ecebee24a12292dce36914324cdc304829db7 Mon Sep 17 00:00:00 2001 From: Erick Hitter Date: Fri, 16 Feb 2018 10:35:44 -0800 Subject: [PATCH 1/3] Add filters to all `get_items()` occurences, to match the term datasource --- php/datasource/class-fieldmanager-datasource-post.php | 2 +- php/datasource/class-fieldmanager-datasource-user.php | 2 +- php/datasource/class-fieldmanager-datasource.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/php/datasource/class-fieldmanager-datasource-post.php b/php/datasource/class-fieldmanager-datasource-post.php index cfb79e8efd..8bf46d6ac3 100644 --- a/php/datasource/class-fieldmanager-datasource-post.php +++ b/php/datasource/class-fieldmanager-datasource-post.php @@ -178,7 +178,7 @@ public function get_items( $fragment = null ) { } $ret[ $p->ID ] = $p->post_title . $date_pad; } - return $ret; + return apply_filters( 'fm_datasource_post_get_items', $ret, $posts, $this, $fragment ); } /** diff --git a/php/datasource/class-fieldmanager-datasource-user.php b/php/datasource/class-fieldmanager-datasource-user.php index d917ad0cf0..89d18b6866 100644 --- a/php/datasource/class-fieldmanager-datasource-user.php +++ b/php/datasource/class-fieldmanager-datasource-user.php @@ -171,7 +171,7 @@ public function get_items( $fragment = null ) { $ret[ $u->{$this->store_property} ] = $u->{$this->display_property}; } - return $ret; + return apply_filters( 'fm_datasource_user_get_items', $ret, $users, $this, $fragment ); } /** diff --git a/php/datasource/class-fieldmanager-datasource.php b/php/datasource/class-fieldmanager-datasource.php index 7de36a5830..e6bd39cba8 100644 --- a/php/datasource/class-fieldmanager-datasource.php +++ b/php/datasource/class-fieldmanager-datasource.php @@ -148,7 +148,7 @@ public function get_items( $fragment = null ) { $ret[ $k ] = $v; } } - return $ret; + return apply_filters( 'fm_datasource_get_items', $ret, $this->options, $this, $fragment ); } /** From 0563ccf94b80688d5c3c1d4843c0f580aa8d41f4 Mon Sep 17 00:00:00 2001 From: Erick Hitter Date: Fri, 16 Feb 2018 10:37:53 -0800 Subject: [PATCH 2/3] Allow filtering items for Ajax response in case underlying data is also filtered --- php/datasource/class-fieldmanager-datasource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php/datasource/class-fieldmanager-datasource.php b/php/datasource/class-fieldmanager-datasource.php index e6bd39cba8..633a762a71 100644 --- a/php/datasource/class-fieldmanager-datasource.php +++ b/php/datasource/class-fieldmanager-datasource.php @@ -180,7 +180,7 @@ public function get_items_for_ajax( $fragment = null ) { ); } - return $return; + return apply_filters( 'fm_datasource_get_items_for_ajax', $return, $items, $this, $fragment ); } /** From 95983e01161d82d6a7a83a0ffd90eb7580e4732a Mon Sep 17 00:00:00 2001 From: Erick Hitter Date: Mon, 19 Feb 2018 15:21:33 -0800 Subject: [PATCH 3/3] Document filters --- php/datasource/class-fieldmanager-datasource-post.php | 9 +++++++++ php/datasource/class-fieldmanager-datasource-term.php | 9 +++++++++ php/datasource/class-fieldmanager-datasource-user.php | 8 ++++++++ php/datasource/class-fieldmanager-datasource.php | 9 +++++++++ 4 files changed, 35 insertions(+) diff --git a/php/datasource/class-fieldmanager-datasource-post.php b/php/datasource/class-fieldmanager-datasource-post.php index 8bf46d6ac3..a4a1a625f7 100644 --- a/php/datasource/class-fieldmanager-datasource-post.php +++ b/php/datasource/class-fieldmanager-datasource-post.php @@ -178,6 +178,15 @@ public function get_items( $fragment = null ) { } $ret[ $p->ID ] = $p->post_title . $date_pad; } + + /** + * Filter items to be returned + * + * @param array $ret Available options, filtered by fragment. + * @param array $posts Found posts. + * @param object $this Datasource object. + * @param string $fragment Search term. + */ return apply_filters( 'fm_datasource_post_get_items', $ret, $posts, $this, $fragment ); } diff --git a/php/datasource/class-fieldmanager-datasource-term.php b/php/datasource/class-fieldmanager-datasource-term.php index 0ef5a4d379..ff2e38a246 100644 --- a/php/datasource/class-fieldmanager-datasource-term.php +++ b/php/datasource/class-fieldmanager-datasource-term.php @@ -350,6 +350,15 @@ public function get_items( $fragment = null ) { $key = $this->store_term_taxonomy_id ? $term->term_taxonomy_id : $term->term_id; $stack[ $key ] = $term->name; } + + /** + * Filter items to be returned + * + * @param array $stack Term list, filtered by fragment. + * @param array $terms Found terms. + * @param object $this Datasource object. + * @param string $fragment Search term. + */ return apply_filters( 'fm_datasource_term_get_items', $stack, $terms, $this, $fragment ); } diff --git a/php/datasource/class-fieldmanager-datasource-user.php b/php/datasource/class-fieldmanager-datasource-user.php index 89d18b6866..5f4f6bc733 100644 --- a/php/datasource/class-fieldmanager-datasource-user.php +++ b/php/datasource/class-fieldmanager-datasource-user.php @@ -171,6 +171,14 @@ public function get_items( $fragment = null ) { $ret[ $u->{$this->store_property} ] = $u->{$this->display_property}; } + /** + * Filter items to be returned + * + * @param array $ret User list, filtered by fragment. + * @param array $users Found users. + * @param object $this Datasource object. + * @param string $fragment Search term. + */ return apply_filters( 'fm_datasource_user_get_items', $ret, $users, $this, $fragment ); } diff --git a/php/datasource/class-fieldmanager-datasource.php b/php/datasource/class-fieldmanager-datasource.php index 633a762a71..c4d7b31710 100644 --- a/php/datasource/class-fieldmanager-datasource.php +++ b/php/datasource/class-fieldmanager-datasource.php @@ -148,6 +148,15 @@ public function get_items( $fragment = null ) { $ret[ $k ] = $v; } } + + /** + * Filter items to be returned + * + * @param array $ret Available options, filtered by fragment. + * @param array $this->options All available options. + * @param object $this Datasource object. + * @param string $fragment Search term. + */ return apply_filters( 'fm_datasource_get_items', $ret, $this->options, $this, $fragment ); }