Программно включить защиту Mollom для формы


Я хочу включить защиту Mollom для ряда форм в моей среде разработки, а затем экспортировать эту конфигурацию в QA и в производство, не касаясь интерфейса администратора в QA или производстве.

Я могу экспортировать настройки Mollom с помощью функций + Strongarm, но, похоже, он не экспортирует конфигурацию для форм, защищенных Mollom.

Я вижу, что могу использовать hook_mollom_form_list и hook_mollom_form_info, чтобы сделать новые формы доступными в пользовательский интерфейс со значениями по умолчанию, но я не могу запустить hook_mollom_form_info, не включив защиту формы в пользовательском интерфейсе.

Я пытаюсь добавить капчу в форму регистрации и сброса пароля, выполнить анализ текста в комментариях и выполнить анализ текста для моей пользовательской формы отправки узла. Похоже, что в модуле mollom уже есть определения для всех этих форм, но я не вижу способа их включить.

Author: resplin, 2012-04-28

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.');
  }
}
 1
Author: wiifm, 2013-08-02 03:33:11

Я не нашел лучшего способа, поэтому сделал вставки непосредственно в БД.

В моем модуле.установите:

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();
}
 1
Author: resplin, 2012-08-24 21:21:02

Я бы попытался пойти по пути функций с помощью исправления, представленного в этой проблеме. Надеюсь, в ближайшее время он будет передан в модуль.

 0
Author: Pontus Nilsson, 2012-08-17 14:18:41