You are here

public function BotchaRecipe::applyRecipe in BOTCHA Spam Prevention 6.2

Same name and namespace in other branches
  1. 7.2 controller/botcha_recipe.controller.inc \BotchaRecipe::applyRecipe()
2 calls to BotchaRecipe::applyRecipe()
BotchaRecipeNoResubmit::applyRecipe in controller/botcha_recipe.controller.inc
BotchaRecipeObscureUrl::applyRecipe in controller/botcha_recipe.controller.inc
2 methods override BotchaRecipe::applyRecipe()
BotchaRecipeNoResubmit::applyRecipe in controller/botcha_recipe.controller.inc
BotchaRecipeObscureUrl::applyRecipe in controller/botcha_recipe.controller.inc

File

controller/botcha_recipe.controller.inc, line 318
Controller layer of the BotchaRecipe objects.

Class

BotchaRecipe
Abstract class to describe recipe data structure.

Code

public function applyRecipe(&$form, &$form_state) {

  // Add BOTCHA fields to the form.
  $form_elements = $this
    ->generateFormElements();
  foreach ($form_elements as $field_name => $field_properties) {
    unset($field_properties['!valid_token']);
    $form[$field_name] = $field_properties;
    if ($this->method == 'build_id_submit') {

      // Save submitted values in our stash for later use in _validate,
      // as we have to reset them here at _form_alter stage.
      // It won't be possible to reset after validation as there is no
      // reliable mechanism in Form API, i.e. form_set_value() does not
      // change rendered form and form errors disable whole 'rebuild' business.
      if (isset($_POST[$field_name])) {
        $form_state['botcha_submit_values'][$field_name] = $_POST[$field_name];
      }
      if (isset($field_properties['#default_value'])) {

        // Reset our controls to defaults here (as explained above).
        $form[$field_name]['#value'] = $field_properties['#default_value'];
        $form_state['post'][$field_name] = $field_properties['#default_value'];
        $_POST[$field_name] = $field_properties['#default_value'];
      }
    }
    else {

      //unset($field_properties['!valid_token']);
    }
  }
}