: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
return $sub->get_seq_num();
* Custom Columns: Submission Date
private function custom_columns_sub_date( $sub )
// Grab the date and time format options
$date_format = get_option( 'date_format' );
$time_format = get_option( 'time_format' );
// Get the sub dates using the date and time formats.
return $sub->get_sub_date( $date_format . ' ' . $time_format );
private function custom_columns_field( $sub, $column )
if( FALSE === strpos( $column, 'field_' ) ) return FALSE;
$field_id = str_replace( 'field_', '', $column );
return $sub->get_field_value( $field_id );
private function table_filter_by_form( $vars, $form_id )
if ( ! isset ( $vars['meta_query'] ) ) {
$vars['meta_query'] = array(
private function table_filter_by_date( $vars )
if( empty( $_GET[ 'begin_date' ] ) || empty( $_GET[ 'end_date' ] ) ) return $vars;
$begin_date = WPN_Helper::sanitize_text_field($_GET[ 'begin_date' ]);
$end_date = WPN_Helper::sanitize_text_field($_GET[ 'end_date' ]);
// Include submissions on the end_date.
$end_date = date( 'm/d/Y', strtotime( '+1 day', strtotime( $end_date ) ) );
if ( ! isset ( $vars['date_query'] ) ) {
$vars['date_query'] = array(
public function enqueue_legacy_scripts()
// let's check and make sure we're on the submissions page.
$test = strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' );
if( isset( $_GET[ 'post_type' ] ) && 'nf_sub' == $_GET[ 'post_type' ]
&& -1 < strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' )
wp_enqueue_style( 'nf-admin-settings', Ninja_Forms::$url . 'assets/css/admin-settings.css', ['wp-components'] );
wp_register_script( 'ninja_forms_admin_submissions',
Ninja_Forms::$url . 'assets/js/admin-submissions.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'ninja_forms_admin_submissions' );
//Enqueue Submissions page components
if( $wp_version >= "5.4" ){
//Get Dependencies and Version from build asset.php generated by wp-scripts
$submissions_asset_php = [
"dependencies" => ['jquery'],
if( file_exists( Ninja_Forms::$dir . "build/submissions.asset.php" ) ){
$asset_php = include( Ninja_Forms::$dir . "build/submissions.asset.php" );
$submissions_asset_php["dependencies"] = array_merge( $submissions_asset_php["dependencies"], $asset_php["dependencies"]);
$submissions_asset_php["version"] = $asset_php["version"];
//Register Submission script
wp_register_script( 'ninja_forms_admin_submissions_actions',
Ninja_Forms::$url . 'build/submissions.js', $submissions_asset_php["dependencies"], $submissions_asset_php["version"], false );
wp_enqueue_script( 'ninja_forms_admin_submissions_actions' );
wp_set_script_translations( "ninja_forms_admin_submissions_actions", "ninja-forms", plugin_dir_path( __FILE__ ) . 'lang' );
//Get all forms, to base form selector on.
$forms = Ninja_Forms()->form()->get_forms();
foreach ($forms as $form) {
$actions = Ninja_Forms()->form( $form->get_id() )->get_actions();
$form_email_actions = [];
foreach( $actions as $action ){
if ( ! is_null( $action ) && ! empty( $action ) ) {
if($action->get_settings('type') === 'email'){
$form_email_actions[$action->get_id()] = $action->get_settings();
if( !empty($form_email_actions) ){
$forms[$form->get_id()] = [
'formID' => absint($form->get_id()),
'formTitle' => esc_textarea( $form->get_setting( 'title' ) ),
'emailActions' => $form_email_actions
wp_localize_script('ninja_forms_admin_submissions_actions', 'nf_submissions', [
'forms' => $forms,//array keys escaped above
'dateFormat' => esc_attr( Ninja_Forms()->get_setting('date_format') ),
'timeFormat' => esc_attr( get_option('time_format') ),
'siteUrl' => esc_url_raw( site_url() ),
'adminUrl' => esc_url_raw( admin_url() ),
'restUrl' => esc_url_raw( get_rest_url() ),
'token' => wp_create_nonce( 'wp_rest' )
wp_enqueue_style( 'nf-submissions-flatpickr', Ninja_Forms::$url . 'assets/css/flatpickr.css' );
public function get_page_title()
return esc_html__( 'Submissions', 'ninja-forms' );
public function display()
if ( ! $this->load_legacy ) {
echo '<div id="nf-submissions-element"></div>';
public function body_class( $classes )
// Add class for the builder.
if( isset( $_GET['page'] ) && $_GET['page'] == $this->menu_slug ) {
$classes = "$classes ninja-forms-submissions";
public function enqueue_scripts( $page ) {
// let's check and make sure we're on the submissions page.
if( isset( $page ) && substr( $page, -strlen( "_page_nf-submissions" ) ) === "_page_nf-submissions") {
wp_enqueue_style( 'nf-admin-settings', Ninja_Forms::$url . 'assets/css/admin-settings.css', ['wp-components'] );
wp_register_script( 'ninja_forms_admin_submissions', Ninja_Forms::$url . 'assets/js/admin-submissions.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'ninja_forms_admin_submissions' );
//Enqueue Submissions page components
if( $wp_version >= "5.4" ){
//Get Dependencies and Version from build asset.php generated by wp-scripts
$submissions_asset_php = [
"dependencies" => ['jquery'],
if( file_exists( Ninja_Forms::$dir . "build/submissions.asset.php" ) ){
$asset_php = include( Ninja_Forms::$dir . "build/submissions.asset.php" );
$submissions_asset_php["dependencies"] = array_merge( $submissions_asset_php["dependencies"], $asset_php["dependencies"]);
$submissions_asset_php["version"] = $asset_php["version"];
//Get JS Submissions assets details
if( file_exists( Ninja_Forms::$dir . "build/submissions.scss.asset.php" ) ){
$asset_scss = include( Ninja_Forms::$dir . "build/submissions.scss.asset.php" );
$submissions_asset_scss_version = isset($asset_scss) ? $asset_scss["version"] : Ninja_Forms::VERSION;
//Register Submission script
wp_register_script( 'ninja_forms_admin_submissions_actions', Ninja_Forms::$url . 'build/submissions.js', $submissions_asset_php["dependencies"], $submissions_asset_php["version"], false );
wp_enqueue_script( 'ninja_forms_admin_submissions_actions' );
wp_set_script_translations( "ninja_forms_admin_submissions_actions", "ninja-forms", plugin_dir_path( __FILE__ ) . 'lang' );
//Enqueue Submissions style
wp_enqueue_style( 'ninja_forms_admin_submissions_style', Ninja_Forms::$url . 'build/submissions.scss.css', [], $submissions_asset_scss_version );
//Get all forms, to base form selector on.
$forms = Ninja_Forms()->form()->get_forms();
foreach ($forms as $form) {
$actions = Ninja_Forms()->form( $form->get_id() )->get_actions();
$form_email_actions = [];
foreach( $actions as $action ){
if ( ! is_null( $action ) && ! empty( $action ) ) {
if($action->get_settings('type') === 'email'){
$form_email_actions[$action->get_id()] = $action->get_settings();
// Remove conditional, previously only added keyed data if $form_email_actions not empty
$forms[$form->get_id()] = [
'formID' => absint($form->get_id()),
'formTitle' => esc_textarea($form->get_setting('title')),
'emailActions' => $form_email_actions
$date_format = !empty( Ninja_Forms()->get_setting('date_format') ) ? Ninja_Forms()->get_setting('date_format') : get_option('date_format');
$localized_data_array = apply_filters("ninja_forms_submissions_view_localize_data", [
'forms' => $forms,//array keys escaped above
'dateFormat' => esc_attr( $date_format ),
'timeFormat' => esc_attr( get_option('time_format') ),
'siteUrl' => esc_url_raw( site_url() ),
'adminUrl' => esc_url_raw( admin_url() ),
'restUrl' => esc_url_raw( get_rest_url() ),
'token' => wp_create_nonce( 'wp_rest' ),
'submissionsSettings' => get_option( 'ninja_forms_submissions_settings' )
wp_localize_script('ninja_forms_admin_submissions_actions', 'nf_submissions', $localized_data_array);
wp_enqueue_style( 'nf-submissions-flatpickr', Ninja_Forms::$url . 'assets/css/flatpickr.css' );
public function get_capability()
return apply_filters( 'ninja_forms_admin_submissions_capabilities', $this->capability );