You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
6.3 KiB
209 lines
6.3 KiB
<?php |
|
|
|
/***************************************************************************\ |
|
* SPIP, Systeme de publication pour l'internet * |
|
* * |
|
* Copyright (c) 2001-2020 * |
|
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
|
* * |
|
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
|
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
|
\***************************************************************************/ |
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
include_spip('inc/editer'); |
|
|
|
|
|
function formulaires_editer_message_charger_dist( |
|
$id_message = 'new', |
|
$type = 'message', |
|
$retour = '', |
|
$accepter_email = 'oui', |
|
$destinataires = '', |
|
$titre = '', |
|
$texte = '' |
|
) { |
|
include_spip('inc/autoriser'); |
|
if ( |
|
(!intval($id_message) and !autoriser('envoyermessage', $type)) |
|
or |
|
(intval($id_message) and !autoriser('modifier', 'message', $id_message)) |
|
) { |
|
return false; |
|
} |
|
|
|
$valeurs = formulaires_editer_objet_charger('message', $id_message, 0, 0, $retour, ''); |
|
|
|
// les destinataires sont stockes en chaine separe par une virgule dans la base |
|
if (strlen($valeurs['destinataires'])) { |
|
$valeurs['destinataires'] = explode(',', $valeurs['destinataires']); |
|
} |
|
|
|
if (!intval($id_message)) { |
|
$valeurs['type'] = $type; |
|
$valeurs['destinataires'] = ($destinataires ? explode(',', $destinataires) : array()); |
|
$valeurs['titre'] = $titre; |
|
$valeurs['texte'] = $texte; |
|
$t = time(); |
|
$valeurs['date_heure'] = date('Y-m-d H:i:00', $t); |
|
$valeurs['date_fin'] = date('Y-m-d H:i:00', $t + 3600); |
|
$valeurs['rv'] = ''; |
|
} |
|
|
|
$id_message_origine = intval(_request('id_message_origine')); |
|
if (autoriser('voir', 'message', $id_message_origine)) { |
|
$v = formulaires_editer_objet_charger('message', $id_message_origine, 0, 0, $retour, ''); |
|
$valeurs['titre'] = _T('organiseur:re') . ' : ' . $v['titre']; |
|
$valeurs['texte'] = '<quote>' . $v['texte'] . '</quote>'; |
|
} |
|
|
|
// dispatcher date et heure |
|
list($valeurs['date_debut'], $valeurs['heure_debut']) = explode( |
|
' ', |
|
date('d/m/Y H:i', strtotime($valeurs['date_heure'])) |
|
); |
|
list($valeurs['date_fin'], $valeurs['heure_fin']) = explode( |
|
' ', |
|
date('d/m/Y H:i', strtotime($valeurs['date_fin'])) |
|
); |
|
|
|
if (in_array($valeurs['type'], array('pb', 'affich'))) { |
|
$valeurs['_destiner'] = ''; |
|
} else { |
|
$valeurs['_destiner'] = ' '; |
|
} |
|
|
|
return $valeurs; |
|
} |
|
|
|
|
|
function formulaires_editer_message_verifier_dist( |
|
$id_message = 'new', |
|
$type = 'message', |
|
$retour = '', |
|
$accepter_email = 'oui', |
|
$destinataires = '', |
|
$titre = '', |
|
$texte = '' |
|
) { |
|
|
|
$oblis = array('titre'); |
|
if (!_request('draft')) { |
|
$oblis[] = 'texte'; |
|
} |
|
if (intval($id_message) and $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) { |
|
$type = $t; |
|
} |
|
if (!in_array($type, array('pb', 'affich')) |
|
// pas de destinataire obligatoire pour un brouillon |
|
and !_request('draft') |
|
) { |
|
$oblis['destinataires'] = 'destinataires'; |
|
} |
|
|
|
if ($d = _request('destinataires')) { |
|
set_request('destinataires', implode(',', $d)); |
|
} |
|
$erreurs = formulaires_editer_objet_verifier('message', $id_message, $oblis); |
|
if ($d) { |
|
set_request('destinataires', $d); |
|
} |
|
include_spip('inc/messages'); |
|
if ( |
|
(!isset($erreurs['destinataires']) or !$erreurs['destinataires']) |
|
and isset($oblis['destinataires']) |
|
and $e = messagerie_verifier_destinataires( |
|
_request('destinataires'), |
|
array('accepter_email' => ($accepter_email == 'oui')) |
|
)) { |
|
$erreurs['destinataires'] = implode(', ', $e); |
|
} |
|
|
|
if (_request('rv') == 'oui') { |
|
include_spip('inc/date_gestion'); |
|
$date_debut = verifier_corriger_date_saisie('debut', true, $erreurs); |
|
$date_fin = verifier_corriger_date_saisie('fin', true, $erreurs); |
|
|
|
if ($date_debut and $date_fin and $date_fin < $date_debut) { |
|
$erreurs['date_fin'] = _T('organiseur:erreur_date_avant_apres'); |
|
} |
|
} else { |
|
set_request('rv', ''); |
|
} |
|
|
|
return $erreurs; |
|
} |
|
|
|
function formulaires_editer_message_traiter_dist( |
|
$id_message = 'new', |
|
$type = 'message', |
|
$retour = '', |
|
$accepter_email = 'oui', |
|
$destinataires = '', |
|
$titre = '', |
|
$texte = '' |
|
) { |
|
// preformater le post |
|
// fixer le type de message |
|
// sans modifier le type d'un message existant |
|
if (intval($id_message) and $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) { |
|
$type = $t; |
|
} |
|
set_request('type', $type); |
|
|
|
// formater les destinataires |
|
$d = _request('destinataires'); |
|
if (!$d) { |
|
$d = array(); |
|
} |
|
include_spip('inc/messages'); |
|
$d = messagerie_nettoyer_destinataires($d); |
|
// si email non acceptes, extraire les seuls id_auteur de la liste proposee |
|
if ($accepter_email !== 'oui') { |
|
// separer id_auteur et email |
|
$d = messagerie_destiner($d); |
|
// ne conserver que les id_auteur |
|
$d = reset($d); |
|
} |
|
// reinjecter sous forme de chaine |
|
set_request('destinataires', implode(',', $d)); |
|
|
|
// fixer l'auteur ! |
|
set_request('id_auteur', $GLOBALS['visiteur_session']['id_auteur']); |
|
|
|
if (_request('rv') == 'oui') { |
|
include_spip('inc/date_gestion'); |
|
$erreurs = array(); |
|
$date_debut = verifier_corriger_date_saisie('debut', true, $erreurs); |
|
$date_fin = verifier_corriger_date_saisie('fin', true, $erreurs); |
|
set_request('date_heure', date('Y-m-d H:i:s', $date_debut)); |
|
set_request('date_fin', date('Y-m-d H:i:s', $date_fin)); |
|
} else { |
|
set_request('date_heure'); |
|
set_request('date_fin'); |
|
} |
|
|
|
// on gere par les traitements standard |
|
// la diffusion du message se fait par pipeline post_edition sur instituer |
|
// et notification |
|
$res = formulaires_editer_objet_traiter('message', $id_message, 0, 0, $retour, ''); |
|
|
|
if ($id_message = $res['id_message'] |
|
and !_request('draft') |
|
) { |
|
include_spip('action/editer_objet'); |
|
objet_modifier('message', $id_message, array('statut' => 'publie', 'date_heure' => _request('date_heure'))); |
|
// apres en message envoyes, retourner sur la boite d'envoi plutot que sur le message |
|
if (isset($res['redirect']) |
|
and ($res['redirect'] == generer_url_ecrire('message', 'id_message=' . $id_message))) { |
|
$res['redirect'] = generer_url_ecrire('messages', 'quoi=envoi'); |
|
} |
|
} |
|
|
|
set_request('destinataires', explode(',', _request('destinataires'))); |
|
|
|
return $res; |
|
}
|
|
|