'', '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 . ''; } }