'ad', 'plural' => 'ads', )); } function column_default($item, $column_name) { return $item[$column_name]; } function column_published($item) { return ($item['published'] ? 'On' : 'Off'); } function column_impressions($item) { return adsnipp_count_impression($item['id']); } function column_clicks($item) { return adsnipp_count_clicks($item['id']); } function column_title($item) { $actions = array( 'edit' => sprintf('%s', $item['id'], __('Edit', 'adsnipp')), 'delete' => sprintf('%s', $_REQUEST['page'], $item['id'], __('Delete', 'adsnipp')), ); return sprintf('%s %s', $item['title'], $this->row_actions($actions) ); } function column_cb($item) { return sprintf( '', $item['id'] ); } function get_columns() { $columns = array( 'cb' => '', 'title' => __('Title', 'adsnipp'), 'network' => __('Ad Network', 'adsnipp'), 'platform' => __('Platform', 'adsnipp'), 'impressions' => __('Impressions', 'adsnipp'), 'clicks' => __('Clicks', 'adsnipp'), 'published' => __('Status', 'adsnipp'), ); return $columns; } function get_sortable_columns() { $sortable_columns = array( 'title' => array('title', true), 'platform' => array('platform', false), /*'impressions' => array('impressions', false), 'clicks' => array('clicks', false),*/ ); return $sortable_columns; } function get_bulk_actions() { $actions = array( 'on' => 'On', 'off' => 'Off', 'delete' => 'Delete', ); return $actions; } function process_bulk_action() { global $wpdb; $table_name = $wpdb->prefix . 'adsnipp_ads'; $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : array(); if (is_array($ids)) { $ids = implode(',', $ids); } if (!empty($ids)) { if ('on' === $this->current_action()) { $wpdb->query("UPDATE $table_name SET published = 1 WHERE id IN($ids)"); } else if ('off' === $this->current_action()) { $wpdb->query("UPDATE $table_name SET published = 0 WHERE id IN($ids)"); } else if ('delete' === $this->current_action()) { $wpdb->query("DELETE FROM $table_name WHERE id IN($ids)"); $wpdb->query("DELETE FROM {$wpdb->prefix}adsnipp_stats WHERE ad_id IN($ids)"); } } } function prepare_items() { global $wpdb; $table_name = $wpdb->prefix . 'adsnipp_ads'; $per_page = 5; $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); $this->process_bulk_action(); $total_items = $wpdb->get_var("SELECT COUNT(id) FROM $table_name"); $paged = isset($_REQUEST['paged']) ? max(0, intval($_REQUEST['paged']) - 1) : 0; $orderby = (isset($_REQUEST['orderby']) && in_array($_REQUEST['orderby'], array_keys($this->get_sortable_columns()))) ? $_REQUEST['orderby'] : 'title'; $order = (isset($_REQUEST['order']) && in_array($_REQUEST['order'], array('asc', 'desc'))) ? $_REQUEST['order'] : 'asc'; $this->items = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name ORDER BY $orderby $order LIMIT %d OFFSET %d", $per_page, $paged), ARRAY_A); $this->set_pagination_args(array( 'total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page) )); } }