argument->options['me_redirect'])) {
$this->argument->options['me_redirect'] = FALSE;
$this->argument->options['me_validate_user_argument_type'] = 'uid';
$this->argument->options['me_validate_user_roles'] = array();
}
// Because of the way these forms are presented, we need to coerce the parent form into a particular setup.
$user_form = array();
parent::validate_form($user_form, $form_state);
$user_form['validate_user_argument_type']['#default_value'] = $this->argument->options['me_validate_user_argument_type'];
$user_form['validate_user_restrict_roles']['#default_value'] = $this->argument->options['me_validate_user_restrict_roles'];
$user_form['validate_user_roles']['#default_value'] = $this->argument->options['me_validate_user_roles'];
$user_form['validate_user_argument_type']['#prefix'] = '
';
$user_form['validate_user_roles']['#prefix'] = '
';
$user_form['validate_user_roles']['#dependency'] = array(
'edit-options-validate-type' => array($this->id),
'edit-options-me-validate-user-restrict-roles' => array(1),
);
$form['me_validate_user_argument_type'] = $user_form['validate_user_argument_type'];
$form['me_validate_user_restrict_roles'] = $user_form['validate_user_restrict_roles'];
$form['me_validate_user_roles'] = $user_form['validate_user_roles'];
$form['me_redirect'] = array(
'#type' => 'checkbox',
'#title' => t("Redirect to the users uid when '%me' is entered as an argument.", array('%me' => _me_get_me_alias(TRUE))),
'#description' => t("If selected, when a user enters '%me' for this argument, they will be redirected to the view with their user id inplace of '%me'.", array('%me' => _me_get_me_alias(TRUE))),
'#default_value' => !empty($this->argument->options['me_redirect']),
'#process' => array('views_process_dependency'),
'#dependency' => array('edit-options-validate-type' => array($this->id)),
);
}
/**
* Performs the actual validation.
*/
function validate_argument($argument) {
// Only modify the argument when the wildcard does not equal the 'me' alias.
if (!_me_is_alias($this->argument->options['wildcard'])) {
$uid_args = array();
$seperator = ' ';
if (empty($this->argument->options['break_phrase'])) {
$uid_args[] = $argument;
}
else {
// Modified from views_break_phrase() to include characters that a 'me' alias
// may include.
if (preg_match('/^([0-9a-zA-Z]+[+ ])+[0-9a-zA-Z]+$/', $argument)) {
// The '+' character in a query string may be parsed as ' '.
$uid_args = preg_split('/[+ ]/', $argument);
}
else if (preg_match('/^([0-9a-zA-Z]+,)*[0-9a-zA-Z]+$/', $argument)) {
$seperator = ',';
$uid_args = explode(',', $argument);
}
}
// Check if we need to do a redirect, and make sure the option is disabled if we don't.
// But be sure not to redirect in a live preview.
if (empty($this->view->live_preview) && !empty($this->argument->options['me_redirect'])) {
$redirect_args = array_filter($uid_args, create_function('$n', 'return _me_is_alias($n);'));
if (!empty($redirect_args)) {
// Trigger a redirect.
me_views_pre_execute(NULL, TRUE);
}
}
// The alias could potentially show up more than once. Loop over each argument
// and check to be sure.
foreach ($uid_args as $key => $uid_arg) {
$uid_args[$key] = _me_check_arg($uid_arg, $this->argument->options['me_validate_user_argument_type'] == 'name', FALSE);
}
$argument = implode($seperator, $uid_args);
}
// We always need to return the parent::set_argument() call.
$this->argument->options['validate_user_argument_type'] = $this->argument->options['me_validate_user_argument_type'];
$this->argument->options['validate_user_restrict_roles'] = $this->argument->options['me_validate_user_restrict_roles'];
$this->argument->options['validate_user_roles'] = $this->argument->options['me_validate_user_roles'];
return parent::validate_argument($argument);
}
}