You are here

function captcha_set_form_id_setting in CAPTCHA 7

Same name and namespace in other branches
  1. 8 captcha.inc \captcha_set_form_id_setting()
  2. 6.2 captcha.inc \captcha_set_form_id_setting()

Helper function for adding/updating a CAPTCHA point.

Parameters

string $form_id: the form ID to configure.

string $captcha_type: the setting for the given form_id, can be:

  • 'none' to disable CAPTCHA,
  • 'default' to use the default challenge type
  • NULL to remove the entry for the CAPTCHA type
  • something of the form 'image_captcha/Image'
  • an object with attributes $captcha_type->module and $captcha_type->captcha_type
18 calls to captcha_set_form_id_setting()
CaptchaAdminTestCase::testCaptchaPlacementCacheClearing in ./captcha.test
Test the CAPTCHA placement clearing.
CaptchaAdminTestCase::testCaptchaPointSettingGetterAndSetter in ./captcha.test
Test the CAPTCHA point setting getter/setter.
CaptchaAdminTestCase::testUntrustedUserPosting in ./captcha.test
CaptchaAdminTestCase::testXssOnCaptchaDescription in ./captcha.test
Test XSS vulnerability on CAPTCHA description.
CaptchaPersistenceTestCase::setUpPersistence in ./captcha.test
Set up the persistence and CAPTCHA settings.

... See full list

File

./captcha.inc, line 22
General CAPTCHA functionality and helper functions.

Code

function captcha_set_form_id_setting($form_id, $captcha_type) {

  // Handle 'none'.
  if ($captcha_type == 'none') {
    db_merge('captcha_points')
      ->key(array(
      'form_id' => $form_id,
    ))
      ->fields(array(
      'module' => NULL,
      'captcha_type' => NULL,
    ))
      ->execute();
  }
  elseif ($captcha_type == 'default') {
    db_merge('captcha_points')
      ->key(array(
      'form_id' => $form_id,
    ))
      ->fields(array(
      'module' => NULL,
      'captcha_type' => 'default',
    ))
      ->execute();
  }
  elseif ($captcha_type == NULL) {
    db_delete('captcha_points')
      ->condition('form_id', $form_id)
      ->execute();
  }
  elseif (is_object($captcha_type) && !empty($captcha_type->module) && !empty($captcha_type->captcha_type)) {
    db_merge('captcha_points')
      ->key(array(
      'form_id' => $form_id,
    ))
      ->fields(array(
      'module' => $captcha_type->module,
      'captcha_type' => $captcha_type->captcha_type,
    ))
      ->execute();
  }
  elseif (is_string($captcha_type) && substr_count($captcha_type, '/') == 1) {
    list($module, $type) = explode('/', $captcha_type);
    db_merge('captcha_points')
      ->key(array(
      'form_id' => $form_id,
    ))
      ->fields(array(
      'module' => $module,
      'captcha_type' => $type,
    ))
      ->execute();
  }
  else {
    drupal_set_message(t('Failed to set a CAPTCHA type for form %form_id: could not interpret value "@captcha_type"', array(
      '%form_id' => $form_id,
      '@captcha_type' => (string) $captcha_type,
    )), 'warning');
  }
}