}
}
+ public function addUploadAttachment(PlUpload &$upload, $name)
+ {
+ $encoding = $upload->isType('text') ? 'quoted-printable' : 'base64';
+ $this->addAttachment($upload->getContents(), $upload->contentType(), $name, false, $encoding);
+ }
+
public function assign($var, $value)
{
if (!is_null($this->page)) {
return file_exists($this->filename);
}
- static public function listFiles($forlife = '*', $category = '*', $basename = false)
+ static public function listRawFiles($forlife = '*', $category = '*', $uniq = false, $basename = false)
{
global $globals;
$filename = $globals->spoolroot . '/spool/uploads/temp/';
$filename .= $forlife . '-' . $category;
+ if (!$uniq) {
+ $filename .= '-*';
+ }
$files = glob($filename);
if ($basename) {
- array_walk($files, 'basename');
+ $files = array_map('basename', $files);
+ }
+ return $files;
+ }
+
+ static public function listFilenames($forlife = '*', $category = '*')
+ {
+ $files = PlUpload::listRawFiles($forlife, $category, false, true);
+ foreach ($files as &$name) {
+ list($forlife, $cat, $fn) = explode('-', $name, 3);
+ $name = $fn;
}
return $files;
}
- static public function clear($user = '*', $category = '*')
+ static public function &listFiles($forlife = '*', $category = '*', $uniq = false)
+ {
+ $res = array();
+ $files = PlUpload::listRawFiles($forlife, $category, $uniq, true);
+ foreach ($files as $name) {
+ list($forlife, $cat, $fn) = explode('-', $name, 3);
+ $res[$fn] = new PlUpload($forlife, $cat, $fn);
+ }
+ return $res;
+ }
+
+ static public function clear($user = '*', $category = '*', $uniq = false)
{
- $files = PlUpload::listFiles($user, $category, false);
- array_walk($files, 'unlink');
+ $files = PlUpload::listRawFiles($user, $category, $uniq, false);
+ array_map('unlink', $files);
}
public function contentType()
global $globals;
$page->changeTpl('emails/send.tpl');
+ $page->addJsLink('ajax.js');
$page->assign('xorg_title','Polytechnique.org - Envoyer un email');
return join(', ', $ret);
}
+ foreach ($_FILES as &$file) {
+ if (!PlUpload::get($file, S::v('forlife'), 'emails.send', false)) {
+ $page->trig("Impossible de télécharger '" . pl_entities($file['name']) . "'");
+ }
+ }
+
$to2 = getEmails(Env::v('to_contacts'));
$cc2 = getEmails(Env::v('cc_contacts'));
$txt = str_replace('^M', '', Env::v('contenu'));
if (empty($to) && empty($cc) && empty($to2)) {
$page->trig("Indique au moins un destinataire.");
+ $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send'));
} else {
$mymail = new PlMailer();
$mymail->setFrom($from);
if (!empty($bcc)) { $mymail->addBcc($bcc); }
if (!empty($to2)) { $mymail->addTo($to2); }
if (!empty($cc2)) { $mymail->addCc($cc2); }
- if (is_uploaded_file($_FILES['uploaded']['tmp_name'])) {
- $mymail->addAttachment($_FILES['uploaded']['tmp_name'],
- $_FILES['uploaded']['type'],
- $_FILES['uploaded']['name']);
+ $files =& PlUpload::listFiles(S::v('forlife'), 'emails.send');
+ foreach ($files as $name=>&$upload) {
+ $mymail->addUploadAttachment($upload, $name);
}
- $mymail->setTxtBody(wordwrap($txt,72,"\n"));
+ $mymail->setTxtBody(wordwrap($txt, 78, "\n"));
if ($mymail->send()) {
$page->trig("Ton mail a bien été envoyé.");
$_REQUEST = array('bcc' => S::v('bestalias').'@'.$globals->mail->domain);
+ PlUpload::clear(S::v('forlife'), 'emails.send');
} else {
$page->trig("Erreur lors de l'envoi du courriel, réessaye.");
+ $page->assign('uploaded_f', PlUpload::listFilenames(S::v('forlife'), 'emails.send'));
}
}
} else {
+ PlUpload::clear(S::v('forlife'), 'emails.send');
$_REQUEST['bcc'] = S::v('bestalias').'@'.$globals->mail->domain;
}
--
{$smarty.session.prenom} {$smarty.session.nom}
{/if}</textarea>
- <div>
+ <script type="text/javascript">//<![CDATA[
+ {literal}
+ function removeAttachments()
+ {
+ Ajax.update_html(null, 'emails/send', null);
+ document.getElementById('att_already').style.display = 'none';
+ document.getElementById('att_form').style.display = '';
+ }
+ {/literal}
+ //]]></script>
+ {if $uploaded_f|@count}
+ <div id="att_already">
+ <strong>{icon name=email_attach} Pièce jointe : </strong>
+ {$uploaded_f[0]}
+ <a href="javascript:removeAttachments()">
+ <img src="images/icons/bin_empty.gif" alt="Supprimer" title="Supprimer la pièce jointe" />
+ </a>
+ </div>
+ {/if}
+ <div id="att_form" {if $uploaded_f|@count neq 0}style="display: none"{/if}>
<strong>{icon name=email_attach} Ajouter une pièce jointe : </strong>
<input type="file" name="uploaded" />
</div>