Browse Source

permettre d'effacer les messages recus et de supprimer certains messages envoyes (les annonces si on est admin, ses propres penses-betes et les messages envoyes que tous les destinataires ont deja supprimes)

Interface simple depuis chaque page de consultation d'un message.
svn/root/tags/plugins/organiseur/0.6.0 v0.6.0
cedric@yterium.com 12 years ago
parent
commit
96d5b0f0d5
  1. 2
      .gitattributes
  2. 34
      action/effacer_messagerecu.php
  3. 32
      action/supprimer_message.php
  4. 38
      inc/messages.php
  5. 2
      lang/organiseur_fr.php
  6. 26
      organiseur_autoriser.php
  7. 4
      organiseur_fonctions.php
  8. 2
      paquet.xml
  9. 2
      prive/objets/liste/messages-recus.html
  10. 18
      prive/squelettes/navigation/message.html

2
.gitattributes vendored

@ -1,6 +1,8 @@
* text=auto !eol
action/effacer_messagerecu.php -text
action/quete_autocomplete.php -text
action/quete_calendrier.php -text
action/supprimer_message.php -text
base/organiseur.php -text
/calendrier.css -text
/calendrier_quete.json.html -text

34
action/effacer_messagerecu.php

@ -0,0 +1,34 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* 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;
/**
* @param int $id_auteur
* @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');
$arg = $securiser_action();
list($id_auteur,$id_message) = explode('-',$arg);
}
include_spip('inc/autoriser');
if (autoriser('effacer','messagerecu',$id_message,null,array('id_auteur'=>$id_auteur))){
include_spip('inc/messages');
messagerie_effacer_message_recu($id_auteur,$id_message);
}
}

32
action/supprimer_message.php

@ -0,0 +1,32 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* 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;
/**
* @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');
$id_message = $securiser_action();
}
include_spip('inc/autoriser');
if (autoriser('supprimer','message',$id_message)){
include_spip('action/editer_objet');
objet_modifier('message',$id_message,array('statut'=>'poub'));
}
}

38
inc/messages.php

@ -145,12 +145,14 @@ function messagerie_mailer_message($id_message, $emails_dest=array()){
}
/**
* Marquer un message comme lu
* Marquer un message dans l'etat indique par $vu
*
* @param int $id_auteur
* @param array $liste
* @param string $vu
* @return void
*/
function messagerie_marquer_lus($id_auteur,$liste){
function messagerie_marquer_message($id_auteur,$liste,$vu){
include_spip('action/editer_liens');
if (!is_array($liste))
$liste = array($liste);
@ -161,37 +163,35 @@ function messagerie_marquer_lus($id_auteur,$liste){
$l = array();
foreach($liens as $lien)
$l[] = $lien['message'];
objet_associer(array('auteur'=>$id_auteur),array('message'=>array_diff($liste,$l)),array('vu'=>'oui'));
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'=>'oui'));
objet_qualifier_liens(array('auteur'=>$id_auteur),array('message'=>$liste),array('vu'=>$vu));
include_spip('inc/invalideur');
suivre_invalideur("message/".implode(',',$liste));
}
/**
* Marquer un message comme lu
*
* @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');}
/**
* Marquer un message comme non lu
*
* @param int $id_auteur
* @param array $liste
* @param array $liste_id_message
*/
function messagerie_marquer_non_lus($id_auteur,$liste){
include_spip('action/editer_liens');
objet_qualifier_liens(array('auteur'=>$id_auteur),array('message'=>$liste),array('vu'=>'non'));
include_spip('inc/invalideur');
suivre_invalideur("message/".implode(',',$liste));
}
function messagerie_marquer_non_lus($id_auteur,$liste_id_message){messagerie_marquer_message($id_auteur,$liste_id_message,'non');}
/**
* Effacer un message recu
*
* @param int $id_auteur
* @param array $liste
* @param array $liste_id_message
*/
function messagerie_effacer_recu($id_auteur,$liste){
include_spip('action/editer_liens');
objet_dissocier(array('auteur'=>$id_auteur),array('message'=>$liste));
include_spip('inc/invalideur');
suivre_invalideur("message/".implode(',',$liste));
}
function messagerie_effacer_message_recu($id_auteur,$liste_id_message){messagerie_marquer_message($id_auteur,$liste_id_message,'poub');}
?>
?>

2
lang/organiseur_fr.php

@ -25,6 +25,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'icone_ecrire_nouvelle_annonce' => 'Envoyer une nouvelle annonce',
'icone_modifier_annonce' => 'Modifier cette annonce',
'icone_modifier_pensebete' => 'Modifier ce pense-bête',
'icone_effacer_message' => 'Effacer ce message',
'icone_supprimer_message' => 'Supprimer ce message',
'info_1_message_envoye' => '1 message envoyé',
'info_1_message_nonlu' => '1 nouveau message',
'info_agenda_interne' => 'Agenda interne',

26
organiseur_autoriser.php

@ -47,6 +47,32 @@ function autoriser_message_instituer_dist($faire, $type='', $id=0, $qui = NULL,
return autoriser('modifier','message',$id,$qui,$opt);
}
function autoriser_message_supprimer_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
// on peut supprimer un message que l'on peut modifier
if (autoriser('modifier','message',$id,$qui,$opt))
return true;
// mais on peut aussi supprimer un message envoye par soi
// si tous ses dest l'on supprime aussi
if (
$qui['id_auteur']
AND sql_countsel('spip_messages',"statut='publie' AND id_auteur=".intval($qui['id_auteur'])." AND id_message=".intval($id))
AND !sql_countsel('spip_auteurs_liens',"objet='message' AND id_objet=".intval($id)." AND vu!='poub' AND id_auteur!=".intval($qui['id_auteur']))
)
return true;
return false;
}
function autoriser_messagerecu_effacer_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
if (isset($opt['id_auteur']))
$id_auteur = $opt['id_auteur'];
else
$id_auteur = $qui['id_auteur'];
// seul le destinataire peut supprimer un message qui lui est destine
if (!intval($id_auteur) OR intval($id_auteur) != intval($qui['id_auteur']))
return false;
// rien d'autre a verifier?...
return true;
}
function autoriser_message_dater_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
return false;

