Version Description
April 15th, 2022 =
Added: New
$params
support inPods::total_found( $params )
to supportPods::find( $params )
shorthand lookups for getting total number of records found more easily. (@sc0ttkclark)Added: New
pods_api_save_field_table_definition_mode
filter allows overriding the definition mode when saving a field (bypass/add/drop/change) for schema management. (@sc0ttkclark)Added: New
pods_podsrel_enabled()
arguments to allow filtering based on the field and context. (@sc0ttkclark)Added: New
pods_data_build_pre_traverse_args
filter allows for overriding the find/replace/traverse/params arguments for aPodsData::build()
request before relationship traversal runs. (@sc0ttkclark)Added: New
pods_data_traverse_recurse_handle_join
filter allows for overriding the JOIN SQL used for relationship traversal. (@sc0ttkclark)Fixed: Resolved potential PHP issues with path checks in
PodsView
on certain environments. (@sc0ttkclark)Fixed: When a slug is set on a Pods Page, if the slug value comes through as empty due to a path issue, it will now enforce a 404 as expected. (@sc0ttkclark)
Fixed: Resolved a few issues with the old field data coming through to the
pods_api_save_field_old_definition
filter. (@sc0ttkclark)Fixed: No longer showing WPDB errors from WPDB when query errors are forced off. (@sc0ttkclark)
Release Info
Developer | sc0ttkclark |
Plugin | Pods – Custom Content Types and Fields |
Version | 2.8.14 |
Comparing to | |
See all releases |
Code changes from version 2.8.13 to 2.8.14
- classes/Pods.php +9 -1
- classes/PodsAPI.php +46 -5
- classes/PodsData.php +81 -1
- classes/PodsView.php +35 -6
- classes/fields/datetime.php +3 -3
- components/Pages.php +6 -4
- includes/data.php +1 -1
- includes/general.php +12 -7
- init.php +2 -2
- readme.txt +13 -1
- src/Pods/REST/V1/Endpoints/Base.php +6 -6
- src/Pods/REST/V1/Endpoints/Field.php +2 -2
- src/Pods/REST/V1/Endpoints/Field_Slug.php +2 -2
- src/Pods/REST/V1/Endpoints/Group.php +2 -2
- src/Pods/REST/V1/Endpoints/Group_Slug.php +2 -2
- src/Pods/REST/V1/Endpoints/Pod.php +2 -2
- src/Pods/REST/V1/Endpoints/Pod_Slug.php +2 -2
- src/Pods/REST/V1/Service_Provider.php +1 -1
- src/Pods/REST/V1/Validator/Base.php +4 -4
@@ -2473,11 +2473,19 @@ class Pods implements Iterator {
|
|
2473 |
*
|
2474 |
* @see PodsData::total_found
|
2475 |
*
|
|
|
|
|
2476 |
* @return int Number of rows returned by find(), regardless of the 'limit' parameter
|
2477 |
* @since 2.0.0
|
2478 |
* @link https://docs.pods.io/code/pods/total-found/
|
2479 |
*/
|
2480 |
-
public function total_found() {
|
|
|
|
|
|
|
|
|
|
|
|
|
2481 |
|
2482 |
/**
|
2483 |
* Runs directly before the value of total_found() is determined and returned.
|
2473 |
*
|
2474 |
* @see PodsData::total_found
|
2475 |
*
|
2476 |
+
* @params null|array $params The list of Pods::find() parameters to use, otherwise use current dataset to calculate total found.
|
2477 |
+
*
|
2478 |
* @return int Number of rows returned by find(), regardless of the 'limit' parameter
|
2479 |
* @since 2.0.0
|
2480 |
* @link https://docs.pods.io/code/pods/total-found/
|
2481 |
*/
|
2482 |
+
public function total_found( $params = null ) {
|
2483 |
+
// Support find() shorthand to get total_found() for a specific dataset.
|
2484 |
+
if ( is_array( $params ) ) {
|
2485 |
+
$this->find( $params );
|
2486 |
+
|
2487 |
+
return $this->total_found();
|
2488 |
+
}
|
2489 |
|
2490 |
/**
|
2491 |
* Runs directly before the value of total_found() is determined and returned.
|
@@ -227,7 +227,7 @@ class PodsAPI {
|
|
227 |
/**
|
228 |
* Save the meta for a meta type.
|
229 |
*
|
230 |
-
* @since
|
231 |
*
|
232 |
* @param string $meta_type The meta type.
|
233 |
* @param int $id The object ID.
|
@@ -2949,6 +2949,7 @@ class PodsAPI {
|
|
2949 |
|
2950 |
$params = (object) $params;
|
2951 |
|
|
|
2952 |
$field = false;
|
2953 |
|
2954 |
if ( isset( $params->field ) && $params->field instanceof Field ) {
|
@@ -3196,6 +3197,11 @@ class PodsAPI {
|
|
3196 |
$old_options = $field;
|
3197 |
$old_sister_id = pods_v( 'sister_id', $old_options, 0 );
|
3198 |
|
|
|
|
|
|
|
|
|
|
|
3199 |
// When renaming a field, use the old ID for reference if empty.
|
3200 |
if ( ( 'old_name' === $lookup_type || $params->overwrite ) && empty( $params->id ) ) {
|
3201 |
$params->id = $old_id;
|
@@ -3243,7 +3249,7 @@ class PodsAPI {
|
|
3243 |
}
|
3244 |
|
3245 |
if ( false !== $this->field_exists( $params, false ) ) {
|
3246 |
-
return pods_error( sprintf( __( 'Field %1$s already exists, you cannot rename %2$s to that', 'pods' ), $field['name'], $old_name ), $this );
|
3247 |
}
|
3248 |
}
|
3249 |
|
@@ -3265,11 +3271,11 @@ class PodsAPI {
|
|
3265 |
*
|
3266 |
* @param string|false $field_definition The SQL definition to use for the field's table column.
|
3267 |
* @param string $type The field type.
|
3268 |
-
* @param array $
|
3269 |
* @param bool $simple Whether the field is a simple tableless field.
|
3270 |
* @param Pods\Whatsit\Field $field_obj The field object.
|
3271 |
*/
|
3272 |
-
$field_definition = apply_filters( 'pods_api_save_field_old_definition', $field_definition, $old_type, $
|
3273 |
|
3274 |
if ( ! empty( $field_definition ) ) {
|
3275 |
$old_definition = "`{$old_name}` " . $field_definition;
|
@@ -3629,6 +3635,12 @@ class PodsAPI {
|
|
3629 |
|
3630 |
$field['id'] = $params->id;
|
3631 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3632 |
$simple = ( 'pick' === $field['type'] && in_array( pods_v( 'pick_object', $field ), $simple_tableless_objects, true ) );
|
3633 |
|
3634 |
$definition = false;
|
@@ -3693,6 +3705,35 @@ class PodsAPI {
|
|
3693 |
}
|
3694 |
}
|
3695 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3696 |
if ( 'bypass' !== $definition_mode ) {
|
3697 |
/**
|
3698 |
* Allow hooking into before the table has been altered for any custom functionality needed.
|
@@ -9075,7 +9116,7 @@ class PodsAPI {
|
|
9075 |
if ( ! is_wp_error( $related ) ) {
|
9076 |
$related_ids = $related;
|
9077 |
}
|
9078 |
-
} elseif ( ! $params->force_meta && ! pods_tableless() && pods_podsrel_enabled() ) {
|
9079 |
$ids = implode( ', ', $params->ids );
|
9080 |
|
9081 |
$params->field_id = (int) $params->field_id;
|
227 |
/**
|
228 |
* Save the meta for a meta type.
|
229 |
*
|
230 |
+
* @since 2.8.11
|
231 |
*
|
232 |
* @param string $meta_type The meta type.
|
233 |
* @param int $id The object ID.
|
2949 |
|
2950 |
$params = (object) $params;
|
2951 |
|
2952 |
+
/** @var false|array|Field $field */
|
2953 |
$field = false;
|
2954 |
|
2955 |
if ( isset( $params->field ) && $params->field instanceof Field ) {
|
3197 |
$old_options = $field;
|
3198 |
$old_sister_id = pods_v( 'sister_id', $old_options, 0 );
|
3199 |
|
3200 |
+
// Maybe clone the field object if we need to.
|
3201 |
+
if ( $old_options instanceof Field ) {
|
3202 |
+
$old_options = clone $old_options;
|
3203 |
+
}
|
3204 |
+
|
3205 |
// When renaming a field, use the old ID for reference if empty.
|
3206 |
if ( ( 'old_name' === $lookup_type || $params->overwrite ) && empty( $params->id ) ) {
|
3207 |
$params->id = $old_id;
|
3249 |
}
|
3250 |
|
3251 |
if ( false !== $this->field_exists( $params, false ) ) {
|
3252 |
+
return pods_error( sprintf( __( 'Field %1$s already exists, you cannot rename %2$s to that on the %3$s pod', 'pods' ), $field['name'], $old_name, $pod['name'] ), $this );
|
3253 |
}
|
3254 |
}
|
3255 |
|
3271 |
*
|
3272 |
* @param string|false $field_definition The SQL definition to use for the field's table column.
|
3273 |
* @param string $type The field type.
|
3274 |
+
* @param array $old_options The field data.
|
3275 |
* @param bool $simple Whether the field is a simple tableless field.
|
3276 |
* @param Pods\Whatsit\Field $field_obj The field object.
|
3277 |
*/
|
3278 |
+
$field_definition = apply_filters( 'pods_api_save_field_old_definition', $field_definition, $old_type, $old_options, $old_simple, $field_obj );
|
3279 |
|
3280 |
if ( ! empty( $field_definition ) ) {
|
3281 |
$old_definition = "`{$old_name}` " . $field_definition;
|
3635 |
|
3636 |
$field['id'] = $params->id;
|
3637 |
|
3638 |
+
if ( $field instanceof Field ) {
|
3639 |
+
$field_obj = $field;
|
3640 |
+
} elseif ( $field_obj instanceof Field && is_array( $field ) ) {
|
3641 |
+
$field_obj->set_args( $field );
|
3642 |
+
}
|
3643 |
+
|
3644 |
$simple = ( 'pick' === $field['type'] && in_array( pods_v( 'pick_object', $field ), $simple_tableless_objects, true ) );
|
3645 |
|
3646 |
$definition = false;
|
3705 |
}
|
3706 |
}
|
3707 |
|
3708 |
+
/**
|
3709 |
+
* Allow filtering the definition mode to use for the field definition handling.
|
3710 |
+
*
|
3711 |
+
* @since 2.8.14
|
3712 |
+
*
|
3713 |
+
* @param string $definition_mode The definition mode used for the table field.
|
3714 |
+
* @param Pods\Whatsit\Pod $pod The pod object.
|
3715 |
+
* @param string $type The field type.
|
3716 |
+
* @param array $field The field data.
|
3717 |
+
* @param array $extra_info {
|
3718 |
+
* Extra information about the field.
|
3719 |
+
*
|
3720 |
+
* @type bool $simple Whether the field is a simple tableless field.
|
3721 |
+
* @type string $definition The field definition.
|
3722 |
+
* @type null|string $old_name The old field name (if preexisting).
|
3723 |
+
* @type null|string $old_definition The old field definition (if preexisting).
|
3724 |
+
* @type null|array $old_options The old field options (if preexisting).
|
3725 |
+
* @type Pods\Whatsit\Field $field_obj The field object.
|
3726 |
+
* }
|
3727 |
+
*/
|
3728 |
+
$definition_mode = apply_filters( 'pods_api_save_field_table_definition_mode', $definition_mode, $pod, $field['type'], $field, [
|
3729 |
+
'simple' => $simple,
|
3730 |
+
'definition' => $definition,
|
3731 |
+
'old_name' => $old_name,
|
3732 |
+
'old_definition' => $old_definition,
|
3733 |
+
'old_options' => $old_options,
|
3734 |
+
'field_obj' => $field_obj,
|
3735 |
+
] );
|
3736 |
+
|
3737 |
if ( 'bypass' !== $definition_mode ) {
|
3738 |
/**
|
3739 |
* Allow hooking into before the table has been altered for any custom functionality needed.
|
9116 |
if ( ! is_wp_error( $related ) ) {
|
9117 |
$related_ids = $related;
|
9118 |
}
|
9119 |
+
} elseif ( ! $params->force_meta && ! pods_tableless() && pods_podsrel_enabled( $params->field, 'lookup' ) ) {
|
9120 |
$ids = implode( ', ', $params->ids );
|
9121 |
|
9122 |
$params->field_id = (int) $params->field_id;
|
@@ -1471,6 +1471,39 @@ class PodsData {
|
|
1471 |
|
1472 |
$joins = array();
|
1473 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1474 |
if ( ! empty( $find ) ) {
|
1475 |
// See: "#3294 OrderBy Failing on PHP7" Non-zero array keys.
|
1476 |
// here in PHP 7 cause odd behavior so just strip the keys.
|
@@ -2374,8 +2407,22 @@ class PodsData {
|
|
2374 |
// Run Query.
|
2375 |
$params->sql = apply_filters( 'pods_data_query', $params->sql, $params );
|
2376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2377 |
$result = $wpdb->query( $params->sql );
|
2378 |
|
|
|
|
|
|
|
|
|
|
|
2379 |
$result = apply_filters( 'pods_data_query_result', $result, $params );
|
2380 |
|
2381 |
if ( false === $result && ! empty( $params->error ) && ! empty( $wpdb->last_error ) ) {
|
@@ -3466,7 +3513,7 @@ class PodsData {
|
|
3466 |
LEFT JOIN `{$table_info['pod_table']}` AS `{$field_joined}` ON
|
3467 |
`{$field_joined}`.`{$table_info['pod_field_id']}` = `{$traverse_recurse['rel_alias']}`.`{$joined_id}`
|
3468 |
";
|
3469 |
-
} elseif ( pods_podsrel_enabled() ) {
|
3470 |
if ( ( $traverse_recurse['depth'] + 2 ) === count( $traverse_recurse['fields'] ) && ( ! $is_pickable || ! in_array( $pick_object, $simple_tableless_objects, true ) ) && 'post_author' === $traverse_recurse['fields'][ $traverse_recurse['depth'] + 1 ] ) {
|
3471 |
$table_info['recurse'] = false;
|
3472 |
}
|
@@ -3486,6 +3533,39 @@ class PodsData {
|
|
3486 |
`{$field_joined}`.`{$table_info[ 'field_id' ]}` = `{$rel_alias}`.`related_item_id`
|
3487 |
";
|
3488 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3489 |
}//end if
|
3490 |
} elseif ( 'meta' === $pod_data['storage'] ) {
|
3491 |
if ( ( $traverse_recurse['depth'] + 2 ) === count( $traverse_recurse['fields'] ) && ( ! $is_pickable || ! in_array( $pick_object, $simple_tableless_objects, true ) ) && $table_info['meta_field_value'] === $traverse_recurse['fields'][ $traverse_recurse['depth'] + 1 ] ) {
|
1471 |
|
1472 |
$joins = array();
|
1473 |
|
1474 |
+
$pre_traverse_args = [
|
1475 |
+
'find' => $find,
|
1476 |
+
'replace' => $replace,
|
1477 |
+
'traverse' => $traverse,
|
1478 |
+
'params' => $params,
|
1479 |
+
];
|
1480 |
+
|
1481 |
+
/**
|
1482 |
+
* Allow filtering the pre-traverse arguments that will be used to build the query.
|
1483 |
+
*
|
1484 |
+
* @since 2.8.14
|
1485 |
+
*
|
1486 |
+
* @param array $pre_traverse_args The pre-traverse arguments.
|
1487 |
+
* @param PodsData $pods_data The PodsData object.
|
1488 |
+
*/
|
1489 |
+
$pre_traverse_args = (array) apply_filters( 'pods_data_build_pre_traverse_args', $pre_traverse_args, $this );
|
1490 |
+
|
1491 |
+
if ( isset( $pre_traverse_args['find'] ) ) {
|
1492 |
+
$find = $pre_traverse_args['find'];
|
1493 |
+
}
|
1494 |
+
|
1495 |
+
if ( isset( $pre_traverse_args['replace'] ) ) {
|
1496 |
+
$replace = $pre_traverse_args['replace'];
|
1497 |
+
}
|
1498 |
+
|
1499 |
+
if ( isset( $pre_traverse_args['traverse'] ) ) {
|
1500 |
+
$traverse = $pre_traverse_args['traverse'];
|
1501 |
+
}
|
1502 |
+
|
1503 |
+
if ( isset( $pre_traverse_args['params'] ) ) {
|
1504 |
+
$params = $pre_traverse_args['params'];
|
1505 |
+
}
|
1506 |
+
|
1507 |
if ( ! empty( $find ) ) {
|
1508 |
// See: "#3294 OrderBy Failing on PHP7" Non-zero array keys.
|
1509 |
// here in PHP 7 cause odd behavior so just strip the keys.
|
2407 |
// Run Query.
|
2408 |
$params->sql = apply_filters( 'pods_data_query', $params->sql, $params );
|
2409 |
|
2410 |
+
$wpdb_show_errors = null;
|
2411 |
+
|
2412 |
+
// Maybe disable wpdb errors.
|
2413 |
+
if ( false === $params->error && ! empty( $wpdb->show_errors ) ) {
|
2414 |
+
$wpdb_show_errors = false;
|
2415 |
+
|
2416 |
+
$wpdb->show_errors( false );
|
2417 |
+
}
|
2418 |
+
|
2419 |
$result = $wpdb->query( $params->sql );
|
2420 |
|
2421 |
+
// Maybe show wpdb errors.
|
2422 |
+
if ( $wpdb_show_errors ) {
|
2423 |
+
$wpdb->show_errors( true );
|
2424 |
+
}
|
2425 |
+
|
2426 |
$result = apply_filters( 'pods_data_query_result', $result, $params );
|
2427 |
|
2428 |
if ( false === $result && ! empty( $params->error ) && ! empty( $wpdb->last_error ) ) {
|
3513 |
LEFT JOIN `{$table_info['pod_table']}` AS `{$field_joined}` ON
|
3514 |
`{$field_joined}`.`{$table_info['pod_field_id']}` = `{$traverse_recurse['rel_alias']}`.`{$joined_id}`
|
3515 |
";
|
3516 |
+
} elseif ( pods_podsrel_enabled( $the_field, 'lookup' ) ) {
|
3517 |
if ( ( $traverse_recurse['depth'] + 2 ) === count( $traverse_recurse['fields'] ) && ( ! $is_pickable || ! in_array( $pick_object, $simple_tableless_objects, true ) ) && 'post_author' === $traverse_recurse['fields'][ $traverse_recurse['depth'] + 1 ] ) {
|
3518 |
$table_info['recurse'] = false;
|
3519 |
}
|
3533 |
`{$field_joined}`.`{$table_info[ 'field_id' ]}` = `{$rel_alias}`.`related_item_id`
|
3534 |
";
|
3535 |
}
|
3536 |
+
} else {
|
3537 |
+
$handle_join = [
|
3538 |
+
'recurse' => $table_info['recurse'],
|
3539 |
+
'the_join' => null,
|
3540 |
+
];
|
3541 |
+
|
3542 |
+
/**
|
3543 |
+
* Allow filtering the join parameters to be used for custom traversal logic.
|
3544 |
+
*
|
3545 |
+
* @since 2.8.14
|
3546 |
+
*
|
3547 |
+
* @param array $handle_join The join parameters to set.
|
3548 |
+
* @param array $args The additional traverse recurse arguments.
|
3549 |
+
* @param PodsData $pods_data The PodsData object.
|
3550 |
+
*/
|
3551 |
+
$handle_join = apply_filters( 'pods_data_traverse_recurse_handle_join', $handle_join, [
|
3552 |
+
'traverse' => $traverse,
|
3553 |
+
'traverse_recurse' => $traverse_recurse,
|
3554 |
+
'the_field' => $the_field,
|
3555 |
+
'table_info' => $table_info,
|
3556 |
+
'field_joined' => $field_joined,
|
3557 |
+
'rel_alias' => $rel_alias,
|
3558 |
+
'is_pickable' => $is_pickable,
|
3559 |
+
'pick_object' => $pick_object,
|
3560 |
+
], $this );
|
3561 |
+
|
3562 |
+
if ( null !== $handle_join['recurse'] ) {
|
3563 |
+
$table_info['recurse'] = $handle_join['recurse'];
|
3564 |
+
}
|
3565 |
+
|
3566 |
+
if ( null !== $handle_join['the_join'] ) {
|
3567 |
+
$the_join = $handle_join['the_join'];
|
3568 |
+
}
|
3569 |
}//end if
|
3570 |
} elseif ( 'meta' === $pod_data['storage'] ) {
|
3571 |
if ( ( $traverse_recurse['depth'] + 2 ) === count( $traverse_recurse['fields'] ) && ( ! $is_pickable || ! in_array( $pick_object, $simple_tableless_objects, true ) ) && $table_info['meta_field_value'] === $traverse_recurse['fields'][ $traverse_recurse['depth'] + 1 ] ) {
|
@@ -584,7 +584,25 @@ class PodsView {
|
|
584 |
|
585 |
// Is the view's file somewhere within the plugin directory tree?
|
586 |
// Note: we explicitly whitelist PODS_DIR for the case of symlinks (see issue #2945)
|
587 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
588 |
if ( file_exists( $_view ) ) {
|
589 |
$located = $_view;
|
590 |
} else {
|
@@ -598,11 +616,22 @@ class PodsView {
|
|
598 |
return false;
|
599 |
}
|
600 |
|
601 |
-
// Allow views in the theme or child theme
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
606 |
}
|
607 |
}//end if
|
608 |
|
584 |
|
585 |
// Is the view's file somewhere within the plugin directory tree?
|
586 |
// Note: we explicitly whitelist PODS_DIR for the case of symlinks (see issue #2945)
|
587 |
+
$path_checks = [
|
588 |
+
realpath( WP_PLUGIN_DIR ),
|
589 |
+
realpath( WPMU_PLUGIN_DIR ),
|
590 |
+
realpath( PODS_DIR ),
|
591 |
+
];
|
592 |
+
|
593 |
+
$path_checks = array_filter( $path_checks );
|
594 |
+
|
595 |
+
$path_match = false;
|
596 |
+
|
597 |
+
foreach ( $path_checks as $path_check ) {
|
598 |
+
if ( false !== strpos( $_real_view, $path_check ) ) {
|
599 |
+
$path_match = true;
|
600 |
+
|
601 |
+
break;
|
602 |
+
}
|
603 |
+
}
|
604 |
+
|
605 |
+
if ( $path_match ) {
|
606 |
if ( file_exists( $_view ) ) {
|
607 |
$located = $_view;
|
608 |
} else {
|
616 |
return false;
|
617 |
}
|
618 |
|
619 |
+
// Allow views in the theme or child theme.
|
620 |
+
$path_checks = [
|
621 |
+
realpath( get_stylesheet_directory() . DIRECTORY_SEPARATOR . $_real_view ),
|
622 |
+
realpath( get_template_directory() . DIRECTORY_SEPARATOR . $_real_view ),
|
623 |
+
];
|
624 |
+
|
625 |
+
$path_checks = array_filter( $path_checks );
|
626 |
+
|
627 |
+
$path_match = false;
|
628 |
+
|
629 |
+
foreach ( $path_checks as $path_check ) {
|
630 |
+
if ( file_exists( $path_check ) ) {
|
631 |
+
$located = $path_check;
|
632 |
+
|
633 |
+
break;
|
634 |
+
}
|
635 |
}
|
636 |
}//end if
|
637 |
|
@@ -994,7 +994,7 @@ class PodsField_DateTime extends PodsField {
|
|
994 |
/**
|
995 |
* Prepare the date/datetime/time field object or options for MomentJS formatting.
|
996 |
*
|
997 |
-
* @since
|
998 |
*
|
999 |
* @param array|Field $options The field object or options.
|
1000 |
*
|
@@ -1043,7 +1043,7 @@ class PodsField_DateTime extends PodsField {
|
|
1043 |
/**
|
1044 |
* Get the format from the options for a specific type (date/datetime/time).
|
1045 |
*
|
1046 |
-
* @since
|
1047 |
*
|
1048 |
* @param array|Field $options The field object or options.
|
1049 |
* @param string $type The specific field type.
|
@@ -1144,7 +1144,7 @@ class PodsField_DateTime extends PodsField {
|
|
1144 |
/**
|
1145 |
* Convert the source format to MomentJS format for PHP / jQuery UI formats.
|
1146 |
*
|
1147 |
-
* @since
|
1148 |
*
|
1149 |
* @param string|mixed $source_format The source format.
|
1150 |
* @param array $args The list of format arguments including source (php/jquery_ui) and type (date/time).
|
994 |
/**
|
995 |
* Prepare the date/datetime/time field object or options for MomentJS formatting.
|
996 |
*
|
997 |
+
* @since 2.8.11
|
998 |
*
|
999 |
* @param array|Field $options The field object or options.
|
1000 |
*
|
1043 |
/**
|
1044 |
* Get the format from the options for a specific type (date/datetime/time).
|
1045 |
*
|
1046 |
+
* @since 2.8.11
|
1047 |
*
|
1048 |
* @param array|Field $options The field object or options.
|
1049 |
* @param string $type The specific field type.
|
1144 |
/**
|
1145 |
* Convert the source format to MomentJS format for PHP / jQuery UI formats.
|
1146 |
*
|
1147 |
+
* @since 2.8.11
|
1148 |
*
|
1149 |
* @param string|mixed $source_format The source format.
|
1150 |
* @param array $args The list of format arguments including source (php/jquery_ui) and type (date/time).
|
@@ -1038,15 +1038,17 @@ class Pods_Pages extends PodsComponent {
|
|
1038 |
if ( ! is_object( $pods ) && 404 != $pods && 0 < strlen( pods_var( 'pod', self::$exists['options'] ) ) ) {
|
1039 |
$slug = pods_var_raw( 'pod_slug', self::$exists['options'], null, null, true );
|
1040 |
|
|
|
|
|
1041 |
// Handle special magic tags
|
1042 |
-
if (
|
1043 |
$slug = pods_evaluate_tags( $slug, true );
|
1044 |
}
|
1045 |
|
1046 |
$pods = pods( pods_var( 'pod', self::$exists['options'] ), $slug );
|
1047 |
|
1048 |
// Auto 404 handling if item doesn't exist
|
1049 |
-
if (
|
1050 |
$pods = 404;
|
1051 |
}
|
1052 |
}
|
@@ -1230,7 +1232,7 @@ class Pods_Pages extends PodsComponent {
|
|
1230 |
/**
|
1231 |
* Handle overriding the template used for a Pods Page.
|
1232 |
*
|
1233 |
-
* @since
|
1234 |
*
|
1235 |
* @param string $original_template The template to include.
|
1236 |
*
|
@@ -1317,7 +1319,7 @@ class Pods_Pages extends PodsComponent {
|
|
1317 |
/**
|
1318 |
* Allow filtering the template to include for a Pods Page.
|
1319 |
*
|
1320 |
-
* @since
|
1321 |
*
|
1322 |
* @param string $template The template to use.
|
1323 |
* @param array $exists The Pods Page data.
|
1038 |
if ( ! is_object( $pods ) && 404 != $pods && 0 < strlen( pods_var( 'pod', self::$exists['options'] ) ) ) {
|
1039 |
$slug = pods_var_raw( 'pod_slug', self::$exists['options'], null, null, true );
|
1040 |
|
1041 |
+
$has_slug = 0 < strlen( $slug );
|
1042 |
+
|
1043 |
// Handle special magic tags
|
1044 |
+
if ( $has_slug ) {
|
1045 |
$slug = pods_evaluate_tags( $slug, true );
|
1046 |
}
|
1047 |
|
1048 |
$pods = pods( pods_var( 'pod', self::$exists['options'] ), $slug );
|
1049 |
|
1050 |
// Auto 404 handling if item doesn't exist
|
1051 |
+
if ( $has_slug && ( empty( $slug ) || ! $pods->exists() ) && apply_filters( 'pods_pages_auto_404', true, $slug, $pods, self::$exists ) ) {
|
1052 |
$pods = 404;
|
1053 |
}
|
1054 |
}
|
1232 |
/**
|
1233 |
* Handle overriding the template used for a Pods Page.
|
1234 |
*
|
1235 |
+
* @since 2.8.11
|
1236 |
*
|
1237 |
* @param string $original_template The template to include.
|
1238 |
*
|
1319 |
/**
|
1320 |
* Allow filtering the template to include for a Pods Page.
|
1321 |
*
|
1322 |
+
* @since 2.8.11
|
1323 |
*
|
1324 |
* @param string $template The template to use.
|
1325 |
* @param array $exists The Pods Page data.
|
@@ -2385,7 +2385,7 @@ function pods_bool_to_int( $value ) {
|
|
2385 |
/**
|
2386 |
* Make replacements to a string using key=>value pairs.
|
2387 |
*
|
2388 |
-
* @since
|
2389 |
*
|
2390 |
* @param string|array|mixed $value The value to do replacements on.
|
2391 |
* @param array $replacements The key=>value replacements to make.
|
2385 |
/**
|
2386 |
* Make replacements to a string using key=>value pairs.
|
2387 |
*
|
2388 |
+
* @since 2.8.11
|
2389 |
*
|
2390 |
* @param string|array|mixed $value The value to do replacements on.
|
2391 |
* @param array $replacements The key=>value replacements to make.
|
@@ -184,7 +184,7 @@ function pods_error( $error, $obj = null ) {
|
|
184 |
/**
|
185 |
* Allow filtering whether to force the error mode in cases where multiple exceptions have been used.
|
186 |
*
|
187 |
-
* @since
|
188 |
*
|
189 |
* @param bool $error_mode_force Whether to force the error mode in cases where multiple exceptions have been used.
|
190 |
*/
|
@@ -456,9 +456,12 @@ function pods_tableless() {
|
|
456 |
*
|
457 |
* @since 2.8.0
|
458 |
*
|
|
|
|
|
|
|
459 |
* @return bool Whether the wp_podsrel table is enabled.
|
460 |
*/
|
461 |
-
function pods_podsrel_enabled() {
|
462 |
// Disabled when Pods Tableless mode is on.
|
463 |
if ( pods_tableless() ) {
|
464 |
return false;
|
@@ -469,9 +472,11 @@ function pods_podsrel_enabled() {
|
|
469 |
*
|
470 |
* @since 2.8.0
|
471 |
*
|
472 |
-
* @param bool
|
|
|
|
|
473 |
*/
|
474 |
-
return (bool) apply_filters( 'pods_podsrel_enabled', true );
|
475 |
}
|
476 |
|
477 |
/**
|
@@ -2940,7 +2945,7 @@ function pods_meta_hook_list( $object_type = 'post', $object = null ) {
|
|
2940 |
/**
|
2941 |
* Allow filtering the list of actions and filters for a specific object type.
|
2942 |
*
|
2943 |
-
* @since
|
2944 |
*
|
2945 |
* @param array $hooks List of filters and actions for a specific object type.
|
2946 |
* @param string $object_type The object type.
|
@@ -3774,7 +3779,7 @@ function pods_svg_icon( $icon_path, $default = 'dashicons-database', $mode = 'ba
|
|
3774 |
/**
|
3775 |
* Determine whether Pods is being used for content types only.
|
3776 |
*
|
3777 |
-
* @since
|
3778 |
*
|
3779 |
* @param bool $check_constant_only Whether to only check the constant, unless there's a filter overriding things.
|
3780 |
*
|
@@ -3797,7 +3802,7 @@ function pods_is_types_only( $check_constant_only = false ) {
|
|
3797 |
/**
|
3798 |
* Allow filtering whether Pods is being used for content types only.
|
3799 |
*
|
3800 |
-
* @since
|
3801 |
*
|
3802 |
* @param bool $is_types_only Whether Pods is being used for content types only.
|
3803 |
*/
|
184 |
/**
|
185 |
* Allow filtering whether to force the error mode in cases where multiple exceptions have been used.
|
186 |
*
|
187 |
+
* @since 2.8.11
|
188 |
*
|
189 |
* @param bool $error_mode_force Whether to force the error mode in cases where multiple exceptions have been used.
|
190 |
*/
|
456 |
*
|
457 |
* @since 2.8.0
|
458 |
*
|
459 |
+
* @param null|Field $field The field object.
|
460 |
+
* @param null|string $context The context of the podsrel check (lookup/save).
|
461 |
+
*
|
462 |
* @return bool Whether the wp_podsrel table is enabled.
|
463 |
*/
|
464 |
+
function pods_podsrel_enabled( $field = null, $context = null ) {
|
465 |
// Disabled when Pods Tableless mode is on.
|
466 |
if ( pods_tableless() ) {
|
467 |
return false;
|
472 |
*
|
473 |
* @since 2.8.0
|
474 |
*
|
475 |
+
* @param bool $enabled Whether the wp_podsrel table is enabled.
|
476 |
+
* @param null|Field $field The field object.
|
477 |
+
* @param null|string $context The context of the podsrel check (lookup/save).
|
478 |
*/
|
479 |
+
return (bool) apply_filters( 'pods_podsrel_enabled', true, $field, $context );
|
480 |
}
|
481 |
|
482 |
/**
|
2945 |
/**
|
2946 |
* Allow filtering the list of actions and filters for a specific object type.
|
2947 |
*
|
2948 |
+
* @since 2.8.11
|
2949 |
*
|
2950 |
* @param array $hooks List of filters and actions for a specific object type.
|
2951 |
* @param string $object_type The object type.
|
3779 |
/**
|
3780 |
* Determine whether Pods is being used for content types only.
|
3781 |
*
|
3782 |
+
* @since 2.8.11
|
3783 |
*
|
3784 |
* @param bool $check_constant_only Whether to only check the constant, unless there's a filter overriding things.
|
3785 |
*
|
3802 |
/**
|
3803 |
* Allow filtering whether Pods is being used for content types only.
|
3804 |
*
|
3805 |
+
* @since 2.8.11
|
3806 |
*
|
3807 |
* @param bool $is_types_only Whether Pods is being used for content types only.
|
3808 |
*/
|
@@ -10,7 +10,7 @@
|
|
10 |
* Plugin Name: Pods - Custom Content Types and Fields
|
11 |
* Plugin URI: https://pods.io/
|
12 |
* Description: Pods is a framework for creating, managing, and deploying customized content types and fields
|
13 |
-
* Version: 2.8.
|
14 |
* Author: Pods Framework Team
|
15 |
* Author URI: https://pods.io/about/
|
16 |
* Text Domain: pods
|
@@ -43,7 +43,7 @@ if ( defined( 'PODS_VERSION' ) || defined( 'PODS_DIR' ) ) {
|
|
43 |
add_action( 'init', 'pods_deactivate_pods_ui' );
|
44 |
} else {
|
45 |
// Current version.
|
46 |
-
define( 'PODS_VERSION', '2.8.
|
47 |
|
48 |
// Current database version, this is the last version the database changed.
|
49 |
define( 'PODS_DB_VERSION', '2.3.5' );
|
10 |
* Plugin Name: Pods - Custom Content Types and Fields
|
11 |
* Plugin URI: https://pods.io/
|
12 |
* Description: Pods is a framework for creating, managing, and deploying customized content types and fields
|
13 |
+
* Version: 2.8.14
|
14 |
* Author: Pods Framework Team
|
15 |
* Author URI: https://pods.io/about/
|
16 |
* Text Domain: pods
|
43 |
add_action( 'init', 'pods_deactivate_pods_ui' );
|
44 |
} else {
|
45 |
// Current version.
|
46 |
+
define( 'PODS_VERSION', '2.8.14' );
|
47 |
|
48 |
// Current database version, this is the last version the database changed.
|
49 |
define( 'PODS_DB_VERSION', '2.3.5' );
|
@@ -5,7 +5,7 @@ Tags: pods, custom post types, custom taxonomies, content types, custom fields,
|
|
5 |
Requires at least: 5.5
|
6 |
Tested up to: 5.9
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 2.8.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -156,6 +156,18 @@ Pods really wouldn't be where it is without all the contributions from our [dono
|
|
156 |
|
157 |
== Changelog ==
|
158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
= 2.8.13 - April 10th, 2022 =
|
160 |
|
161 |
* Fixed: Resolved PHP issues with PHP 7.x with the WPML integration. (@sc0ttkclark)
|
5 |
Requires at least: 5.5
|
6 |
Tested up to: 5.9
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 2.8.14
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
156 |
|
157 |
== Changelog ==
|
158 |
|
159 |
+
= 2.8.14 - April 15th, 2022 =
|
160 |
+
|
161 |
+
* Added: New `$params` support in `Pods::total_found( $params )` to support `Pods::find( $params )` shorthand lookups for getting total number of records found more easily. (@sc0ttkclark)
|
162 |
+
* Added: New `pods_api_save_field_table_definition_mode` filter allows overriding the definition mode when saving a field (bypass/add/drop/change) for schema management. (@sc0ttkclark)
|
163 |
+
* Added: New `pods_podsrel_enabled()` arguments to allow filtering based on the field and context. (@sc0ttkclark)
|
164 |
+
* Added: New `pods_data_build_pre_traverse_args` filter allows for overriding the find/replace/traverse/params arguments for a `PodsData::build()` request before relationship traversal runs. (@sc0ttkclark)
|
165 |
+
* Added: New `pods_data_traverse_recurse_handle_join` filter allows for overriding the JOIN SQL used for relationship traversal. (@sc0ttkclark)
|
166 |
+
* Fixed: Resolved potential PHP issues with path checks in `PodsView` on certain environments. (@sc0ttkclark)
|
167 |
+
* Fixed: When a slug is set on a Pods Page, if the slug value comes through as empty due to a path issue, it will now enforce a 404 as expected. (@sc0ttkclark)
|
168 |
+
* Fixed: Resolved a few issues with the old field data coming through to the `pods_api_save_field_old_definition` filter. (@sc0ttkclark)
|
169 |
+
* Fixed: No longer showing WPDB errors from WPDB when query errors are forced off. (@sc0ttkclark)
|
170 |
+
|
171 |
= 2.8.13 - April 10th, 2022 =
|
172 |
|
173 |
* Fixed: Resolved PHP issues with PHP 7.x with the WPML integration. (@sc0ttkclark)
|
@@ -26,13 +26,13 @@ abstract class Base {
|
|
26 |
public $route;
|
27 |
|
28 |
/**
|
29 |
-
* @since
|
30 |
* @var string
|
31 |
*/
|
32 |
public $rest_route;
|
33 |
|
34 |
/**
|
35 |
-
* @since
|
36 |
* @var string
|
37 |
*/
|
38 |
public $rest_doc_route;
|
@@ -220,7 +220,7 @@ abstract class Base {
|
|
220 |
/**
|
221 |
* Get the Pod object for a specific item by ID or slug.
|
222 |
*
|
223 |
-
* @since
|
224 |
*
|
225 |
* @param int|string $id_or_slug The item ID or slug.
|
226 |
*
|
@@ -239,7 +239,7 @@ abstract class Base {
|
|
239 |
/**
|
240 |
* Validate the required params are set.
|
241 |
*
|
242 |
-
* @since
|
243 |
*
|
244 |
* @param object $params The object params.
|
245 |
* @param array $required_params The list of required params.
|
@@ -273,7 +273,7 @@ abstract class Base {
|
|
273 |
/**
|
274 |
* Check whether the user has access to the pod item.
|
275 |
*
|
276 |
-
* @since
|
277 |
*
|
278 |
* @param Pods $pod The Pods object.
|
279 |
* @param string $author_field The author field to check permissions against.
|
@@ -715,7 +715,7 @@ abstract class Base {
|
|
715 |
/**
|
716 |
* Register route for the endpoint automatically based on the supported methods.
|
717 |
*
|
718 |
-
* @since
|
719 |
*
|
720 |
* @param string $namespace The route namespace.
|
721 |
* @param bool $add_to_docs Whether to add the route to the documentation endpoint.
|
26 |
public $route;
|
27 |
|
28 |
/**
|
29 |
+
* @since 2.8.11
|
30 |
* @var string
|
31 |
*/
|
32 |
public $rest_route;
|
33 |
|
34 |
/**
|
35 |
+
* @since 2.8.11
|
36 |
* @var string
|
37 |
*/
|
38 |
public $rest_doc_route;
|
220 |
/**
|
221 |
* Get the Pod object for a specific item by ID or slug.
|
222 |
*
|
223 |
+
* @since 2.8.11
|
224 |
*
|
225 |
* @param int|string $id_or_slug The item ID or slug.
|
226 |
*
|
239 |
/**
|
240 |
* Validate the required params are set.
|
241 |
*
|
242 |
+
* @since 2.8.11
|
243 |
*
|
244 |
* @param object $params The object params.
|
245 |
* @param array $required_params The list of required params.
|
273 |
/**
|
274 |
* Check whether the user has access to the pod item.
|
275 |
*
|
276 |
+
* @since 2.8.11
|
277 |
*
|
278 |
* @param Pods $pod The Pods object.
|
279 |
* @param string $author_field The author field to check permissions against.
|
715 |
/**
|
716 |
* Register route for the endpoint automatically based on the supported methods.
|
717 |
*
|
718 |
+
* @since 2.8.11
|
719 |
*
|
720 |
* @param string $namespace The route namespace.
|
721 |
* @param bool $add_to_docs Whether to add the route to the documentation endpoint.
|
@@ -20,14 +20,14 @@ class Field extends Base implements READ_Interface, UPDATE_Interface, DELETE_Int
|
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
-
* @since
|
24 |
*/
|
25 |
public $rest_route = '/fields/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
-
* @since
|
31 |
*/
|
32 |
public $rest_doc_route = '/fields/{id}';
|
33 |
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
+
* @since 2.8.11
|
24 |
*/
|
25 |
public $rest_route = '/fields/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
+
* @since 2.8.11
|
31 |
*/
|
32 |
public $rest_doc_route = '/fields/{id}';
|
33 |
|
@@ -16,14 +16,14 @@ class Field_Slug extends Field {
|
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
-
* @since
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<pod>[\w\_\-]+)/fields/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
-
* @since
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{pod}/fields/{slug}';
|
29 |
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
+
* @since 2.8.11
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<pod>[\w\_\-]+)/fields/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
+
* @since 2.8.11
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{pod}/fields/{slug}';
|
29 |
|
@@ -20,14 +20,14 @@ class Group extends Base implements READ_Interface, UPDATE_Interface, DELETE_Int
|
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
-
* @since
|
24 |
*/
|
25 |
public $rest_route = '/groups/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
-
* @since
|
31 |
*/
|
32 |
public $rest_doc_route = '/groups/{id}';
|
33 |
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
+
* @since 2.8.11
|
24 |
*/
|
25 |
public $rest_route = '/groups/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
+
* @since 2.8.11
|
31 |
*/
|
32 |
public $rest_doc_route = '/groups/{id}';
|
33 |
|
@@ -16,14 +16,14 @@ class Group_Slug extends Group {
|
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
-
* @since
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<pod>[\w\_\-]+)/groups/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
-
* @since
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{pod}/groups/{slug}';
|
29 |
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
+
* @since 2.8.11
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<pod>[\w\_\-]+)/groups/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
+
* @since 2.8.11
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{pod}/groups/{slug}';
|
29 |
|
@@ -20,14 +20,14 @@ class Pod extends Base implements READ_Interface, UPDATE_Interface, DELETE_Inter
|
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
-
* @since
|
24 |
*/
|
25 |
public $rest_route = '/pods/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
-
* @since
|
31 |
*/
|
32 |
public $rest_doc_route = '/pods/{id}';
|
33 |
|
20 |
/**
|
21 |
* {@inheritdoc}
|
22 |
*
|
23 |
+
* @since 2.8.11
|
24 |
*/
|
25 |
public $rest_route = '/pods/(?P<id>\\d+)';
|
26 |
|
27 |
/**
|
28 |
* {@inheritdoc}
|
29 |
*
|
30 |
+
* @since 2.8.11
|
31 |
*/
|
32 |
public $rest_doc_route = '/pods/{id}';
|
33 |
|
@@ -16,14 +16,14 @@ class Pod_Slug extends Pod {
|
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
-
* @since
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
-
* @since
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{slug}';
|
29 |
|
16 |
/**
|
17 |
* {@inheritdoc}
|
18 |
*
|
19 |
+
* @since 2.8.11
|
20 |
*/
|
21 |
public $rest_route = '/pods/(?P<slug>[\w\_\-]+)';
|
22 |
|
23 |
/**
|
24 |
* {@inheritdoc}
|
25 |
*
|
26 |
+
* @since 2.8.11
|
27 |
*/
|
28 |
public $rest_doc_route = '/pods/{slug}';
|
29 |
|
@@ -68,7 +68,7 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
|
|
68 |
/**
|
69 |
* Get the list of endpoints.
|
70 |
*
|
71 |
-
* @since
|
72 |
*
|
73 |
* @return string[] The list of endpoints.
|
74 |
*/
|
68 |
/**
|
69 |
* Get the list of endpoints.
|
70 |
*
|
71 |
+
* @since 2.8.11
|
72 |
*
|
73 |
* @return string[] The list of endpoints.
|
74 |
*/
|
@@ -27,7 +27,7 @@ class Base extends Validator_Base implements Validator_Interface {
|
|
27 |
/**
|
28 |
* Determine whether a Pod / Item ID is valid.
|
29 |
*
|
30 |
-
* @since
|
31 |
*
|
32 |
* @param string $pod The pod name.
|
33 |
* @param int|string $id_or_slug The Item ID or slug.
|
@@ -43,7 +43,7 @@ class Base extends Validator_Base implements Validator_Interface {
|
|
43 |
/**
|
44 |
* Determine whether a Pod / Item ID is valid.
|
45 |
*
|
46 |
-
* @since
|
47 |
*
|
48 |
* @param string $pod The pod name.
|
49 |
* @param int|string $id The item ID.
|
@@ -57,7 +57,7 @@ class Base extends Validator_Base implements Validator_Interface {
|
|
57 |
/**
|
58 |
* Determine whether a Pod / Item slug is valid.
|
59 |
*
|
60 |
-
* @since
|
61 |
*
|
62 |
* @param string $pod The pod name.
|
63 |
* @param int|string $slug The Item slug.
|
@@ -172,7 +172,7 @@ class Base extends Validator_Base implements Validator_Interface {
|
|
172 |
/**
|
173 |
* Handle other potential methods automatically if possible.
|
174 |
*
|
175 |
-
* @since
|
176 |
*
|
177 |
* @param string $name The method name.
|
178 |
* @param array $arguments The arguments provided to the method.
|
27 |
/**
|
28 |
* Determine whether a Pod / Item ID is valid.
|
29 |
*
|
30 |
+
* @since 2.8.11
|
31 |
*
|
32 |
* @param string $pod The pod name.
|
33 |
* @param int|string $id_or_slug The Item ID or slug.
|
43 |
/**
|
44 |
* Determine whether a Pod / Item ID is valid.
|
45 |
*
|
46 |
+
* @since 2.8.11
|
47 |
*
|
48 |
* @param string $pod The pod name.
|
49 |
* @param int|string $id The item ID.
|
57 |
/**
|
58 |
* Determine whether a Pod / Item slug is valid.
|
59 |
*
|
60 |
+
* @since 2.8.11
|
61 |
*
|
62 |
* @param string $pod The pod name.
|
63 |
* @param int|string $slug The Item slug.
|
172 |
/**
|
173 |
* Handle other potential methods automatically if possible.
|
174 |
*
|
175 |
+
* @since 2.8.11
|
176 |
*
|
177 |
* @param string $name The method name.
|
178 |
* @param array $arguments The arguments provided to the method.
|