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_preview' => 0,
'nfs_publishingoptions' => 0,
'nfs_revisionlog' => 0,
'nfs_submit' => t('Submit'),
'nfs_title_create' => t('Create !node_type'),
'nfs_title_edit' => t('!node_title'),
);
}
function nodeformsettings_elements_validate() {
return array(
'nfs_title_create',
'nfs_title_edit',
);
}
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['#validate'][] = 'nodeformsettings_settings_validate';
$form['#submit'][] = 'nodeformsettings_settings_submit';
}
}
function nodeformsettings_form_node_form_alter(&$form, $form_state, $form_id) {
if (!empty($form['#node_edit_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_validate($form, &$form_state) {
$path = drupal_get_path('module', 'nodeformsettings') . '/includes/';
$elements = nodeformsettings_elements_validate();
foreach ($elements as $key) {
include_once DRUPAL_ROOT . '/' . $path . 'validate_' . $key . '.inc';
$function = '_validate_' . $key;
if (function_exists($function)) {
$function($form, $form_state);
}
}
}
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 (isset($settings) && !empty($vars['node']) && isset($settings['nfs_hide_node_title']) && $settings['nfs_hide_node_title'] == 1) {
$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($data) && module_exists('strongarm')) {
$variables = array(
'nodeformsettings_',
);
foreach ($data as $node_type) {
foreach ($variables as $variable_name) {
$pipe['variable'][] = "{$variable_name}_{$node_type}";
}
}
}
}
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_node_type_OLD($op, $info) {
}
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;
}