sent_at) {
return sprintf('%s envoyé le : %s', $this->name, $this->getSentAt('d/m/Y H:i:s'));
}
return sprintf('%s modifier le : %s', $this->name, $this->getUpdatedAt('d/m/Y H:i:s'));
}
//************** Système d'envoi **************************
public function getRecipients()
{
$email_list = $this->splitEmailList($this->getEmailListing());
$users_mail = $this->getUserByGroups();
$recipients_array = array_unique(array_merge($email_list, $users_mail));
$this->setRecipientsNumber(count($recipients_array));
$emails = array_diff($recipients_array, $this->getUnsubscribed());
$this->setBlacklistNumber($this->getRecipientsNumber() - count($emails));
$recipients = filter_var_array($emails, FILTER_VALIDATE_EMAIL);
foreach ($recipients as $key => $value) {
if (empty($value) || $value == false) {
unset($recipients[$key]);
}
}
return $recipients;
}
public function getUnsubscribed()
{
$blck_group = GroupQuery::create()->filterByCode('BLACKLIST')->findOne();
if (!$blck_group) {
throw new \Exception('You must define a group with "BLACKLIST" code in order to allow user\'s unsubscribe');
}
return UserQuery::create()->select(UserPeer::EMAIL)->filterByGroup($blck_group)->find()->toArray();
}
private function getUserByGroups()
{
if (!$this->getGroups() || $this->countGroups() == 0) {
return array();
}
$user_query = UserQuery::create()->select(UserPeer::EMAIL);
$group_iterator = new \ArrayIterator($this->getGroups());
while ($group = $group_iterator->current()) {
$user_query->filterByGroup($group);
$group_iterator->next();
if ($group_iterator->current()) {
$user_query->_or();
}
}
return $user_query->find()->toArray();
}
private function splitEmailList($listing)
{
preg_match_all('`([\w.-]+@[\w.-]+\.[a-z]{2,6})`i', $listing, $matchesarray, PREG_SET_ORDER);
$lists = array();
if (!empty($matchesarray)) {
foreach ($matchesarray as $matches) {
$lists[] = $matches[1];
}
}
return $lists;
}
// *********** Variable dynamique dans CSV *************
public function uploadEmailFileVar()
{
if (null === $this->email_file_var && !$this->delete_email_file_var && null !== $this->rollback_email_file_var) {
$this->email_file_var = $this->rollback_email_file_var; // keep the file
return true;
}
if (null === $this->email_file_var || !is_object($this->email_file_var)) {
return true; // no file to upload
}
//Delete old file on overload
$this->removeEmailFileVar();
$filename = $this->getNewFilename($this->email_file_var->guessExtension());
$this->email_file_var_file = $this->email_file_var;
$this->has_uploaded_email_file_var = true;
$this->email_file_var = $filename;
if ($this->has_uploaded_email_file_var) {
$filename = $this->email_file_var_file->getRealPath();
$parser = new CsvParser($filename, ';', '"', '\\', true);
$parser->parse();
$legend = $parser->getLegend();
$text = "Vous avez chargez un fichier CSV avec des variables. Ces variables sont accessibles dans les blocks de contenus.
Voici la liste exhaustive des variables disponibles :