You are here

function signup_views_data in Signup 7

Same name and namespace in other branches
  1. 6.2 views/signup.views.inc \signup_views_data()
  2. 6 views/signup.views.inc \signup_views_data()

Implements hook_views_data().

File

views/signup.views.inc, line 13
Provides support for Views integration.

Code

function signup_views_data() {

  // Define the base group of the signup table.  Fields that don't
  // have a group defined will go into this field by default.
  $data['signup']['table']['group'] = t('Signup');
  $data['signup']['table']['join'] = array(
    'node' => array(
      'left_field' => 'nid',
      'field' => 'nid',
    ),
  );
  $data['signup']['status'] = array(
    'title' => t('Status: Open/Closed'),
    'help' => t('Are signups open or closed for this node?'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'signup_handler_field_signup_status',
      'click sortable' => TRUE,
    ),
    // Information for accepting status as a filter
    'filter' => array(
      'handler' => 'signup_handler_filter_signup_status',
      'help' => t('Filter on if signups are open or closed for each node.'),
      'label' => 'Signup status',
    ),
    // Information for sorting on status
    'sort' => array(
      'handler' => 'views_handler_sort',
      'help' => t('Sort by if signups are closed or open.'),
    ),
  );
  $data['signup']['close_signup_limit'] = array(
    'title' => t('Signup Limit'),
    'help' => t('Maximum number of users who can sign up before signups are automatically closed (set to 0 for no limit).'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
      'click sortable' => TRUE,
    ),
    // Information for accepting close_signup_limit as a filter
    'filter' => array(
      'handler' => 'views_handler_filter_numeric',
      'help' => t('Filter by the maximum number of users who can sign up before signups are automatically closed (set to 0 for no limit).'),
      'label' => 'Signup limit',
    ),
  );
  $data['signup']['forwarding_email'] = array(
    'title' => t('Notification: Email Address'),
    'help' => t('Address where notification emails are sent wenever a user signs up.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
    ),
  );
  $data['signup']['send_confirmation'] = array(
    'title' => t('Send Confirmation'),
    'help' => t('Should confirmation email be sent to each user who signs up.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'signup_handler_field_signup_send_confirmation',
      'click sortable' => TRUE,
    ),
    // Information for accepting send_confirmation as a filter
    'filter' => array(
      'handler' => 'views_handler_filter_boolean_operator',
      'help' => t('Filter on if signup confirmation is enabled or disabled.'),
      'label' => t('Send confirmation'),
    ),
  );
  $data['signup']['confirmation_email'] = array(
    'title' => t('Confirmation: Message'),
    'help' => t('The body of the optional confirmation email that can be sent whenever a user signs up.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
    ),
  );
  $data['signup']['send_reminder'] = array(
    'title' => t('Send Reminder'),
    'help' => t('Should a reminder email be automatically sent to all users who signed up. This will be false if either an administrator disabled the feature for a given event, or if the reminder was already sent.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field_boolean',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_boolean_operator',
      'help' => t('Filter on if a signup reminder email will be sent.'),
      'label' => t('Send reminder'),
    ),
  );
  $data['signup']['reminder_days_before'] = array(
    'title' => t('Reminder: Days Before Event for Email'),
    'help' => t('How many days before an event will the reminder email be sent.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
      'click sortable' => TRUE,
    ),
  );
  $data['signup']['reminder_email'] = array(
    'title' => t('Reminder: Message'),
    'help' => t('The body of the optional reminder email that can be sent a configurable time before an event begins.'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
    ),
  );
  $data['signup']['signup_disabled'] = array(
    'title' => t('Enabled/Disabled'),
    'filter' => array(
      'handler' => 'signup_handler_filter_signup_disabled',
      'help' => t('Filter on if signups are enabled or disabled.'),
      'label' => 'Signups',
    ),
  );
  $data['signup']['node_link'] = array(
    'title' => t('Node: Signup link'),
    'field' => array(
      'handler' => 'signup_handler_field_signup_node_link',
      'help' => t('Link to one of the signup-related tabs on each node.'),
    ),
  );

  // Define base group and entity type for signup_log table.
  $data['signup_log']['table']['group'] = t('Signup');
  $data['signup_log']['table']['entity type'] = 'node';

  // Advertise this table as a possible base table so that we can have
  // "Signup" views. This is essential for Views Bulk Operations to work,
  // since we need operations on the signups themselves, not the users or
  // nodes they point to.  With proper use of relationships, we can get
  // everything on signup views we'd want from either node or user views.
  $data['signup_log']['table']['base'] = array(
    'field' => 'sid',
    'title' => t('Signup'),
    'help' => t('A signup represents a relationship between a user and a node.'),
  );
  $data['signup_log']['table']['join'] = array(
    'node' => array(
      'left_field' => 'nid',
      'field' => 'nid',
    ),
    'users' => array(
      'left_field' => 'uid',
      'field' => 'uid',
    ),
  );
  $data['signup_log']['sid'] = array(
    'title' => t('Signup ID'),
    'help' => t('The signup entry ID'),
    // Information for displaying the field
    'field' => array(
      'handler' => 'views_handler_field',
      'click sortable' => TRUE,
    ),
    // Information for accepting sid as a filter
    'filter' => array(
      'label' => t('Signup entry id'),
      'handler' => 'views_handler_filter_numeric',
    ),
    // Information for sorting on sid
    'sort' => array(
      'handler' => 'views_handler_sort',
      'help' => t('Sort by signup ID.'),
    ),
  );
  $data['signup_log']['nid'] = array(
    'title' => t('Node'),
    'help' => t('The node a user signed up to.'),
    'relationship' => array(
      'base' => 'node',
      'handler' => 'views_handler_relationship',
      'label' => t('Signup node'),
    ),
  );
  $data['signup_log']['uid'] = array(
    'title' => t('User'),
    'help' => t('The user who signed up.'),
    'relationship' => array(
      'base' => 'users',
      'handler' => 'views_handler_relationship',
      'label' => t('Signup user'),
    ),
  );
  $data['signup_log']['uid_no_signups'] = array(
    'title' => t('User available signups'),
    'help' => t('Displays nodes the given user has not signed up for. Note that this argument will not work properly if you add the %signup_user relationship to the view.', array(
      '%signup_user' => t('Signup: User'),
    )),
    'real field' => 'uid',
    'argument' => array(
      'handler' => 'signup_handler_argument_signup_user_uid',
    ),
  );
  $data['signup_log']['email'] = array(
    'title' => t('User: Email Address'),
    'click sortable' => TRUE,
    'field' => array(
      'handler' => 'signup_handler_field_signup_user_email',
      'help' => t('Email address of a user (authenticated or anonymous) who signed up.') . ' <strong>' . t('WARNING: only expose this data in a view that is restricted to users whom you can trust with such sensitive information.') . '</strong>',
    ),
  );
  $data['signup_log']['signup_time'] = array(
    'title' => t('User: Signup Time'),
    'help' => t('Time when user signed up.'),
    'field' => array(
      'handler' => 'views_handler_field_date',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'views_handler_filter_date',
      'help' => t('Time when the user signed up.'),
      'label' => t('Signup time'),
    ),
    'sort' => array(
      'handler' => 'views_handler_sort_date',
      'help' => t('Sort by time of sign up.'),
    ),
  );
  $data['signup_log']['attended'] = array(
    'title' => t('User: Attended'),
    'help' => t('Did the user attend or not?'),
    'field' => array(
      'handler' => 'signup_handler_field_signup_user_attended',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'signup_handler_filter_signup_user_attended',
      'help' => t('Filter on users who attended or not.'),
      'label' => 'Signup attendance',
    ),
    'sort' => array(
      'handler' => 'views_handler_sort',
      'help' => t('Sort by if the user attended or not.'),
    ),
  );
  $data['signup_log']['form_data'] = array(
    'title' => t('User: Additional Signup Info'),
    'help' => t('Enter the additional field name (from theme/signup_form.inc) in the Option column.'),
    'field' => array(
      'handler' => 'signup_handler_field_signup_user_form_data',
      'option' => 'string',
    ),
  );
  $data['signup_log']['signup_user_auth'] = array(
    'title' => t('User: Anonymous/Authenticated'),
    'real field' => 'uid',
    'filter' => array(
      'handler' => 'signup_handler_filter_signup_user_authenticated',
      'help' => t('Filter on if a user who signed up is anonymous, or an authenticated user on the site.'),
      'label' => t('Signup user'),
    ),
  );
  $data['signup_log']['signup_user_current'] = array(
    'title' => t('User: Current User'),
    'real field' => 'uid',
    'filter' => array(
      'handler' => 'views_handler_filter_user_current',
      'help' => t('This allows you to filter by whether or not the node was signed up by the logged in user of the view.'),
    ),
  );
  $data['signup_log']['edit_link'] = array(
    'title' => t('User: Edit signup link'),
    'field' => array(
      'handler' => 'signup_handler_field_signup_edit_link',
      'help' => t('Link to edit this particular signup.'),
    ),
  );
  return $data;
}