@@ -6,8 +6,8 @@ discard block |
||
| 6 | 6 | use EventEspresso\core\libraries\rest_api\Rest_Exception; |
| 7 | 7 | use EventEspresso\core\libraries\rest_api\Model_Data_Translator; |
| 8 | 8 | |
| 9 | -if ( !defined( 'EVENT_ESPRESSO_VERSION' ) ) { |
|
| 10 | - exit( 'No direct script access allowed' ); |
|
| 9 | +if ( ! defined('EVENT_ESPRESSO_VERSION')) { |
|
| 10 | + exit('No direct script access allowed'); |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | /** |
@@ -46,22 +46,22 @@ discard block |
||
| 46 | 46 | * @param \WP_REST_Request $request |
| 47 | 47 | * @return \WP_REST_Response|\WP_Error |
| 48 | 48 | */ |
| 49 | - public static function handle_request_get_all( \WP_REST_Request $request) { |
|
| 49 | + public static function handle_request_get_all(\WP_REST_Request $request) { |
|
| 50 | 50 | $controller = new Read(); |
| 51 | - try{ |
|
| 51 | + try { |
|
| 52 | 52 | $matches = $controller->parse_route( |
| 53 | 53 | $request->get_route(), |
| 54 | - '~' . \EED_Core_Rest_Api::ee_api_namespace_for_regex . '(.*)~', |
|
| 55 | - array( 'version', 'model' ) |
|
| 54 | + '~'.\EED_Core_Rest_Api::ee_api_namespace_for_regex.'(.*)~', |
|
| 55 | + array('version', 'model') |
|
| 56 | 56 | ); |
| 57 | - $controller->set_requested_version( $matches[ 'version' ] ); |
|
| 58 | - $model_name_singular = \EEH_Inflector::singularize_and_upper( $matches[ 'model' ] ); |
|
| 59 | - if ( ! $controller->get_model_version_info()->is_model_name_in_this_version( $model_name_singular ) ) { |
|
| 57 | + $controller->set_requested_version($matches['version']); |
|
| 58 | + $model_name_singular = \EEH_Inflector::singularize_and_upper($matches['model']); |
|
| 59 | + if ( ! $controller->get_model_version_info()->is_model_name_in_this_version($model_name_singular)) { |
|
| 60 | 60 | return $controller->send_response( |
| 61 | 61 | new \WP_Error( |
| 62 | 62 | 'endpoint_parsing_error', |
| 63 | 63 | sprintf( |
| 64 | - __( 'There is no model for endpoint %s. Please contact event espresso support', 'event_espresso' ), |
|
| 64 | + __('There is no model for endpoint %s. Please contact event espresso support', 'event_espresso'), |
|
| 65 | 65 | $model_name_singular |
| 66 | 66 | ) |
| 67 | 67 | ) |
@@ -69,12 +69,12 @@ discard block |
||
| 69 | 69 | } |
| 70 | 70 | return $controller->send_response( |
| 71 | 71 | $controller->get_entities_from_model( |
| 72 | - $controller->get_model_version_info()->load_model( $model_name_singular ), |
|
| 72 | + $controller->get_model_version_info()->load_model($model_name_singular), |
|
| 73 | 73 | $request |
| 74 | 74 | ) |
| 75 | 75 | ); |
| 76 | - } catch( \Exception $e ) { |
|
| 77 | - return $controller->send_response( $e ); |
|
| 76 | + } catch (\Exception $e) { |
|
| 77 | + return $controller->send_response($e); |
|
| 78 | 78 | } |
| 79 | 79 | } |
| 80 | 80 | |
@@ -84,21 +84,21 @@ discard block |
||
| 84 | 84 | * @param \WP_REST_Request $request |
| 85 | 85 | * @return \WP_REST_Response|\WP_Error |
| 86 | 86 | */ |
| 87 | - public static function handle_request_get_one( \WP_REST_Request $request ) { |
|
| 87 | + public static function handle_request_get_one(\WP_REST_Request $request) { |
|
| 88 | 88 | $controller = new Read(); |
| 89 | - try{ |
|
| 89 | + try { |
|
| 90 | 90 | $matches = $controller->parse_route( |
| 91 | 91 | $request->get_route(), |
| 92 | - '~' . \EED_Core_Rest_Api::ee_api_namespace_for_regex . '(.*)/(.*)~', |
|
| 93 | - array( 'version', 'model', 'id' ) ); |
|
| 94 | - $controller->set_requested_version( $matches[ 'version' ] ); |
|
| 95 | - $model_name_singular = \EEH_Inflector::singularize_and_upper( $matches[ 'model' ] ); |
|
| 96 | - if ( ! $controller->get_model_version_info()->is_model_name_in_this_version( $model_name_singular ) ) { |
|
| 92 | + '~'.\EED_Core_Rest_Api::ee_api_namespace_for_regex.'(.*)/(.*)~', |
|
| 93 | + array('version', 'model', 'id') ); |
|
| 94 | + $controller->set_requested_version($matches['version']); |
|
| 95 | + $model_name_singular = \EEH_Inflector::singularize_and_upper($matches['model']); |
|
| 96 | + if ( ! $controller->get_model_version_info()->is_model_name_in_this_version($model_name_singular)) { |
|
| 97 | 97 | return $controller->send_response( |
| 98 | 98 | new \WP_Error( |
| 99 | 99 | 'endpoint_parsing_error', |
| 100 | 100 | sprintf( |
| 101 | - __( 'There is no model for endpoint %s. Please contact event espresso support', 'event_espresso' ), |
|
| 101 | + __('There is no model for endpoint %s. Please contact event espresso support', 'event_espresso'), |
|
| 102 | 102 | $model_name_singular |
| 103 | 103 | ) |
| 104 | 104 | ) |
@@ -106,12 +106,12 @@ discard block |
||
| 106 | 106 | } |
| 107 | 107 | return $controller->send_response( |
| 108 | 108 | $controller->get_entity_from_model( |
| 109 | - $controller->get_model_version_info()->load_model( $model_name_singular ), |
|
| 109 | + $controller->get_model_version_info()->load_model($model_name_singular), |
|
| 110 | 110 | $request |
| 111 | 111 | ) |
| 112 | 112 | ); |
| 113 | - } catch( \Exception $e ) { |
|
| 114 | - return $controller->send_response( $e ); |
|
| 113 | + } catch (\Exception $e) { |
|
| 114 | + return $controller->send_response($e); |
|
| 115 | 115 | } |
| 116 | 116 | } |
| 117 | 117 | |
@@ -123,40 +123,40 @@ discard block |
||
| 123 | 123 | * @param \WP_REST_Request $request |
| 124 | 124 | * @return \WP_REST_Response|\WP_Error |
| 125 | 125 | */ |
| 126 | - public static function handle_request_get_related( \WP_REST_Request $request ) { |
|
| 126 | + public static function handle_request_get_related(\WP_REST_Request $request) { |
|
| 127 | 127 | $controller = new Read(); |
| 128 | - try{ |
|
| 128 | + try { |
|
| 129 | 129 | $matches = $controller->parse_route( |
| 130 | 130 | $request->get_route(), |
| 131 | - '~' . \EED_Core_Rest_Api::ee_api_namespace_for_regex . '(.*)/(.*)/(.*)~', |
|
| 132 | - array( 'version', 'model', 'id', 'related_model' ) |
|
| 131 | + '~'.\EED_Core_Rest_Api::ee_api_namespace_for_regex.'(.*)/(.*)/(.*)~', |
|
| 132 | + array('version', 'model', 'id', 'related_model') |
|
| 133 | 133 | ); |
| 134 | - $controller->set_requested_version( $matches[ 'version' ] ); |
|
| 135 | - $main_model_name_singular = \EEH_Inflector::singularize_and_upper( $matches[ 'model' ] ); |
|
| 136 | - if ( ! $controller->get_model_version_info()->is_model_name_in_this_version( $main_model_name_singular ) ) { |
|
| 134 | + $controller->set_requested_version($matches['version']); |
|
| 135 | + $main_model_name_singular = \EEH_Inflector::singularize_and_upper($matches['model']); |
|
| 136 | + if ( ! $controller->get_model_version_info()->is_model_name_in_this_version($main_model_name_singular)) { |
|
| 137 | 137 | return $controller->send_response( |
| 138 | 138 | new \WP_Error( |
| 139 | 139 | 'endpoint_parsing_error', |
| 140 | 140 | sprintf( |
| 141 | - __( 'There is no model for endpoint %s. Please contact event espresso support', 'event_espresso' ), |
|
| 141 | + __('There is no model for endpoint %s. Please contact event espresso support', 'event_espresso'), |
|
| 142 | 142 | $main_model_name_singular |
| 143 | 143 | ) |
| 144 | 144 | ) |
| 145 | 145 | ); |
| 146 | 146 | } |
| 147 | - $main_model = $controller->get_model_version_info()->load_model( $main_model_name_singular ); |
|
| 147 | + $main_model = $controller->get_model_version_info()->load_model($main_model_name_singular); |
|
| 148 | 148 | //assume the related model name is plural and try to find the model's name |
| 149 | - $related_model_name_singular = \EEH_Inflector::singularize_and_upper( $matches[ 'related_model' ] ); |
|
| 150 | - if ( ! $controller->get_model_version_info()->is_model_name_in_this_version( $related_model_name_singular ) ) { |
|
| 149 | + $related_model_name_singular = \EEH_Inflector::singularize_and_upper($matches['related_model']); |
|
| 150 | + if ( ! $controller->get_model_version_info()->is_model_name_in_this_version($related_model_name_singular)) { |
|
| 151 | 151 | //so the word didn't singularize well. Maybe that's just because it's a singular word? |
| 152 | - $related_model_name_singular = \EEH_Inflector::humanize( $matches[ 'related_model' ] ); |
|
| 152 | + $related_model_name_singular = \EEH_Inflector::humanize($matches['related_model']); |
|
| 153 | 153 | } |
| 154 | - if ( ! $controller->get_model_version_info()->is_model_name_in_this_version( $related_model_name_singular ) ) { |
|
| 154 | + if ( ! $controller->get_model_version_info()->is_model_name_in_this_version($related_model_name_singular)) { |
|
| 155 | 155 | return $controller->send_response( |
| 156 | 156 | new \WP_Error( |
| 157 | 157 | 'endpoint_parsing_error', |
| 158 | 158 | sprintf( |
| 159 | - __( 'There is no model for endpoint %s. Please contact event espresso support', 'event_espresso' ), |
|
| 159 | + __('There is no model for endpoint %s. Please contact event espresso support', 'event_espresso'), |
|
| 160 | 160 | $related_model_name_singular |
| 161 | 161 | ) |
| 162 | 162 | ) |
@@ -165,13 +165,13 @@ discard block |
||
| 165 | 165 | |
| 166 | 166 | return $controller->send_response( |
| 167 | 167 | $controller->get_entities_from_relation( |
| 168 | - $request->get_param( 'id' ), |
|
| 169 | - $main_model->related_settings_for( $related_model_name_singular ) , |
|
| 168 | + $request->get_param('id'), |
|
| 169 | + $main_model->related_settings_for($related_model_name_singular), |
|
| 170 | 170 | $request |
| 171 | 171 | ) |
| 172 | 172 | ); |
| 173 | - } catch( \Exception $e ) { |
|
| 174 | - return $controller->send_response( $e ); |
|
| 173 | + } catch (\Exception $e) { |
|
| 174 | + return $controller->send_response($e); |
|
| 175 | 175 | } |
| 176 | 176 | } |
| 177 | 177 | |
@@ -184,28 +184,28 @@ discard block |
||
| 184 | 184 | * @param \WP_REST_Request $request |
| 185 | 185 | * @return array |
| 186 | 186 | */ |
| 187 | - public function get_entities_from_model( $model, $request) { |
|
| 188 | - $query_params = $this->create_model_query_params( $model, $request->get_params() ); |
|
| 189 | - if( ! Capabilities::current_user_has_partial_access_to( $model, $query_params[ 'caps' ] ) ) { |
|
| 190 | - $model_name_plural = \EEH_Inflector::pluralize_and_lower( $model->get_this_model_name() ); |
|
| 187 | + public function get_entities_from_model($model, $request) { |
|
| 188 | + $query_params = $this->create_model_query_params($model, $request->get_params()); |
|
| 189 | + if ( ! Capabilities::current_user_has_partial_access_to($model, $query_params['caps'])) { |
|
| 190 | + $model_name_plural = \EEH_Inflector::pluralize_and_lower($model->get_this_model_name()); |
|
| 191 | 191 | return new \WP_Error( |
| 192 | - sprintf( 'rest_%s_cannot_list', $model_name_plural ), |
|
| 192 | + sprintf('rest_%s_cannot_list', $model_name_plural), |
|
| 193 | 193 | sprintf( |
| 194 | - __( 'Sorry, you are not allowed to list %1$s. Missing permissions: %2$s', 'event_espresso' ), |
|
| 194 | + __('Sorry, you are not allowed to list %1$s. Missing permissions: %2$s', 'event_espresso'), |
|
| 195 | 195 | $model_name_plural, |
| 196 | - Capabilities::get_missing_permissions_string( $model, $query_params[ 'caps' ] ) |
|
| 196 | + Capabilities::get_missing_permissions_string($model, $query_params['caps']) |
|
| 197 | 197 | ), |
| 198 | - array( 'status' => 403 ) |
|
| 198 | + array('status' => 403) |
|
| 199 | 199 | ); |
| 200 | 200 | } |
| 201 | - if( ! $request->get_header( 'no_rest_headers' ) ) { |
|
| 202 | - $this->_set_headers_from_query_params( $model, $query_params ); |
|
| 201 | + if ( ! $request->get_header('no_rest_headers')) { |
|
| 202 | + $this->_set_headers_from_query_params($model, $query_params); |
|
| 203 | 203 | } |
| 204 | 204 | /** @type array $results */ |
| 205 | - $results = $model->get_all_wpdb_results( $query_params ); |
|
| 205 | + $results = $model->get_all_wpdb_results($query_params); |
|
| 206 | 206 | $nice_results = array( ); |
| 207 | - foreach ( $results as $result ) { |
|
| 208 | - $nice_results[ ] = $this->create_entity_from_wpdb_result( |
|
| 207 | + foreach ($results as $result) { |
|
| 208 | + $nice_results[] = $this->create_entity_from_wpdb_result( |
|
| 209 | 209 | $model, |
| 210 | 210 | $result, |
| 211 | 211 | $request |
@@ -226,64 +226,64 @@ discard block |
||
| 226 | 226 | * @param \WP_REST_Request $request |
| 227 | 227 | * @return array |
| 228 | 228 | */ |
| 229 | - public function get_entities_from_relation( $id, $relation, $request ) { |
|
| 230 | - $context = $this->validate_context( $request->get_param( 'caps' )); |
|
| 229 | + public function get_entities_from_relation($id, $relation, $request) { |
|
| 230 | + $context = $this->validate_context($request->get_param('caps')); |
|
| 231 | 231 | $model = $relation->get_this_model(); |
| 232 | 232 | $related_model = $relation->get_other_model(); |
| 233 | 233 | //check if they can access the 1st model object |
| 234 | - $query_params = array( array( $model->primary_key_name() => $id ),'limit' => 1 ); |
|
| 235 | - if( $model instanceof \EEM_Soft_Delete_Base ){ |
|
| 234 | + $query_params = array(array($model->primary_key_name() => $id), 'limit' => 1); |
|
| 235 | + if ($model instanceof \EEM_Soft_Delete_Base) { |
|
| 236 | 236 | $query_params = $model->alter_query_params_so_deleted_and_undeleted_items_included($query_params); |
| 237 | 237 | } |
| 238 | 238 | $restricted_query_params = $query_params; |
| 239 | - $restricted_query_params[ 'caps' ] = $context; |
|
| 240 | - $this->_set_debug_info( 'main model query params', $restricted_query_params ); |
|
| 241 | - $this->_set_debug_info( 'missing caps', Capabilities::get_missing_permissions_string( $related_model, $context ) ); |
|
| 239 | + $restricted_query_params['caps'] = $context; |
|
| 240 | + $this->_set_debug_info('main model query params', $restricted_query_params); |
|
| 241 | + $this->_set_debug_info('missing caps', Capabilities::get_missing_permissions_string($related_model, $context)); |
|
| 242 | 242 | |
| 243 | - if( |
|
| 243 | + if ( |
|
| 244 | 244 | ! ( |
| 245 | - Capabilities::current_user_has_partial_access_to( $related_model, $context ) |
|
| 246 | - && $model->exists( $restricted_query_params ) |
|
| 245 | + Capabilities::current_user_has_partial_access_to($related_model, $context) |
|
| 246 | + && $model->exists($restricted_query_params) |
|
| 247 | 247 | ) |
| 248 | - ){ |
|
| 249 | - if( $relation instanceof \EE_Belongs_To_Relation ) { |
|
| 250 | - $related_model_name_maybe_plural = strtolower( $related_model->get_this_model_name() ); |
|
| 251 | - }else{ |
|
| 252 | - $related_model_name_maybe_plural = \EEH_Inflector::pluralize_and_lower( $related_model->get_this_model_name() ); |
|
| 248 | + ) { |
|
| 249 | + if ($relation instanceof \EE_Belongs_To_Relation) { |
|
| 250 | + $related_model_name_maybe_plural = strtolower($related_model->get_this_model_name()); |
|
| 251 | + } else { |
|
| 252 | + $related_model_name_maybe_plural = \EEH_Inflector::pluralize_and_lower($related_model->get_this_model_name()); |
|
| 253 | 253 | } |
| 254 | 254 | return new \WP_Error( |
| 255 | - sprintf( 'rest_%s_cannot_list', $related_model_name_maybe_plural ), |
|
| 255 | + sprintf('rest_%s_cannot_list', $related_model_name_maybe_plural), |
|
| 256 | 256 | sprintf( |
| 257 | - __( 'Sorry, you are not allowed to list %1$s related to %2$s. Missing permissions: %3$s', 'event_espresso' ), |
|
| 257 | + __('Sorry, you are not allowed to list %1$s related to %2$s. Missing permissions: %3$s', 'event_espresso'), |
|
| 258 | 258 | $related_model_name_maybe_plural, |
| 259 | 259 | $relation->get_this_model()->get_this_model_name(), |
| 260 | 260 | implode( |
| 261 | 261 | ',', |
| 262 | 262 | array_keys( |
| 263 | - Capabilities::get_missing_permissions( $related_model, $context ) |
|
| 263 | + Capabilities::get_missing_permissions($related_model, $context) |
|
| 264 | 264 | ) |
| 265 | 265 | ) |
| 266 | 266 | ), |
| 267 | - array( 'status' => 403 ) |
|
| 267 | + array('status' => 403) |
|
| 268 | 268 | ); |
| 269 | 269 | } |
| 270 | - $query_params = $this->create_model_query_params( $relation->get_other_model(), $request->get_params() ); |
|
| 271 | - $query_params[0][ $relation->get_this_model()->get_this_model_name() . '.' . $relation->get_this_model()->primary_key_name() ] = $id; |
|
| 272 | - $query_params[ 'default_where_conditions' ] = 'none'; |
|
| 273 | - $query_params[ 'caps' ] = $context; |
|
| 274 | - if( ! $request->get_header( 'no_rest_headers' ) ) { |
|
| 275 | - $this->_set_headers_from_query_params( $relation->get_other_model(), $query_params ); |
|
| 270 | + $query_params = $this->create_model_query_params($relation->get_other_model(), $request->get_params()); |
|
| 271 | + $query_params[0][$relation->get_this_model()->get_this_model_name().'.'.$relation->get_this_model()->primary_key_name()] = $id; |
|
| 272 | + $query_params['default_where_conditions'] = 'none'; |
|
| 273 | + $query_params['caps'] = $context; |
|
| 274 | + if ( ! $request->get_header('no_rest_headers')) { |
|
| 275 | + $this->_set_headers_from_query_params($relation->get_other_model(), $query_params); |
|
| 276 | 276 | } |
| 277 | 277 | /** @type array $results */ |
| 278 | - $results = $relation->get_other_model()->get_all_wpdb_results( $query_params ); |
|
| 278 | + $results = $relation->get_other_model()->get_all_wpdb_results($query_params); |
|
| 279 | 279 | $nice_results = array(); |
| 280 | - foreach( $results as $result ) { |
|
| 280 | + foreach ($results as $result) { |
|
| 281 | 281 | $nice_result = $this->create_entity_from_wpdb_result( |
| 282 | 282 | $relation->get_other_model(), |
| 283 | 283 | $result, |
| 284 | 284 | $request |
| 285 | 285 | ); |
| 286 | - if( $relation instanceof \EE_HABTM_Relation ) { |
|
| 286 | + if ($relation instanceof \EE_HABTM_Relation) { |
|
| 287 | 287 | //put the unusual stuff (properties from the HABTM relation) first, and make sure |
| 288 | 288 | //if there are conflicts we prefer the properties from the main model |
| 289 | 289 | $join_model_result = $this->create_entity_from_wpdb_result( |
@@ -291,18 +291,18 @@ discard block |
||
| 291 | 291 | $result, |
| 292 | 292 | $request |
| 293 | 293 | ); |
| 294 | - $joined_result = array_merge( $nice_result, $join_model_result ); |
|
| 294 | + $joined_result = array_merge($nice_result, $join_model_result); |
|
| 295 | 295 | //but keep the meta stuff from the main model |
| 296 | - if( isset( $nice_result['meta'] ) ){ |
|
| 296 | + if (isset($nice_result['meta'])) { |
|
| 297 | 297 | $joined_result['meta'] = $nice_result['meta']; |
| 298 | 298 | } |
| 299 | 299 | $nice_result = $joined_result; |
| 300 | 300 | } |
| 301 | 301 | $nice_results[] = $nice_result; |
| 302 | 302 | } |
| 303 | - if( $relation instanceof \EE_Belongs_To_Relation ){ |
|
| 304 | - return array_shift( $nice_results ); |
|
| 305 | - }else{ |
|
| 303 | + if ($relation instanceof \EE_Belongs_To_Relation) { |
|
| 304 | + return array_shift($nice_results); |
|
| 305 | + } else { |
|
| 306 | 306 | return $nice_results; |
| 307 | 307 | } |
| 308 | 308 | } |
@@ -315,30 +315,30 @@ discard block |
||
| 315 | 315 | * @param array $query_params |
| 316 | 316 | * @return void |
| 317 | 317 | */ |
| 318 | - protected function _set_headers_from_query_params( $model, $query_params ) { |
|
| 319 | - $this->_set_debug_info( 'model query params', $query_params ); |
|
| 320 | - $this->_set_debug_info( 'missing caps', Capabilities::get_missing_permissions_string( $model, $query_params[ 'caps' ] ) ); |
|
| 318 | + protected function _set_headers_from_query_params($model, $query_params) { |
|
| 319 | + $this->_set_debug_info('model query params', $query_params); |
|
| 320 | + $this->_set_debug_info('missing caps', Capabilities::get_missing_permissions_string($model, $query_params['caps'])); |
|
| 321 | 321 | //normally the limit to a 2-part array, where the 2nd item is the limit |
| 322 | - if( ! isset( $query_params[ 'limit' ] ) ) { |
|
| 323 | - $query_params[ 'limit' ] = \EED_Core_Rest_Api::get_default_query_limit(); |
|
| 322 | + if ( ! isset($query_params['limit'])) { |
|
| 323 | + $query_params['limit'] = \EED_Core_Rest_Api::get_default_query_limit(); |
|
| 324 | 324 | } |
| 325 | - if( is_array( $query_params[ 'limit' ] ) ) { |
|
| 326 | - $limit_parts = $query_params[ 'limit' ]; |
|
| 325 | + if (is_array($query_params['limit'])) { |
|
| 326 | + $limit_parts = $query_params['limit']; |
|
| 327 | 327 | } else { |
| 328 | - $limit_parts = explode(',', $query_params[ 'limit' ] ); |
|
| 329 | - if( count( $limit_parts ) == 1 ){ |
|
| 330 | - $limit_parts = array(0, $limit_parts[ 0 ] ); |
|
| 328 | + $limit_parts = explode(',', $query_params['limit']); |
|
| 329 | + if (count($limit_parts) == 1) { |
|
| 330 | + $limit_parts = array(0, $limit_parts[0]); |
|
| 331 | 331 | } |
| 332 | 332 | } |
| 333 | 333 | //remove the group by and having parts of the query, as those will |
| 334 | 334 | //make the sql query return an array of values, instead of just a single value |
| 335 | - unset( $query_params[ 'group_by' ], $query_params[ 'having' ], $query_params[ 'limit' ] ); |
|
| 336 | - $count = $model->count( $query_params, null, true ); |
|
| 335 | + unset($query_params['group_by'], $query_params['having'], $query_params['limit']); |
|
| 336 | + $count = $model->count($query_params, null, true); |
|
| 337 | 337 | |
| 338 | - $pages = $count / $limit_parts[ 1 ]; |
|
| 339 | - $this->_set_response_header( 'Total', $count, false ); |
|
| 340 | - $this->_set_response_header( 'PageSize', $limit_parts[ 1 ], false ); |
|
| 341 | - $this->_set_response_header( 'TotalPages', ceil( $pages ), false ); |
|
| 338 | + $pages = $count / $limit_parts[1]; |
|
| 339 | + $this->_set_response_header('Total', $count, false); |
|
| 340 | + $this->_set_response_header('PageSize', $limit_parts[1], false); |
|
| 341 | + $this->_set_response_header('TotalPages', ceil($pages), false); |
|
| 342 | 342 | } |
| 343 | 343 | |
| 344 | 344 | |
@@ -351,47 +351,47 @@ discard block |
||
| 351 | 351 | * @param string $deprecated no longer used |
| 352 | 352 | * @return array ready for being converted into json for sending to client |
| 353 | 353 | */ |
| 354 | - public function create_entity_from_wpdb_result( $model, $db_row, $rest_request, $deprecated = null ) { |
|
| 355 | - if( ! $rest_request instanceof \WP_REST_Request ) { |
|
| 354 | + public function create_entity_from_wpdb_result($model, $db_row, $rest_request, $deprecated = null) { |
|
| 355 | + if ( ! $rest_request instanceof \WP_REST_Request) { |
|
| 356 | 356 | //ok so this was called in the old style, where the 3rd arg was |
| 357 | 357 | //$include, and the 4th arg was $context |
| 358 | 358 | //now setup the request just to avoid fatal errors, although we won't be able |
| 359 | 359 | //to truly make use of it because it's kinda devoid of info |
| 360 | 360 | $rest_request = new \WP_REST_Request(); |
| 361 | - $rest_request->set_param( 'include', $rest_request ); |
|
| 362 | - $rest_request->set_param( 'caps', $deprecated ); |
|
| 361 | + $rest_request->set_param('include', $rest_request); |
|
| 362 | + $rest_request->set_param('caps', $deprecated); |
|
| 363 | 363 | } |
| 364 | - if( $rest_request->get_param( 'caps' ) == null ) { |
|
| 365 | - $rest_request->set_param( 'caps', \EEM_Base::caps_read ); |
|
| 364 | + if ($rest_request->get_param('caps') == null) { |
|
| 365 | + $rest_request->set_param('caps', \EEM_Base::caps_read); |
|
| 366 | 366 | } |
| 367 | - $entity_array = $this->_create_bare_entity_from_wpdb_results( $model, $db_row ); |
|
| 368 | - $entity_array = $this->_add_extra_fields( $model, $db_row, $entity_array ); |
|
| 369 | - $entity_array[ '_links' ] = $this->_get_entity_links( $model, $db_row, $entity_array ); |
|
| 370 | - $entity_array[ '_calculated_fields'] = $this->_get_entity_calculations( $model, $db_row, $rest_request ); |
|
| 371 | - $entity_array = $this->_include_requested_models( $model, $rest_request, $entity_array ); |
|
| 367 | + $entity_array = $this->_create_bare_entity_from_wpdb_results($model, $db_row); |
|
| 368 | + $entity_array = $this->_add_extra_fields($model, $db_row, $entity_array); |
|
| 369 | + $entity_array['_links'] = $this->_get_entity_links($model, $db_row, $entity_array); |
|
| 370 | + $entity_array['_calculated_fields'] = $this->_get_entity_calculations($model, $db_row, $rest_request); |
|
| 371 | + $entity_array = $this->_include_requested_models($model, $rest_request, $entity_array); |
|
| 372 | 372 | $entity_array = apply_filters( |
| 373 | 373 | 'FHEE__Read__create_entity_from_wpdb_results__entity_before_inaccessible_field_removal', |
| 374 | 374 | $entity_array, |
| 375 | 375 | $model, |
| 376 | - $rest_request->get_param( 'caps' ), |
|
| 376 | + $rest_request->get_param('caps'), |
|
| 377 | 377 | $rest_request, |
| 378 | 378 | $this |
| 379 | 379 | ); |
| 380 | 380 | $result_without_inaccessible_fields = Capabilities::filter_out_inaccessible_entity_fields( |
| 381 | 381 | $entity_array, |
| 382 | 382 | $model, |
| 383 | - $rest_request->get_param( 'caps' ), |
|
| 383 | + $rest_request->get_param('caps'), |
|
| 384 | 384 | $this->get_model_version_info() |
| 385 | 385 | ); |
| 386 | 386 | $this->_set_debug_info( |
| 387 | 387 | 'inaccessible fields', |
| 388 | - array_keys( array_diff_key( $entity_array, $result_without_inaccessible_fields ) ) |
|
| 388 | + array_keys(array_diff_key($entity_array, $result_without_inaccessible_fields)) |
|
| 389 | 389 | ); |
| 390 | 390 | return apply_filters( |
| 391 | 391 | 'FHEE__Read__create_entity_from_wpdb_results__entity_return', |
| 392 | 392 | $result_without_inaccessible_fields, |
| 393 | 393 | $model, |
| 394 | - $rest_request->get_param( 'caps' ) |
|
| 394 | + $rest_request->get_param('caps') |
|
| 395 | 395 | ); |
| 396 | 396 | } |
| 397 | 397 | |
@@ -403,38 +403,38 @@ discard block |
||
| 403 | 403 | * @param array $db_row |
| 404 | 404 | * @return array entity mostly ready for converting to JSON and sending in the response |
| 405 | 405 | */ |
| 406 | - protected function _create_bare_entity_from_wpdb_results( \EEM_Base $model, $db_row ) { |
|
| 407 | - $result = $model->deduce_fields_n_values_from_cols_n_values( $db_row ); |
|
| 408 | - $result = array_intersect_key( $result, $this->get_model_version_info()->fields_on_model_in_this_version( $model ) ); |
|
| 409 | - foreach( $result as $field_name => $raw_field_value ) { |
|
| 406 | + protected function _create_bare_entity_from_wpdb_results(\EEM_Base $model, $db_row) { |
|
| 407 | + $result = $model->deduce_fields_n_values_from_cols_n_values($db_row); |
|
| 408 | + $result = array_intersect_key($result, $this->get_model_version_info()->fields_on_model_in_this_version($model)); |
|
| 409 | + foreach ($result as $field_name => $raw_field_value) { |
|
| 410 | 410 | $field_obj = $model->field_settings_for($field_name); |
| 411 | - $field_value = $field_obj->prepare_for_set_from_db( $raw_field_value ); |
|
| 412 | - if( $this->is_subclass_of_one( $field_obj, $this->get_model_version_info()->fields_ignored() ) ){ |
|
| 413 | - unset( $result[ $field_name ] ); |
|
| 414 | - }elseif( |
|
| 415 | - $this->is_subclass_of_one( $field_obj, $this->get_model_version_info()->fields_that_have_rendered_format() ) |
|
| 416 | - ){ |
|
| 417 | - $result[ $field_name ] = array( |
|
| 418 | - 'raw' => $field_obj->prepare_for_get( $field_value ), |
|
| 419 | - 'rendered' => $field_obj->prepare_for_pretty_echoing( $field_value ) |
|
| 411 | + $field_value = $field_obj->prepare_for_set_from_db($raw_field_value); |
|
| 412 | + if ($this->is_subclass_of_one($field_obj, $this->get_model_version_info()->fields_ignored())) { |
|
| 413 | + unset($result[$field_name]); |
|
| 414 | + }elseif ( |
|
| 415 | + $this->is_subclass_of_one($field_obj, $this->get_model_version_info()->fields_that_have_rendered_format()) |
|
| 416 | + ) { |
|
| 417 | + $result[$field_name] = array( |
|
| 418 | + 'raw' => $field_obj->prepare_for_get($field_value), |
|
| 419 | + 'rendered' => $field_obj->prepare_for_pretty_echoing($field_value) |
|
| 420 | 420 | ); |
| 421 | - }elseif( |
|
| 422 | - $this->is_subclass_of_one( $field_obj, $this->get_model_version_info()->fields_that_have_pretty_format() ) |
|
| 423 | - ){ |
|
| 424 | - $result[ $field_name ] = array( |
|
| 425 | - 'raw' => $field_obj->prepare_for_get( $field_value ), |
|
| 426 | - 'pretty' => $field_obj->prepare_for_pretty_echoing( $field_value ) |
|
| 421 | + }elseif ( |
|
| 422 | + $this->is_subclass_of_one($field_obj, $this->get_model_version_info()->fields_that_have_pretty_format()) |
|
| 423 | + ) { |
|
| 424 | + $result[$field_name] = array( |
|
| 425 | + 'raw' => $field_obj->prepare_for_get($field_value), |
|
| 426 | + 'pretty' => $field_obj->prepare_for_pretty_echoing($field_value) |
|
| 427 | 427 | ); |
| 428 | - } elseif ( $field_obj instanceof \EE_Datetime_Field ) { |
|
| 429 | - $result[ $field_name ] = Model_Data_Translator::prepare_field_value_for_json( |
|
| 428 | + } elseif ($field_obj instanceof \EE_Datetime_Field) { |
|
| 429 | + $result[$field_name] = Model_Data_Translator::prepare_field_value_for_json( |
|
| 430 | 430 | $field_obj, |
| 431 | 431 | $field_value, |
| 432 | 432 | $this->get_model_version_info()->requested_version() |
| 433 | 433 | ); |
| 434 | 434 | } else { |
| 435 | - $result[ $field_name ] = Model_Data_Translator::prepare_field_value_for_json( |
|
| 435 | + $result[$field_name] = Model_Data_Translator::prepare_field_value_for_json( |
|
| 436 | 436 | $field_obj, |
| 437 | - $field_obj->prepare_for_get( $field_value ), |
|
| 437 | + $field_obj->prepare_for_get($field_value), |
|
| 438 | 438 | $this->get_model_version_info()->requested_version() |
| 439 | 439 | ); |
| 440 | 440 | } |
@@ -449,9 +449,9 @@ discard block |
||
| 449 | 449 | * @param array $entity_array |
| 450 | 450 | * @return array modified entity |
| 451 | 451 | */ |
| 452 | - protected function _add_extra_fields( \EEM_Base $model, $db_row, $entity_array ) { |
|
| 453 | - if( $model instanceof \EEM_CPT_Base ) { |
|
| 454 | - $entity_array[ 'link' ] = get_permalink( $db_row[ $model->get_primary_key_field()->get_qualified_column() ] ); |
|
| 452 | + protected function _add_extra_fields(\EEM_Base $model, $db_row, $entity_array) { |
|
| 453 | + if ($model instanceof \EEM_CPT_Base) { |
|
| 454 | + $entity_array['link'] = get_permalink($db_row[$model->get_primary_key_field()->get_qualified_column()]); |
|
| 455 | 455 | } |
| 456 | 456 | return $entity_array; |
| 457 | 457 | } |
@@ -465,52 +465,52 @@ discard block |
||
| 465 | 465 | * @param array $entity_array |
| 466 | 466 | * @return array the _links item in the entity |
| 467 | 467 | */ |
| 468 | - protected function _get_entity_links( $model, $db_row, $entity_array ) { |
|
| 468 | + protected function _get_entity_links($model, $db_row, $entity_array) { |
|
| 469 | 469 | //add basic links |
| 470 | 470 | $links = array(); |
| 471 | - if( $model instanceof \EEM_Base |
|
| 472 | - && $model->has_primary_key_field() ) { |
|
| 473 | - $links[ 'self' ] = array( |
|
| 471 | + if ($model instanceof \EEM_Base |
|
| 472 | + && $model->has_primary_key_field()) { |
|
| 473 | + $links['self'] = array( |
|
| 474 | 474 | array( |
| 475 | 475 | 'href' => $this->get_versioned_link_to( |
| 476 | - \EEH_Inflector::pluralize_and_lower( $model->get_this_model_name() ) . '/' . $entity_array[ $model->primary_key_name() ] |
|
| 476 | + \EEH_Inflector::pluralize_and_lower($model->get_this_model_name()).'/'.$entity_array[$model->primary_key_name()] |
|
| 477 | 477 | ) |
| 478 | 478 | ) |
| 479 | 479 | ); |
| 480 | 480 | } |
| 481 | - $links[ 'collection' ] = array( |
|
| 481 | + $links['collection'] = array( |
|
| 482 | 482 | array( |
| 483 | 483 | 'href' => $this->get_versioned_link_to( |
| 484 | - \EEH_Inflector::pluralize_and_lower( $model->get_this_model_name() ) |
|
| 484 | + \EEH_Inflector::pluralize_and_lower($model->get_this_model_name()) |
|
| 485 | 485 | ) |
| 486 | 486 | ) |
| 487 | 487 | ); |
| 488 | 488 | |
| 489 | 489 | //add link to the wp core endpoint, if wp api is active |
| 490 | 490 | global $wp_rest_server; |
| 491 | - if( $model instanceof \EEM_CPT_Base |
|
| 491 | + if ($model instanceof \EEM_CPT_Base |
|
| 492 | 492 | && $wp_rest_server instanceof \WP_REST_Server |
| 493 | - && $wp_rest_server->get_route_options( '/wp/v2/posts' ) |
|
| 494 | - && $model->has_primary_key_field() ) |
|
| 493 | + && $wp_rest_server->get_route_options('/wp/v2/posts') |
|
| 494 | + && $model->has_primary_key_field()) |
|
| 495 | 495 | { |
| 496 | - $links[ \EED_Core_Rest_Api::ee_api_link_namespace . 'self_wp_post' ] = array( |
|
| 496 | + $links[\EED_Core_Rest_Api::ee_api_link_namespace.'self_wp_post'] = array( |
|
| 497 | 497 | array( |
| 498 | - 'href' => rest_url( '/wp/v2/posts/' . $db_row[ $model->get_primary_key_field()->get_qualified_column() ] ), |
|
| 498 | + 'href' => rest_url('/wp/v2/posts/'.$db_row[$model->get_primary_key_field()->get_qualified_column()]), |
|
| 499 | 499 | 'single' => true |
| 500 | 500 | ) |
| 501 | 501 | ); |
| 502 | 502 | } |
| 503 | 503 | |
| 504 | 504 | //add links to related models |
| 505 | - foreach( $this->get_model_version_info()->relation_settings( $model ) as $relation_name => $relation_obj ) { |
|
| 506 | - $related_model_part = Read::get_related_entity_name( $relation_name, $relation_obj ); |
|
| 507 | - if( $model instanceof \EEM_Base |
|
| 508 | - && $model->has_primary_key_field() ) |
|
| 505 | + foreach ($this->get_model_version_info()->relation_settings($model) as $relation_name => $relation_obj) { |
|
| 506 | + $related_model_part = Read::get_related_entity_name($relation_name, $relation_obj); |
|
| 507 | + if ($model instanceof \EEM_Base |
|
| 508 | + && $model->has_primary_key_field()) |
|
| 509 | 509 | { |
| 510 | - $links[ \EED_Core_Rest_Api::ee_api_link_namespace . $related_model_part ] = array( |
|
| 510 | + $links[\EED_Core_Rest_Api::ee_api_link_namespace.$related_model_part] = array( |
|
| 511 | 511 | array( |
| 512 | 512 | 'href' => $this->get_versioned_link_to( |
| 513 | - \EEH_Inflector::pluralize_and_lower( $model->get_this_model_name() ) . '/' . $entity_array[ $model->primary_key_name() ] . '/' . $related_model_part |
|
| 513 | + \EEH_Inflector::pluralize_and_lower($model->get_this_model_name()).'/'.$entity_array[$model->primary_key_name()].'/'.$related_model_part |
|
| 514 | 514 | ), |
| 515 | 515 | 'single' => $relation_obj instanceof \EE_Belongs_To_Relation ? true : false |
| 516 | 516 | ) |
@@ -527,51 +527,51 @@ discard block |
||
| 527 | 527 | * @param array $entity_array |
| 528 | 528 | * @return array the modified entity |
| 529 | 529 | */ |
| 530 | - protected function _include_requested_models( \EEM_Base $model, \WP_REST_Request $rest_request, $entity_array ) { |
|
| 531 | - $includes_for_this_model = $this->explode_and_get_items_prefixed_with( $rest_request->get_param( 'include' ), '' ); |
|
| 532 | - $includes_for_this_model = $this->_remove_model_names_from_array( $includes_for_this_model ); |
|
| 530 | + protected function _include_requested_models(\EEM_Base $model, \WP_REST_Request $rest_request, $entity_array) { |
|
| 531 | + $includes_for_this_model = $this->explode_and_get_items_prefixed_with($rest_request->get_param('include'), ''); |
|
| 532 | + $includes_for_this_model = $this->_remove_model_names_from_array($includes_for_this_model); |
|
| 533 | 533 | //if they passed in * or didn't specify any includes, return everything |
| 534 | - if( ! in_array( '*', $includes_for_this_model ) |
|
| 535 | - && ! empty( $includes_for_this_model ) ) { |
|
| 536 | - if( $model->has_primary_key_field() ) { |
|
| 534 | + if ( ! in_array('*', $includes_for_this_model) |
|
| 535 | + && ! empty($includes_for_this_model)) { |
|
| 536 | + if ($model->has_primary_key_field()) { |
|
| 537 | 537 | //always include the primary key. ya just gotta know that at least |
| 538 | 538 | $includes_for_this_model[] = $model->primary_key_name(); |
| 539 | 539 | } |
| 540 | - if( $this->explode_and_get_items_prefixed_with( $rest_request->get_param( 'calculate' ), '' ) ) { |
|
| 540 | + if ($this->explode_and_get_items_prefixed_with($rest_request->get_param('calculate'), '')) { |
|
| 541 | 541 | $includes_for_this_model[] = '_calculated_fields'; |
| 542 | 542 | } |
| 543 | - $entity_array = array_intersect_key( $entity_array, array_flip( $includes_for_this_model ) ); |
|
| 543 | + $entity_array = array_intersect_key($entity_array, array_flip($includes_for_this_model)); |
|
| 544 | 544 | } |
| 545 | - $relation_settings = $this->get_model_version_info()->relation_settings( $model ); |
|
| 546 | - foreach( $relation_settings as $relation_name => $relation_obj ) { |
|
| 545 | + $relation_settings = $this->get_model_version_info()->relation_settings($model); |
|
| 546 | + foreach ($relation_settings as $relation_name => $relation_obj) { |
|
| 547 | 547 | $related_fields_to_include = $this->explode_and_get_items_prefixed_with( |
| 548 | - $rest_request->get_param( 'include' ), |
|
| 548 | + $rest_request->get_param('include'), |
|
| 549 | 549 | $relation_name |
| 550 | 550 | ); |
| 551 | 551 | $related_fields_to_calculate = $this->explode_and_get_items_prefixed_with( |
| 552 | - $rest_request->get_param( 'calculate' ), |
|
| 552 | + $rest_request->get_param('calculate'), |
|
| 553 | 553 | $relation_name |
| 554 | 554 | ); |
| 555 | 555 | //did they specify they wanted to include a related model, or |
| 556 | 556 | //specific fields from a related model? |
| 557 | 557 | //or did they specify to calculate a field from a related model? |
| 558 | - if( $related_fields_to_include || $related_fields_to_calculate ) { |
|
| 558 | + if ($related_fields_to_include || $related_fields_to_calculate) { |
|
| 559 | 559 | //if so, we should include at least some part of the related model |
| 560 | 560 | $pretend_related_request = new \WP_REST_Request(); |
| 561 | 561 | $pretend_related_request->set_query_params( |
| 562 | 562 | array( |
| 563 | - 'caps' => $rest_request->get_param( 'caps' ), |
|
| 563 | + 'caps' => $rest_request->get_param('caps'), |
|
| 564 | 564 | 'include' => $related_fields_to_include, |
| 565 | 565 | 'calculate' => $related_fields_to_calculate, |
| 566 | 566 | ) |
| 567 | 567 | ); |
| 568 | - $pretend_related_request->add_header( 'no_rest_headers', true ); |
|
| 568 | + $pretend_related_request->add_header('no_rest_headers', true); |
|
| 569 | 569 | $related_results = $this->get_entities_from_relation( |
| 570 | - $entity_array[ $model->primary_key_name() ], |
|
| 570 | + $entity_array[$model->primary_key_name()], |
|
| 571 | 571 | $relation_obj, |
| 572 | 572 | $pretend_related_request |
| 573 | 573 | ); |
| 574 | - $entity_array[ Read::get_related_entity_name( $relation_name, $relation_obj ) ] = $related_results instanceof \WP_Error |
|
| 574 | + $entity_array[Read::get_related_entity_name($relation_name, $relation_obj)] = $related_results instanceof \WP_Error |
|
| 575 | 575 | ? null |
| 576 | 576 | : $related_results; |
| 577 | 577 | } |
@@ -585,8 +585,8 @@ discard block |
||
| 585 | 585 | * @param array $arr |
| 586 | 586 | * @return array |
| 587 | 587 | */ |
| 588 | - private function _remove_model_names_from_array( $arr ) { |
|
| 589 | - return array_diff( $arr, array_keys( \EE_Registry::instance()->non_abstract_db_models ) ); |
|
| 588 | + private function _remove_model_names_from_array($arr) { |
|
| 589 | + return array_diff($arr, array_keys(\EE_Registry::instance()->non_abstract_db_models)); |
|
| 590 | 590 | } |
| 591 | 591 | /** |
| 592 | 592 | * Gets the calculated fields for the response |
@@ -596,15 +596,15 @@ discard block |
||
| 596 | 596 | * @param \WP_REST_Request $rest_request |
| 597 | 597 | * @return array the _calculations item in the entity |
| 598 | 598 | */ |
| 599 | - protected function _get_entity_calculations( $model, $wpdb_row, $rest_request ) { |
|
| 599 | + protected function _get_entity_calculations($model, $wpdb_row, $rest_request) { |
|
| 600 | 600 | $calculated_fields = $this->explode_and_get_items_prefixed_with( |
| 601 | - $rest_request->get_param( 'calculate' ), |
|
| 601 | + $rest_request->get_param('calculate'), |
|
| 602 | 602 | '' |
| 603 | 603 | ); |
| 604 | 604 | //note: setting calculate=* doesn't do anything |
| 605 | 605 | $calculated_fields_to_return = new \stdClass(); |
| 606 | - foreach( $calculated_fields as $field_to_calculate ) { |
|
| 607 | - try{ |
|
| 606 | + foreach ($calculated_fields as $field_to_calculate) { |
|
| 607 | + try { |
|
| 608 | 608 | $calculated_fields_to_return->$field_to_calculate = Model_Data_Translator::prepare_field_value_for_json( |
| 609 | 609 | null, |
| 610 | 610 | $this->_fields_calculator->retrieve_calculated_field_value( |
@@ -616,10 +616,10 @@ discard block |
||
| 616 | 616 | ), |
| 617 | 617 | $this->get_model_version_info()->requested_version() |
| 618 | 618 | ); |
| 619 | - } catch( Rest_Exception $e ) { |
|
| 619 | + } catch (Rest_Exception $e) { |
|
| 620 | 620 | //if we don't have permission to read it, just leave it out. but let devs know about the problem |
| 621 | 621 | $this->_set_response_header( |
| 622 | - 'Notices-Field-Calculation-Errors[' . $e->get_string_code() . '][' . $model->get_this_model_name() . '][' . $field_to_calculate . ']', |
|
| 622 | + 'Notices-Field-Calculation-Errors['.$e->get_string_code().']['.$model->get_this_model_name().']['.$field_to_calculate.']', |
|
| 623 | 623 | $e->getMessage(), |
| 624 | 624 | true |
| 625 | 625 | ); |
@@ -633,7 +633,7 @@ discard block |
||
| 633 | 633 | * @param string $link_part_after_version_and_slash eg "events/10/datetimes" |
| 634 | 634 | * @return string url eg "http://mysite.com/wp-json/ee/v4.6/events/10/datetimes" |
| 635 | 635 | */ |
| 636 | - public function get_versioned_link_to( $link_part_after_version_and_slash ) { |
|
| 636 | + public function get_versioned_link_to($link_part_after_version_and_slash) { |
|
| 637 | 637 | return rest_url( |
| 638 | 638 | \EED_Core_Rest_Api::ee_api_namespace |
| 639 | 639 | . $this->get_model_version_info()->requested_version() |
@@ -649,11 +649,11 @@ discard block |
||
| 649 | 649 | * @param \EE_Model_Relation_Base $relation_obj |
| 650 | 650 | * @return string |
| 651 | 651 | */ |
| 652 | - public static function get_related_entity_name( $relation_name, $relation_obj ){ |
|
| 653 | - if( $relation_obj instanceof \EE_Belongs_To_Relation ) { |
|
| 654 | - return strtolower( $relation_name ); |
|
| 655 | - }else{ |
|
| 656 | - return \EEH_Inflector::pluralize_and_lower( $relation_name ); |
|
| 652 | + public static function get_related_entity_name($relation_name, $relation_obj) { |
|
| 653 | + if ($relation_obj instanceof \EE_Belongs_To_Relation) { |
|
| 654 | + return strtolower($relation_name); |
|
| 655 | + } else { |
|
| 656 | + return \EEH_Inflector::pluralize_and_lower($relation_name); |
|
| 657 | 657 | } |
| 658 | 658 | } |
| 659 | 659 | |
@@ -666,43 +666,43 @@ discard block |
||
| 666 | 666 | * @param \WP_REST_Request $request |
| 667 | 667 | * @return array |
| 668 | 668 | */ |
| 669 | - public function get_entity_from_model( $model, $request ) { |
|
| 670 | - $query_params = array( array( $model->primary_key_name() => $request->get_param( 'id' ) ),'limit' => 1); |
|
| 671 | - if( $model instanceof \EEM_Soft_Delete_Base ){ |
|
| 669 | + public function get_entity_from_model($model, $request) { |
|
| 670 | + $query_params = array(array($model->primary_key_name() => $request->get_param('id')), 'limit' => 1); |
|
| 671 | + if ($model instanceof \EEM_Soft_Delete_Base) { |
|
| 672 | 672 | $query_params = $model->alter_query_params_so_deleted_and_undeleted_items_included($query_params); |
| 673 | 673 | } |
| 674 | 674 | $restricted_query_params = $query_params; |
| 675 | - $restricted_query_params[ 'caps' ] = $this->validate_context( $request->get_param( 'caps' ) ); |
|
| 676 | - $this->_set_debug_info( 'model query params', $restricted_query_params ); |
|
| 677 | - $model_rows = $model->get_all_wpdb_results( $restricted_query_params ); |
|
| 678 | - if ( ! empty ( $model_rows ) ) { |
|
| 675 | + $restricted_query_params['caps'] = $this->validate_context($request->get_param('caps')); |
|
| 676 | + $this->_set_debug_info('model query params', $restricted_query_params); |
|
| 677 | + $model_rows = $model->get_all_wpdb_results($restricted_query_params); |
|
| 678 | + if ( ! empty ($model_rows)) { |
|
| 679 | 679 | return $this->create_entity_from_wpdb_result( |
| 680 | 680 | $model, |
| 681 | - array_shift( $model_rows ), |
|
| 681 | + array_shift($model_rows), |
|
| 682 | 682 | $request ); |
| 683 | 683 | } else { |
| 684 | 684 | //ok let's test to see if we WOULD have found it, had we not had restrictions from missing capabilities |
| 685 | - $lowercase_model_name = strtolower( $model->get_this_model_name() ); |
|
| 686 | - $model_rows_found_sans_restrictions = $model->get_all_wpdb_results( $query_params ); |
|
| 687 | - if( ! empty( $model_rows_found_sans_restrictions ) ) { |
|
| 685 | + $lowercase_model_name = strtolower($model->get_this_model_name()); |
|
| 686 | + $model_rows_found_sans_restrictions = $model->get_all_wpdb_results($query_params); |
|
| 687 | + if ( ! empty($model_rows_found_sans_restrictions)) { |
|
| 688 | 688 | //you got shafted- it existed but we didn't want to tell you! |
| 689 | 689 | return new \WP_Error( |
| 690 | 690 | 'rest_user_cannot_read', |
| 691 | 691 | sprintf( |
| 692 | - __( 'Sorry, you cannot read this %1$s. Missing permissions are: %2$s', 'event_espresso' ), |
|
| 693 | - strtolower( $model->get_this_model_name() ), |
|
| 692 | + __('Sorry, you cannot read this %1$s. Missing permissions are: %2$s', 'event_espresso'), |
|
| 693 | + strtolower($model->get_this_model_name()), |
|
| 694 | 694 | Capabilities::get_missing_permissions_string( |
| 695 | 695 | $model, |
| 696 | - $this->validate_context( $request->get_param( 'caps' ) ) ) |
|
| 696 | + $this->validate_context($request->get_param('caps')) ) |
|
| 697 | 697 | ), |
| 698 | - array( 'status' => 403 ) |
|
| 698 | + array('status' => 403) |
|
| 699 | 699 | ); |
| 700 | 700 | } else { |
| 701 | 701 | //it's not you. It just doesn't exist |
| 702 | 702 | return new \WP_Error( |
| 703 | - sprintf( 'rest_%s_invalid_id', $lowercase_model_name ), |
|
| 704 | - sprintf( __( 'Invalid %s ID.', 'event_espresso' ), $lowercase_model_name ), |
|
| 705 | - array( 'status' => 404 ) |
|
| 703 | + sprintf('rest_%s_invalid_id', $lowercase_model_name), |
|
| 704 | + sprintf(__('Invalid %s ID.', 'event_espresso'), $lowercase_model_name), |
|
| 705 | + array('status' => 404) |
|
| 706 | 706 | ); |
| 707 | 707 | } |
| 708 | 708 | } |
@@ -715,14 +715,14 @@ discard block |
||
| 715 | 715 | * @param string $context |
| 716 | 716 | * @return string array key of EEM_Base::cap_contexts_to_cap_action_map() |
| 717 | 717 | */ |
| 718 | - public function validate_context( $context ) { |
|
| 719 | - if( ! $context ) { |
|
| 718 | + public function validate_context($context) { |
|
| 719 | + if ( ! $context) { |
|
| 720 | 720 | $context = \EEM_Base::caps_read; |
| 721 | 721 | } |
| 722 | 722 | $valid_contexts = \EEM_Base::valid_cap_contexts(); |
| 723 | - if( in_array( $context, $valid_contexts ) ){ |
|
| 723 | + if (in_array($context, $valid_contexts)) { |
|
| 724 | 724 | return $context; |
| 725 | - }else{ |
|
| 725 | + } else { |
|
| 726 | 726 | return \EEM_Base::caps_read; |
| 727 | 727 | } |
| 728 | 728 | } |
@@ -741,77 +741,77 @@ discard block |
||
| 741 | 741 | * that absolutely no results should be returned |
| 742 | 742 | * @throws \EE_Error |
| 743 | 743 | */ |
| 744 | - public function create_model_query_params( $model, $query_parameters ) { |
|
| 744 | + public function create_model_query_params($model, $query_parameters) { |
|
| 745 | 745 | $model_query_params = array( ); |
| 746 | - if ( isset( $query_parameters[ 'where' ] ) ) { |
|
| 747 | - $model_query_params[ 0 ] = Model_Data_Translator::prepare_conditions_query_params_for_models( |
|
| 748 | - $query_parameters[ 'where' ], |
|
| 746 | + if (isset($query_parameters['where'])) { |
|
| 747 | + $model_query_params[0] = Model_Data_Translator::prepare_conditions_query_params_for_models( |
|
| 748 | + $query_parameters['where'], |
|
| 749 | 749 | $model, |
| 750 | 750 | $this->get_model_version_info()->requested_version() |
| 751 | 751 | ); |
| 752 | 752 | } |
| 753 | - if ( isset( $query_parameters[ 'order_by' ] ) ) { |
|
| 754 | - $order_by = $query_parameters[ 'order_by' ]; |
|
| 755 | - } elseif ( isset( $query_parameters[ 'orderby' ] ) ) { |
|
| 756 | - $order_by = $query_parameters[ 'orderby' ]; |
|
| 757 | - }else{ |
|
| 753 | + if (isset($query_parameters['order_by'])) { |
|
| 754 | + $order_by = $query_parameters['order_by']; |
|
| 755 | + } elseif (isset($query_parameters['orderby'])) { |
|
| 756 | + $order_by = $query_parameters['orderby']; |
|
| 757 | + } else { |
|
| 758 | 758 | $order_by = null; |
| 759 | 759 | } |
| 760 | - if( $order_by !== null ){ |
|
| 761 | - $model_query_params[ 'order_by' ] = $order_by; |
|
| 760 | + if ($order_by !== null) { |
|
| 761 | + $model_query_params['order_by'] = $order_by; |
|
| 762 | 762 | } |
| 763 | - if ( isset( $query_parameters[ 'group_by' ] ) ) { |
|
| 764 | - $group_by = $query_parameters[ 'group_by' ]; |
|
| 765 | - } elseif ( isset( $query_parameters[ 'groupby' ] ) ) { |
|
| 766 | - $group_by = $query_parameters[ 'groupby' ]; |
|
| 767 | - }else{ |
|
| 768 | - $group_by = array_keys( $model->get_combined_primary_key_fields() ); |
|
| 763 | + if (isset($query_parameters['group_by'])) { |
|
| 764 | + $group_by = $query_parameters['group_by']; |
|
| 765 | + } elseif (isset($query_parameters['groupby'])) { |
|
| 766 | + $group_by = $query_parameters['groupby']; |
|
| 767 | + } else { |
|
| 768 | + $group_by = array_keys($model->get_combined_primary_key_fields()); |
|
| 769 | 769 | } |
| 770 | - if( $group_by !== null ){ |
|
| 771 | - $model_query_params[ 'group_by' ] = $group_by; |
|
| 770 | + if ($group_by !== null) { |
|
| 771 | + $model_query_params['group_by'] = $group_by; |
|
| 772 | 772 | } |
| 773 | - if ( isset( $query_parameters[ 'having' ] ) ) { |
|
| 774 | - $model_query_params[ 'having' ] = Model_Data_Translator::prepare_conditions_query_params_for_models( |
|
| 775 | - $query_parameters[ 'having' ], |
|
| 773 | + if (isset($query_parameters['having'])) { |
|
| 774 | + $model_query_params['having'] = Model_Data_Translator::prepare_conditions_query_params_for_models( |
|
| 775 | + $query_parameters['having'], |
|
| 776 | 776 | $model, |
| 777 | 777 | $this->get_model_version_info()->requested_version() |
| 778 | 778 | ); |
| 779 | 779 | } |
| 780 | - if ( isset( $query_parameters[ 'order' ] ) ) { |
|
| 781 | - $model_query_params[ 'order' ] = $query_parameters[ 'order' ]; |
|
| 780 | + if (isset($query_parameters['order'])) { |
|
| 781 | + $model_query_params['order'] = $query_parameters['order']; |
|
| 782 | 782 | } |
| 783 | - if ( isset( $query_parameters[ 'mine' ] ) ){ |
|
| 784 | - $model_query_params = $model->alter_query_params_to_only_include_mine( $model_query_params ); |
|
| 783 | + if (isset($query_parameters['mine'])) { |
|
| 784 | + $model_query_params = $model->alter_query_params_to_only_include_mine($model_query_params); |
|
| 785 | 785 | } |
| 786 | - if( isset( $query_parameters[ 'limit' ] ) ) { |
|
| 786 | + if (isset($query_parameters['limit'])) { |
|
| 787 | 787 | //limit should be either a string like '23' or '23,43', or an array with two items in it |
| 788 | - if( ! is_array( $query_parameters[ 'limit' ] ) ) { |
|
| 789 | - $limit_array = explode(',', (string)$query_parameters['limit']); |
|
| 790 | - }else { |
|
| 791 | - $limit_array = $query_parameters[ 'limit' ]; |
|
| 788 | + if ( ! is_array($query_parameters['limit'])) { |
|
| 789 | + $limit_array = explode(',', (string) $query_parameters['limit']); |
|
| 790 | + } else { |
|
| 791 | + $limit_array = $query_parameters['limit']; |
|
| 792 | 792 | } |
| 793 | 793 | $sanitized_limit = array(); |
| 794 | - foreach( $limit_array as $key => $limit_part ) { |
|
| 795 | - if( $this->_debug_mode && ( ! is_numeric( $limit_part ) || count( $sanitized_limit ) > 2 ) ) { |
|
| 794 | + foreach ($limit_array as $key => $limit_part) { |
|
| 795 | + if ($this->_debug_mode && ( ! is_numeric($limit_part) || count($sanitized_limit) > 2)) { |
|
| 796 | 796 | throw new \EE_Error( |
| 797 | 797 | sprintf( |
| 798 | - __( 'An invalid limit filter was provided. It was: %s. If the EE4 JSON REST API weren\'t in debug mode, this message would not appear.', 'event_espresso' ), |
|
| 799 | - json_encode( $query_parameters[ 'limit' ] ) |
|
| 798 | + __('An invalid limit filter was provided. It was: %s. If the EE4 JSON REST API weren\'t in debug mode, this message would not appear.', 'event_espresso'), |
|
| 799 | + json_encode($query_parameters['limit']) |
|
| 800 | 800 | ) |
| 801 | 801 | ); |
| 802 | 802 | } |
| 803 | - $sanitized_limit[] = (int)$limit_part; |
|
| 803 | + $sanitized_limit[] = (int) $limit_part; |
|
| 804 | 804 | } |
| 805 | - $model_query_params[ 'limit' ] = implode( ',', $sanitized_limit ); |
|
| 806 | - }else{ |
|
| 807 | - $model_query_params[ 'limit' ] = \EED_Core_Rest_Api::get_default_query_limit(); |
|
| 805 | + $model_query_params['limit'] = implode(',', $sanitized_limit); |
|
| 806 | + } else { |
|
| 807 | + $model_query_params['limit'] = \EED_Core_Rest_Api::get_default_query_limit(); |
|
| 808 | 808 | } |
| 809 | - if( isset( $query_parameters[ 'caps' ] ) ) { |
|
| 810 | - $model_query_params[ 'caps' ] = $this->validate_context( $query_parameters[ 'caps' ] ); |
|
| 811 | - }else{ |
|
| 812 | - $model_query_params[ 'caps' ] = \EEM_Base::caps_read; |
|
| 809 | + if (isset($query_parameters['caps'])) { |
|
| 810 | + $model_query_params['caps'] = $this->validate_context($query_parameters['caps']); |
|
| 811 | + } else { |
|
| 812 | + $model_query_params['caps'] = \EEM_Base::caps_read; |
|
| 813 | 813 | } |
| 814 | - return apply_filters( 'FHEE__Read__create_model_query_params', $model_query_params, $query_parameters, $model ); |
|
| 814 | + return apply_filters('FHEE__Read__create_model_query_params', $model_query_params, $query_parameters, $model); |
|
| 815 | 815 | } |
| 816 | 816 | |
| 817 | 817 | |
@@ -823,13 +823,13 @@ discard block |
||
| 823 | 823 | * @param array $query_params sub-array from @see EEM_Base::get_all() |
| 824 | 824 | * @return array |
| 825 | 825 | */ |
| 826 | - public function prepare_rest_query_params_key_for_models( $model, $query_params ) { |
|
| 826 | + public function prepare_rest_query_params_key_for_models($model, $query_params) { |
|
| 827 | 827 | $model_ready_query_params = array(); |
| 828 | - foreach( $query_params as $key => $value ) { |
|
| 829 | - if( is_array( $value ) ) { |
|
| 830 | - $model_ready_query_params[ $key ] = $this->prepare_rest_query_params_key_for_models( $model, $value ); |
|
| 831 | - }else{ |
|
| 832 | - $model_ready_query_params[ $key ] = $value; |
|
| 828 | + foreach ($query_params as $key => $value) { |
|
| 829 | + if (is_array($value)) { |
|
| 830 | + $model_ready_query_params[$key] = $this->prepare_rest_query_params_key_for_models($model, $value); |
|
| 831 | + } else { |
|
| 832 | + $model_ready_query_params[$key] = $value; |
|
| 833 | 833 | } |
| 834 | 834 | } |
| 835 | 835 | return $model_ready_query_params; |
@@ -843,13 +843,13 @@ discard block |
||
| 843 | 843 | * @param $query_params |
| 844 | 844 | * @return array |
| 845 | 845 | */ |
| 846 | - public function prepare_rest_query_params_values_for_models( $model, $query_params ) { |
|
| 846 | + public function prepare_rest_query_params_values_for_models($model, $query_params) { |
|
| 847 | 847 | $model_ready_query_params = array(); |
| 848 | - foreach( $query_params as $key => $value ) { |
|
| 849 | - if( is_array( $value ) ) { |
|
| 850 | - $model_ready_query_params[ $key ] = $this->prepare_rest_query_params_values_for_models( $model, $value ); |
|
| 848 | + foreach ($query_params as $key => $value) { |
|
| 849 | + if (is_array($value)) { |
|
| 850 | + $model_ready_query_params[$key] = $this->prepare_rest_query_params_values_for_models($model, $value); |
|
| 851 | 851 | } else { |
| 852 | - $model_ready_query_params[ $key ] = $value; |
|
| 852 | + $model_ready_query_params[$key] = $value; |
|
| 853 | 853 | } |
| 854 | 854 | } |
| 855 | 855 | return $model_ready_query_params; |
@@ -864,33 +864,33 @@ discard block |
||
| 864 | 864 | * we only return strings starting with that and a period; if no prefix was specified |
| 865 | 865 | * we return all items containing NO periods |
| 866 | 866 | */ |
| 867 | - public function explode_and_get_items_prefixed_with( $string_to_explode, $prefix ) { |
|
| 868 | - if( is_string( $string_to_explode ) ) { |
|
| 869 | - $exploded_contents = explode( ',', $string_to_explode ); |
|
| 870 | - } else if( is_array( $string_to_explode ) ) { |
|
| 867 | + public function explode_and_get_items_prefixed_with($string_to_explode, $prefix) { |
|
| 868 | + if (is_string($string_to_explode)) { |
|
| 869 | + $exploded_contents = explode(',', $string_to_explode); |
|
| 870 | + } else if (is_array($string_to_explode)) { |
|
| 871 | 871 | $exploded_contents = $string_to_explode; |
| 872 | 872 | } else { |
| 873 | 873 | $exploded_contents = array(); |
| 874 | 874 | } |
| 875 | 875 | //if the string was empty, we want an empty array |
| 876 | - $exploded_contents = array_filter( $exploded_contents ); |
|
| 876 | + $exploded_contents = array_filter($exploded_contents); |
|
| 877 | 877 | $contents_with_prefix = array(); |
| 878 | - foreach( $exploded_contents as $item ) { |
|
| 879 | - $item = trim( $item ); |
|
| 878 | + foreach ($exploded_contents as $item) { |
|
| 879 | + $item = trim($item); |
|
| 880 | 880 | //if no prefix was provided, so we look for items with no "." in them |
| 881 | - if( ! $prefix ) { |
|
| 881 | + if ( ! $prefix) { |
|
| 882 | 882 | //does this item have a period? |
| 883 | - if( strpos( $item, '.' ) === false ) { |
|
| 883 | + if (strpos($item, '.') === false) { |
|
| 884 | 884 | //if not, then its what we're looking for |
| 885 | 885 | $contents_with_prefix[] = $item; |
| 886 | 886 | } |
| 887 | - } else if( strpos( $item, $prefix . '.' ) === 0 ) { |
|
| 887 | + } else if (strpos($item, $prefix.'.') === 0) { |
|
| 888 | 888 | //this item has the prefix and a period, grab it |
| 889 | 889 | $contents_with_prefix[] = substr( |
| 890 | 890 | $item, |
| 891 | - strpos( $item, $prefix . '.' ) + strlen( $prefix . '.' ) |
|
| 891 | + strpos($item, $prefix.'.') + strlen($prefix.'.') |
|
| 892 | 892 | ); |
| 893 | - } else if( $item === $prefix ) { |
|
| 893 | + } else if ($item === $prefix) { |
|
| 894 | 894 | //this item is JUST the prefix |
| 895 | 895 | //so let's grab everything after, which is a blank string |
| 896 | 896 | $contents_with_prefix[] = ''; |
@@ -913,33 +913,33 @@ discard block |
||
| 913 | 913 | * the fields for that model, with the model's name removed from each. |
| 914 | 914 | * If $include_string was blank or '*' returns an empty array |
| 915 | 915 | */ |
| 916 | - public function extract_includes_for_this_model( $include_string, $model_name = null ) { |
|
| 917 | - if( is_array( $include_string ) ) { |
|
| 918 | - $include_string = implode( ',', $include_string ); |
|
| 916 | + public function extract_includes_for_this_model($include_string, $model_name = null) { |
|
| 917 | + if (is_array($include_string)) { |
|
| 918 | + $include_string = implode(',', $include_string); |
|
| 919 | 919 | } |
| 920 | - if( $include_string === '*' || $include_string === '' ) { |
|
| 920 | + if ($include_string === '*' || $include_string === '') { |
|
| 921 | 921 | return array(); |
| 922 | 922 | } |
| 923 | - $includes = explode( ',', $include_string ); |
|
| 923 | + $includes = explode(',', $include_string); |
|
| 924 | 924 | $extracted_fields_to_include = array(); |
| 925 | - if( $model_name ){ |
|
| 926 | - foreach( $includes as $field_to_include ) { |
|
| 927 | - $field_to_include = trim( $field_to_include ); |
|
| 928 | - if( strpos( $field_to_include, $model_name . '.' ) === 0 ) { |
|
| 925 | + if ($model_name) { |
|
| 926 | + foreach ($includes as $field_to_include) { |
|
| 927 | + $field_to_include = trim($field_to_include); |
|
| 928 | + if (strpos($field_to_include, $model_name.'.') === 0) { |
|
| 929 | 929 | //found the model name at the exact start |
| 930 | - $field_sans_model_name = str_replace( $model_name . '.', '', $field_to_include ); |
|
| 930 | + $field_sans_model_name = str_replace($model_name.'.', '', $field_to_include); |
|
| 931 | 931 | $extracted_fields_to_include[] = $field_sans_model_name; |
| 932 | - }elseif( $field_to_include == $model_name ){ |
|
| 932 | + }elseif ($field_to_include == $model_name) { |
|
| 933 | 933 | $extracted_fields_to_include[] = '*'; |
| 934 | 934 | } |
| 935 | 935 | } |
| 936 | - }else{ |
|
| 936 | + } else { |
|
| 937 | 937 | //look for ones with no period |
| 938 | - foreach( $includes as $field_to_include ) { |
|
| 939 | - $field_to_include = trim( $field_to_include ); |
|
| 938 | + foreach ($includes as $field_to_include) { |
|
| 939 | + $field_to_include = trim($field_to_include); |
|
| 940 | 940 | if ( |
| 941 | - strpos( $field_to_include, '.' ) === false |
|
| 942 | - && ! $this->get_model_version_info()->is_model_name_in_this_version( $field_to_include ) |
|
| 941 | + strpos($field_to_include, '.') === false |
|
| 942 | + && ! $this->get_model_version_info()->is_model_name_in_this_version($field_to_include) |
|
| 943 | 943 | ) { |
| 944 | 944 | $extracted_fields_to_include[] = $field_to_include; |
| 945 | 945 | } |