You are here

function uc_recurring_subscription_subscriber_list in UC Recurring Payments and Subscriptions 6.2

Same name and namespace in other branches
  1. 7.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
Implementation of hook_menu().

File

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

Code

function uc_recurring_subscription_subscriber_list($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 <> %d\n                      GROUP BY n.nid", UC_RECURRING_FEE_STATUS_EXPIRED);
  while ($subscribers = db_fetch_object($result)) {
    if (!isset($subscribers->title)) {
      $subscribers->title = t('Unknown product');
    }
    $row = array(
      'title' => $subscribers->title,
      'count' => $subscribers->num_users,
      'ops' => isset($subscribers->nid) ? l('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(
    '#value' => theme('table', $header, $rows) . '<br />',
  );
  if (is_numeric(arg(4))) {
    $product = node_load(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'),
      ),
    );
    $sql = "SELECT u.uid, u.name, ru.*, p.nid, p.title as product_title\n            FROM {users} u\n              LEFT JOIN {uc_recurring_users} ru ON ru.uid = u.uid\n              LEFT JOIN {uc_order_products} p ON p.order_product_id = ru.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 ru.status <> " . UC_RECURRING_FEE_STATUS_EXPIRED . " AND n.nid = %d";
    $sql .= tablesort_sql($header);
    $result = pager_query($sql, 20, 0, NULL, $product->nid);
    while ($account = db_fetch_object($result)) {
      $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' => uc_price($account->fee_amount, array()),
        'status' => uc_recurring_fee_status_label($account->status),
        'ops' => implode(' | ', uc_recurring_get_fee_ops('user', $account)),
      );
    }
    $form['users'] = array(
      '#value' => '<h2>' . t('Subscribers to <a href="@product_url">@product</a>', array(
        '@product_url' => url('node/' . $product->nid),
        '@product' => $product->title,
      )) . '</h2>' . theme('table', $header, $user_rows) . theme('pager', NULL, 20, 0),
    );
  }
  return $form;
}