signup_plugin_argument_validate_signup_status.inc in Signup 6.2
File
views/plugins/signup_plugin_argument_validate_signup_status.inc
View source
<?php
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);
}
}
}