req-fields-pre-process.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. function ninja_forms_req_fields_process(){
  3. global $ninja_forms_processing, $ninja_forms_fields;
  4. $all_fields = $ninja_forms_processing->get_all_fields();
  5. if( is_array( $all_fields ) AND !empty( $all_fields ) ){
  6. foreach($all_fields as $field_id => $user_value){
  7. $field_row = $ninja_forms_processing->get_field_settings( $field_id );
  8. if ( !$field_row ) {
  9. $field_row = ninja_forms_get_field_by_id( $field_id );
  10. }
  11. $field_type = $field_row['type'];
  12. if ( isset ( $ninja_forms_fields[$field_type] ) ) {
  13. if( isset( $field_row['data'] ) ){
  14. $field_data = $field_row['data'];
  15. }else{
  16. $field_data = '';
  17. }
  18. if( isset( $field_data['req'] ) ){
  19. $req = $field_data['req'];
  20. }else{
  21. $req = '';
  22. }
  23. if( isset( $field_data['label_pos'] ) ){
  24. $label_pos = $field_data['label_pos'];
  25. }else{
  26. $label_pos = '';
  27. }
  28. // Get the required field symbol.
  29. $settings = nf_get_settings();
  30. if ( isset ( $settings['req_field_symbol'] ) ) {
  31. $req_symbol = $settings['req_field_symbol'];
  32. } else {
  33. $req_symbol = '*';
  34. }
  35. if ( isset ( $field_data['req'] ) and $field_data['req'] == 1 and $label_pos == 'inside' ) {
  36. $field_data['label'] .= ' '.$req_symbol;
  37. }
  38. if( isset( $field_data['label'] ) ){
  39. $label = $field_data['label'];
  40. }else{
  41. $label = '';
  42. }
  43. $label = strip_tags( $label );
  44. $reg_type = $ninja_forms_fields[$field_type];
  45. $req_validation = $reg_type['req_validation'];
  46. $plugin_settings = nf_get_settings();
  47. if ( isset ( $plugin_settings['req_field_error'] ) ) {
  48. $req_field_error = __( $plugin_settings['req_field_error'], 'ninja-forms' );
  49. } else {
  50. $req_field_error = __( 'This is a required field.', 'ninja-forms' );
  51. }
  52. if( isset( $plugin_settings['req_error_label'] ) ){
  53. $req_error_label = __( $plugin_settings['req_error_label'], 'ninja-forms' );
  54. }else{
  55. $req_error_label = __( 'Please check required fields.', 'ninja-forms' );
  56. }
  57. if( $req == 1 AND $user_value !== false ){
  58. if($req_validation != ''){
  59. $arguments['field_id'] = $field_id;
  60. $arguments['user_value'] = $user_value;
  61. $req = call_user_func_array($req_validation, $arguments);
  62. if(!$req){
  63. $ninja_forms_processing->add_error('required-'.$field_id, $req_field_error, $field_id);
  64. $ninja_forms_processing->add_error('required-general', $req_error_label, 'general');
  65. }
  66. }else{
  67. if($label_pos == 'inside'){
  68. if( $user_value == $label OR ( empty( $user_value ) && $user_value !== "0" ) ){
  69. $ninja_forms_processing->add_error('required-'.$field_id, $req_field_error, $field_id);
  70. $ninja_forms_processing->add_error('required-general', $req_error_label, 'general');
  71. }
  72. }else{
  73. if( $user_value === '' ){
  74. $ninja_forms_processing->add_error('required-'.$field_id, $req_field_error, $field_id);
  75. $ninja_forms_processing->add_error('required-general', $req_error_label, 'general');
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. }
  83. }
  84. add_action( 'ninja_forms_pre_process', 'ninja_forms_req_fields_process', 13);