You are here

function uc_recurring_subscription_subscriber_list in UC Recurring Payments and Subscriptions 7.2

Same name and namespace in other branches
  1. 6.2 modules/uc_recurring_subscription/uc_recurring_subscription.admin.inc \uc_recurring_subscription_subscriber_list()
1 string reference to 'uc_recurring_subscription_subscriber_list'
uc_recurring_subscription_menu in modules/uc_recurring_subscription/uc_recurring_subscription.module
Implements hook_menu().

File

modules/uc_recurring_subscription/uc_recurring_subscription.admin.inc, line 733
Uc recurring subscription UI.

Code

function uc_recurring_subscription_subscriber_list($form, $form_state, $product_id = -1) {
  $form = array();
  $header = array(
    t('Product'),
    t('Subscribers'),
    '',
  );
  $result = db_query("SELECT count(u.uid) AS num_users, n.title, n.nid\n                      FROM {uc_recurring_users} u\n                        LEFT JOIN {uc_order_products} p ON p.order_product_id = u.order_product_id\n                        LEFT JOIN {uc_recurring_subscription} s ON s.nid = p.nid\n                        LEFT JOIN {node} n ON n.nid = p.nid\n                      WHERE u.status <> :status\n                      GROUP BY n.nid", array(
    ':status' => UC_RECURRING_FEE_STATUS_EXPIRED,
  ));
  $rows = array();
  foreach ($result as $subscribers) {
    if (!isset($subscribers->title)) {
      $subscribers->title = t('Unknown product');
    }
    $row = array(
      'title' => $subscribers->title,
      'count' => $subscribers->num_users,
      'ops' => isset($subscribers->nid) ? l('view subscribers', 'admin/store/subscriptions/subscribers/' . $subscribers->nid) : '',
    );
    $rows[] = $row;
  }
  if (count($rows) <= 0) {
    $rows[] = array(
      array(
        'data' => t('No subscribers to any subscription products.'),
        'colspan' => count($header),
      ),
    );
  }
  $form['list'] = array(
    '#type' => 'markup',
    '#prefix' => theme('table', array(
      'header' => $header,
      'rows' => $rows,
    )) . '<br />',
  );
  if (is_numeric(arg(4))) {
    $product = node_load(arg(4));
    $id = arg(4);
    $header = array(
      array(
        'data' => t('Order'),
      ),
      array(
        'data' => t('User'),
        'field' => 'u.name',
      ),
      array(
        'data' => t('Subscription Started'),
        'field' => 'ru.created',
      ),
      array(
        'data' => t('Next Renewal'),
        'field' => 'ru.next_charge',
      ),
      array(
        'data' => t('Price'),
      ),
      array(
        'data' => t('Status'),
      ),
      array(
        'data' => t('Operations'),
      ),
    );
    $query = db_select('users', 'u');
    $query = $query
      ->extend('TableSort');
    $query = $query
      ->orderByHeader($header);
    $query
      ->join('uc_recurring_users', 'ru', 'ru.uid = u.uid');
    $query
      ->join('uc_order_products', 'p', 'p.order_product_id = ru.order_product_id');
    $query
      ->join('uc_recurring_subscription', 's', 's.nid = p.nid');
    $query
      ->join('node', 'n', 'n.nid = p.nid');
    $query
      ->condition('ru.status', UC_RECURRING_FEE_STATUS_EXPIRED, '<>');
    $query
      ->condition('n.nid', $id);
    $query
      ->fields('u', array(
      'uid',
      'name',
    ));
    $query
      ->fields('ru');
    $query
      ->fields('p', array(
      'nid',
    ));
    $query
      ->addField('n', 'title', 'product_title');
    $query = $query
      ->extend('PagerDefault');
    $query
      ->limit(30);
    $result = $query
      ->execute();
    foreach ($result as $account) {
      $user_rows[] = array(
        'order' => l($account->order_id, 'admin/store/orders/' . $account->order_id),
        'user' => l($account->name, 'user/' . $account->uid),
        'start' => format_date($account->created, 'small'),
        'next' => format_date($account->next_charge, 'small'),
        'price' => theme('uc_price', array(
          'price' => $account->fee_amount,
        )),
        'status' => uc_recurring_fee_status_label($account->status),
        'ops' => implode(' | ', uc_recurring_get_fee_ops('user', $account)),
      );
    }
    $form['users'] = array(
      '#type' => 'markup',
      '#prefix' => '<h2>' . t('Subscribers to <a href="@product_url">@product</a>', array(
        '@product_url' => url('node/' . $product->nid),
        '@product' => $product->title,
      )) . '</h2>' . theme('table', array(
        'header' => $header,
        'rows' => $user_rows,
      )) . theme('pager', array(
        'tags' => array(
          'tags' => NULL,
          'element' => 0,
        ),
      )),
    );
  }
  return $form;
}