public static function send(PetitionSigning $signing, $subject_prefix = null) { if ($signing->getValidationKind() != PetitionSigning::VALIDATION_KIND_EMAIL) { return; } $widget = $signing->getWidget(); $petition = $widget->getPetition(); $petition_text = $widget->getPetitionText(); $subject = $petition_text->getEmailValidationSubject(); $body = $petition_text->getEmailValidationBody(); $validation = UtilLink::signValidation($signing->getId(), $signing->getValidationData()); $url_ref_ = $signing->getField(Petition::FIELD_REF); // $this->getValue('ref'); $url_readmore_ = $petition->getReadMoreUrl(); $url_ref = UtilPolicat::firstString(array($url_ref_, $url_readmore_)); $url_readmore = UtilPolicat::firstString(array($url_readmore_, $url_ref_)); $from = $petition->getFrom(); $to = $signing->getEmail(); $additional_subst = array('URL-REFERER' => $url_ref, 'URL-READMORE' => $url_readmore, 'VALIDATION' => $validation, '#REFERER-URL#' => $url_ref, '#READMORE-URL#' => $url_readmore, '#VALIDATION-URL#' => $validation); if ($subject_prefix) { $i18n = sfContext::getInstance()->getI18N(); $i18n->setCulture($signing->getWidget()->getPetitionText()->getLanguageId()); $translated = $i18n->__($subject_prefix); $subject = $translated . ' ' . $subject; } UtilMail::sendWithSubst(null, $from, $to, $subject, $body, $petition_text, $widget, $additional_subst, $signing->getSubst()); }
public function savePetitionSigning(PetitionSigning $signing, $clean = true) { $string = ''; foreach (array(Petition::FIELD_FULLNAME => 'fullname', Petition::FIELD_FIRSTNAME => 'firstname', Petition::FIELD_LASTNAME => 'lastname', Petition::FIELD_EMAIL => 'email', Petition::FIELD_ADDRESS => 'address', Petition::FIELD_CITY => 'city', Petition::FIELD_POSTCODE => 'post_code') as $field_name) { $field = trim($signing->getField($field_name, '')); if ($field) { $string .= ' ' . $field; } } $parts = explode(' ', PetitionSigningSearchTable::normalize($string)); $final_parts = array(); foreach ($parts as $part) { $part = trim($part); $len = mb_strlen($part, 'UTF-8'); if ($len > 2) { if ($len > 48) { $final_parts[] = mb_substr($part, 0, 48, 'UTF-8'); } else { $final_parts[] = $part; } } } $unique_array = array_unique($final_parts, SORT_STRING); if (count($unique_array)) { if ($clean && $signing->getId()) { $this->createQuery('pss')->where('pss.id = ?', $signing->getId())->delete()->execute(); } $i = 0; try { $con = $this->getConnection(); $con->beginTransaction(); foreach ($unique_array as $keyword) { if ($i++ > 10) { break; } $psk = new PetitionSigningSearch(); $psk->setPetitionSigning($signing); $psk->setKeyword($keyword); $psk->save(); $psk->free(); } $con->commit(); } catch (Exception $e) { $con->rollback(); } } }