__( 'ad', 'advman-analytics' ), //singular name of the listed records
'plural' => __( 'ads', 'advman-analytics' ), //plural name of the listed records
'ajax' => false, //does this table support ajax?
'screen' => null
) );
}
function get_views()
{
$views = array();
$filter = $this->_get_filter();
$options = array('today' => __('Today', 'advman'), 'yesterday' => __('Yesterday', 'advman'), 'last7days' => __('Last 7 Days', 'advman'), 'thismonth' => __('This Month', 'advman'), 'lastmonth' => __('Last Month','advman'));
foreach ($options as $n => $v) {
$url = remove_query_arg('filter');
$url = add_query_arg('filter', $n);
$class = ($filter == $n ? ' class="current"' :'');
$views[$n] = "{$v}";
}
return $views;
}
function get_data($filter = 'today', $q = false)
{
global $advman_engine;
$data = array();
//$date_range = $this->_filter2date($filter);
switch($filter) {
case 'today' :
$dt = date('Y-m-d');
$date_range = array('begin' => $dt, 'end' => $dt);
break;
case 'yesterday':
$dt = date('Y-m-d', strtotime('- 1 day'));
$date_range = array('begin' => $dt, 'end' => $dt);
break;
default:
die;
}
$date_range = array('begin' => date('Y-m-d'), 'end' => date('Y-m-d'));
$date_breakdown = 'hour'; // 'hour', 'day',
$entity_breakdown = 'ads'; // In the future, 'posts', 'categories', 'tags', etc.
$stats = $advman_engine->getStats($date_range, $entity_breakdown, $date_breakdown);
if (!empty($stats)) {
foreach ($stats as $stat) {
if (!$q || stristr($stat['name'], $q) !== false) {
$data[] = $stat;
}
}
}
return $data;
}
function no_items()
{
_e( 'There are no analytics for this time period. Choose a different time period or add some ads to your blog.' );
}
function column_name($item)
{
//Return the title contents
return $item['name'] . " (id:" . $item['i'] . ")";
}
function column_default( $item, $column_name )
{
switch( $column_name ) {
case 'name': return $item['name'];
case 'impressions': return empty($item['i']) ? '-' : $item['i'];
case 'views': return empty($item['v']) ? '-' : $item['v'];
case 'clicks': return empty($item['c']) ? '-' : $item['c'];
case 'quality': return empty($item['q']) ? '-' : $item['q'];
default:
return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
}
}
function get_columns()
{
$columns = array(
'name' => __( 'Name', 'advman' ),
'impressions' => __( 'Impressions', 'advman' ),
'views' => __( 'Views', 'advman' ),
'clicks' => __( 'Clicks', 'advman' ),
'quality' => __( 'Quality', 'advman' )
);
return $columns;
}
function get_sortable_columns()
{
$sortable_columns = array(
'name' => array('name',false),
'impressions' => array('i',false),
'views' => array('v',false),
'clicks' => array('c',false),
'quality' => array('q',false),
);
return $sortable_columns;
}
function get_search_columns()
{
$search_columns = array(
'name'
);
return $search_columns;
}
function usort_reorder( $a, $b )
{
// If no sort, default to date descending
$orderby = ( ! empty( $_GET['orderby'] ) ) ? $_GET['orderby'] : 'name';
// If no order, default to asc
$order = ( ! empty($_GET['order'] ) ) ? $_GET['order'] : 'desc';
// Determine sort order
$result = strcasecmp( $a[$orderby], $b[$orderby] );
// Send final sort direction to usort
return ( $order === 'asc' ) ? $result : -$result;
}
function get_bulk_actions()
{
$actions = array(
'ad' => __('by Ad','advman'),
'author' => __('by Author','advman'),
'category' => __('by Category','advman'),
'tag' => __('by Tag','advman')
);
return $actions;
}
function _get_filter()
{
$filter = 'today';
$options = array('today','yesterday','last7days','thismonth','lastmonth');
if ( isset($_REQUEST['filter'] ) ) {
if (in_array($_REQUEST['filter'], $options)) {
$filter = $_REQUEST['filter'];
}
}
return $filter;
}
function prepare_items()
{
$filter = $this->_get_filter();
$q = Advman_Tools::get_search_query();
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array( $columns, $hidden, $sortable );
// Retrieve the ad data from the DB
$data = $this->get_data($filter, $q);
usort( $data, array( &$this, 'usort_reorder' ) );
$total_items = count( $data );
$per_page = 10;
$current_page = $this->get_pagenum();
$this->set_pagination_args( array(
'total_items' => $total_items, //WE have to calculate the total number of items
'per_page' => $per_page //WE have to determine how many items to show on a page
) );
$this->items = array_slice( $data,( ( $current_page-1 )* $per_page ), $per_page );
}
} //class