function uc_discounts_admin_report_discounts_list in Ubercart Discounts (Alternative) 7.2
Generate admin report page content of all discount usage.
Return value
array Array of page content.
1 string reference to 'uc_discounts_admin_report_discounts_list'
- uc_discounts_menu in uc_discounts/
uc_discounts.module - Implements hook_menu().
File
- uc_discounts/
uc_discounts.admin.inc, line 1104 - Admin forms and functions for uc_discounts module.
Code
function uc_discounts_admin_report_discounts_list($download = FALSE) {
$op = arg(4) == 'download' ? 'download' : 'show';
$header = array(
array(
'data' => t('Active'),
'field' => 'd.is_active',
),
array(
'data' => t('Name'),
'field' => 'd.name',
),
array(
'data' => t('Short Description'),
'field' => 'd.short_description',
),
array(
'data' => t('Qualifying Type'),
'field' => 'd.qualifying_type',
),
array(
'data' => t('Type'),
'field' => 'd.discount_type',
),
array(
'data' => t('Uses'),
'field' => 'use_count',
),
array(
'data' => t('Times Applied'),
'field' => 'total_times_applied',
),
array(
'data' => t('Discounted Amount'),
'field' => 'total_amount',
),
array(
'data' => t('Revenue Amount'),
'field' => 'total_revenue',
),
array(
'data' => t('Weight'),
'field' => 'd.weight',
),
array(
'data' => t('Created At'),
'field' => 'insert_timestamp',
'sort' => 'desc',
),
array(
'data' => t('Operations'),
),
);
// TODO Please convert this statement to the D7 database API syntax.
$select = db_select('uc_discounts', 'd')
->extend('TableSort')
->orderByHeader($header);
if ($op != 'download') {
$select = $select
->extend('PagerDefault')
->limit(50);
}
$select
->fields('d')
->groupBy('d.discount_id');
$select
->leftjoin('uc_discounts_uses', 'du', 'd.discount_id=du.discount_id');
$select
->leftjoin('uc_orders', 'o', 'o.order_id=du.order_id AND o.order_status = :order_status AND o.order_total > 0', array(
':order_status' => 'completed',
));
$select
->addExpression('COUNT(du.discount_use_id)', 'total_use_count');
$select
->addExpression('SUM(du.times_applied)', 'total_times_applied');
$select
->addExpression('SUM(du.amount)', 'total_amount');
$select
->addExpression('SUM(o.order_total)', 'total_revenue');
$result = $select
->execute();
$rows = array();
foreach ($result as $discount) {
$total_use_count = is_numeric($discount->total_use_count) ? $discount->total_use_count : 0;
$total_times_applied = is_numeric($discount->total_times_applied) ? $discount->total_times_applied : 0;
$operations = array(
l(t('usage'), 'admin/reports/uc_discounts/discount/' . $discount->discount_id),
l(t('edit'), 'admin/store/uc_discounts/edit/' . $discount->discount_id),
l(t('delete'), 'admin/store/uc_discounts/delete/' . $discount->discount_id),
);
$rows[] = array(
array(
'data' => $discount->is_active ? '✓' : 'X',
'class' => array(
$discount->is_active ? 'is_active' : 'is_inactive',
),
),
$discount->name,
$discount->short_description,
uc_discounts_qualifying_type_name($discount->qualifying_type),
uc_discounts_discount_type_name($discount->discount_type),
array(
'data' => $total_use_count,
'class' => array(
'numeric',
),
),
array(
'data' => $total_times_applied,
'class' => array(
'numeric',
),
),
uc_currency_format($discount->total_amount),
uc_currency_format($discount->total_revenue),
array(
'data' => $discount->weight,
'class' => array(
'weight',
),
),
array(
'data' => format_date($discount->insert_timestamp, 'short'),
'class' => array(
'date',
),
),
array(
'data' => implode(' ', $operations),
'class' => array(
'operations',
),
),
);
}
if ($op == 'download') {
$http_headers = array(
'Pragma: no-cache',
'Expires: 0',
'Cache-Control: no-cache, must-revalidate',
'Cache-Control: private',
'Content-Transfer-Encoding: binary',
'Content-Disposition: attachment; filename="discount_usage_report.csv"',
'Content-Type: text/csv',
);
foreach ($http_headers as $http_header) {
$http_header = preg_replace('/\\r?\\n(?!\\t| )/', '', $http_header);
drupal_add_http_header($http_header);
}
$fp = fopen('php://output', 'w');
array_unshift($rows, $header);
foreach ($rows as $key => $row) {
$csv_row = array();
// Remove Operations cell.
array_pop($row);
foreach ($row as $cell) {
$csv_row[] = is_array($cell) ? $cell['data'] : $cell;
}
if ($key > 0) {
// Make is_active CSV friendly.
$csv_row[0] = $csv_row[0] == 'X' ? 0 : 1;
}
fputcsv($fp, $csv_row);
}
fclose($fp);
exit;
}
else {
if (empty($rows)) {
$rows[] = array(
array(
'data' => t('No discounts.'),
'colspan' => count($header),
),
);
}
$output['content'] = array(
'table' => array(
'#markup' => theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'class' => array(
'uc-discounts',
),
),
)),
),
'pager' => array(
'#theme' => 'pager',
'#weight' => 5,
),
'link' => array(
'#markup' => l(t('Export to CSV'), 'admin/reports/uc_discounts/all/download'),
),
);
return $output;
}
}