Tribe__Settings::validate()
validate the settings
Return
(void)
Source
File: src/Tribe/Settings.php
public function validate() {
do_action( 'tribe_settings_validate_before_checks' );
// check that the right POST && variables are set
if ( isset( $_POST['tribeSaveSettings'] ) && isset( $_POST['current-settings-tab'] ) ) {
// check permissions
if ( ! current_user_can( 'manage_options' ) ) {
$this->errors[] = esc_html__( "You don't have permission to do that.", 'tribe-common' );
$this->major_error = true;
}
// check the nonce
if ( ! wp_verify_nonce( $_POST['tribe-save-settings'], 'saving' ) ) {
$this->errors[] = esc_html__( 'The request was sent insecurely.', 'tribe-common' );
$this->major_error = true;
}
// check that the request originated from the current tab
if ( $_POST['current-settings-tab'] != $this->currentTab ) {
$this->errors[] = esc_html__( "The request wasn't sent from this tab.", 'tribe-common' );
$this->major_error = true;
}
// bail if we have errors
if ( count( $this->errors ) ) {
remove_action( 'shutdown', array( $this, 'deleteOptions' ) );
add_option( 'tribe_settings_errors', $this->errors );
add_option( 'tribe_settings_major_error', $this->major_error );
wp_redirect( $this->url );
exit;
}
// some hooks
do_action( 'tribe_settings_validate' );
do_action( 'tribe_settings_validate_tab_' . $this->currentTab );
// set the current tab and current fields
$tab = $this->currentTab;
$fields = $this->current_fields = $this->fields_for_save[ $tab ];
if ( is_array( $fields ) ) {
// loop through the fields and validate them
foreach ( $fields as $field_id => $field ) {
// get the value
$value = ( isset( $_POST[ $field_id ] ) ) ? $_POST[ $field_id ] : null;
$value = apply_filters( 'tribe_settings_validate_field_value', $value, $field_id, $field );
// make sure it has validation set up for it, else do nothing
if (
( ! isset( $field['conditional'] ) || $field['conditional'] )
&& ( ! empty( $field['validation_type'] ) || ! empty( $field['validation_callback'] ) )
) {
// some hooks
do_action( 'tribe_settings_validate_field', $field_id, $value, $field );
do_action( 'tribe_settings_validate_field_' . $field_id, $value, $field );
// validate this field
$validate = new Tribe__Validate( $field_id, $field, $value );
if ( isset( $validate->result->error ) ) {
// uh oh; validation failed
$this->errors[ $field_id ] = $validate->result->error;
} elseif ( $validate->result->valid ) {
// validation passed
$this->validated[ $field_id ] = new stdClass;
$this->validated[ $field_id ]->field = $validate->field;
$this->validated[ $field_id ]->value = $validate->value;
}
}
}
// do not generate errors for dependent fields that should not show
if ( ! empty( $this->errors ) ) {
$keep = array_filter( array_keys( $this->errors ), array( $this, 'dependency_checks' ) );
$compare = empty( $keep ) ? array() : array_combine( $keep, $keep );
$this->errors = array_intersect_key( $this->errors, $compare );
}
// run the saving method
$this->save();
}
}
}