4
organiseur_fonctions.php

@ -25,7 +25,7 @@ function critere_MESSAGES_destinataire_dist($idb, &$boucles, $crit) {
array(
"'AND'",
array("'='","'auteurs_liens.id_auteur'","intval($_auteur)"),
array("'!='","'auteurs_liens.vu'","'\'pou\''"),
array("'!='","'auteurs_liens.vu'","'\'poub\''"),
),
array("'OR'",
array("'='","'".$boucle->id_table.".type'","sql_quote('affich')"),
@ -51,7 +51,7 @@ function critere_MESSAGES_non_lu_dist($idb, &$boucles, $crit) {
$boucle->where[] =
array("'OR'",
"'auteurs_liens.vu IS NULL'",
"sql_in('auteurs_liens.vu',array('pou','oui'),'NOT',\$connect)"
"sql_in('auteurs_liens.vu',array('poub','oui'),'NOT',\$connect)"
);
}

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="organiseur"
categorie="date"
version="0.5.1"
version="0.6.0"
etat="test"
compatibilite="[3.0.0-alpha2;["
logo="prive/themes/spip/images/calendrier-32.png"

2
prive/objets/liste/messages-recus.html

@ -27,7 +27,7 @@
</thead>
<tbody>
<BOUCLE_mess_rec(MESSAGES auteurs){destinataire?#ENV{destinataire}}{id_auteur?}{type?}{where?}{statut?}{recherche?}{tri #ENV{par,date_heure},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
[(#SET{vu,[(#TYPE|=={pb}|ou{#VU|match{^(oui|pou)$}})]})]
[(#SET{vu,[(#TYPE|=={pb}|ou{#VU|match{^(oui|poub)$}})]})]
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][(#GET{vu}|non)new]">
<td class='new'>[(#GET{vu}|?{'',#CHEMIN_IMAGE{pictonew-16.png}|balise_img{<:organiseur:info_message_non_lu:>}|inserer_attribut{title,<:organiseur:info_message_non_lu:>}})]</td>
<td class='type'>[(#CHEMIN_IMAGE{#TYPE|organiseur_icone_message{16}}|balise_img{#VAL{organiseur:info_type_message_}|concat{#TYPE}|_T})]</td>

18
prive/squelettes/navigation/message.html

@ -1,3 +1,21 @@
<BOUCLE_env(MESSAGES){id_message}{id_auteur=#SESSION{id_auteur}}>
[
#BOITE_OUVRIR{'','info'}
(#AUTORISER{supprimer,message,#ID_MESSAGE}|oui)
[(#URL_ACTION_AUTEUR{supprimer_message,#ID_MESSAGE,#URL_ECRIRE{messages}}|icone_horizontale{<:organiseur:icone_supprimer_message:>,[(#TYPE|organiseur_icone_message)],del})]
#BOITE_FERMER
]
</BOUCLE_env>
<BOUCLE_recu(MESSAGES){id_message}{destinataire #SESSION{id_auteur}}>
[
#BOITE_OUVRIR{'','info'}
(#AUTORISER{effacer,messagerecu,#ID_MESSAGE}|oui)
[(#URL_ACTION_AUTEUR{effacer_messagerecu,[(#SESSION{id_auteur})-#ID_MESSAGE],#URL_ECRIRE{messages}}|icone_horizontale{<:organiseur:icone_effacer_message:>,[(#TYPE|organiseur_icone_message)],del})]
#BOITE_FERMER
]
</BOUCLE_recu>
<//B_env>
<BOUCLE_isrv(MESSAGES){id_message}{statut?}{rv=oui}>
<div id="loading" style="position:absolute;top:20px;left:350px;padding:5px 30px;display:none;border:1px solid #ddd;background:#eee;z-index:100;"><:organiseur:loading:></div>
<div id="calendrier"></div>

Loading…
Cancel
Save