'
. __( 'Completed', 'ninja-forms' ) . '';
$views[ 'trash' ] = ''
. __( 'Trashed', 'ninja-forms' ) . '';
// Checks to make sure we have a post status.
if( ! empty( $_GET[ 'post_status' ] ) ) {
// Depending on the domain set the value to plain text.
if ( 'all' == $_GET[ 'post_status' ] ) {
$views[ 'all' ] = __( 'Completed', 'ninja-forms' );
} else if ( 'trash' == $_GET[ 'post_status' ] ) {
$views[ 'trash' ] = __( 'Trashed', 'ninja-forms' );
}
}
return $views;
}
public function get_page_title()
{
return __( 'Submissions', 'ninja-forms' );
}
/**
* Display
*/
public function display()
{
// This section intentionally left blank.
}
/**
* enqueue scripts here
*/
public function enqueue_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_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' );
}
}
/**
* Change Columns
*
* @return array
*/
public function change_columns()
{
$form_id = ( isset( $_GET['form_id'] ) ) ? $_GET['form_id'] : FALSE;
if( ! $form_id ) return array();
static $cols;
if( $cols ) return $cols;
$cols = array(
'cb' => '',
'seq_num' => __( '#', 'ninja-forms' ),
);
$fields = Ninja_Forms()->form( $form_id )->get_fields();
$hidden_field_types = apply_filters( 'ninja_forms_sub_hidden_field_types', array() );
foreach( $fields as $field ){
if ( is_null( $field ) ) continue;
if( in_array( $field->get_setting( 'type' ), $hidden_field_types ) ) continue;
if ( $field->get_setting( 'admin_label' ) ) {
$cols[ 'field_' . $field->get_id() ] = $field->get_setting( 'admin_label' );
} else {
$cols[ 'field_' . $field->get_id() ] = $field->get_setting( 'label' );
}
}
$cols[ 'sub_date' ] = __( 'Date', 'ninja-forms' );
return $cols;
}
/**
* Custom Columns
*
* @param $column
* @param $sub_id
*/
public function custom_columns( $column, $sub_id )
{
$sub = Ninja_Forms()->form()->get_sub( $sub_id );
switch( $column ){
case 'seq_num':
echo $this->custom_columns_seq_num( $sub );
break;
case 'sub_date':
echo $this->custom_columns_sub_date( $sub );
break;
default:
echo $this->custom_columns_field( $sub, $column );
}
}
/**
* Remove Filter: Show All Dates
*
* @param $months
* @return array
*/
public function remove_filter_show_all_dates( $months )
{
if( ! isset( $_GET[ 'post_type' ] ) || 'nf_sub' != $_GET[ 'post_type' ] ) return $months;
// Returning an empty array should hide the dropdown.
return array();
}
/**
* Add Filters
*
* @return bool
*/
public function add_filters()
{
global $typenow;
// Bail if we aren't in our submission custom post type.
if ( $typenow != 'nf_sub' ) return false;
$forms = Ninja_Forms()->form()->get_forms();
$form_options = array();
foreach( $forms as $form ){
$form_options[ $form->get_id() ] = $form->get_setting( 'title' );
}
$form_options = apply_filters( 'ninja_forms_submission_filter_form_options', $form_options );
asort($form_options);
if( isset( $_GET[ 'form_id' ] ) ) {
$form_selected = $_GET[ 'form_id' ];
} else {
$form_selected = 0;
}
if( isset( $_GET[ 'begin_date' ] ) ) {
$begin_date = $_GET[ 'begin_date' ];
} else {
$begin_date = '';
}
if( isset( $_GET[ 'end_date' ] ) ) {
$end_date = $_GET[ 'end_date' ];
} else {
$end_date = '';
}
Ninja_Forms::template( 'admin-menu-subs-filter.html.php', compact( 'form_options', 'form_selected', 'begin_date', 'end_date' ) );
wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_style( 'jquery-ui-datepicker', Ninja_Forms::$url .'deprecated/assets/css/jquery-ui-fresh.min.css' );
}
public function table_filter( $query )
{
global $pagenow;
if( $pagenow != 'edit.php' || ! is_admin() || ! isset( $query->query['post_type'] ) || 'nf_sub' != $query->query['post_type'] || ! is_main_query() ) return;
$vars = &$query->query_vars;
$form_id = ( ! empty( $_GET['form_id'] ) ) ? $_GET['form_id'] : 0;
$vars = $this->table_filter_by_form( $vars, $form_id );
$vars = $this->table_filter_by_date( $vars );
$vars = apply_filters( 'ninja_forms_sub_table_qv', $vars, $form_id );
}
public function search( $pieces ) {
global $typenow;
// filter to select search query
if ( is_search() && is_admin() && $typenow == 'nf_sub' && isset ( $_GET['s'] ) ) {
global $wpdb;
$keywords = explode(' ', get_query_var('s'));
$query = "";
foreach ($keywords as $word) {
$query .= " (mypm1.meta_value LIKE '%{$word}%') OR ";
}
if (!empty($query)) {
// Escape place holders for the where clause.
$pieces[ 'where' ] = $wpdb->remove_placeholder_escape( $pieces[ 'where' ] );
// add to where clause
$pieces[ 'where' ] = str_replace("((({$wpdb->posts}.post_title LIKE '%", "({$query}(({$wpdb->posts}.post_title LIKE '%", $pieces[ 'where' ]);
$pieces[ 'join' ] = $pieces[ 'join' ] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON ({$wpdb->posts}.ID = mypm1.post_id)";
}
}
return ( $pieces );
}
public function remove_bulk_edit( $actions ) {
unset( $actions['edit'] );
return $actions;
}
public function bulk_admin_footer() {
global $post_type;
if ( ! is_admin() )
return false;
if( $post_type == 'nf_sub' && isset ( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'all' ) {
?>
sub(esc_html($_REQUEST['export_single']))->export();
}
if ((isset ($_REQUEST['action']) && $_REQUEST['action'] == 'export') || (isset ($_REQUEST['action2']) && $_REQUEST['action2'] == 'export')) {
$sub_ids = array();
if (isset($_REQUEST['post'])) {
$sub_ids = WPN_Helper::esc_html($_REQUEST['post']);
}
Ninja_Forms()->form( $_REQUEST['form_id'] )->export_subs( $sub_ids );
}
if (isset ($_REQUEST['download_file']) && !empty($_REQUEST['download_file'])) {
// Open our download all file
$filename = esc_html($_REQUEST['download_file']);
$upload_dir = wp_upload_dir();
$file_path = trailingslashit($upload_dir['path']) . $filename . '.csv';
if (file_exists($file_path)) {
$myfile = file_get_contents($file_path);
} else {
$redirect = esc_url_raw(remove_query_arg(array('download_file', 'download_all')));
wp_redirect($redirect);
die();
}
unlink($file_path);
$form_name = Ninja_Forms()->form(absint($_REQUEST['form_id']))->get()->get_setting('title');
$form_name = sanitize_title($form_name);
$today = date('Y-m-d', current_time('timestamp'));
$filename = apply_filters('ninja_forms_download_all_filename', $form_name . '-all-subs-' . $today);
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="' . $filename . '.csv"');
header('Pragma: no-cache');
header('Expires: 0');
echo $myfile;
die();
}
}
public function hide_page_title_action()
{
// If we are on our the nf_sub post type then....
if( ( isset( $_GET[ 'post_type' ] ) && 'nf_sub' == $_GET[ 'post_type'] ) ||
'nf_sub' == get_post_type() ) {
// ...then hiding the "Add New" button on the CPT page.
echo '';
}
}
/*
* PRIVATE METHODS
*/
/**
* Custom Columns: ID
*
* @param $sub
* @return mixed
*/
private function custom_columns_seq_num( $sub )
{
return $sub->get_seq_num();
}
/**
* Custom Columns: Submission Date
*
* @param $sub
* @return mixed
*/
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 );
}
/**
* Custom Columns: Field
*
* @param $sub
* @param $column
* @return bool
*/
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(
array(
'key' => '_form_id',
'value' => $form_id,
'compare' => '=',
),
);
}
return $vars;
}
private function table_filter_by_date( $vars )
{
if( empty( $_GET[ 'begin_date' ] ) || empty( $_GET[ 'end_date' ] ) ) return $vars;
$begin_date = $_GET[ 'begin_date' ];
$end_date = $_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(
'after' => $begin_date,
'before' => $end_date,
'inclusive' => true,
);
}
return $vars;
}
public function get_capability()
{
return apply_filters( 'ninja_forms_admin_submissions_capabilities', $this->capability );
}
}