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.
 
 
 
 

160 lines
6.1 KiB

<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2015 *
* 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;
}