'form',
'plural' => 'forms',
'ajax' => false,
)
);
$this->per_page = apply_filters('ng_forms_overview_per_page', 20);
}
/**
* Manage form listing screen columns
*
* @since 1.0.0
* @return mixed
*/
public function get_columns()
{
$columns = array(
'cb' => '',
'form_name' => __('Name', 'ngForms'),
'shortcode' => __('Shortcode', 'ngForms'),
'created' => __('Created', 'ngForms'),
);
return apply_filters('ng_forms_overview_table_columns', $columns);
}
/**
* Manage posts selection through for bulk action
*
* @since 1.0.0
* @param mixed $form
* @return string
*/
public function column_cb($form)
{
return '';
}
/**
* Implements default columns
*
* @since 1.0.0
* @param mixed $form
* @param string $column_name
* @return mixed
*/
public function column_default($form, $column_name)
{
switch ($column_name) {
case 'id':
$value = $form->ID;
break;
case 'shortcode':
$value = '[ngForms id="' . $form->ID . '"]';
break;
case 'created':
$value = get_the_date(get_option('date_format'), $form);
break;
case 'modified':
$value = get_post_modified_time(get_option('date_format'), false, $form);
break;
case 'author':
$author = get_userdata($form->post_author);
$value = $author->display_name;
break;
case 'php':
$value = 'if( function_exists( \'wpforms_get\' ) ){ wpforms_get( ' . $form->ID . ' ); }';
break;
default:
$value = '';
}
return apply_filters('ng_forms_overview_table_column_value', $value, $form, $column_name);
}
/**
* Manage form post edit/preview/delete actions
*
* @since 1.0.0
* @param mixed $status
* @param string $option
* @param mixed $value
* @return mixed
*/
public function column_form_name($form)
{
$name = !empty($form->post_title) ? $form->post_title : $form->post_name;
$name = sprintf(
'%s',
add_query_arg(
array(
'id' => $form->ID,
),
admin_url('admin.php?page=ng-edit-form')
),
__('Edit this form', 'ngForms'),
$name
);
$row_actions = array();
$row_actions['edit'] = sprintf(
'%s',
add_query_arg(
array(
'id' => $form->ID,
),
admin_url('admin.php?page=ng-edit-form')
),
__('Edit this form', 'ngForms'),
__('Edit', 'ngForms')
);
$row_actions['preview_'] = sprintf(
'%s',
esc_url($this->form_preview_url($form->ID)),
__('View preview', 'ngForms'),
__('Preview', 'ngForms')
);
$row_actions['delete'] = sprintf(
'%s',
wp_nonce_url(
add_query_arg(
array(
'action' => 'delete',
'form_id' => $form->ID,
),
admin_url('admin.php?page=ng-forms')
),
'ng_forms_delete_form_nonce'
),
__('Delete this form', 'ngForms'),
__('Delete', 'ngForms')
);
$value = $name . $this->row_actions($row_actions);
return apply_filters('ng_forms_overview_row_actions', $value, $form);
}
/**
* Get preview form URL
*
* @since 1.0.0
* @param mixed $form_id
* @return mixed
*/
public function form_preview_url( $form_id ) {
$id = get_option( 'ngContact_form_preview_page' );
if ( ! $id ) {
return home_url();
}
$url = get_permalink( $id );
if ( ! $url ) {
return home_url();
}
return add_query_arg(
array(
'form_id' => absint( $form_id ),
),
$url
);
}
/**
* Manage delete bulk action
*
* @since 1.0.0
* @return mixed
*/
public function get_bulk_actions()
{
$actions = array(
'delete' => __('Delete', 'ngForms'),
);
return $actions;
}
/**
* Process form post deletion action
*
* @since 1.0.0
*/
public function process_bulk_actions()
{
$ids = isset($_GET['form_id']) ? $_GET['form_id'] : array();
if (!is_array($ids)) {
$ids = array($ids);
}
$ids = array_map('absint', $ids);
$action = !empty($_REQUEST['action']) ? $_REQUEST['action'] : false;
if (empty($ids) || empty($action)) {
return;
}
if ('delete' === $this->current_action()) {
if (
wp_verify_nonce($_GET['_wpnonce'], 'bulk-forms') ||
wp_verify_nonce($_GET['_wpnonce'], 'ng_forms_delete_form_nonce')
) {
foreach ($ids as $id) {
wp_delete_post($id);
}
?>