'vertical_tabs',
);
// COMMON SETTINGS.
$form['tabs']['status'] = array(
'#type' => 'fieldset',
'#title' => t('Module status'),
'#group' => 'tabs',
'#weight' => 0,
);
$form['tabs']['status']['common'] = array(
'#type' => 'fieldset',
'#title' => t('Common settings'),
);
$form['tabs']['status']['common']['expire_status'] = array(
'#type' => 'radios',
'#title' => t('Status of implementation'),
'#options' => array(
EXPIRE_STATUS_DISABLED => t('Disabled'),
EXPIRE_STATUS_ENABLED_INTERNAL => t('Internal expiration'),
EXPIRE_STATUS_ENABLED_EXTERNAL => t('External expiration'),
),
'#description' => theme('item_list', array('items' => array(
t('Disabled: Module will not expire any data.'),
t('Internal expiration: Use this option when you did not install additional contribs that implement hook_expire_cache(). Module will execute cache_clear_all() for expired URLs.'),
t('External expiration: Use this option if you installed contrib (like Varnish, Boost, Purge, Acquia Purge) that implements this hook. Module will invoke hook_expire_cache() for expired URLs.'),
))),
'#default_value' => variable_get('expire_status', EXPIRE_STATUS_DISABLED),
);
$modules = array();
foreach (module_implements('expire_cache') as $module) {
$modules[] = $module;
}
if (empty($modules)) {
$help_message = t('You have no contribs that implement hook_expire_cache(). In this case you need to use Internal expiration to expire cached data.');
}
else {
$help_message = t('You have contribs that implement hook_expire_cache(). This means that most likely you want to use External expiration to expire cached data.');
}
$form['tabs']['status']['common']['external_implementations'] = array(
'#type' => 'item',
'#title' => t('Modules that support external expiration'),
'#description' => '' . $help_message . '',
'#markup' => $modules ? theme('item_list', array('items' => $modules)) : t('There are no such modules.'),
);
$form['tabs']['status']['common']['expire_include_base_url'] = array(
'#type' => 'checkbox',
'#title' => t('Include base URL in expires'),
'#default_value' => variable_get('expire_include_base_url', EXPIRE_INCLUDE_BASE_URL),
'#description' => t('Include the base URL in expire requests. Compatible with Domain Access.Enabling this setting when Varnish or Acquia Purge modules are used as a cache backend is not recommended.
If you use internal expiration, this checkbox should be selected.',
array('@varnish' => 'https://drupal.org/project/varnish', '@acquia_purge' => 'https://drupal.org/project/acquia_purge')),
);
$form['tabs']['status']['debug'] = array(
'#type' => 'fieldset',
'#title' => t('Debug'),
);
$form['tabs']['status']['debug']['expire_debug'] = array(
'#type' => 'radios',
'#title' => t('Debug level'),
'#options' => array(
EXPIRE_DEBUG_DISABLED => t('Disabled'),
EXPIRE_DEBUG_WATCHDOG => t('Watchdog'),
EXPIRE_DEBUG_FULL => t('Watchdog + site message'),
),
'#default_value' => variable_get('expire_debug', EXPIRE_DEBUG_DISABLED),
);
// NODE SETTINGS.
$form['tabs']['node'] = array(
'#type' => 'fieldset',
'#title' => t('Node expiration'),
'#group' => 'tabs',
'#weight' => 1,
);
$form['tabs']['node']['override'] = array(
'#type' => 'fieldset',
'#title' => t('Node settings per type'),
);
$form['tabs']['node']['override']['info'] = array(
'#type' => 'item',
'#markup' => t('Please note that you may override this settings for each node type on the node type configuration page.'),
);
$form['tabs']['node']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('Node actions'),
);
$form['tabs']['node']['actions']['expire_node_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for node will be flushed after selected actions.'),
'#options' => array(
EXPIRE_NODE_INSERT => t('Node insert'),
EXPIRE_NODE_UPDATE => t('Node update'),
EXPIRE_NODE_DELETE => t('Node delete'),
),
'#default_value' => variable_get('expire_node_actions', array()),
);
$form['tabs']['node']['expire'] = array(
'#type' => 'fieldset',
'#title' => t('What URLs should be expired when node action is triggered?'),
);
$form['tabs']['node']['expire']['expire_node_front_page'] = array(
'#type' => 'checkbox',
'#title' => t('Front page'),
'#description' => t('Expire url of the site front page'),
'#default_value' => variable_get('expire_node_front_page', EXPIRE_NODE_FRONT_PAGE),
);
$form['tabs']['node']['expire']['expire_node_node_page'] = array(
'#type' => 'checkbox',
'#title' => t('Node page'),
'#description' => t('Expire url of the expiring node.'),
'#default_value' => variable_get('expire_node_node_page', EXPIRE_NODE_NODE_PAGE),
);
if (module_exists('taxonomy')) {
$form['tabs']['node']['expire']['expire_node_term_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Node term pages'),
'#description' => t('Expire urls of terms that are selected in the expiring node.'),
'#default_value' => variable_get('expire_node_term_pages', EXPIRE_NODE_TERM_PAGES),
);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['tabs']['node']['expire']['expire_node_reference_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Node reference pages'),
'#description' => t('Expire urls of entities which are referenced from the expiring node.'),
'#default_value' => variable_get('expire_node_reference_pages', EXPIRE_NODE_REFERENCE_PAGES),
);
if (module_exists('field_collection')) {
$form['tabs']['node']['expire']['expire_node_reference_field_collection_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Traverse references attached to field collections'),
'#description' => t('Expire urls of entities which are referenced from field collections attached to the expiring node.'),
'#default_value' => variable_get('expire_node_reference_field_collection_pages', EXPIRE_NODE_REFERENCE_FC_PAGES),
'#states' => array(
'visible' => array(
':input[name="expire_node_reference_pages"]' => array('checked' => TRUE),
),
),
);
}
}
$form['tabs']['node']['expire']['expire_node_custom'] = array(
'#type' => 'checkbox',
'#title' => t('Custom pages'),
'#description' => t('Expire user-defined custom urls.'),
'#default_value' => variable_get('expire_node_custom', EXPIRE_NODE_CUSTOM),
);
$form['tabs']['node']['expire']['expire_node_custom_pages'] = array(
'#type' => 'textarea',
'#title' => t('Enter custom URLs'),
'#description' => t('Enter one relative URL per line. It can be the path of a node (e.g. !example1) or of any alias (e.g. !example2). However, it has to be the final URL, not a redirect (use the !link1 and !link2 modules).', array('!example1' => 'node/[node:nid]', '!example2' => 'my/path', '!link1' => l('Global Redirect', 'https://drupal.org/project/globalredirect'), '!link2' => l('Redirect', 'https://drupal.org/project/redirect'))) . '
'
. t('If you want to match a path with any ending, add "|wildcard" to the end of the line (see !link1 for details). Example: !example1 will match !example1a, but also !example1b, !example1c, etc.', array('!link1' => l('function cache_clear_all', 'https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_clear_all/7'), '!example1' => 'my/path|wildcard', '!example1a' => 'my/path', '!example1b' => 'my/path/one', '!example1c' => 'my/path/two')) . '
'
. t('You may use tokens here.'),
'#states' => array(
'visible' => array(
':input[name="expire_node_custom"]' => array('checked' => TRUE),
),
),
'#default_value' => variable_get('expire_node_custom_pages'),
);
// COMMENT SETTINGS.
if (module_exists('comment')) {
$form['tabs']['comment'] = array(
'#type' => 'fieldset',
'#title' => t('Comment expiration'),
'#group' => 'tabs',
'#weight' => 2,
);
$form['tabs']['comment']['override'] = array(
'#type' => 'fieldset',
'#title' => t('Comment settings per node type'),
);
$form['tabs']['comment']['override']['info'] = array(
'#type' => 'item',
'#markup' => t('Please note that you may override this settings for each node type on the node type configuration page.'),
);
$form['tabs']['comment']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('Comment actions'),
);
$form['tabs']['comment']['actions']['expire_comment_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for comment will be flushed after selected actions.'),
'#options' => array(
EXPIRE_COMMENT_INSERT => t('Comment insert'),
EXPIRE_COMMENT_UPDATE => t('Comment update'),
EXPIRE_COMMENT_DELETE => t('Comment delete'),
EXPIRE_COMMENT_PUBLISH => t('Comment publish'),
EXPIRE_COMMENT_UNPUBLISH => t('Comment unpublish'),
),
'#default_value' => variable_get('expire_comment_actions', array()),
);
$form['tabs']['comment']['expire'] = array(
'#type' => 'fieldset',
'#title' => t('What URLs should be expired when comment action is triggered?'),
);
$form['tabs']['comment']['expire']['expire_comment_front_page'] = array(
'#type' => 'checkbox',
'#title' => t('Front page'),
'#description' => t('Expire url of the site front page'),
'#default_value' => variable_get('expire_comment_front_page', EXPIRE_COMMENT_FRONT_PAGE),
);
$form['tabs']['comment']['expire']['expire_comment_comment_page'] = array(
'#type' => 'checkbox',
'#title' => t('Comment page'),
'#description' => t('Expire url of the expiring comment.'),
'#default_value' => variable_get('expire_comment_comment_page', EXPIRE_COMMENT_COMMENT_PAGE),
);
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['tabs']['comment']['expire']['expire_comment_reference_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Comment\'s reference pages'),
'#description' => t('Expire urls of entities which are referenced from the expiring comment.'),
'#default_value' => variable_get('expire_comment_reference_pages', EXPIRE_COMMENT_REFERENCE_PAGES),
);
}
$form['tabs']['comment']['expire']['expire_comment_node_page'] = array(
'#type' => 'checkbox',
'#title' => t('Comment\'s node page'),
'#description' => t('Expire url of the node, to which expiring comment is related.'),
'#default_value' => variable_get('expire_comment_node_page', EXPIRE_COMMENT_NODE_PAGE),
);
if (module_exists('taxonomy')) {
$form['tabs']['comment']['expire']['expire_comment_node_term_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Comment\'s node term pages'),
'#description' => t('Expire urls of terms that are selected in the node, to which expiring comment is related.'),
'#default_value' => variable_get('expire_comment_node_term_pages', EXPIRE_COMMENT_NODE_TERM_PAGES),
);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['tabs']['comment']['expire']['expire_comment_node_reference_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Comment\'s node reference pages'),
'#description' => t('Expire urls of entities which are referenced from node, to which expiring comment is related.'),
'#default_value' => variable_get('expire_comment_node_reference_pages', EXPIRE_COMMENT_NODE_REFERENCE_PAGES),
);
if (module_exists('field_collection')) {
$form['tabs']['comment']['expire']['expire_comment_node_reference_field_collection_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Traverse references attached to field collections'),
'#description' => t('Expire urls of entities which are referenced from field collections attached to the expiring comment\'s node.'),
'#default_value' => variable_get('expire_comment_node_reference_field_collection_pages', EXPIRE_COMMENT_NODE_REFERENCE_FC_PAGES),
'#states' => array(
'visible' => array(
':input[name="expire_comment_node_reference_pages"]' => array('checked' => TRUE),
),
),
);
}
}
$form['tabs']['comment']['expire']['expire_comment_custom'] = array(
'#type' => 'checkbox',
'#title' => t('Custom pages'),
'#description' => t('Expire user-defined custom urls.'),
'#default_value' => variable_get('expire_comment_custom', EXPIRE_COMMENT_CUSTOM),
);
$form['tabs']['comment']['expire']['expire_comment_custom_pages'] = array(
'#type' => 'textarea',
'#title' => t('Enter custom URLs'),
'#description' => t('Enter one relative URL per line, e.g. !example1.', array('!example1' => 'comment/[comment:cid]')) . '
'
. t('If you want to match a path with any ending, add "|wildcard" to the end of the line (see !link1 for details). Example: !example1 will match !example1a, but also !example1b, !example1c, etc.', array('!link1' => l('function cache_clear_all', 'https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_clear_all/7'), '!example1' => 'comment/1', '!example1a' => 'comment/1', '!example1b' => 'comment/12', '!example1c' => 'comment/123')) . '
'
. t('You may use tokens here.'),
'#states' => array(
'visible' => array(
':input[name="expire_comment_custom"]' => array('checked' => TRUE),
),
),
'#default_value' => variable_get('expire_comment_custom_pages'),
);
}
// USER SETTINGS.
$form['tabs']['user'] = array(
'#type' => 'fieldset',
'#title' => t('User expiration'),
'#group' => 'tabs',
'#weight' => 3,
);
$form['tabs']['user']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('User actions'),
);
$form['tabs']['user']['actions']['expire_user_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for user will be flushed after selected actions.'),
'#options' => array(
EXPIRE_USER_INSERT => t('User insert'),
EXPIRE_USER_UPDATE => t('User update'),
EXPIRE_USER_DELETE => t('User delete'),
EXPIRE_USER_CANCEL => t('User cancel'),
),
'#default_value' => variable_get('expire_user_actions', array()),
);
$form['tabs']['user']['expire'] = array(
'#type' => 'fieldset',
'#title' => t('What URLs should be expired when user action is triggered?'),
);
$form['tabs']['user']['expire']['expire_user_front_page'] = array(
'#type' => 'checkbox',
'#title' => t('Front page'),
'#description' => t('Expire url of the site front page'),
'#default_value' => variable_get('expire_user_front_page', EXPIRE_USER_FRONT_PAGE),
);
$form['tabs']['user']['expire']['expire_user_user_page'] = array(
'#type' => 'checkbox',
'#title' => t('User page'),
'#description' => t('Expire url of the expiring user profile.'),
'#default_value' => variable_get('expire_user_user_page', EXPIRE_USER_USER_PAGE),
);
if (module_exists('taxonomy')) {
$form['tabs']['user']['expire']['expire_user_term_pages'] = array(
'#type' => 'checkbox',
'#title' => t('User term pages'),
'#description' => t('Expire urls of terms that are selected in the expiring user profile.'),
'#default_value' => variable_get('expire_user_term_pages', EXPIRE_USER_TERM_PAGES),
);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['tabs']['user']['expire']['expire_user_reference_pages'] = array(
'#type' => 'checkbox',
'#title' => t('User reference pages'),
'#description' => t('Expire urls of entities which are referenced from the expiring user profile.'),
'#default_value' => variable_get('expire_user_reference_pages', EXPIRE_USER_REFERENCE_PAGES),
);
if (module_exists('field_collection')) {
$form['tabs']['user']['expire']['expire_user_reference_field_collection_pages'] = array(
'#type' => 'checkbox',
'#title' => t('Traverse references attached to field collections'),
'#description' => t('Expire urls of entities which are referenced from field collections attached to the expiring user.'),
'#default_value' => variable_get('expire_user_reference_field_collection_pages', EXPIRE_USER_REFERENCE_FC_PAGES),
'#states' => array(
'visible' => array(
':input[name="expire_user_reference_pages"]' => array('checked' => TRUE),
),
),
);
}
}
$form['tabs']['user']['expire']['expire_user_custom'] = array(
'#type' => 'checkbox',
'#title' => t('Custom pages'),
'#description' => t('Expire user-defined custom urls.'),
'#default_value' => variable_get('expire_user_custom', EXPIRE_USER_CUSTOM),
);
$form['tabs']['user']['expire']['expire_user_custom_pages'] = array(
'#type' => 'textarea',
'#title' => t('Enter custom URLs'),
'#description' => t('Enter one relative URL per line. It can be the path of a node (e.g. !example1) or of any alias (e.g. !example2). However, it has to be the final URL, not a redirect (use the !link1 and !link2 modules).', array('!example1' => 'user/[user:uid]', '!example2' => 'my/path', '!link1' => l('Global Redirect', 'https://drupal.org/project/globalredirect'), '!link2' => l('Redirect', 'https://drupal.org/project/redirect'))) . '
'
. t('If you want to match a path with any ending, add "|wildcard" to the end of the line (see !link1 for details). Example: !example1 will match !example1a, but also !example1b, !example1c, etc.', array('!link1' => l('function cache_clear_all', 'https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_clear_all/7'), '!example1' => 'my/path|wildcard', '!example1a' => 'my/path', '!example1b' => 'my/path/one', '!example1c' => 'my/path/two')) . '
'
. t('You may use tokens here.'),
'#states' => array(
'visible' => array(
':input[name="expire_user_custom"]' => array('checked' => TRUE),
),
),
'#default_value' => variable_get('expire_user_custom_pages'),
);
// FILE SETTINGS.
if (module_exists('file')) {
$form['tabs']['file'] = array(
'#type' => 'fieldset',
'#title' => t('File expiration'),
'#group' => 'tabs',
'#weight' => 4,
);
$form['tabs']['file']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('File actions'),
);
$form['tabs']['file']['actions']['expire_file_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for file will be flushed after selected actions.'),
'#options' => array(
EXPIRE_FILE_UPDATE => t('File update'),
EXPIRE_FILE_DELETE => t('File delete'),
),
'#default_value' => variable_get('expire_file_actions', array()),
);
$form['tabs']['file']['expire'] = array(
'#type' => 'fieldset',
'#title' => t('What URLs should be expired when file action is triggered?'),
);
$form['tabs']['file']['expire']['expire_file_front_page'] = array(
'#type' => 'checkbox',
'#title' => t('Front page'),
'#description' => t('Expire url of the site front page'),
'#default_value' => variable_get('expire_file_front_page', EXPIRE_FILE_FRONT_PAGE),
);
$form['tabs']['file']['expire']['expire_file_file'] = array(
'#type' => 'checkbox',
'#title' => t('File url'),
'#description' => t('Expire url of the expiring file.'),
'#default_value' => variable_get('expire_file_file', EXPIRE_FILE_FILE),
);
$form['tabs']['file']['expire']['expire_file_custom'] = array(
'#type' => 'checkbox',
'#title' => t('Custom pages'),
'#description' => t('Expire user-defined custom urls.'),
'#default_value' => variable_get('expire_file_custom', EXPIRE_FILE_CUSTOM),
);
$form['tabs']['file']['expire']['expire_file_custom_pages'] = array(
'#type' => 'textarea',
'#title' => t('Enter custom URLs'),
'#description' => t('Enter one relative URL per line, e.g. !example1.', array('!example1' => 'file/[file:fid]')) . '
'
. t('If you want to match a path with any ending, add "|wildcard" to the end of the line (see !link1 for details). Example: !example1 will match !example1a, but also !example1b, !example1c, etc.', array('!link1' => l('function cache_clear_all', 'https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_clear_all/7'), '!example1' => 'file/1', '!example1a' => 'file/1', '!example1b' => 'file/12', '!example1c' => 'file/123')) . '
'
. t('You may use tokens here.'),
'#states' => array(
'visible' => array(
':input[name="expire_file_custom"]' => array('checked' => TRUE),
),
),
'#default_value' => variable_get('expire_file_custom_pages'),
);
}
// VOTINAPI SETTINGS.
if (module_exists('votingapi')) {
$form['tabs']['votingapi'] = array(
'#type' => 'fieldset',
'#title' => t('Votingapi expiration'),
'#group' => 'tabs',
'#weight' => 5,
);
$form['tabs']['votingapi']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('Votingapi actions'),
);
$form['tabs']['votingapi']['actions']['expire_votingapi_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for votes will be flushed after selected actions.'),
'#options' => array(
EXPIRE_VOTINGAPI_INSERT => t('Vote insert'),
EXPIRE_VOTINGAPI_DELETE => t('Vote delete'),
),
'#default_value' => variable_get('expire_votingapi_actions', array()),
);
$form['tabs']['votingapi']['expire'] = array(
'#type' => 'fieldset',
'#title' => t('What URLs should be expired when votingapi action is triggered?'),
);
$form['tabs']['votingapi']['expire']['expire_votingapi_entity_page'] = array(
'#type' => 'checkbox',
'#title' => t('Voted entity page'),
'#description' => t('Expire url of the voted entity.'),
'#default_value' => variable_get('expire_votingapi_entity_page', EXPIRE_VOTINGAPI_ENTITY_PAGE),
);
$form['tabs']['votingapi']['expire']['expire_votingapi_entity'] = array(
'#type' => 'checkbox',
'#title' => t('Voted entity'),
'#description' => t('Execute voted entity expiration. Note that will be executed expiration with expire settings for this entity type (user, node, etc).'),
'#default_value' => variable_get('expire_votingapi_entity', EXPIRE_VOTINGAPI_ENTITY),
);
$form['tabs']['votingapi']['expire']['expire_votingapi_custom'] = array(
'#type' => 'checkbox',
'#title' => t('Custom pages'),
'#description' => t('Expire user-defined custom urls.'),
'#default_value' => variable_get('expire_votingapi_custom', EXPIRE_VOTINGAPI_CUSTOM),
);
$form['tabs']['votingapi']['expire']['expire_votingapi_custom_pages'] = array(
'#type' => 'textarea',
'#title' => t('Enter custom URLs'),
'#description' => t('Enter one relative URL per line. It can be the path of a node (e.g. !example1) or of any alias (e.g. !example2). However, it has to be the final URL, not a redirect (use the !link1 and !link2 modules).', array('!example1' => 'user/[user:uid]', '!example2' => 'my/path', '!link1' => l('Global Redirect', 'https://drupal.org/project/globalredirect'), '!link2' => l('Redirect', 'https://drupal.org/project/redirect'))) . '
'
. t('If you want to match a path with any ending, add "|wildcard" to the end of the line (see !link1 for details). Example: !example1 will match !example1a, but also !example1b, !example1c, etc.', array('!link1' => l('function cache_clear_all', 'https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_clear_all/7'), '!example1' => 'my/path|wildcard', '!example1a' => 'my/path', '!example1b' => 'my/path/one', '!example1c' => 'my/path/two')) . '
'
. t('You may use tokens here.'),
'#states' => array(
'visible' => array(
':input[name="expire_votingapi_custom"]' => array('checked' => TRUE),
),
),
'#default_value' => variable_get('expire_votingapi_custom_pages'),
);
}
// MENU LINK SETTINGS.
if (module_exists('menu')) {
$form['tabs']['menu_links'] = array(
'#type' => 'fieldset',
'#title' => t('Menu links expiration'),
'#group' => 'tabs',
'#weight' => 6,
);
$form['tabs']['menu_links']['actions'] = array(
'#type' => 'fieldset',
'#title' => t('Menu link actions'),
);
$form['tabs']['menu_links']['actions']['expire_menu_link_actions'] = array(
'#type' => 'checkboxes',
'#description' => t('Page cache for user will be flushed after selected actions.'),
'#options' => array(
EXPIRE_MENU_LINK_INSERT => t('Menu link insert'),
EXPIRE_MENU_LINK_UPDATE => t('Menu link update'),
EXPIRE_MENU_LINK_DELETE => t('Menu link delete'),
),
'#default_value' => variable_get('expire_menu_link_actions', array()),
);
$form['tabs']['menu_links']['expire_menu_link_override_menus'] = array(
'#type' => 'fieldset',
'#tree' => TRUE,
'#title' => t('What menus should expire their page urls (and at what depth) when menu is updated?'),
);
$options = array();
for ($i = 0; $i <= MENU_MAX_DEPTH; $i++) {
$options[$i] = $i ? t('@depth depth', array('@depth' => $i)) : t('None');
}
$menu_options = array_filter(variable_get('expire_menu_link_override_menus', array()));
foreach (menu_get_menus() as $menu_name => $menu_label) {
$form['tabs']['menu_links']['expire_menu_link_override_menus'][$menu_name] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => !empty($menu_options[$menu_name]) ? $menu_options[$menu_name] : 0,
'#title' => check_plain($menu_label),
);
}
}
// Add the token tree UI.
if (module_exists('token')) {
$form['tabs']['node']['expire']['expire_node_custom_pages']['#description'] .= ' ' .
theme('token_tree_link', array('text' => t('View available tokens.'), 'token_types' => array('node')));
if (module_exists('comment')) {
$form['tabs']['comment']['expire']['expire_comment_custom_pages']['#description'] .= ' ' .
theme('token_tree_link', array('text' => t('View available tokens.'), 'token_types' => array('comment')));
}
$form['tabs']['user']['expire']['expire_user_custom_pages']['#description'] .= ' ' .
theme('token_tree_link', array('text' => t('View available tokens.'), 'token_types' => array('user')));
if (module_exists('file')) {
$form['tabs']['file']['expire']['expire_file_custom_pages']['#description'] .= ' ' .
theme('token_tree_link', array('text' => t('View available tokens.'), 'token_types' => array('file')));
}
if (module_exists('votingapi')) {
$form['tabs']['votingapi']['expire']['expire_votingapi_custom_pages']['#description'] .= ' ' .
theme('token_tree_link', array('text' => t('View available tokens.')));
}
}
return system_settings_form($form);
}
/**
* Settings form for a node type.
*/
function expire_node_settings_form(&$form) {
if (empty($form['#node_type']->type)) {
return;
}
$node_type = $form['#node_type']->type;
$form['expire'] = array(
'#type' => 'fieldset',
'#title' => t('Cache Expiration'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#group' => 'additional_settings',
);
// NODE SETTINGS.
$form['expire']['expire_node_override_defaults'] = array(
'#type' => 'checkbox',
'#title' => t('Override default settings for this node type'),
'#default_value' => variable_get('expire_node_override_defaults_' . $node_type),
);
// Copy here settings from default settings form.
$settings_form = expire_admin_settings_form();
$form['expire']['node_actions'] = $settings_form['tabs']['node']['actions'];
$form['expire']['node_expires'] = $settings_form['tabs']['node']['expire'];
// Display fieldsets with settings only if they should be overriden.
$form['expire']['node_actions']['#states'] = array(
'visible' => array(':input[name="expire_node_override_defaults"]' => array('checked' => TRUE)),
);
$form['expire']['node_expires']['#states'] = array(
'visible' => array(':input[name="expire_node_override_defaults"]' => array('checked' => TRUE)),
);
// Change tab title to more suitable here.
$form['expire']['node_expires']['#title'] = t('What pages should be expired when node action is triggered?');
// COMMENT SETTINGS.
if (module_exists('comment')) {
$form['expire']['expire_comment_override_defaults'] = array(
'#type' => 'checkbox',
'#title' => t('Override default settings for comments to this node type'),
'#default_value' => variable_get('expire_comment_override_defaults_' . $node_type),
);
$form['expire']['comment_actions'] = $settings_form['tabs']['comment']['actions'];
$form['expire']['comment_expires'] = $settings_form['tabs']['comment']['expire'];
// Display fieldsets with settings only if they should be overriden.
$form['expire']['comment_actions']['#states'] = array(
'visible' => array(':input[name="expire_comment_override_defaults"]' => array('checked' => TRUE)),
);
$form['expire']['comment_expires']['#states'] = array(
'visible' => array(':input[name="expire_comment_override_defaults"]' => array('checked' => TRUE)),
);
}
// Set default settings for this node type.
$form['expire']['node_actions']['expire_node_actions']['#default_value'] =
variable_get('expire_node_actions_' . $node_type, array());
$form['expire']['node_expires']['expire_node_front_page']['#default_value'] =
variable_get('expire_node_front_page_' . $node_type, EXPIRE_NODE_FRONT_PAGE);
$form['expire']['node_expires']['expire_node_node_page']['#default_value'] =
variable_get('expire_node_node_page_' . $node_type, EXPIRE_NODE_NODE_PAGE);
if (module_exists('taxonomy')) {
$form['expire']['node_expires']['expire_node_term_pages']['#default_value'] =
variable_get('expire_node_term_pages_' . $node_type, EXPIRE_NODE_TERM_PAGES);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['expire']['node_expires']['expire_node_reference_pages']['#default_value'] =
variable_get('expire_node_reference_pages_' . $node_type, EXPIRE_NODE_REFERENCE_PAGES);
if (module_exists('field_collection')) {
$form['expire']['node_expires']['expire_node_reference_field_collection_pages']['#default_value'] =
variable_get('expire_node_reference_field_collection_pages_' . $node_type, EXPIRE_NODE_REFERENCE_FC_PAGES);
}
}
$form['expire']['node_expires']['expire_node_custom']['#default_value'] =
variable_get('expire_node_custom_' . $node_type, EXPIRE_NODE_CUSTOM);
$form['expire']['node_expires']['expire_node_custom_pages']['#default_value'] =
variable_get('expire_node_custom_pages_' . $node_type);
// Set default values for comments to this node type.
if (module_exists('comment')) {
$form['expire']['comment_actions']['expire_comment_actions']['#default_value'] =
variable_get('expire_comment_actions_' . $node_type, array());
$form['expire']['comment_expires']['expire_comment_front_page']['#default_value'] =
variable_get('expire_comment_front_page_' . $node_type, EXPIRE_COMMENT_FRONT_PAGE);
$form['expire']['comment_expires']['expire_comment_comment_page']['#default_value'] =
variable_get('expire_comment_comment_page_' . $node_type, EXPIRE_COMMENT_COMMENT_PAGE);
$form['expire']['comment_expires']['expire_comment_node_page']['#default_value'] =
variable_get('expire_comment_node_page_' . $node_type, EXPIRE_COMMENT_NODE_PAGE);
if (module_exists('taxonomy')) {
$form['expire']['comment_expires']['expire_comment_node_term_pages']['#default_value'] =
variable_get('expire_comment_node_term_pages_' . $node_type, EXPIRE_COMMENT_NODE_TERM_PAGES);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['expire']['comment_expires']['expire_comment_reference_pages']['#default_value'] =
variable_get('expire_comment_reference_pages_' . $node_type, EXPIRE_COMMENT_REFERENCE_PAGES);
}
if (module_exists('node_reference') || module_exists('user_reference') || module_exists('entityreference')) {
$form['expire']['comment_expires']['expire_comment_node_reference_pages']['#default_value'] =
variable_get('expire_comment_node_reference_pages_' . $node_type, EXPIRE_COMMENT_NODE_REFERENCE_PAGES);
if (module_exists('field_collection')) {
$form['expire']['comment_expires']['expire_comment_node_reference_field_collection_pages']['#default_value'] =
variable_get('expire_comment_node_reference_field_collection_pages_' . $node_type, EXPIRE_COMMENT_NODE_REFERENCE_FC_PAGES);
}
}
$form['expire']['comment_expires']['expire_comment_custom']['#default_value'] =
variable_get('expire_comment_custom_' . $node_type, EXPIRE_COMMENT_CUSTOM);
$form['expire']['comment_expires']['expire_comment_custom_pages']['#default_value'] =
variable_get('expire_comment_custom_pages_' . $node_type);
}
// Attach js.
$form['#attached']['js'][] = drupal_get_path('module', 'expire') . '/js/expire.admin.js';
}