protected function doUpdateObject($values) { $code = PetitionSigning::genCode(); if ($this->getObject()->getPetition()->isGeoKind()) { // EMAIL-TO-LIST ACTION (AND PLEDGE) $fields = array(); $formFields = array(); foreach ($this->formfields as $fieldname) { $formFields[] = $fieldname; } if ($this->getObject()->getPetition()->isEmailKind()) { $formFields[] = Petition::FIELD_EMAIL_SUBJECT; $formFields[] = Petition::FIELD_EMAIL_BODY; } $non_json_fields = array('email', 'country', 'subscribe'); foreach ($formFields as $fieldname) { if (!in_array($fieldname, $non_json_fields)) { if (array_key_exists($fieldname, $values)) { $fields[$fieldname] = $values[$fieldname]; } } } $fields[Petition::FIELD_REF] = $values[Petition::FIELD_REF]; $wave = new PetitionSigningWave(); $wave->setWave($this->getObject()->getWavePending()); $wave->setFields(json_encode($fields)); $wave->setEmail($this->getValue(Petition::FIELD_EMAIL)); $wave->setCountry($this->getObject()->getPetition()->getWithCountry() ? $this->getValue(Petition::FIELD_COUNTRY) : $this->getObject()->getPetition()->getDefaultCountry()); $wave->setValidationData($code); $wave->setLanguageId($this->getObject()->getWidget()->getPetitionText()->getLanguageId()); $wave->setWidgetId($this->getObject()->getWidgetId()); $wave->setContactNum($this->contact_num); $object = $this->getObject(); $object['PetitionSigningWave'][] = $wave; } if (!$this->getObject()->isNew()) { unset($values[Petition::FIELD_EMAIL_SUBJECT], $values[Petition::FIELD_EMAIL_BODY]); } if (!$this->getObject()->getPetition()->getWithCountry()) { $values['country'] = $this->getObject()->getPetition()->getDefaultCountry(); } $validation_kind = $this->getOption('validation_kind', PetitionSigning::VALIDATION_KIND_NONE); switch ($validation_kind) { case PetitionSigning::VALIDATION_KIND_EMAIL: $values['validation_data'] = $code; $values['validation_kind'] = PetitionSigning::VALIDATION_KIND_EMAIL; break; case PetitionSigning::VALIDATION_KIND_NONE: default: $values['validation_kind'] = PetitionSigning::VALIDATION_KIND_NONE; break; } unset($values['id']); parent::doUpdateObject($values); }