You are here

signup_plugin_argument_validate_signup_status.inc in Signup 7

File

views/plugins/signup_plugin_argument_validate_signup_status.inc
View source
<?php

/**
 * Validate whether an argument is a signup-enabled node.
 *
 * Optionally filters on if signups are open or closed.
 */
class signup_plugin_argument_validate_signup_status extends views_plugin_argument_validate {
  var $option_name = 'validate_argument_signup_status';
  function validate_form(&$form, &$form_state) {
    $form[$this->option_name] = array(
      '#type' => 'select',
      '#title' => t('Signup status'),
      '#options' => array(
        'any' => t('Signups enabled (either open or closed)'),
        'open' => t('Signups open'),
        'closed' => t('Signups closed'),
        'none' => t('Signups disabled'),
      ),
      '#description' => t('Validate if the current node is signup-enabled and if signups are open or closed'),
      '#default_value' => isset($this->argument->options['validate_argument_signup_status']) ? $this->argument->options['validate_argument_signup_status'] : 'any',
      '#process' => array(
        'views_process_dependency',
      ),
      '#dependency' => array(
        'edit-options-validate-type' => array(
          $this->id,
        ),
      ),
    );
    $form['validate_argument_signup_node_access'] = array(
      '#type' => 'checkbox',
      '#title' => t('Validate user has access to the node'),
      '#default_value' => !empty($this->argument->options['validate_argument_node_access']),
      '#process' => array(
        'views_process_dependency',
      ),
      '#dependency' => array(
        'edit-options-validate-type' => array(
          $this->id,
        ),
      ),
    );
  }
  function validate_argument($argument) {
    if (!is_numeric($argument)) {
      return FALSE;
    }
    $node = node_load($argument);
    if (!$node) {
      return FALSE;
    }
    if (!empty($this->argument->options['validate_argument_signup_node_access'])) {
      if (!node_access('view', $node)) {
        return FALSE;
      }
    }
    $status = isset($this->argument->options['validate_argument_signup_status']) ? $this->argument->options['validate_argument_signup_status'] : 'any';
    switch ($status) {
      case 'any':
        return !empty($node->signup);
      case 'open':
        return !empty($node->signup_status);
      case 'closed':
        return !empty($node->signup) && empty($node->signup_status);
      case 'none':
        return empty($node->signup);
    }
  }

}

Classes

Namesort descending Description
signup_plugin_argument_validate_signup_status Validate whether an argument is a signup-enabled node.