Browse Source

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

svn/root/tags/plugins/organiseur/1.0.0
cedric@yterium.com 7 years ago
parent
commit
550567b3da
  1. 16
      action/effacer_messagerecu.php
  2. 17
      action/envoyer_message.php
  3. 13
      action/quete_autocomplete.php
  4. 71
      action/quete_calendrier_prive.php
  5. 14
      action/supprimer_message.php
  6. 47
      base/organiseur.php
  7. 6
      calendrier_quete.json_fonctions.php
  8. 30
      formulaires/configurer_messagerie_agenda.php
  9. 171
      formulaires/editer_message.php
  10. 27
      inc/date_gestion.php
  11. 119
      inc/messages.php
  12. 279
      inc/quete_calendrier.php
  13. 37
      notifications/instituermessage.php
  14. 22
      organiseur_administrations.php
  15. 97
      organiseur_autoriser.php
  16. 112
      organiseur_fonctions.php
  17. 16
      organiseur_ieconfig.php
  18. 119
      organiseur_pipelines.php

16
action/effacer_messagerecu.php

@ -10,7 +10,9 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -18,17 +20,17 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @param int $id_message
* @return void
*/
function action_effacer_messagerecu_dist($id_auteur = null, $id_message = null){
if (is_null($id_auteur) OR is_null($id_message)){
$securiser_action = charger_fonction('securiser_action','inc');
function action_effacer_messagerecu_dist($id_auteur = null, $id_message = null) {
if (is_null($id_auteur) OR is_null($id_message)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
list($id_auteur,$id_message) = explode('-',$arg);
list($id_auteur, $id_message) = explode('-', $arg);
}
include_spip('inc/autoriser');
if (autoriser('effacer','messagerecu',$id_message,null,array('id_auteur'=>$id_auteur))){
if (autoriser('effacer', 'messagerecu', $id_message, null, array('id_auteur' => $id_auteur))) {
include_spip('inc/messages');
messagerie_effacer_message_recu($id_auteur,$id_message);
messagerie_effacer_message_recu($id_auteur, $id_message);
}
}

17
action/envoyer_message.php

@ -10,27 +10,30 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* @param int $id_message
* @return void
*/
function action_envoyer_message_dist($id_message = null){
function action_envoyer_message_dist($id_message = null) {
if (is_null($id_message)){
$securiser_action = charger_fonction('securiser_action','inc');
if (is_null($id_message)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$id_message = $securiser_action();
}
include_spip('inc/autoriser');
if (intval($id_message)
AND $type=sql_getfetsel('type','spip_messages','id_message='.intval($id_message))
AND autoriser('envoyermessage',$type, $id_message)){
AND $type = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))
AND autoriser('envoyermessage', $type, $id_message)
) {
include_spip('action/editer_objet');
objet_modifier('message',$id_message,array('statut'=>'publie'));
objet_modifier('message', $id_message, array('statut' => 'publie'));
}
}

13
action/quete_autocomplete.php

@ -10,17 +10,20 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function action_quete_autocomplete_dist(){
$securiser_action = charger_fonction('securiser_action','inc');
function action_quete_autocomplete_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
if ($arg
AND $arg==$GLOBALS['visiteur_session']['id_auteur']){
AND $arg == $GLOBALS['visiteur_session']['id_auteur']
) {
include_spip('inc/actions');
include_spip('inc/json');
echo ajax_retour(
recuperer_fond('prive/squelettes/inclure/organiseur-autocomplete-auteur',array('term'=>_request('term'))),
recuperer_fond('prive/squelettes/inclure/organiseur-autocomplete-auteur', array('term' => _request('term'))),
'application/json'
);
}

71
action/quete_calendrier_prive.php

@ -14,14 +14,16 @@
* Gestion de l'action de quête des événements du calendrier
*
* @package SPIP\Organiseur\Action
**/
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fournir une liste d'"evenements" entre deux dates start et end
* au format json
*
*
* Utilisé pour l'affichage du calendrier privé et public
*
* @pipeline_appel quete_calendrier_prive
@ -29,11 +31,11 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @uses quete_calendrier_interval()
* @uses convert_fullcalendar_quete_calendrier_interval_rv()
* @uses convert_fullcalendar_quete_calendrier_interval()
*
*
* @return void
*/
function action_quete_calendrier_prive_dist(){
$securiser_action = charger_fonction('securiser_action','inc');
function action_quete_calendrier_prive_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$securiser_action();
$start = _request('start');
@ -45,19 +47,19 @@ function action_quete_calendrier_prive_dist(){
$evt = array();
// recuperer la liste des evenements au format ics
$start = date('Y-m-d H:i:s',$start);
$end = date('Y-m-d H:i:s',$end);
$limites = array(sql_quote($start),sql_quote($end));
$start = date('Y-m-d H:i:s', $start);
$end = date('Y-m-d H:i:s', $end);
$limites = array(sql_quote($start), sql_quote($end));
// on fonction de quoi on récupère : tout (rv + publication) ou l'un ou l'autre.
$entier = $duree = array();
if (!$quoi OR $quoi=='rv') {
if (!$quoi OR $quoi == 'rv') {
$duree = quete_calendrier_interval_rv(reset($limites), end($limites));
$evt = convert_fullcalendar_quete_calendrier_interval_rv($duree, $evt);
}
if (!$quoi OR $quoi=='publication') {
if (!$quoi OR $quoi == 'publication') {
list($entier,) = quete_calendrier_interval($limites);
$evt = convert_fullcalendar_quete_calendrier_interval($entier, $evt);
}
@ -66,7 +68,7 @@ function action_quete_calendrier_prive_dist(){
// permettre aux plugins d'afficher leurs evenements dans ce calendrier
$evt = pipeline('quete_calendrier_prive',
array(
'args' => array('start' => $start, 'end' => $end, 'quoi'=>$quoi),
'args' => array('start' => $start, 'end' => $end, 'quoi' => $quoi),
'data' => $evt,
)
);
@ -79,18 +81,19 @@ function action_quete_calendrier_prive_dist(){
/**
* Convertir une date au format ical renvoyée par quete_calendrier_interval
* dans le format attendu par fullcalendar : yyyy-mm-dd H:i:s
*
*
* @param $dateical
* @return string
*/
function convert_dateical($dateical){
$d = explode('T',$dateical);
function convert_dateical($dateical) {
$d = explode('T', $dateical);
$amj = reset($d);
$s = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
if (count($d)>1){
$s = substr($amj, 0, 4) . '-' . substr($amj, 4, 2) . '-' . substr($amj, 6, 2);
if (count($d) > 1) {
$his = end($d);
$s .= ' '.substr($his,0,2).":".substr($his,2,2).":".substr($his,4,2);
$s .= ' ' . substr($his, 0, 2) . ":" . substr($his, 2, 2) . ":" . substr($his, 4, 2);
}
return $s;
}
@ -104,23 +107,25 @@ function convert_dateical($dateical){
* Les événements au format fullcalendar déjà présents
* @return array
* Les événements au format fullcalendar
**/
**/
function convert_fullcalendar_quete_calendrier_interval($messages, $evt = array()) {
if (!$messages) return $evt;
if (!$messages) {
return $evt;
}
// la retransformer au format attendu par fullcalendar
// facile : chaque evt n'est mentionne qu'une fois, a une date
foreach($messages as $amj=>$l){
$date = substr($amj,0,4).'-'.substr($amj,4,2).'-'.substr($amj,6,2);
foreach($l as $e){
foreach ($messages as $amj => $l) {
$date = substr($amj, 0, 4) . '-' . substr($amj, 4, 2) . '-' . substr($amj, 6, 2);
foreach ($l as $e) {
$evt[] = array(
'id' => 0,
'title' => $e['SUMMARY'],
'allDay' => true,
'start' => $date,
'end' => $date,
'url' => str_replace('&','&',$e['URL']),
'className' => "calendrier-event ".$e['CATEGORIES'],
'url' => str_replace('&', '&', $e['URL']),
'className' => "calendrier-event " . $e['CATEGORIES'],
'description' => $e['DESCRIPTION'],
);
}
@ -134,16 +139,18 @@ function convert_fullcalendar_quete_calendrier_interval($messages, $evt = array(
* dans le format attendu par fullcalendar
*
* @use convert_dateical()
*
*
* @param array $messages
* Les événements / messages au format issu de la quete calendrier_interval_rv
* @param array $evt
* Les événements au format fullcalendar déjà présents
* @return array
* Les événements au format fullcalendar
**/
**/
function convert_fullcalendar_quete_calendrier_interval_rv($messages, $evt = array()) {
if (!$messages) return $evt;
if (!$messages) {
return $evt;
}
// ici il faut faire attention : un evt apparait N fois
// mais on a son id
@ -154,9 +161,9 @@ function convert_fullcalendar_quete_calendrier_interval_rv($messages, $evt = arr
$seen[$e['url']] = true;
}
foreach($messages as $amj=>$l){
foreach($l as $id=>$e){
$url = str_replace('&','&',$e['URL']);
foreach ($messages as $amj => $l) {
foreach ($l as $id => $e) {
$url = str_replace('&', '&', $e['URL']);
if (!isset($seen[$url])) {
$evt[] = array(
'id' => $id,
@ -165,7 +172,7 @@ function convert_fullcalendar_quete_calendrier_interval_rv($messages, $evt = arr
'start' => convert_dateical($e['DTSTART']), //Ymd\THis
'end' => convert_dateical($e['DTEND']), // Ymd\THis
'url' => $url,
'className' => "calendrier-event ".$e['CATEGORIES'],
'className' => "calendrier-event " . $e['CATEGORIES'],
'description' => $e['DESCRIPTION'],
);
$seen[$url] = true;

14
action/supprimer_message.php

@ -10,23 +10,25 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* @param int $id_message
* @return void
*/
function action_supprimer_message_dist($id_message = null){
if (is_null($id_message)){
$securiser_action = charger_fonction('securiser_action','inc');
function action_supprimer_message_dist($id_message = null) {
if (is_null($id_message)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$id_message = $securiser_action();
}
include_spip('inc/autoriser');
if (autoriser('supprimer','message',$id_message)){
if (autoriser('supprimer', 'message', $id_message)) {
include_spip('action/editer_objet');
objet_modifier('message',$id_message,array('statut'=>'poub'));
objet_modifier('message', $id_message, array('statut' => 'poub'));
}
}

47
base/organiseur.php

@ -10,7 +10,9 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -19,42 +21,42 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @param array $tables
* @return array
*/
function organiseur_declarer_tables_objets_sql($tables){
function organiseur_declarer_tables_objets_sql($tables) {
$tables['spip_auteurs']['field']["imessage"] = "VARCHAR(3)";
$tables['spip_auteurs']['field']["messagerie"] = "VARCHAR(3)";
$tables['spip_messages'] = array(
'page'=> false,
'page' => false,
'texte_modifier' => 'icone_modifier_message',
'texte_creer' => 'icone_ecrire_nouveau_message',
'texte_objets' => 'organiseur:messages',
'texte_objet' => 'organiseur:message',
'info_aucun_objet'=> 'info_aucun_message',
'info_aucun_objet' => 'info_aucun_message',
'info_1_objet' => 'info_1_message',
'info_nb_objets' => 'info_nb_messages',
'principale' => 'oui',
'champs_editables' => array('titre', 'texte', 'type','date_heure', 'date_fin', 'rv', 'id_auteur', 'destinataires'),
'champs_editables' => array('titre', 'texte', 'type', 'date_heure', 'date_fin', 'rv', 'id_auteur', 'destinataires'),
'field' => array(
"id_message" => "bigint(21) NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"texte" => "longtext DEFAULT '' NOT NULL",
"id_message" => "bigint(21) NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"texte" => "longtext DEFAULT '' NOT NULL",
// normal,
// pb (pense bete)
// affich (annonce publique)
"type" => "varchar(6) DEFAULT '' NOT NULL",
"date_heure" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"rv" => "varchar(3) DEFAULT '' NOT NULL",
"statut" => "varchar(6) DEFAULT '0' NOT NULL",
"id_auteur" => "bigint(21) DEFAULT 0 NOT NULL",
"type" => "varchar(6) DEFAULT '' NOT NULL",
"date_heure" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"rv" => "varchar(3) DEFAULT '' NOT NULL",
"statut" => "varchar(6) DEFAULT '0' NOT NULL",
"id_auteur" => "bigint(21) DEFAULT 0 NOT NULL",
"destinataires" => "text DEFAULT '' NOT NULL",
"maj" => "TIMESTAMP"
"maj" => "TIMESTAMP"
),
'key' => array(
"PRIMARY KEY" => "id_message",
"KEY id_auteur" => "id_auteur"
"PRIMARY KEY" => "id_message",
"KEY id_auteur" => "id_auteur"
),
'titre' => "titre, '' AS lang",
'date' => 'date_heure',
@ -63,17 +65,18 @@ function organiseur_declarer_tables_objets_sql($tables){
'champ' => 'statut',
'publie' => 'publie',
'previsu' => '!',
'exception' => array('statut','tout')
'exception' => array('statut', 'tout')
),
),
'rechercher_champs' => array(
'titre' => 8, 'texte' => 1
'titre' => 8,
'texte' => 1
),
);
return $tables;
}
/**
@ -82,8 +85,8 @@ function organiseur_declarer_tables_objets_sql($tables){
* @param array $interfaces
* @return array
*/
function organiseur_declarer_tables_interfaces($interfaces){
$interfaces['table_des_tables']['messages']='messages';
function organiseur_declarer_tables_interfaces($interfaces) {
$interfaces['table_des_tables']['messages'] = 'messages';
return $interfaces;
}

6
calendrier_quete.json_fonctions.php

@ -1,9 +1,11 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/json');
function todate($t){return date('Y-m-d H:i:s', $t);}
function todate($t) { return date('Y-m-d H:i:s', $t); }
?>

30
formulaires/configurer_messagerie_agenda.php

@ -10,27 +10,33 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_configurer_messagerie_agenda_charger_dist(){
foreach(array(
"messagerie_agenda",
) as $m)
function formulaires_configurer_messagerie_agenda_charger_dist() {
foreach (array(
"messagerie_agenda",
) as $m) {
$valeurs[$m] = $GLOBALS['meta'][$m];
}
return $valeurs;
}
function formulaires_configurer_messagerie_agenda_traiter_dist(){
$res = array('editable'=>true);
foreach(array(
"messagerie_agenda",
) as $m)
if (!is_null($v=_request($m)))
ecrire_meta($m, $v=='oui'?'oui':'non');
function formulaires_configurer_messagerie_agenda_traiter_dist() {
$res = array('editable' => true);
foreach (array(
"messagerie_agenda",
) as $m) {
if (!is_null($v = _request($m))) {
ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
}
}
$res['message_ok'] = _T('config_info_enregistree');
return $res;
}

171
formulaires/editer_message.php

@ -10,131 +10,172 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
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 = ''){
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))
(!intval($id_message) AND !autoriser('envoyermessage', $type))
OR
(intval($id_message) AND !autoriser('modifier','message',$id_message))
)
(intval($id_message) AND !autoriser('modifier', 'message', $id_message))
) {
return false;
}
$valeurs = formulaires_editer_objet_charger('message',$id_message,0,0,$retour,'');
$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 (strlen($valeurs['destinataires'])) {
$valeurs['destinataires'] = explode(",", $valeurs['destinataires']);
}
if (!intval($id_message)){
if (!intval($id_message)) {
$valeurs['type'] = $type;
$valeurs['destinataires'] = ($destinataires ? explode(",",$destinataires):array());
$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);
$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>";
}
$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"])));
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')))
if (in_array($valeurs['type'], array('pb', 'affich'))) {
$valeurs['_destiner'] = '';
else
} else {
$valeurs['_destiner'] = ' ';
}
return $valeurs;
}
function formulaires_editer_message_verifier_dist($id_message = 'new', $type = 'message', $retour = '', $accepter_email = 'oui', $destinataires = '', $titre = '', $texte = ''){
function formulaires_editer_message_verifier_dist(
$id_message = 'new',
$type = 'message',
$retour = '',
$accepter_email = 'oui',
$destinataires = '',
$titre = '',
$texte = ''
) {
$oblis = array('titre');
if (!_request('draft'))
if (!_request('draft')) {
$oblis[] = 'texte';
if (intval($id_message) AND $t=sql_getfetsel('type','spip_messages','id_message='.intval($id_message)))
}
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'))
}
if (!in_array($type, array('pb', 'affich'))
// pas de destinataire obligatoire pour un brouillon
AND !_request('draft'))
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);
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);
(!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'){
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);
$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)
if ($date_debut AND $date_fin AND $date_fin < $date_debut) {
$erreurs['date_fin'] = _T('organiseur:erreur_date_avant_apres');
}
} else {
set_request('rv', '');
}
else
set_request('rv','');
return $erreurs;
}
function formulaires_editer_message_traiter_dist($id_message = 'new', $type = 'message', $retour = '', $accepter_email = 'oui', $destinataires = '', $titre = '', $texte = ''){
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)))
if (intval($id_message) AND $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) {
$type = $t;
set_request('type',$type);
}
set_request('type', $type);
// formater les destinataires
$d = _request('destinataires');
if (!$d)
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'){
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));
set_request('destinataires', implode(',', $d));
// fixer l'auteur !
set_request('id_auteur',$GLOBALS['visiteur_session']['id_auteur']);
set_request('id_auteur', $GLOBALS['visiteur_session']['id_auteur']);
if (_request('rv')=='oui'){
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 {
$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');
}
@ -142,19 +183,21 @@ function formulaires_editer_message_traiter_dist($id_message = 'new', $type = 'm
// 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,'');
$res = formulaires_editer_objet_traiter('message', $id_message, 0, 0, $retour, '');
if ($id_message = $res['id_message']
AND !_request('draft')){
AND !_request('draft')
) {
include_spip('action/editer_objet');
objet_modifier('message',$id_message,array('statut'=>'publie', 'date_heure' => _request('date_heure')));
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');
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')));
set_request('destinataires', explode(',', _request('destinataires')));
return $res;
}

27
inc/date_gestion.php

@ -10,7 +10,9 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater
@ -20,27 +22,30 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @param array $erreurs
* @return int
*/
function verifier_corriger_date_saisie($suffixe, $horaire, &$erreurs){
function verifier_corriger_date_saisie($suffixe, $horaire, &$erreurs) {
include_spip('inc/filtres');
$date = _request("date_$suffixe").($horaire?' '.trim(_request("heure_$suffixe")).':00':'');
$date = _request("date_$suffixe") . ($horaire ? ' ' . trim(_request("heure_$suffixe")) . ':00' : '');
$date = recup_date($date);
if (!$date)
if (!$date) {
return '';
}
$ret = null;
if (!$ret=mktime(0,0,0,$date[1],$date[2],$date[0]))
if (!$ret = mktime(0, 0, 0, $date[1], $date[2], $date[0])) {
$erreurs["date_$suffixe"] = _T('organiseur:erreur_date');
elseif (!$ret=mktime($date[3],$date[4],$date[5],$date[1],$date[2],$date[0]))
} elseif (!$ret = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0])) {
$erreurs["date_$suffixe"] = _T('organiseur:erreur_heure');
if ($ret){
if (trim(_request("date_$suffixe")!==($d=date('d/m/Y',$ret)))){
}
if ($ret) {
if (trim(_request("date_$suffixe") !== ($d = date('d/m/Y', $ret)))) {
$erreurs["date_$suffixe"] = _T('organiseur:erreur_date_corrigee');
set_request("date_$suffixe",$d);
set_request("date_$suffixe", $d);
}
if ($horaire AND trim(_request("heure_$suffixe")!==($h=date('H:i',$ret)))){
if ($horaire AND trim(_request("heure_$suffixe") !== ($h = date('H:i', $ret)))) {
$erreurs["heure_$suffixe"] = _T('organiseur:erreur_heure_corrigee');
set_request("heure_$suffixe",$h);
set_request("heure_$suffixe", $h);
}
}
return $ret;
}

119
inc/messages.php

@ -10,36 +10,43 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/filtres');
include_spip('base/abstract_sql');
if (!defined('_EMAIL_GENERAL'))
define('_EMAIL_GENERAL','general'); // permet aux admin d'envoyer un email a tout le monde
if (!defined('_EMAIL_GENERAL')) {
define('_EMAIL_GENERAL', 'general');
} // permet aux admin d'envoyer un email a tout le monde
/**
* Lister les statuts des auteurs pouvant recevoir un message
* c'est tous les auteurs au moins redacteur
*
*
* @return array
*/
function messagerie_statuts_destinataires_possibles(){
function messagerie_statuts_destinataires_possibles() {
include_spip('inc/filtres_ecrire');
return pipeline('messagerie_statuts_destinataires_possibles', auteurs_lister_statuts('redacteurs',false));
return pipeline('messagerie_statuts_destinataires_possibles', auteurs_lister_statuts('redacteurs', false));
}
/**
* Nettoyer une liste de destinataires
*
* @param $destinataires
* @return array
*/
function messagerie_nettoyer_destinataires($destinataires){
foreach ($destinataires as $k=>$id){
function messagerie_nettoyer_destinataires($destinataires) {
foreach ($destinataires as $k => $id) {
// il se peut que l'id recupere l'ancre qui suit avec certains ie ... :(
if (preg_match(',^[0-9]+#[a-z_0-9]+,',$id))
if (preg_match(',^[0-9]+#[a-z_0-9]+,', $id)) {
$destinataires[$k] = intval($id);
}
}
return $destinataires;
}
@ -53,19 +60,21 @@ function messagerie_nettoyer_destinataires($destinataires){
* @param array $options
* @return array
*/
function messagerie_verifier_destinataires($destinataires, $options = array('accepter_email' =>true)){
function messagerie_verifier_destinataires($destinataires, $options = array('accepter_email' => true)) {
$erreurs = array();
$destinataires = messagerie_nettoyer_destinataires($destinataires);
foreach ($destinataires as $id){
if (is_numeric($id)){
if (!$id)
$erreurs[] = _T('organiseur:erreur_destinataire_invalide',array('dest'=>$id));
}
else {
foreach ($destinataires as $id) {
if (is_numeric($id)) {
if (!$id) {
$erreurs[] = _T('organiseur:erreur_destinataire_invalide', array('dest' => $id));
}
} else {
if (!$options['accepter_email']
OR !email_valide($id))
$erreurs[] = _T('organiseur:erreur_destinataire_invalide',array('dest'=>$id));
OR !email_valide($id)
) {
$erreurs[] = _T('organiseur:erreur_destinataire_invalide', array('dest' => $id));
}
}
}
@ -78,28 +87,30 @@ function messagerie_verifier_destinataires($destinataires, $options = array('acc
* @param array $dests
* @return array
*/
function messagerie_destiner($dests){
function messagerie_destiner($dests) {
// separer les destinataires auteur des destinataires email
$auteurs_dest = array();
$email_dests = array();
$dests = messagerie_nettoyer_destinataires($dests);
foreach ($dests as $id){
if (is_numeric($id))
foreach ($dests as $id) {
if (is_numeric($id)) {
$auteurs_dest[] = $id;
elseif (defined('_MESSAGERIE_EMAIL_GENERAL') AND $id!=_MESSAGERIE_EMAIL_GENERAL)
} elseif (defined('_MESSAGERIE_EMAIL_GENERAL') AND $id != _MESSAGERIE_EMAIL_GENERAL) {
$email_dests[] = $id;
}
}
if (count($email_dests)) {
// retrouver les id des emails pour ceux qui sont en base
$res = sql_select('id_auteur,email','spip_auteurs',sql_in('email', $email_dests));
$res = sql_select('id_auteur,email', 'spip_auteurs', sql_in('email', $email_dests));
$auteurs_dest_found = array();
while ($row = sql_fetch($res)){
while ($row = sql_fetch($res)) {
$auteurs_dest_found[] = $row['id_auteur'];
}
$auteurs_dest = array_merge($auteurs_dest,$auteurs_dest_found);
$auteurs_dest = array_merge($auteurs_dest, $auteurs_dest_found);
}
return array($auteurs_dest,$email_dests);
return array($auteurs_dest, $email_dests);
}
/**
@ -109,13 +120,15 @@ function messagerie_destiner($dests){
* @param array $auteurs_dest
* @return bool|int
*/
function messagerie_diffuser_message($id_message, $auteurs_dest = array()){
function messagerie_diffuser_message($id_message, $auteurs_dest = array()) {
$out = false;
if ($id_message=intval($id_message)
AND count($auteurs_dest)){
if ($id_message = intval($id_message)
AND count($auteurs_dest)
) {
include_spip('action/editer_liens');
$out = objet_associer(array('auteur'=>$auteurs_dest),array('message'=>$id_message),array('vu'=>'non'));
$out = objet_associer(array('auteur' => $auteurs_dest), array('message' => $id_message), array('vu' => 'non'));
}
return $out;
}
@ -126,21 +139,25 @@ function messagerie_diffuser_message($id_message, $auteurs_dest = array()){
* @param array $emails_dest
* @return bool
*/
function messagerie_mailer_message($id_message, $emails_dest = array()){
if ($id_message=intval($id_message)
AND count($emails_dest)) {
if ($row = sql_fetsel('titre,texte,id_auteur','spip_messages','id_message='.intval($id_message))){
$from = sql_getfetsel('email','spip_auteurs','id_auteur='.$row['id_auteur']);
foreach($emails_dest as $email)
function messagerie_mailer_message($id_message, $emails_dest = array()) {
if ($id_message = intval($id_message)
AND count($emails_dest)
) {
if ($row = sql_fetsel('titre,texte,id_auteur', 'spip_messages', 'id_message=' . intval($id_message))) {
$from = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . $row['id_auteur']);
foreach ($emails_dest as $email) {
job_queue_add(
'envoyer_mail',
'messagerie mail',
array($email,$row['titre'],array('texte'=>$row['texte'],'from'=>$from)),
array($email, $row['titre'], array('texte' => $row['texte'], 'from' => $from)),
'inc/'
);
}
return true;
}
}
return false;
}
@ -152,22 +169,24 @@ function messagerie_mailer_message($id_message, $emails_dest = array()){
* @param string $vu
* @return void
*/
function messagerie_marquer_message($id_auteur, $liste, $vu){
function messagerie_marquer_message($id_auteur, $liste, $vu) {
include_spip('action/editer_liens');
if (!is_array($liste))
if (!is_array($liste)) {
$liste = array($liste);
}
// completer les liens qui n'existent pas encore
// ex : pour marquer lue une annonce, on ajoute le lien d'abord (n'existe pas)
// puis on le marque 'oui'
$liens = objet_trouver_liens(array('auteur'=>$id_auteur),array('message'=>$liste));
$liens = objet_trouver_liens(array('auteur' => $id_auteur), array('message' => $liste));
$l = array();
foreach($liens as $lien)
foreach ($liens as $lien) {
$l[] = $lien['message'];
objet_associer(array('auteur'=>$id_auteur),array('message'=>array_diff($liste,$l)),array('vu'=>$vu));
}
objet_associer(array('auteur' => $id_auteur), array('message' => array_diff($liste, $l)), array('vu' => $vu));
// puis les marquer tous lus
objet_qualifier_liens(array('auteur'=>$id_auteur),array('message'=>$liste),array('vu'=>$vu));
objet_qualifier_liens(array('auteur' => $id_auteur), array('message' => $liste), array('vu' => $vu));
include_spip('inc/invalideur');
suivre_invalideur("message/".implode(',',$liste));
suivre_invalideur("message/" . implode(',', $liste));
}
/**
@ -176,7 +195,9 @@ function messagerie_marquer_message($id_auteur, $liste, $vu){
* @param int $id_auteur
* @param array $liste_id_message
*/
function messagerie_marquer_lus($id_auteur, $liste_id_message){messagerie_marquer_message($id_auteur, $liste_id_message, 'oui');}
function messagerie_marquer_lus($id_auteur, $liste_id_message) {
messagerie_marquer_message($id_auteur, $liste_id_message, 'oui');
}
/**
* Marquer un message comme non lu
@ -184,7 +205,9 @@ function messagerie_marquer_lus($id_auteur, $liste_id_message){messagerie_marque
* @param int $id_auteur
* @param array $liste_id_message
*/
function messagerie_marquer_non_lus($id_auteur, $liste_id_message){messagerie_marquer_message($id_auteur, $liste_id_message, 'non');}
function messagerie_marquer_non_lus($id_auteur, $liste_id_message) {
messagerie_marquer_message($id_auteur, $liste_id_message, 'non');
}
/**
* Effacer un message recu
@ -192,6 +215,8 @@ function messagerie_marquer_non_lus($id_auteur, $liste_id_message){messagerie_ma
* @param int $id_auteur
* @param array $liste_id_message
*/
function messagerie_effacer_message_recu($id_auteur, $liste_id_message){messagerie_marquer_message($id_auteur, $liste_id_message, 'poub');}
function messagerie_effacer_message_recu($id_auteur, $liste_id_message) {
messagerie_marquer_message($id_auteur, $liste_id_message, 'poub');
}
?>

279
inc/quete_calendrier.php

@ -15,9 +15,11 @@
* des éléments à afficher dans des périodes données
*
* @package SPIP\Organiseur\Fonctions
**/
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/filtres');
@ -28,48 +30,48 @@ include_spip('inc/filtres');
*
* S'appuie soit sur une fonction PHP `generer_calendrier_class()` si elle
* existe, soit à défaut sur le numéro de rubrique.
*
*
* @param string $table
* Nom de la table SQL d'où provient l'événement
* @param int $num
* Identifiant dans la table
* Identifiant dans la table
* @param string $objet
* Nom de la clé primaire
* @return string
* Nom de classe CSS
**/
function calendrier_categories($table, $num, $objet)
{
if (function_exists('generer_calendrier_class'))
return generer_calendrier_class($table, $num, $objet);
else {
// cf agenda.css
$num= sql_getfetsel((($objet != 'id_breve') ? 'id_secteur' : 'id_rubrique') . " AS id", $table, "$objet=$num");
return 'calendrier-couleur' . (($num%14)+1);
}
**/
function calendrier_categories($table, $num, $objet) {
if (function_exists('generer_calendrier_class')) {
return generer_calendrier_class($table, $num, $objet);
} else {
// cf agenda.css
$num = sql_getfetsel((($objet != 'id_breve') ? 'id_secteur' : 'id_rubrique') . " AS id", $table, "$objet=$num");
return 'calendrier-couleur' . (($num%14)+1);
}
}
/**
* Pour une date donnée, retourne une période allant de la veille au lendemain
*
* @param int $annee
* @param int $mois
* @param int $jour
* @param int $annee
* @param int $mois
* @param int $jour
* @return array
* Liste (date de la veille à 0h, date du lendemain à 23h59:59)
**/
**/
function quete_calendrier_jour($annee, $mois, $jour) {
$avant = "'" . date("Y-m-d", mktime(0,0,0,$mois,$jour-1,$annee)) . "'";
$apres = "'" . date("Y-m-d", mktime(1,1,1,$mois,$jour+1,$annee)) .
" 23:59:59'";
$avant = "'" . date("Y-m-d", mktime(0, 0, 0, $mois, $jour-1, $annee)) . "'";
$apres = "'" . date("Y-m-d", mktime(1, 1, 1, $mois, $jour+1, $annee)) .
" 23:59:59'";
return array($avant, $apres);
}
/**
* Retourne les publications et les messages pour une période donnée
*
*
* Retourne un tableau de 2 tableaux indéxés par des dates :
* - le premier indique les événements du jour, sans indication de durée
* (par exemple les publications d'articles)
@ -80,12 +82,12 @@ function quete_calendrier_jour($annee, $mois, $jour) {
* @uses quete_calendrier_interval_breves()
* @uses quete_calendrier_interval_rubriques()
* @uses quete_calendrier_interval_rv()
*
*
* @param array $limites
* Liste (date de début, date de fin)
* @return array
* Liste (événements sans durée, événements avec durée)
**/
**/
function quete_calendrier_interval($limites) {
include_spip('inc/urls');
list($avant, $apres) = $limites;
@ -93,6 +95,7 @@ function quete_calendrier_interval($limites) {
quete_calendrier_interval_articles($avant, $apres, $evt);
quete_calendrier_interval_breves($avant, $apres, $evt);
quete_calendrier_interval_rubriques($avant, $apres, $evt);
return array($evt, quete_calendrier_interval_rv($avant, $apres));
}
@ -111,20 +114,23 @@ function quete_calendrier_interval($limites) {
* @param array $evenements
* Tableau des événements déjà présents qui sera complété par la fonction.
* Format : `$evenements[$amj][] = Tableau de description ICS`
**/
function quete_calendrier_interval_forums($limites, &$evenements) {
**/
function quete_calendrier_interval_forums($limites, &$evenements) {
list($avant, $apres) = $limites;
$result=sql_select("DISTINCT titre, date_heure, id_forum", "spip_forum", "date_heure >= $avant AND date_heure < $apres", '', "date_heure");
while($row=sql_fetch($result)){
$result = sql_select("DISTINCT titre, date_heure, id_forum", "spip_forum",
"date_heure >= $avant AND date_heure < $apres", '', "date_heure");
while ($row = sql_fetch($result)) {
$amj = date_anneemoisjour($row['date_heure']);
$id = $row['id_forum'];
if (autoriser('voir','forum',$id))
$evenements[$amj][]=
array(
'URL' => generer_url_entite($id, 'forum'),
'CATEGORIES' => 'calendrier-couleur7',
'SUMMARY' => $row['titre'],
'DTSTART' => date_ical($row['date_heure']));
if (autoriser('voir', 'forum', $id)) {
$evenements[$amj][] =
array(
'URL' => generer_url_entite($id, 'forum'),
'CATEGORIES' => 'calendrier-couleur7',
'SUMMARY' => $row['titre'],
'DTSTART' => date_ical($row['date_heure'])
);
}
}
}
@ -138,28 +144,33 @@ function quete_calendrier_interval_forums($limites, &$evenements) {
* @param array $evenements
* Tableau des événements déjà présents qui sera complété par la fonction.
* Format : `$evenements[$amj][] = Tableau de description ICS`
**/
**/
function quete_calendrier_interval_articles($avant, $apres, &$evenements) {
$result=sql_select('id_article, titre, date, descriptif, chapo, lang', 'spip_articles', "statut='publie' AND date >= $avant AND date < $apres", '', "date");
$result = sql_select('id_article, titre, date, descriptif, chapo, lang', 'spip_articles',
"statut='publie' AND date >= $avant AND date < $apres", '', "date");
// tables traduites
$objets = explode(',', $GLOBALS['meta']['multi_objets']);
if (in_array('spip_articles', $objets)) {
include_spip('inc/lang_liste');
$langues = $GLOBALS['codes_langues'];
} else $langues = array();
while($row=sql_fetch($result)){
include_spip('inc/lang_liste');
$langues = $GLOBALS['codes_langues'];
} else {
$langues = array();
}
while ($row = sql_fetch($result)) {
$amj = date_anneemoisjour($row['date']);
$id = $row['id_article'];
if (autoriser('voir','article',$id))
$evenements[$amj][]=
array(
'CATEGORIES' => calendrier_categories('spip_articles', $id, 'id_article'),
'DESCRIPTION' => $row['descriptif'] ? $row['descriptif'] : $langues[$row['lang']],
'SUMMARY' => $row['titre'],
'URL' => generer_url_ecrire_objet('article',$id, '','','prop'));
if (autoriser('voir', 'article', $id)) {
$evenements[$amj][] =
array(
'CATEGORIES' => calendrier_categories('spip_articles', $id, 'id_article'),
'DESCRIPTION' => $row['descriptif'] ? $row['descriptif'] : $langues[$row['lang']],
'SUMMARY' => $row['titre'],
'URL' => generer_url_ecrire_objet('article', $id, '', '', 'prop')
);
}
}
}
@ -173,20 +184,25 @@ function quete_calendrier_interval_articles($avant, $apres, &$evenements) {
* @param array $evenements
* Tableau des événements déjà présents qui sera complété par la fonction.
* Format : `$evenements[$amj][] = Tableau de description ICS`
**/
**/
function quete_calendrier_interval_rubriques($avant, $apres, &$evenements) {
$result=sql_select('DISTINCT R.id_rubrique, titre, descriptif, date', 'spip_rubriques AS R, spip_documents_liens AS L', "statut='publie' AND date >= $avant AND date < $apres AND R.id_rubrique = L.id_objet AND L.objet='rubrique'",'', "date");
while($row=sql_fetch($result)){
$result = sql_select('DISTINCT R.id_rubrique, titre, descriptif, date',
'spip_rubriques AS R, spip_documents_liens AS L',
"statut='publie' AND date >= $avant AND date < $apres AND R.id_rubrique = L.id_objet AND L.objet='rubrique'", '',
"date");
while ($row = sql_fetch($result)) {
$amj = date_anneemoisjour($row['date']);
$id = $row['id_rubrique'];
if (autoriser('voir','rubrique',$id))
$evenements[$amj][]=
array(
'CATEGORIES' => calendrier_categories('spip_rubriques', $id, 'id_rubrique'),
'DESCRIPTION' => $row['descriptif'],
'SUMMARY' => $row['titre'],
'URL' => generer_url_ecrire_objet('rubrique',$id, '','', 'prop'));
if (autoriser('voir', 'rubrique', $id)) {
$evenements[$amj][] =
array(
'CATEGORIES' => calendrier_categories('spip_rubriques', $id, 'id_rubrique'),
'DESCRIPTION' => $row['descriptif'],
'SUMMARY' => $row['titre'],
'URL' => generer_url_ecrire_objet('rubrique', $id, '', '', 'prop')
);
}
}
}
@ -200,19 +216,22 @@ function quete_calendrier_interval_rubriques($avant, $apres, &$evenements) {
* @param array $evenements
* Tableau des événements déjà présents qui sera complété par la fonction.
* Format : `$evenements[$amj][] = Tableau de description ICS`
**/
**/
function quete_calendrier_interval_breves($avant, $apres, &$evenements) {
$result=sql_select("id_breve, titre, date_heure, id_rubrique", 'spip_breves', "statut='publie' AND date_heure >= $avant AND date_heure < $apres", '', "date_heure");
while($row=sql_fetch($result)){
$result = sql_select("id_breve, titre, date_heure, id_rubrique", 'spip_breves',
"statut='publie' AND date_heure >= $avant AND date_heure < $apres", '', "date_heure");
while ($row = sql_fetch($result)) {
$amj = date_anneemoisjour($row['date_heure']);
$id = $row['id_breve'];
$ir = $row['id_rubrique'];
if (autoriser('voir','breve',$id))
$evenements[$amj][]=
array(
'URL' => generer_url_ecrire_objet('breve',$id, '','', 'prop'),
'CATEGORIES' => calendrier_categories('spip_breves', $ir, 'id_breve'),
'SUMMARY' => $row['titre']);
if (autoriser('voir', 'breve', $id)) {
$evenements[$amj][] =
array(
'URL' => generer_url_ecrire_objet('breve', $id, '', '', 'prop'),
'CATEGORIES' => calendrier_categories('spip_breves', $ir, 'id_breve'),
'SUMMARY' => $row['titre']
);
}
}
}
@ -226,72 +245,83 @@ function quete_calendrier_interval_breves($avant, $apres, &$evenements) {
* Date de fin
* @return array
* De la forme : `$evt[date][id_message] = Tableau des données ICS`
**/
**/
function quete_calendrier_interval_rv($avant, $apres) {
include_spip('inc/session');
$connect_id_auteur = session_get('id_auteur');
$evenements= array();
if (!$connect_id_auteur) return $evenements;
$result=sql_select("M.id_message, M.titre, M.texte, M.date_heure, M.date_fin, M.type",
$evenements = array();
if (!$connect_id_auteur) {
return $evenements;
}
$result = sql_select("M.id_message, M.titre, M.texte, M.date_heure, M.date_fin, M.type",
"spip_messages AS M LEFT JOIN spip_auteurs_liens AS L ON (L.id_objet=M.id_message)",
"((L.objet='message' AND (L.id_auteur=$connect_id_auteur OR M.type='affich')) OR (L.objet IS NULL AND M.id_auteur=$connect_id_auteur AND ".sql_in('M.type',array('pb','affich'))."))"
." AND M.rv='oui' AND ((M.date_fin >= $avant OR M.date_heure >= $avant) AND M.date_heure <= $apres) AND M.statut='publie'",
"((L.objet='message' AND (L.id_auteur=$connect_id_auteur OR M.type='affich')) OR (L.objet IS NULL AND M.id_auteur=$connect_id_auteur AND " . sql_in('M.type',
array('pb', 'affich')) . "))"
. " AND M.rv='oui' AND ((M.date_fin >= $avant OR M.date_heure >= $avant) AND M.date_heure <= $apres) AND M.statut='publie'",
"M.id_message", "M.date_heure");
while($row=sql_fetch($result)){
$date_heure=$row["date_heure"];
$date_fin=$row["date_fin"];
$type=$row["type"];
$id_message=$row['id_message'];
if ($type=="pb")
$cat = 'calendrier-couleur2';
else {
if ($type=="affich")
$cat = 'calendrier-couleur4';
else {
if ($type!="normal")
$cat = 'calendrier-couleur12';
else {
$cat = 'calendrier-couleur9';
$auteurs = array_map('array_shift', sql_allfetsel("nom", "spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON L.id_auteur=A.id_auteur", "(L.objet='message' AND L.id_objet=$id_message AND (A.id_auteur!=$connect_id_auteur))"));
}
}
while ($row = sql_fetch($result)) {
$date_heure = $row["date_heure"];
$date_fin = $row["date_fin"];
$type = $row["type"];
$id_message = $row['id_message'];
if ($type == "pb") {
$cat = 'calendrier-couleur2';
} else {
if ($type == "affich") {
$cat = 'calendrier-couleur4';
} else {
if ($type != "normal") {
$cat = 'calendrier-couleur12';
} else {
$cat = 'calendrier-couleur9';
$auteurs = array_map('array_shift',
sql_allfetsel("nom", "spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON L.id_auteur=A.id_auteur",
"(L.objet='message' AND L.id_objet=$id_message AND (A.id_auteur!=$connect_id_auteur))"));
}
}
}
$jour_avant = substr($avant, 9,2);
$mois_avant = substr($avant, 6,2);
$annee_avant = substr($avant, 1,4);
$jour_apres = substr($apres, 9,2);
$mois_apres = substr($apres, 6,2);
$annee_apres = substr($apres, 1,4);
$ical_apres = date_anneemoisjour("$annee_apres-$mois_apres-".sprintf("%02d",$jour_apres));
$jour_avant = substr($avant, 9, 2);
$mois_avant = substr($avant, 6, 2);
$annee_avant = substr($avant, 1, 4);
$jour_apres = substr($apres, 9, 2);
$mois_apres = substr($apres, 6, 2);
$annee_apres = substr($apres, 1, 4);
$ical_apres = date_anneemoisjour("$annee_apres-$mois_apres-" . sprintf("%02d", $jour_apres));
// Calcul pour les semaines a cheval sur deux mois
$j = 0;
$amj = date_anneemoisjour("$annee_avant-$mois_avant-".sprintf("%02d", $j+($jour_avant)));
$j = 0;
$amj = date_anneemoisjour("$annee_avant-$mois_avant-" . sprintf("%02d", $j+($jour_avant)));
while ($amj <= $ical_apres) {
if (!($amj == date_anneemoisjour($date_fin) AND preg_match(",00:00:00,", $date_fin))) // Ne pas prendre la fin a minuit sur jour precedent
$evenements[$amj][$id_message]=
array(
'URL' => generer_url_ecrire("message","id_message=$id_message"),
'DTSTART' => date_ical($date_heure),
'DTEND' => date_ical($date_fin),
'DESCRIPTION' => $row['texte'],
'SUMMARY' => $row['titre'],
'CATEGORIES' => $cat,
'ATTENDEE' => (count($auteurs) == 0) ? '' : join($auteurs,", "));
$j ++;
$ladate = date("Y-m-d",mktime (1,1,1,$mois_avant, ($j + $jour_avant), $annee_avant));
if (!($amj == date_anneemoisjour($date_fin) AND preg_match(",00:00:00,",
$date_fin))
) // Ne pas prendre la fin a minuit sur jour precedent
{
$evenements[$amj][$id_message] =
array(
'URL' => generer_url_ecrire("message", "id_message=$id_message"),
'DTSTART' => date_ical($date_heure),
'DTEND' => date_ical($date_fin),
'DESCRIPTION' => $row['texte'],
'SUMMARY' => $row['titre'],
'CATEGORIES' => $cat,
'ATTENDEE' => (count($auteurs) == 0) ? '' : join($auteurs, ", ")
);
}
$j++;
$ladate = date("Y-m-d", mktime(1, 1, 1, $mois_avant, ($j+$jour_avant), $annee_avant));
$amj = date_anneemoisjour($ladate);
}
}
return $evenements;
return $evenements;
}
/**
@ -300,22 +330,27 @@ function quete_calendrier_interval_rv($avant, $apres) {
* @param int $annee
* @param int $mois
* @return array
**/
function quete_calendrier_agenda ($annee, $mois) {
**/
function quete_calendrier_agenda($annee, $mois) {
include_spip('inc/session');
$connect_id_auteur = session_get('id_auteur');
$rv = array();
if (!$connect_id_auteur) return $rv;
$date = date("Y-m-d", mktime(0,0,0,$mois, 1, $annee));
if (!$connect_id_auteur) {
return $rv;
}
$date = date("Y-m-d", mktime(0, 0, 0, $mois, 1, $annee));
$mois = mois($date);
$annee = annee($date);
// rendez-vous personnels dans le mois
$result_messages = sql_select("M.titre AS summary, M.texte AS description, M.id_message AS uid, M.date_heure", "spip_messages AS M, spip_auteurs_liens AS L", "((L.id_auteur=$connect_id_auteur AND L.id_objet=M.id_message AND L.objet='message') OR M.type='affich') AND M.rv='oui' AND M.date_heure >='$annee-$mois-1' AND date_heure < DATE_ADD('$annee-$mois-1', INTERVAL 1 MONTH) AND M.statut='publie'");
while($row=sql_fetch($result_messages)) {
$result_messages = sql_select("M.titre AS summary, M.texte AS description, M.id_message AS uid, M.date_heure",
"spip_messages AS M, spip_auteurs_liens AS L",
"((L.id_auteur=$connect_id_auteur AND L.id_objet=M.id_message AND L.objet='message') OR M.type='affich') AND M.rv='oui' AND M.date_heure >='$annee-$mois-1' AND date_heure < DATE_ADD('$annee-$mois-1', INTERVAL 1 MONTH) AND M.statut='publie'");
while ($row = sql_fetch($result_messages)) {
$rv[journum($row['date_heure'])] = $row;
}
return $rv;
}

37
notifications/instituermessage.php

@ -10,7 +10,9 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -21,21 +23,22 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @param int $id_message
* @param array $options
*/
function notifications_instituermessage_dist($quoi, $id_message, $options = array()){
function notifications_instituermessage_dist($quoi, $id_message, $options = array()) {
// ne devrait jamais se produire
if ($options['statut'] == $options['statut_ancien']) {
spip_log("statut inchange",'notifications');
spip_log("statut inchange", 'notifications');
return;
}
if ($options['statut']=='publie'){
if ($options['statut'] == 'publie') {
include_spip('inc/messages');
$type = sql_getfetsel('type','spip_messages','id_message='.intval($id_message));
$type = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message));
$vue = "notifications/message_{$type}_publie";
if (trouver_fond($vue)){
$envoyer_mail = charger_fonction('envoyer_mail','inc'); // pour nettoyer_titre_email
$texte = recuperer_fond($vue,array('id_message'=>$id_message));
if (trouver_fond($vue)) {
$envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email
$texte = recuperer_fond($vue, array('id_message' => $id_message));
// recuperer tous les emails des auteurs qui ont recu le message dans leur boite
// si c'est une annonce generale, on envoie a tout le monde
@ -43,19 +46,19 @@ function notifications_instituermessage_dist($quoi, $id_message, $options = arra
$where = array(
"email!=''",
"statut!='5poubelle'",
sql_in('statut',messagerie_statuts_destinataires_possibles())
sql_in('statut', messagerie_statuts_destinataires_possibles())
);
// pour une annonce : tous ceux qui recoivent des messages
if ($type!=='affich'){
$ids = sql_allfetsel('id_auteur','spip_auteurs_liens',"objet='message' AND id_objet=".intval($id_message));
$ids = array_map('reset',$ids);
$where[] = sql_in('id_auteur',$ids);
if ($type !== 'affich') {
$ids = sql_allfetsel('id_auteur', 'spip_auteurs_liens', "objet='message' AND id_objet=" . intval($id_message));