function access_filter_form_filter in Access Filter 7
Form builder for the filter editing form.
See also
access_filter_form_filter_submit()
access_filter_form_filter_validate()
1 string reference to 'access_filter_form_filter'
- access_filter_menu in ./
access_filter.module - Implements hook_menu().
File
- ./
access_filter.admin.inc, line 249 - Administration pages for access filters.
Code
function access_filter_form_filter($form, &$form_state, $filter = NULL) {
if (!isset($form_state['term'])) {
$defaults = array(
'status' => ACCESS_FILTER_STATUS_ENABLED,
'name' => '',
'is_strict' => TRUE,
'paths' => '',
'rules' => '',
'deny_action_settings' => (object) array(
'type' => ACCESS_FILTER_DENY_ACTION_403,
'error_message' => array(
'value' => '',
'format' => NULL,
),
'redirect_destination' => '',
'force_logout' => FALSE,
),
'weight' => 0,
);
if (!$filter) {
$filter = new stdClass();
}
foreach ($defaults as $key => $value) {
if (!isset($filter->{$key})) {
$filter->{$key} = $value;
}
elseif (is_object($value)) {
foreach ((array) $value as $sub_key => $sub_value) {
if (!isset($filter->{$key}->{$sub_key})) {
$filter->{$key}->{$sub_key} = $sub_value;
}
}
}
}
$form_state['filter'] = $filter;
}
else {
$filter = $form_state['filter'];
}
if (isset($filter->fid)) {
$form['vid'] = array(
'#type' => 'value',
'#value' => $filter->fid,
);
}
$form['basics'] = array(
'#type' => 'fieldset',
'#title' => t('Basics'),
);
$form['basics']['status'] = array(
'#type' => 'checkbox',
'#title' => t('Enabled'),
'#default_value' => $filter->status,
);
$form['basics']['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#default_value' => $filter->name,
);
$form['path'] = array(
'#type' => 'fieldset',
'#title' => 'Paths',
);
$form['path']['paths'] = array(
'#type' => 'textarea',
'#default_value' => $filter->paths,
);
$form['path']['paths']['#description'] = '<div>' . t('Enter one path per line.') . '</div>';
$form['path']['paths']['#description'] .= '<div>' . t('Format: %format', array(
'%format' => t('Type[+Modifiers,...]:Pattern'),
)) . '</div>';
$form['path']['paths']['#description'] .= '<div>' . t('Types:') . '</div>';
$form['path']['paths']['#description'] .= '<ul>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . ' = ' . t('Drupal path') . '</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_URI . ' = ' . t('Request uri (contains parameters)') . '</li>';
$form['path']['paths']['#description'] .= '</ul>';
$form['path']['paths']['#description'] .= '<div>' . t('Modifiers:') . '</div>';
$form['path']['paths']['#description'] .= '<ul>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_MODIFIER_REGEX . ' = ' . t('Use regex') . '</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_MODIFIER_BLIND . ' = ' . t('Blind mode (disable looking up aliases)') . '</li>';
$form['path']['paths']['#description'] .= '</ul>';
$form['path']['paths']['#description'] .= '<div>' . t('Exapmles:') . '</div>';
$form['path']['paths']['#description'] .= '<ul>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . ':<front> <i>' . t('# Front page') . '</i></li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . ':<admin> <i>' . t('# Admin paths') . '</i></li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . ':admin/config/people/access_filter/*</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . '+' . ACCESS_FILTER_PATH_MODIFIER_BLIND . ':node/3</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . '+' . ACCESS_FILTER_PATH_MODIFIER_REGEX . ACCESS_FILTER_PATH_MODIFIER_BLIND . ':^node/[123]$</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_DRUPAL . '+' . ACCESS_FILTER_PATH_MODIFIER_REGEX . ':^admin\\/config\\/people\\/access_filter\\/[0-9]+\\/edit$</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_URI . ':admin/config/people/access_filter</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_URI . ':admin/config/people/access_filter?mode=sample&type=1</li>';
$form['path']['paths']['#description'] .= ' <li>' . ACCESS_FILTER_PATH_TYPE_URI . '+' . ACCESS_FILTER_PATH_MODIFIER_REGEX . ':^admin\\/config\\/people\\/access_filter\\?mode=(ex1|ex2)</li>';
$form['path']['paths']['#description'] .= '</ul>';
$form['rule'] = array(
'#type' => 'fieldset',
'#title' => t('Rules'),
);
$form['rule']['rules'] = array(
'#type' => 'textarea',
'#default_value' => $filter->rules,
);
$form['rule']['rules']['#description'] = '<div>' . t('Enter one rule per line.') . '</div>';
$form['rule']['rules']['#description'] .= '<div>' . t('Format: %format', array(
'%format' => t('Process type:IP address'),
)) . '</div>';
$form['rule']['rules']['#description'] .= '<div>' . t('Process types:') . '</div>';
$form['rule']['rules']['#description'] .= '<ul>';
$form['rule']['rules']['#description'] .= ' <li>' . ACCESS_FILTER_PROCESS_TYPE_DENY . ' = ' . t('Deny') . '</li>';
$form['rule']['rules']['#description'] .= ' <li>' . ACCESS_FILTER_PROCESS_TYPE_ALLOW . ' = ' . t('Allow') . '</li>';
$form['rule']['rules']['#description'] .= '</ul>';
$form['rule']['rules']['#description'] .= '<div>' . t("'*' is matches any IP addresses.") . '</div>';
$form['rule']['rules']['#description'] .= '<div>' . t('Exapmles:') . '</div>';
$form['rule']['rules']['#description'] .= '<div>' . t('Allow from only @allowed except @denied.', array(
'@allowed' => '192.168.0.0/24',
'@denied' => '192.168.0.10-192.168.0.20',
)) . '</div>';
$form['rule']['rules']['#description'] .= '<ul>';
$form['rule']['rules']['#description'] .= ' <li>' . ACCESS_FILTER_PROCESS_TYPE_DENY . ':*</li>';
$form['rule']['rules']['#description'] .= ' <li>' . ACCESS_FILTER_PROCESS_TYPE_ALLOW . ':192.168.0.0/24</li>';
$form['rule']['rules']['#description'] .= ' <li>' . ACCESS_FILTER_PROCESS_TYPE_DENY . ':192.168.0.10-192.168.0.20</li>';
$form['rule']['rules']['#description'] .= '</ul>';
$form['deny_action_settings'] = array(
'#type' => 'fieldset',
'#title' => t('On deny'),
'#tree' => TRUE,
);
$form['deny_action_settings']['type'] = array(
'#type' => 'select',
'#title' => t('Response'),
'#options' => array(
ACCESS_FILTER_DENY_ACTION_403 => t('Error') . ': 403 Access Forbidden',
ACCESS_FILTER_DENY_ACTION_404 => t('Error') . ': 404 Not Found',
ACCESS_FILTER_DENY_ACTION_301 => t('Redirect') . ': 301 Moved Permanently',
ACCESS_FILTER_DENY_ACTION_302 => t('Redirect') . ': 302 Moved Temporarily',
ACCESS_FILTER_DENY_ACTION_200 => '200 OK',
),
'#default_value' => $filter->deny_action_settings->type,
);
$form['deny_action_settings']['error_message'] = array(
'#type' => 'text_format',
'#title' => t('Error message'),
'#default_value' => $filter->deny_action_settings->error_message['value'],
'#format' => $filter->deny_action_settings->error_message['format'],
);
$form['deny_action_settings']['redirect_destination'] = array(
'#type' => 'textfield',
'#title' => t('Redirect URL'),
'#default_value' => $filter->deny_action_settings->redirect_destination,
);
$form['deny_action_settings']['force_logout'] = array(
'#type' => 'checkbox',
'#title' => t('Force logout'),
'#default_value' => $filter->deny_action_settings->force_logout,
);
$form['actions'] = array(
'#type' => 'actions',
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
$form['actions']['back'] = array(
'#type' => 'submit',
'#value' => t('Back'),
);
$form['#validate'][] = 'access_filter_form_filter_validate';
$form['test'] = array(
'#type' => 'fieldset',
'#title' => t('Test'),
'#weight' => 1000,
);
$form['test']['test_result'] = array(
'#type' => 'markup',
'#markup' => '<div id="test-result"></div>',
);
$form['test']['test_path'] = array(
'#type' => 'textfield',
'#title' => t('Path/URL'),
'#field_prefix' => 'http://' . $_SERVER['HTTP_HOST'] . '/',
'#default_value' => current_path(),
);
$form['test']['test_ip'] = array(
'#type' => 'textfield',
'#title' => t('IP address'),
'#size' => 15,
'#default_value' => ip_address(),
);
$form['test']['submit'] = array(
'#type' => 'button',
'#value' => t('Test'),
'#ajax' => array(
'callback' => 'access_filter_form_filter_callback_test',
'wrapper' => 'test-result',
),
);
$form['#attached']['js'] = array(
drupal_get_path('module', 'access_filter') . '/access_filter.js',
);
return $form;
}