'',
'title' => __( 'Title', 'ivory-search' ),
'shortcode' => __( 'Shortcode', 'ivory-search' ),
'author' => __( 'Author', 'ivory-search' ),
'date' => __( 'Date', 'ivory-search' ),
);
return $columns;
}
function __construct() {
parent::__construct( array(
'singular' => 'post',
'plural' => 'posts',
'ajax' => false,
) );
}
function prepare_items() {
$current_screen = get_current_screen();
$per_page = $this->get_items_per_page( 'is_search_forms_per_page' );
$this->_column_headers = $this->get_column_info();
$args = array(
'posts_per_page' => $per_page,
'orderby' => 'title',
'order' => 'ASC',
'offset' => ( $this->get_pagenum() - 1 ) * $per_page,
);
if ( ! empty( $_REQUEST['s'] ) ) {
$args['s'] = $_REQUEST['s'];
}
if ( ! empty( $_REQUEST['orderby'] ) ) {
if ( 'title' == $_REQUEST['orderby'] ) {
$args['orderby'] = 'title';
} elseif ( 'author' == $_REQUEST['orderby'] ) {
$args['orderby'] = 'author';
} elseif ( 'date' == $_REQUEST['orderby'] ) {
$args['orderby'] = 'date';
}
}
if ( ! empty( $_REQUEST['order'] ) ) {
if ( 'asc' == strtolower( $_REQUEST['order'] ) ) {
$args['order'] = 'ASC';
} elseif ( 'desc' == strtolower( $_REQUEST['order'] ) ) {
$args['order'] = 'DESC';
}
}
$this->items = IS_Search_Form::find( $args );
$total_items = IS_Search_Form::count();
$total_pages = ceil( $total_items / $per_page );
$this->set_pagination_args( array(
'total_items' => $total_items,
'total_pages' => $total_pages,
'per_page' => $per_page,
) );
}
function get_columns() {
return get_column_headers( get_current_screen() );
}
function get_sortable_columns() {
$columns = array(
'title' => array( 'title', true ),
'author' => array( 'author', false ),
'date' => array( 'date', false ),
);
return $columns;
}
function get_bulk_actions() {
$actions = array(
'delete' => __( 'Delete', 'ivory-search' ),
);
return $actions;
}
function column_default( $item, $column_name ) {
return '';
}
function column_cb( $item ) {
if ( 'Default Search Form' !== $item->title() || defined( 'DELETE_DEFAULT_SEARCH_FORM' ) ) {
return sprintf(
'',
$this->_args['singular'],
$item->id() );
} else {
return '';
}
}
function column_title( $item ) {
$url = admin_url( 'admin.php?page=ivory-search&post=' . absint( $item->id() ) );
$edit_link = add_query_arg( array( 'action' => 'edit' ), $url );
$output = sprintf(
'%3$s',
esc_url( $edit_link ),
/* translators: %s: title of search form */
esc_attr( sprintf( __( 'Edit “%s”', 'ivory-search' ),
$item->title() ) ),
esc_html( $item->title() )
);
$output = sprintf( '%s', $output );
$actions = array(
'edit' => sprintf( '%2$s',
esc_url( $edit_link ),
esc_html( __( 'Edit', 'ivory-search' ) ) ) );
if ( current_user_can( 'is_edit_search_form', $item->id() ) ) {
$copy_link = wp_nonce_url(
add_query_arg( array( 'action' => 'copy' ), $url ),
'is-copy-search-form_' . absint( $item->id() ) );
$actions = array_merge( $actions, array(
'copy' => sprintf( '%2$s',
esc_url( $copy_link ),
esc_html( __( 'Duplicate', 'ivory-search' ) )
),
) );
}
if ( current_user_can( 'is_delete_search_form', $item->id() ) && ( 'Default Search Form' !== $item->title() || defined( 'DELETE_DEFAULT_SEARCH_FORM' ) ) ) {
$delete_link = wp_nonce_url(
add_query_arg( array( 'action' => 'delete' ), $url ),
'is-delete-search-form_' . absint( $item->id() ) );
$actions = array_merge( $actions, array(
'delete' => sprintf( '%3$s',
esc_url( $delete_link ),
"onclick=\"if (confirm('" . esc_js( __( "You are about to delete this search form.\n 'Cancel' to stop, 'OK' to delete.", 'ivory-search' ) ) . "')) {return true;} return false;\"",
esc_html( __( 'Delete', 'ivory-search' ) )
),
) );
}
$output .= $this->row_actions( $actions );
return $output;
}
function column_author( $item ) {
$post = get_post( $item->id() );
if ( ! $post ) {
return;
}
$author = get_userdata( $post->post_author );
if ( false === $author ) {
return;
}
return esc_html( $author->display_name );
}
function column_shortcode( $item ) {
$shortcodes = array( $item->shortcode() );
$output = '';
foreach ( $shortcodes as $shortcode ) {
$output .= "\n" . '';
}
return trim( $output );
}
function column_date( $item ) {
$post = get_post( $item->id() );
if ( ! $post ) {
return;
}
$t_time = mysql2date( __( 'Y/m/d g:i:s A', 'ivory-search' ),
$post->post_date, true );
$m_time = $post->post_date;
$time = mysql2date( 'G', $post->post_date )
- get_option( 'gmt_offset' ) * 3600;
$time_diff = time() - $time;
if ( $time_diff > 0 && $time_diff < 24*60*60 ) {
/* translators: %s: time since the creation of the search form */
$h_time = sprintf(
__( '%s ago', 'ivory-search' ), human_time_diff( $time ) );
} else {
$h_time = mysql2date( __( 'd/m/Y', 'ivory-search' ), $m_time );
}
return '' . $h_time . '';
}
}