View source
<?php
function nodeformsettings_enable() {
$types = node_type_get_types();
foreach ($types as $type => $content_type) {
$variable = variable_get("nodeformsettings_" . $type);
if (!isset($variable)) {
variable_set("nodeformsettings_" . $type, array());
}
}
}
function nodeformsettings_elements_default() {
return array(
'nfs_author_information' => 0,
'nfs_cancel' => array(
'nfs_cancel_status' => 1,
'nfs_cancel_behaviour' => 0,
),
'nfs_comments' => 0,
'nfs_hide_node_title' => 0,
'nfs_inputformat' => 0,
'nfs_path' => 0,
'nfs_menu_settings' => 0,
'nfs_publishingoptions' => 0,
'nfs_revisionlog' => 0,
'nfs_submit' => '',
'nfs_title_create' => '',
'nfs_title_edit' => '',
'nfs_sitemap_display' => 0,
'nfs_title_delete' => '',
'nfs_desc_delete' => '',
'nfs_promote_display' => 0,
'nfs_sticky_display' => 0,
'nfs_default_vertical_tab' => '-none-',
'nfs_title_description' => '',
'nfs_body_description' => '',
);
}
function nodeformsettings_get_settings($type) {
return variable_get('nodeformsettings_' . $type, '');
}
function nodeformsettings_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'node_type_form') {
$path = drupal_get_path("module", "nodeformsettings") . '/includes/';
$form['var'] = array(
'#type' => 'hidden',
'#value' => $form['#node_type']->type,
);
$settings = nodeformsettings_get_settings($form['#node_type']->type);
if (isset($settings)) {
include_once DRUPAL_ROOT . '/' . $path . 'settings_node.inc';
_nodeformsettings_settings_form($form, $settings);
}
$form['#submit'][] = 'nodeformsettings_settings_submit';
}
}
function nodeformsettings_form_node_form_alter(&$form, $form_state, $form_id) {
if (!empty($form['#node_edit_form']) || !empty($form['#node_delete_form'])) {
$node = $form['#node'];
$path = drupal_get_path("module", "nodeformsettings") . '/includes/';
$settings = nodeformsettings_get_settings($node->type);
$elements = nodeformsettings_elements_default();
foreach ($elements as $key => $vals) {
if (isset($settings[$key])) {
$ignore = array(
"nfs_hide_node_title",
"nfs_inputformat",
);
if (!in_array($key, $ignore)) {
include_once DRUPAL_ROOT . '/' . $path . 'option_' . $key . '.inc';
$function = '_option_' . $key;
if (function_exists($function)) {
$function($form, $form_state, $settings, $node);
}
}
}
}
}
}
function nodeformsettings_settings_submit($form, &$form_state) {
$values = $form_state['values'];
$name = 'nodeformsettings_' . $values['var'];
$elements = nodeformsettings_elements_default();
foreach ($elements as $k => $v) {
$ignore[] = $k;
}
$ignore[] = $name;
foreach ($values as $key => $value) {
if (!in_array($key, $ignore)) {
unset($values[$key]);
}
else {
$data[$key] = $value;
}
}
variable_set($name, $data);
if (isset($values['var'])) {
nodeformsettings_purge($values['var']);
}
}
function nodeformsettings_preprocess_page(&$vars) {
if (isset($vars['node'])) {
$settings = nodeformsettings_get_settings($vars['node']->type);
if (!empty($vars['node']) && isset($settings['nfs_hide_node_title']) && $settings['nfs_hide_node_title'] == 1 && arg(2) != 'edit') {
$vars['title'] = '';
}
}
}
function nodeformsettings_purge($type = NULL) {
$elements = nodeformsettings_elements_default();
if (isset($type)) {
variable_del('var_' . $type);
foreach ($elements as $k => $v) {
variable_del($k . '_' . $type);
}
}
else {
foreach (node_type_get_names() as $type => $type_name) {
variable_del('var_' . $type);
foreach ($elements as $k => $v) {
variable_del($k . '_' . $type);
}
}
}
}
function nodeformsettings_features_pipe_node_alter(&$pipe, $data, $export) {
if (!empty($export['features']['node']) && module_exists('strongarm')) {
$map = features_get_default_map('variable');
$variables = array(
'nodeformsettings_',
);
foreach ($export['features']['node'] as $node_type) {
foreach ($variables as $variable_name) {
$variable_name = "{$variable_name}_{$node_type}";
if (isset($map[$variable_name]) && $map[$variable_name] != $module_name) {
$export['dependencies'][$map[$variable_name]] = $map[$variable_name];
}
else {
$pipe['variable'][] = $variable_name;
}
}
}
}
}
function nodeformsettings_node_type_delete($info) {
variable_del('nodeformsettings_' . $info->type);
}
function nodeformsettings_node_type_update($info) {
if (!empty($info->old_type) && $info->old_type != $info->type) {
$setting = variable_get('nodeformsettings_' . $info->old_type, '');
variable_del('nodeformsettings_' . $info->old_type);
variable_set('nodeformsettings_' . $info->type, $setting);
}
}
function nodeformsettings_element_info_alter(&$type) {
if (isset($type['text_format']['#process'])) {
foreach ($type['text_format']['#process'] as &$callback) {
if ($callback === 'filter_process_format') {
$callback = 'nodeformsettings_process_format';
}
}
}
}
function nodeformsettings_process_format($element) {
$element = filter_process_format($element);
if (isset($element['#entity'], $element['#entity']->type)) {
$type = $element['#entity']->type;
$fields = array(
'body',
);
$settings = nodeformsettings_get_settings($type);
$setting = 'nfs_inputformat';
if (isset($settings[$setting], $element['#field_name']) && count($settings) && $settings[$setting] == 1 && in_array($element['#field_name'], $fields)) {
$element['format']['#access'] = FALSE;
}
}
elseif (isset($element['#entity'], $element['#entity']->node_type) && module_exists('commentformsettings')) {
$element = commentformsettings_process_format($element);
}
return $element;
}
function nodeformsettings_form_node_delete_confirm_alter(&$form, $form_state, $form_id) {
$form['#node_delete_form'] = 'delete';
nodeformsettings_form_node_form_alter($form, $form_state, $form_id);
}
function nodeformsettings_set_default_to_all($form, &$form_state) {
nodeformsettings_settings_submit($form, $form_state);
$type = $form_state['values']['type'];
$current_type_title = $form_state['values']['name'];
$variable = variable_get("nodeformsettings_" . $type);
$types = node_type_get_types();
foreach ($types as $type => $content_type) {
variable_set("nodeformsettings_" . $type, $variable);
}
drupal_set_message(t('The content type !type has been updated.', array(
'!type' => '<em>' . $current_type_title . '</em>',
)));
drupal_goto('admin/structure/types');
}
function nodeformsettings_reset_default($form, &$form_state) {
$type = $form_state['values']['type'];
$current_type_title = $form_state['values']['name'];
$name = 'nodeformsettings_' . $type;
variable_set($name, nodeformsettings_elements_default());
drupal_set_message(t('The content type !type has been updated.', array(
'!type' => '<em>' . $current_type_title . '</em>',
)));
drupal_goto('admin/structure/types');
}