Программно включить защиту Mollom для формы
Я хочу включить защиту Mollom для ряда форм в моей среде разработки, а затем экспортировать эту конфигурацию в QA и в производство, не касаясь интерфейса администратора в QA или производстве.
Я могу экспортировать настройки Mollom с помощью функций + Strongarm, но, похоже, он не экспортирует конфигурацию для форм, защищенных Mollom.
Я вижу, что могу использовать hook_mollom_form_list и hook_mollom_form_info, чтобы сделать новые формы доступными в пользовательский интерфейс со значениями по умолчанию, но я не могу запустить hook_mollom_form_info, не включив защиту формы в пользовательском интерфейсе.
Я пытаюсь добавить капчу в форму регистрации и сброса пароля, выполнить анализ текста в комментариях и выполнить анализ текста для моей пользовательской формы отправки узла. Похоже, что в модуле mollom уже есть определения для всех этих форм, но я не вижу способа их включить.
3 answers
Это очень просто, если у вас есть собственный модуль. Используйте код в YOURMODULE.install
(где comment_node_episode_form
- идентификатор формы, который вы хотите защитить):
/**
* Adding mollom captcha protection to episode comment form.
*/
function YOURMODULE_update_7001() {
$mollom_form = mollom_form_new('comment_node_episode_form');
$mollom_form['mode'] = 1;
$success = mollom_form_save($mollom_form);
if (!$success) {
throw new DrupalUpdateException('Cannot add Mollom Captcha to the Episode comment form.');
}
}
Я не нашел лучшего способа, поэтому сделал вставки непосредственно в БД.
В моем модуле.установите:
function mymodule_update_70001() {
# CAPTCHA on registration form
db_insert('mollom_form')
->fields(array(
'form_id' => 'user_register_form',
'mode' => 1,
'checks' => 'a:0:{}',
'discard' => 1,
'enabled_fields' => 'a:0:{}',
'strictness' => 'normal',
'module' => 'user',
))
->execute();
# CAPTCHA on password reset form
db_insert('mollom_form')
->fields(array(
'form_id' => 'user_pass',
'mode' => 1,
'checks' => 'a:0:{}',
'discard' => 1,
'enabled_fields' => 'a:0:{}',
'strictness' => 'normal',
'module' => 'user',
))
->execute();
# Text analysis of comments
$response = db_insert('mollom_form')
->fields(array(
'form_id' => 'comment_node_mynode_form',
'mode' => 2,
'checks' => 'a:2:{i:0;s:4:"spam";i:1;s:9:"profanity";}',
'discard' => 0,
'enabled_fields' => 'a:2:{i:0;s:7:"subject";i:1;s:27:"comment_body][und][0][value";}',
'strictness' => 'normal',
'module' => 'comment',
))
->execute();
# Text analysis of submission
$response = db_insert('mollom_form')
->fields(array(
'form_id' => 'mynode_node_form',
'mode' => 2,
'checks' => 'a:2:{i:0;s:4:"spam";i:1;s:9:"profanity";}',
'discard' => 0,
'enabled_fields' => 'a:4:{i:0;s:5:"title";i:1;s:19:"body][und][0][value";i:2;s:32:"field_projectpage][und][0][value";i:3;s:33:"field_downloadpage][und][0][value";}',
'strictness' => 'normal',
'module' => 'node',
))
->execute();
}
Я бы попытался пойти по пути функций с помощью исправления, представленного в этой проблеме. Надеюсь, в ближайшее время он будет передан в модуль.