Current File : /home/giriqfky/trustyourlawyer.com/wp-content/plugins/ninja-forms/includes/Admin//AllFormsTable.php
<?php if ( ! defined( 'ABSPATH' ) ) exit;
if( ! class_exists( 'WP_List_Table' ) ){
if( file_exists( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ) ) {
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
} else {
//TODO: Load local wp-list-table-class.php
}
}
class NF_Admin_AllFormsTable extends WP_List_Table
{
/** Class constructor */
public function __construct() {
parent::__construct( array(
'singular' => esc_html__( 'Form', 'ninja-forms' ), //singular name of the listed records
'plural' => esc_html__( 'Forms', 'ninja-forms' ), //plural name of the listed records
'ajax' => false //should this table support ajax?
) );
}
public function no_items() {
esc_html_e( 'No forms found.', 'ninja-forms' );
}
/**
* Prepare the items for the table to process
*
* @return Void
*/
public function prepare_items()
{
wp_enqueue_script( 'nf-all-forms', Ninja_Forms::$url . 'assets/js/all-forms.js' );
wp_localize_script( 'nf-all-forms', 'nfi18n', array(
'confirm_delete' => esc_html__( 'Really Delete This Form? This will remove all fields and submission data. Recovery is not possible.', 'ninja-forms' ),
) );
$columns = $this->get_columns();
$hidden = $this->get_hidden_columns();
$sortable = $this->get_sortable_columns();
$data = $this->table_data();
usort( $data, array( &$this, 'sort_data' ) );
$perPage = 20;
$currentPage = $this->get_pagenum();
$totalItems = count($data);
$this->set_pagination_args( array(
'total_items' => $totalItems,
'per_page' => $perPage
) );
$data = array_slice($data,(($currentPage-1)*$perPage),$perPage);
$this->_column_headers = array($columns, $hidden, $sortable);
$this->items = $data;
}
/**
* Override the parent columns method. Defines the columns to use in your listing table
*
* @return Array
*/
public function get_columns()
{
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => esc_html__( 'Form Title', 'ninja-forms' ),
'shortcode' => esc_html__( 'Shortcode', 'ninja-forms' ),
'date' => esc_html__( 'Created', 'ninja-forms' )
);
return $columns;
}
/**
* Define which columns are hidden
*
* @return Array
*/
public function get_hidden_columns()
{
return array();
}
/**
* Define the sortable columns
*
* @return Array
*/
public function get_sortable_columns()
{
return array(
'title' => array( esc_attr__( 'title', 'ninja-forms' ), TRUE ),
'date' => array( esc_attr__( 'date', 'ninja-forms' ), TRUE ),
);
}
/**
* Get the table data
*
* @return Array
*/
private function table_data()
{
$data = array();
$forms = Ninja_Forms()->form()->get_forms();
foreach( $forms as $form ){
$data[] = array(
'id' => $form->get_id(),
'title' => $form->get_setting( 'title' ),
'shortcode' => apply_filters ( 'ninja_forms_form_list_shortcode','[ninja_form id=' . $form->get_id() . ']', $form->get_id() ),
'date' => $form->get_setting( 'created_at' )
);
}
return $data;
}
/**
* Define what data to show on each column of the table
*
* @param Array $item Data
* @param String $column_name - Current column name
*
* @return Mixed
*/
public function column_default( $item, $column_name )
{
switch( $column_name ) {
case 'title':
case 'shortcode':
case 'date':
return $item[ $column_name ];
default:
return print_r( $item, true ) ;
}
}
/**
* Allows you to sort the data by the variables set in the $_GET
*
* @return Mixed
*/
private function sort_data( $a, $b )
{
// Set defaults
$orderby = 'id';
$order = 'asc';
// If orderby is set, use this as the sort column
if(!empty($_GET['orderby']))
{
$orderby = WPN_Helper::sanitize_text_field($_GET['orderby']);
}
// If order is set use this as the order
if(!empty($_GET['order']))
{
$order = WPN_Helper::sanitize_text_field($_GET['order']);
}
$result = strnatcmp( $a[$orderby], $b[$orderby] );
if($order === 'asc')
{
return $result;
}
return -$result;
}
function column_cb( $item )
{
return sprintf(
'<input type="checkbox" name="bulk-delete[]" value="%s" />', $item['id']
);
}
function column_title( $item )
{
$title = $item[ 'title' ];
$edit_url = add_query_arg( 'form_id', $item[ 'id' ], admin_url( 'admin.php?page=ninja-forms') );
$delete_url = add_query_arg( array( 'action' => 'delete', 'id' => $item[ 'id' ], '_wpnonce' => wp_create_nonce( 'nf_delete_form' )));
$duplicate_url = add_query_arg( array( 'action' => 'duplicate', 'id' => $item[ 'id' ], '_wpnonce' => wp_create_nonce( 'nf_duplicate_form' )));
$preview_url = add_query_arg( 'nf_preview_form', $item[ 'id' ], site_url() );
$submissions_url = add_query_arg( 'form_id', $item[ 'id' ], admin_url( 'edit.php?post_status=all&post_type=nf_sub') );
$form = Ninja_Forms()->form( $item[ 'id' ] )->get();
$locked = $form->get_setting( 'lock' );
Ninja_Forms::template( 'admin-menu-all-forms-column-title.html.php', compact( 'title', 'edit_url', 'delete_url', 'duplicate_url', 'preview_url', 'submissions_url', 'locked' ) );
}
public function single_row( $item )
{
$form = Ninja_Forms()->form( $item[ 'id' ] )->get();
echo '<tr>';
$this->single_row_columns( $item );
echo '</tr>';
}
/**
* Returns an associative array containing the bulk action
*
* @return array
*/
public function get_bulk_actions()
{
$actions = array(
'bulk-delete' => esc_html__( 'Delete', 'ninja-forms' )
);
return $actions;
}
public static function process_bulk_action()
{
if( ! isset( $_GET[ 'page' ] ) || 'ninja-forms' != $_GET[ 'page' ] ) return;
if ( isset( $_REQUEST[ 'action' ] ) && 'duplicate' === $_REQUEST[ 'action' ] ) {
// In our file that handles the request, verify the nonce.
$nonce = esc_attr( $_REQUEST['_wpnonce'] );
if ( ! wp_verify_nonce( $nonce, 'nf_duplicate_form' ) ) {
die( esc_html__( 'Go get a life, script kiddies', 'ninja-forms' ) );
}
else {
NF_Database_Models_Form::duplicate( absint( $_GET['id'] ) );
}
wp_redirect( admin_url( 'admin.php?page=ninja-forms' ) );
exit;
}
if ( isset( $_REQUEST[ 'action' ] ) && 'delete' === $_REQUEST[ 'action' ] ) {
// In our file that handles the request, verify the nonce.
$nonce = esc_attr( $_REQUEST['_wpnonce'] );
if ( ! wp_verify_nonce( $nonce, 'nf_delete_form' ) ) {
die( esc_html__( 'Go get a life, script kiddies', 'ninja-forms' ) );
}
else {
self::delete_item( absint( $_GET['id'] ) );
}
wp_redirect( admin_url( 'admin.php?page=ninja-forms' ) );
exit;
}
// If the delete bulk action is triggered
if ( ( isset( $_POST['action'] ) && $_POST['action'] == 'bulk-delete' )
|| ( isset( $_POST['action2'] ) && $_POST['action2'] == 'bulk-delete' )
) {
// In our file that handles the request, verify the nonce.
$nonce = esc_attr( $_REQUEST['_wpnonce'] );
if ( ! wp_verify_nonce( $nonce, 'bulk-forms' ) ) {
die( esc_html__( 'Go get a life, script kiddies', 'ninja-forms' ) );
}
if( isset( $_POST[ 'bulk-delete' ] ) ) {
$delete_ids = esc_sql($_POST['bulk-delete']);
// loop over the array of record IDs and delete them
foreach ($delete_ids as $id) {
self::delete_item(absint($id));
}
}
wp_redirect( admin_url( 'admin.php?page=ninja-forms' ) );
exit;
}
}
public static function delete_item( $id )
{
$form = Ninja_Forms()->form( $id )->get();
$form->delete();
}
} // END CLASS NF_Admin_AllFormsTable