calc-field-class.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /*
  3. *
  4. * Function that adds a calc filter class to the field if appropriate.
  5. *
  6. * @since 2.4
  7. * @return void
  8. */
  9. function ninja_forms_calc_listen_field_class( $form_id ) {
  10. global $ninja_forms_loading, $ninja_forms_processing;
  11. $field_results = ninja_forms_get_fields_by_form_id( $form_id );
  12. foreach( $field_results as $field_row ) {
  13. $field_id = $field_row['id'];
  14. if ( isset ( $field_row['type'] ) ) {
  15. $field_type = $field_row['type'];
  16. } else {
  17. $field_type = '';
  18. }
  19. $field_data = $field_row['data'];
  20. $field_data = apply_filters( 'ninja_forms_field', $field_data, $field_id );
  21. $calc_listen = '';
  22. $sub_total = false;
  23. $tax = false;
  24. foreach ( $field_results as $field ) {
  25. $data = $field['data'];
  26. if ( isset ( $field['type'] ) ) {
  27. $field_type = $field['type'];
  28. } else {
  29. $field_type = '';
  30. }
  31. // Check for advanced calculation fields that reference this field. If we find one, and use_calc_adv is set to 1, add a special class to this field.
  32. if ( $field_type == '_calc' ) {
  33. // Check to see if this is a sub_total calculation
  34. if ( isset ( $data['calc_method'] ) ) {
  35. $calc_method = $data['calc_method'];
  36. } else {
  37. $calc_method = 'auto';
  38. }
  39. switch ( $calc_method ) {
  40. case 'auto':
  41. if ( isset ( $field_data['calc_auto_include'] ) AND $field_data['calc_auto_include'] == 1 ) {
  42. $calc_listen = 'ninja-forms-field-calc-listen ninja-forms-field-calc-auto';
  43. }
  44. break;
  45. case 'fields':
  46. foreach ( $data['calc'] as $calc ) {
  47. if ( $calc['field'] == $field_id ) {
  48. if ( $calc_listen == '' ) {
  49. $calc_listen = 'ninja-forms-field-calc-listen';
  50. }
  51. break;
  52. }
  53. }
  54. break;
  55. case 'eq':
  56. $eq = $data['calc_eq'];
  57. if (preg_match("/\bfield_".$field_id."\b/i", $eq ) ) {
  58. if ( $calc_listen == '' ) {
  59. $calc_listen = 'ninja-forms-field-calc-listen';
  60. }
  61. break;
  62. }
  63. break;
  64. }
  65. }
  66. }
  67. if ( isset ( $field_data['payment_sub_total'] ) AND $field_data['payment_sub_total'] == 1 ) {
  68. if ( $calc_listen == '' ) {
  69. $calc_listen = 'ninja-forms-field-calc-listen';
  70. }
  71. }
  72. // Check to see if this is a tax field;
  73. if ( $field_type == '_tax' ) {
  74. if ( $calc_listen == '' ) {
  75. $calc_listen = 'ninja-forms-field-calc-listen';
  76. }
  77. }
  78. if ( isset ( $ninja_forms_loading ) ){
  79. $field_class = $ninja_forms_loading->get_field_setting( $field_id, 'field_class' );
  80. $field_class .= ' '.$calc_listen;
  81. $ninja_forms_loading->update_field_setting( $field_id, 'field_class', $field_class );
  82. } else {
  83. $field_class = $ninja_forms_processing->get_field_setting( $field_id, 'field_class' );
  84. $field_class .= ' '.$calc_listen;
  85. $ninja_forms_processing->update_field_setting( $field_id, 'field_class', $field_class );
  86. }
  87. }
  88. }
  89. add_action( 'ninja_forms_display_init', 'ninja_forms_calc_listen_field_class' );