sub-limit.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /**
  3. * Function that checks the current sub count and updates the loading class if neccesary.
  4. * @param $string $form_id
  5. * @since 2.5
  6. * @return void
  7. */
  8. function nf_check_sub_limit( $form_id ) {
  9. global $ninja_forms_loading;
  10. if ( ! isset( $ninja_forms_loading ) )
  11. return false;
  12. $sub_limit = $ninja_forms_loading->get_form_setting( 'sub_limit_number' );
  13. if ( !$sub_limit or empty ( $sub_limit ) )
  14. return false;
  15. $args = array(
  16. 'form_id' => $form_id,
  17. 'action' => 'submit',
  18. );
  19. $sub_count = ninja_forms_get_sub_count( $args );
  20. if ( $sub_count >= $sub_limit ) {
  21. $ninja_forms_loading->update_form_setting( 'sub_limit_reached', true );
  22. }
  23. }
  24. add_action( 'ninja_forms_display_init', 'nf_check_sub_limit' );
  25. /**
  26. * Function that filters the display variable and returns false if sub limit has been reached.
  27. * @param bool $display
  28. * @param string $form_id
  29. * @since 2.5
  30. * @return string $display
  31. */
  32. function nf_sub_limit_display_filter( $display, $form_id ) {
  33. global $ninja_forms_loading;
  34. if ( ! isset( $ninja_forms_loading ) )
  35. return $display;
  36. if ( $ninja_forms_loading->get_form_setting( 'sub_limit_reached' ) ) {
  37. $display = 0;
  38. }
  39. return $display;
  40. }
  41. add_filter( 'ninja_forms_display_show_form', 'nf_sub_limit_display_filter', 10, 2 );
  42. /**
  43. * Function that echoes the sub limit reached message if necessary.
  44. * @param string $form_id
  45. * @since 2.5
  46. * @return void
  47. */
  48. function nf_sub_limit_display_msg( $form_id ) {
  49. global $ninja_forms_loading;
  50. if ( ! isset( $ninja_forms_loading ) )
  51. return false;
  52. if ( $ninja_forms_loading->get_form_setting( 'sub_limit_reached' ) ) {
  53. $msg = $ninja_forms_loading->get_form_setting( 'sub_limit_msg' );
  54. $msg = wpautop( $msg );
  55. $msg = do_shortcode( $msg );
  56. $msg = '<div class="sub-limit-reached-msg">' . $msg . '</div>';
  57. $msg = apply_filters( 'nf_sub_limit_reached_msg', $msg, $form_id );
  58. echo $msg;
  59. }
  60. }
  61. add_action( 'ninja_forms_display_user_not_logged_in', 'nf_sub_limit_display_msg' );