You are here

function uc_discounts_admin_discounts_list in Ubercart Discounts (Alternative) 7.2

Generates admin page listing all saved discounts.

1 string reference to 'uc_discounts_admin_discounts_list'
uc_discounts_menu in uc_discounts/uc_discounts.module
Implements hook_menu().

File

uc_discounts/uc_discounts.admin.inc, line 11
Admin forms and functions for uc_discounts module.

Code

function uc_discounts_admin_discounts_list() {
  $search_params = array(
    'name' => arg(4),
  );
  $header = array(
    array(
      'data' => t('Active'),
      'field' => 'is_active',
    ),
    array(
      'data' => t('Name'),
      'field' => 'name',
    ),
    array(
      'data' => t('Short Description'),
      'field' => 'short_description',
    ),
    array(
      'data' => t('Qualifying Type'),
      'field' => 'qualifying_type',
    ),
    array(
      'data' => t('Type'),
      'field' => 'discount_type',
    ),
    array(
      'data' => t('Amount'),
      'field' => 'discount_amount',
    ),
    array(
      'data' => t('Weight'),
      'field' => 'weight',
    ),
    array(
      'data' => t('Created At'),
      'field' => 'insert_timestamp',
      'sort' => 'desc',
    ),
    array(
      'data' => t('Expires At'),
      'field' => 'expiration',
    ),
    array(
      'data' => t('Operations'),
    ),
  );
  $select = db_select('uc_discounts', 'd')
    ->fields('d')
    ->extend('PagerDefault')
    ->limit(50)
    ->extend('TableSort')
    ->orderByHeader($header);
  if (!empty($search_params['name'])) {
    $name = '%' . $search_params['name'] . '%';
    $select
      ->condition(db_or()
      ->condition('d.name', $name, 'LIKE')
      ->condition('d.description', $name, 'LIKE')
      ->condition('d.short_description', $name, 'LIKE'));
  }
  $result = $select
    ->execute()
    ->fetchAll();
  $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('copy'), 'admin/store/uc_discounts/copy/' . $discount->discount_id),
      l(t('delete'), 'admin/store/uc_discounts/delete/' . $discount->discount_id),
    );
    $rows[] = array(
      'data' => 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' => uc_discounts_discount_amount_formatted($discount),
          'class' => array(
            'numeric',
          ),
        ),
        array(
          'data' => $discount->weight,
          'class' => array(
            'numeric',
          ),
        ),
        array(
          'data' => format_date($discount->insert_timestamp, 'short'),
          'class' => array(
            'date',
          ),
        ),
        array(
          'data' => $discount->has_expiration ? format_date($discount->expiration, 'short') : t('N/A'),
          'class' => array(
            'date',
          ),
        ),
        array(
          'data' => implode(' ', $operations),
          'class' => array(
            'operations',
          ),
        ),
      ),
    );
  }
  if (empty($rows)) {
    $rows[] = array(
      'data' => array(
        array(
          'data' => t('No discounts.'),
          'colspan' => count($header),
        ),
      ),
    );
  }
  $output['content'] = array(
    'search_form' => drupal_get_form('uc_discounts_admin_discounts_search_form', $search_params),
    'list_table' => array(
      '#markup' => theme('table', array(
        'header' => $header,
        'rows' => $rows,
        'attributes' => array(
          'class' => array(
            'uc-discounts',
          ),
        ),
      )),
    ),
    'pager' => array(
      '#theme' => 'pager',
      '#weight' => 5,
    ),
  );
  return $output;
}