items = $cron_jobs; parent::__construct( array( 'singular' => 'cron_list', // Singular label. 'plural' => 'cron_lists', // Plural label, also this well be one of the table css class. 'ajax' => false, // We won't support Ajax for this table. ) ); } /** * Add extra markup in the toolbars before or after the list. * * @param string $which Whether the markup should appear after (bottom) or before (top) the list. */ public function extra_tablenav( $which ) { if ( 'top' === $which ) { echo '
'; _e( 'This is the list of jobs that are currently scheduled for auto deleting posts in Bulk Delete Plugin.', 'bulk-delete' ); $total_items = count( $this->items ); if ( 0 === $total_items ) { echo ' '; _e( 'Note: ', 'bulk-delete' ); echo ''; _e( 'Scheduling auto post or user deletion is available only when you buy pro addons.', 'bulk-delete' ); } echo '
'; } } /** * Define the columns that are going to be used in the table. * * @return array Array of columns to use with the table */ public function get_columns() { return array( 'col_cron_due' => __( 'Next Due', 'bulk-delete' ), 'col_cron_schedule' => __( 'Schedule', 'bulk-delete' ), 'col_cron_type' => __( 'Type', 'bulk-delete' ), 'col_cron_options' => __( 'Options', 'bulk-delete' ), ); } /** * Decide which columns to activate the sorting functionality on. * * @return array Array of columns that can be sorted by the user */ public function get_sortable_columns() { return array( 'col_cron_type' => array( 'cron_type', true ), ); } /** * Prepare the table with different parameters, pagination, columns and table elements. */ public function prepare_items() { $total_items = count( $this->items ); $items_per_page = 50; $this->set_pagination_args( array( 'total_items' => $total_items, 'total_pages' => ceil( $total_items / $items_per_page ), 'per_page' => $items_per_page, ) ); $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array( $columns, $hidden, $sortable ); } /** * Display cron due date column. * * @param array $item The item to be displayed in the row. * * @return string Column output. */ public function column_col_cron_due( $item ) { $actions = array( 'delete' => sprintf( '%s', $_REQUEST['page'], 'delete_cron', $item['id'], 'bd-delete_cron-nonce', wp_create_nonce( 'bd-delete_cron' ), __( 'Delete', 'bulk-delete' ) ), 'run' => sprintf( '%s', $_REQUEST['page'], 'run_cron', $item['id'], 'bd-run_cron-nonce', wp_create_nonce( 'bd-run_cron' ), __( "'Are you sure you want to run the schedule job manually'", 'bulk-delete' ), __( 'Run Now', 'bulk-delete' ) ), ); // Return the title contents. return sprintf( '%1$s (%2$s)%3$s', /*$1%s*/ $item['due'], /*$2%s*/ ( $item['timestamp'] + get_option( 'gmt_offset' ) * 60 * 60 ), /*$3%s*/ $this->row_actions( $actions ) ); } /** * Display cron schedule column. * * @param array $item The item to be displayed in the row. */ public function column_col_cron_schedule( $item ) { echo $item['schedule']; } /** * Display cron type column. * * @param array $item The item to be displayed in the row. */ public function column_col_cron_type( $item ) { if ( isset( $item['args'][0]['cron_label'] ) ) { echo esc_html( $item['args'][0]['cron_label'] ); } else { echo esc_html( $item['type'] ); } } /** * Display cron options column. * * @param array $item The item to be displayed in the row. */ public function column_col_cron_options( $item ) { // TODO: Make it pretty print_r( $item['args'] ); } /** * Generates the message when no items are present. */ public function no_items() { _e( 'You have not scheduled any bulk delete jobs.', 'bulk-delete' ); } }