/**
  * Binds the form with input values, adding recaptcha values
  * @param array $taintedValues  An array of input values
  * @param array $taintedFiles   An array of uploaded files (in the $_FILES or $_GET format)
  */
 public function bind(array $taintedValues = null, array $taintedFiles = null)
 {
     if (sfConfig::get('app_recaptcha_active', false)) {
         $request = sfContext::getInstance()->getRequest();
         $taintedValues['challenge'] = $request->getParameter('recaptcha_challenge_field');
         $taintedValues['response'] = $request->getParameter('recaptcha_response_field');
     }
     parent::bind($taintedValues, $taintedFiles);
 }
 /**
  * Process post data
  *
  * @return boolean
  * @author Łukasz Wojciechowski
  * @author Radu Topala <*****@*****.**>
  */
 public function processPostData()
 {
     $formData = $this->getRequest()->getParameter('edit');
     $formData = isset($formData[0]) ? $formData[0] : array();
     $this->processCheckboxes($formData);
     $this->changeKeysForForeignFields($formData);
     // filtered means that we are leaving only values for fields that exists in the form
     $formDataFiltered = array();
     foreach ($this->getFieldNamesOfForm($this->form) as $fieldName) {
         if (isset($formData[$fieldName])) {
             $formDataFiltered[$fieldName] = $formData[$fieldName];
         }
     }
     $this->form->bind($formDataFiltered);
     $formSave = $this->form->save();
     //set object after saving and add double multi-combo values after adding main object, if doesn't exist
     $this->object = $this->form->getObject();
     $this->id = $this->object->getPrimaryKey();
     $this->processMultipleRelations($formData);
     return $formSave;
 }