123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /**
- * @file
- * Views 2 hooks and callback registries.
- */
- /**
- * Implementation of hook_views_data().
- */
-
- function uc_roles_views_data() {
- $data['uc_roles_expirations']['table']['group'] = t('User');
- $data['uc_roles_expirations']['table']['join'] = array(
- 'users' => array(
- 'left_field' => 'uid',
- 'field' => 'uid',
- ),
- );
- // Expose the role expiration date
- $data['uc_roles_expirations']['expiration'] = array(
- 'title' => t('Ubercart Role expiration date/time'),
- 'help' => t('Date and time the role will expire. (See also Role expiration role.)'),
- 'field' => array(
- 'handler' => 'views_handler_field_date',
- 'click sortable' => TRUE,
- ),
- 'sort' => array(
- 'handler' => 'views_handler_sort_date',
- ),
- 'filter' => array(
- 'handler' => 'views_handler_filter_date',
- ),
- );
- // Expose the role id from uc_roles_expirations
- $data['uc_roles_expirations']['rid'] = array(
- 'title' => t('Ubercart Role expiration role'),
- 'help' => t('The Role that corresponds with the Role expiration date/time'),
- // Information for displaying the rid
- 'field' => array(
- 'handler' => 'uc_roles_handler_field_rid',
- 'click sortable' => TRUE,
- ),
- // Information for accepting a rid as an argument
- 'argument' => array(
- 'handler' => 'views_handler_argument_users_roles_rid',
- 'name field' => 'title', // the field to display in the summary.
- 'numeric' => TRUE,
- 'validate type' => 'rid',
- ),
- // Information for accepting a uid as a filter
- 'filter' => array(
- 'handler' => 'views_handler_filter_user_roles',
- ),
- // Information for sorting on a uid.
- 'sort' => array(
- 'handler' => 'views_handler_sort',
- ),
- );
- return $data;
- }
- class uc_roles_handler_field_rid extends views_handler_field {
- // Derived from views_handler_field_user_roles
- // Purpose: get the *names* that correspond to the role_expire_rids.
- function pre_render($values) {
- $roles = array();
- $this->items = array();
- // Get all the unique role ids into the keys of $roles. Initializing into
- // array_keys helps prevent us from having a list where the same rid appears
- // over and over and over.
- foreach ($values as $result) {
- $roles[$this->get_value($result, NULL, TRUE)] = FALSE;
- }
- if ($roles) {
- $result = db_query("SELECT r.rid, r.name FROM {role} r WHERE r.rid IN (:rids) ORDER BY r.name",
- array(':rids' => array_keys($roles)));
- foreach ($result as $role) {
- $this->items[$role->rid]['role'] = check_plain($role->name);
- $this->items[$role->rid]['rid'] = $role->rid;
- }
- }
- }
- // Render the rid as the role name.
- function render($values) {
- // Return the role name corresponding to the role ID.
- // TODO: Should I be using this->get_value() here?
- $rid = $values->uc_roles_expirations_rid;
- if ($rid) {
- $role = $this->items[$rid]['role'];
- if (!empty($role)) {
- return $role;
- }
- }
- }
- }
|