function commentformsettings_form_alter in Node and Comments Form Settings 7.2
Same name and namespace in other branches
- 6.3 commentformsettings/commentformsettings.module \commentformsettings_form_alter()
- 6.2 commentformsettings/commentformsettings.module \commentformsettings_form_alter()
- 7.3 commentformsettings/commentformsettings.module \commentformsettings_form_alter()
Implements hook_form_alter().
File
- commentformsettings/
commentformsettings.module, line 74
Code
function commentformsettings_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'node_type_form') {
$path = drupal_get_path('module', 'commentformsettings') . '/includes/';
$form['var_comments'] = array(
'#type' => 'hidden',
'#value' => $form['#node_type']->type,
);
$settings = commentformsettings_get_settings($form['#node_type']->type);
// Only active the configuration options if the comments module is installed.
if (module_exists('comment') && isset($form['comment'])) {
include_once DRUPAL_ROOT . '/' . $path . 'settings_comments.inc';
_commentformsettings_settings_form($form, $settings);
}
$form['#validate'][] = 'commentformsettings_settings_validate';
// To save the values in an keyed array we need to define a custom submit callback.
$form['#submit'][] = 'commentformsettings_settings_submit';
}
if (isset($form['#node']) && $form_id === 'comment_node_' . $form['#node']->type . '_form') {
// Start off with the node visible from the form, it might be overridden
// later.
$node = $form['#node'];
// print '<pre>' . htmlentities(print_r($form, 1)) . '</pre>';
$path = drupal_get_path("module", "commentformsettings") . '/includes/';
// on comment_form there's no $form['#node'] so we can't load the $node->type
// we just take the argument
// since we don't have node/nid when creating a comment on a separate form
// we have to filter the two cases to check what argument to take and load
// the node
// TODO: find a better way to do this
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
}
if (arg(0) == 'comment' && arg(1) == 'reply' && is_numeric(arg(2))) {
$node = node_load(arg(2));
}
if (arg(0) == 'comment' && arg(1) == 'edit' && is_numeric(arg(2))) {
$node = node_load(arg(2));
}
// User profile (When using content profile).
if (module_exists('content_profile')) {
if (arg(0) == 'user' && is_numeric(arg(1))) {
$content = array();
foreach (content_profile_get_types('names') as $type => $type_name) {
$node = content_profile_load($type, arg(1));
if ($node) {
break;
}
}
}
}
$settings = commentformsettings_get_settings($node->type);
// Get all the elements defined in the function.
$elements = commentformsettings_elements_default();
// Loop thought the array to build the function.
foreach ($elements as $key => $vals) {
if (isset($settings[$key])) {
// Ignore the elements in the variable. In this case, we only ignore cfs_pnc because
// it is a cointainer with other values, an array or arrays
$ignore = array(
'cfs_pnc',
'cfs_inputformat',
);
// If the $key is not in the array $ignore detect the functions.
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);
}
}
}
}
}
}