Tiens je parlais justement de ce fonctionnement là la semaine dernière pour le formulaire de contact.
Mais pourquoi finalement utiliser un statut particulier et une interface particulière ?
Ne serait-il pas plus simple de notifier l’auteur par un message ‹ normal › de la messagerie (doublé de l’email évidemment), qu’il pourrait consulter dans ses messages normaux et les gérer de la même façon. Surtout si tu créé un auteur lorsqu’il n’existe pas !
Quitte à ajouter un flag et un système de flags sur les messages et dans l’interface de la messagerie 2.0.
Pour moins de dev on aurait quelque chose de mieux et de plus léger à maintenir dans le temps, non ?
(mon gyrophare s’allume à chaque fois que je vois une fonctionnalité doublonner et que je me représente le code à maintenir en plus
)
Cédric
Le 2 novembre 2009 17:05, <rastapopoulos@spip.org> a écrit :
Author: rastapopoulos@spip.org
Date: Mon Nov 2 17:05:13 2009
New Revision: 32614Log:
Et voilà une option permettant d’enregistrer les messages de contact dans la base, en tant que message à un auteur.Pas de conflit avec la messagerie existante car ça utilise un « type » de message dédié et une interface exec dédiée aussi.
Un nouvel auteur avec un statut « contact » est créé à chaque nouveau message de contact, en plus du message lui-même. Sauf si l’adresse email utilisée est déjà existante chez un utilisateur.
Cela permet notamment de transformer peut-être un jour ce contact en utilisateur réel du système, et bien d’autres utilisations…Pour l’instant seuls les auteurs connectés eux-mêmes peuvent voir leurs propres messages. Mais c’est à améliorer suivant la remarque de Nicolas Hoizey disant que souvent on crée des faux utilisateurs pour les destinataires. Donc il faudrait au moins que les statuts « webmestre » aient accès à l’ensemble des contacts enregistrés.
Added:
plugins/contact/action/
plugins/contact/action/supprimer_message.php (with props)
plugins/contact/base/
plugins/contact/base/contact_installation.php (with props)
plugins/contact/base/contact_tables.php (with props)
plugins/contact/exec/
plugins/contact/exec/contact_messages.php (with props)
plugins/contact/exec/contact_select_message.php (with props)
plugins/contact/exec/contact_un_message.php (with props)
Modified:
plugins/contact/contact_pipelines.php
plugins/contact/fonds/cfg_contact.html
plugins/contact/formulaires/contact.php
plugins/contact/lang/contact_en.php
plugins/contact/lang/contact_fr.php
plugins/contact/plugin.xmlAdded: plugins/contact/action/supprimer_message.php
— plugins/contact/action/supprimer_message.php (added)
+++ plugins/contact/action/supprimer_message.php Mon Nov 2 17:05:13 2009
@@ -0,0 +1,17 @@
+<?php
+
+if (!defined(« _ECRIRE_INC_VERSION »)) return;
+
+include_spip(‹ inc/filtres ›);
+
+// Permet de supprimer un message de contact.
+function action_supprimer_message() {
+
- $securiser_action = charger_fonction(‹ securiser_action ›, ‹ inc ›);
- $id_message = $securiser_action();
- sql_delete(« spip_messages », « id_message= ».sql_quote($id_message));
- sql_delete(« spip_auteurs_messages », « id_message= ».sql_quote($id_message));
+}+?>
Propchange: plugins/contact/action/supprimer_message.php
svn:executable = *
Added: plugins/contact/base/contact_installation.php
— plugins/contact/base/contact_installation.php (added)
+++ plugins/contact/base/contact_installation.php Mon Nov 2 17:05:13 2009
@@ -0,0 +1,75 @@
+<?php
+include_spip(‹ inc/meta ›);
+include_spip(‹ base/create ›);
+
+include_spip(‹ inc/meta ›);
+
+// Installation et mise à jour
+function contact_upgrade($nom_meta_version_base, $version_cible){
+
- $version_actuelle = ‹ 0.0 ›;
- if (
- (!isset($GLOBALS[‹ meta ›][$nom_meta_version_base]))
- || (($version_actuelle = $GLOBALS[‹ meta ›][$nom_meta_version_base]) != $version_cible)
- ){
- if (version_compare($version_actuelle,‹ 0.0 ›,‹ = ›)){
- // Création des tables
- include_spip(‹ base/create ›);
- include_spip(‹ base/abstract_sql ›);
- creer_base();
- echo « Création des tables de messageries si inexistantes.
»;- ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, ‹ non ›);
- }
- /*if (version_compare($version_actuelle,‹ 0.5 ›,‹ < ›)){
- include_spip(‹ base/create ›);
- include_spip(‹ base/abstract_sql ›);
- // Modification de contact
- sql_alter(‹ ›);
- // On change la version
- echo « Mise à jour du plugin contact en version 0.5
»;- ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, ‹ non ›);
- }*/
- }
+}
+
+// Désinstallation
+function contact_vider_tables($nom_meta_version_base){
+
- include_spip(‹ base/abstract_sql ›);
- // On recupere tous les messages de contact
- $messages = sql_allfetsel(
- ‹ id_message ›,
- ‹ spip_messages ›,
- 'type = '.sql_quote(‹ contac ›)
- );
- $messages = array_map(‹ reset ›, $messages);
- $in = sql_in(
- ‹ id_messages ›,
- $messages
- );
- // On supprime les messages
- sql_delete(
- ‹ spip_messages ›,
- 'type = '.sql_quote(‹ contact ›)
- );
- // On supprime les liens
- sql_delete(
- ‹ spip_auteurs_messages ›,
- $in
- );
- // On efface la version entregistrée
- effacer_meta($nom_meta_version_base);
+}
+
+?>Propchange: plugins/contact/base/contact_installation.php
svn:executable = *
Added: plugins/contact/base/contact_tables.php
— plugins/contact/base/contact_tables.php (added)
+++ plugins/contact/base/contact_tables.php Mon Nov 2 17:05:13 2009
@@ -0,0 +1,59 @@
+<?php
+
+if (!defined(« _ECRIRE_INC_VERSION »)) return;
+
+function contact_declarer_tables_principales($tables_principales) {
- // On vérifie si la table n’a pas déjà été déclarée.
- if(!$tables_principales[‹ spip_messages ›]) {
- // déclaration de la table spip_messages
- $spip_messages = array(
- « id_message » => « bigint(21) NOT NULL »,
- « titre » => « text DEFAULT ‹ › NOT NULL »,
- « texte » => « longtext DEFAULT ‹ › 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) NOT NULL »,
- « maj » => « TIMESTAMP »);
- $spip_messages_key = array(
- « PRIMARY KEY » => « id_message »,
- « KEY id_auteur » => « id_auteur »);
- $tables_principales[‹ spip_messages ›] = array(
- ‹ field › => &$spip_messages,
- ‹ key › => &$spip_messages_key);
- }
- return $tables_principales;
+}+function contact_declarer_tables_interfaces($interface){
- $interface[‹ table_des_tables ›][‹ messages ›] = ‹ messages ›;
- $interface[‹ tables_jointures ›][‹ spip_messages ›] = ‹ messages ›;
- return $interface;
+}+function contact_declarer_tables_auxiliaires($tables_auxiliaires){
- // On vérifie si la table n’a pas déjà été déclarée.
- if(!$tables_auxiliaires[‹ spip_auteurs_messages ›]) {
- // Déclaration de la table spip_auteurs_messages
- $spip_auteurs_messages = array(
- « id_auteur » => « bigint(21) DEFAULT ‹ 0 › NOT NULL »,
- « id_message » => « bigint(21) DEFAULT ‹ 0 › NOT NULL »,
- « vu » => « CHAR (3) »);
- $spip_auteurs_messages_key = array(
- « PRIMARY KEY » => « id_auteur, id_message »,
- « KEY id_message » => « id_message »);
- $tables_auxiliaires[‹ spip_auteurs_messages ›] = array(
- ‹ field › => &$spip_auteurs_messages,
- ‹ key › => &$spip_auteurs_messages_key);
- }
- return $tables_auxiliaires;
+}
+?>Propchange: plugins/contact/base/contact_tables.php
svn:executable = *
Modified: plugins/contact/contact_pipelines.php
— plugins/contact/contact_pipelines.php (original)
+++ plugins/contact/contact_pipelines.php Mon Nov 2 17:05:13 2009
@@ -7,4 +7,16 @@
return $flux;
}+function contact_ajouter_boutons($boutons_admin) {
- // On vérifie s’il faut enregistrer les contacts.
- if (lire_config(‹ contact/sauvegarder_contacts ›)) {
- $boutons_admin[‹ forum ›]->sousmenu[‹ messages_contact ›] = new Bouton(
- find_in_path(‹ contact-24.png ›, ‹ images/ ›, false),
- _T(‹ contact:msg_messagerie ›),
- generer_url_ecrire(‹ contact_messages ›)
- );
- }
- return ($boutons_admin);
+}
?>Added: plugins/contact/exec/contact_messages.php
— plugins/contact/exec/contact_messages.php (added)
+++ plugins/contact/exec/contact_messages.php Mon Nov 2 17:05:13 2009
@@ -0,0 +1,43 @@
+<?php
+
+include_spip(‹ inc/presentation ›);
+include_spip(‹ exec/contact_select_message ›);
+
+function exec_contact_messages() {
+
+global $connect_id_auteur, $connect_statut, $spip_lang_rtl;
+
+$commencer_page = charger_fonction(‹ commencer_page ›, ‹ inc ›);
+echo $commencer_page(« Messages de contact », « forum », « contact_messages »);
+
+echo debut_gauche(« contact_messages »,true);
+
+echo debut_boite_info(true);
+
+echo _T(‹ contact:msg_accueil ›);
+
+echo fin_boite_info(true);
+
+
+echo debut_droite(« contact_messages », true);
+
+$messages_vus = array();
+
+$nouveaux_messages = afficher_ses_messages(_T(‹ contact:msg_nouveaux ›), « , spip_auteurs_messages AS lien », « lien.id_auteur=$connect_id_auteur AND vu=‹ non › AND statut=‹ publie › AND type=‹ contac › AND lien.id_message=messages.id_message », $messages_vus, true, false);
+
+if ($nouveaux_messages)
- echo $nouveaux_messages;
+else {- echo debut_boite_info(true);
- echo _T(‹ contact:msg_pas_nouveaux ›);
- echo fin_boite_info(true);
+}+echo afficher_ses_messages(‹ › . _T(‹ contact:msg_lus ›) . ‹ ›, « , spip_auteurs_messages AS lien », « lien.id_auteur=$connect_id_auteur AND vu!=‹ non › AND statut=‹ publie › AND type=‹ contac › AND lien.id_message=messages.id_message », $messages_vus, true, false);
+
+
+echo fin_gauche(), fin_page();
+
+}
+?>Propchange: plugins/contact/exec/contact_messages.php
svn:executable = *
Added: plugins/contact/exec/contact_select_message.php
— plugins/contact/exec/contact_select_message.php (added)
[… 411 lines stripped …]
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit