SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

251 Plugins, 182 contribs sur SPIP-Zone, 184 visiteurs en ce moment

Accueil du site > Auteurs, authentification et autorisations > Auteurs étendus > Comptes & Contacts > Plugin Comptes & Contacts

Plugin Comptes & Contacts

4 janvier 2010 – par Cyril MARION – 24 commentaires

8 votes

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Permet la gestion de Comptes et de Contacts afin de faciliter les inscriptions, transactions, et autres saisies d’informations relatives à des personnes dans SPIP. Ce plugin utilise et étend la structure des auteurs SPIP.

Principe :

Comme un certain nombre d’autres plugins jusque là, "Comptes & Contacts" ajoute des champs indispensables à la table spip_auteurs, dès qu’il s’agit de gérer des personnes d’une manière un peu poussée. La table spip_auteurs est par nature, et historiquement sans doute, limitée aux champs nécessaires pour la rédaction d’articles. Dès que cette table doit être utilisée pour d’autres fonctions (inscription, transaction, etc.) certaines caractéristiques lui font défaut, et parmi elles :

-  prénom, date de naissance, autres informations personnelles
-  notion de "groupes d’auteurs"
-  plus de une adresse mail, plusieurs numéros de téléphone ou ID communautaires (ICQ, MSN)
-  autres informations spécifiques à l’utilisation

Objectif

Lors du développement du plugin nous avons veillé à ce que la notion d’auteur SPIP soit conservée intégralement. Nous avons par exemple choisi de ne pas modifier la structure de la table. Ainsi nous avons ajouté seulement les tables nécessaires à l’ajout de propriétés.

Ce plugin est déjà utilisé par le plugin Catalogue, et le plugin SPIPMine est en cours de modifications pour intégrer Comptes & Contacts en lieu et place du système de gestion clients existant.

Nouvelles tables

Table spip_contacts
Il aurait sans doute été possible de ne pas créer de table contacts mais d’utiliser une table "champs" avec une liaison entre un champ et un auteur. Par exemple, pour ajouter le prénom "Georges" à l’auteur N°117, on aurait pu créer une table "spip_champs" avec un enregistrement de type :
-  id_objet : 117
-  objet : auteur
-  id_champ : X
-  type_champ : prenom
-  valeur_champ : Georges

C’est un peu ce que fait le plugin "champs_extra_2" non ? Non, on me dit que c’est plutôt ce que fait le plugin"forms&tables"... OU peut être encore "inscription 2" ?

Bref ça me semble un peu compliqué pour quelques tables à gérer finement soi-même. F&T ne fait pas tout et ses formats de champ texte ne permettraient pas de gérer facilement les tris par exemple pour "agenda".

Néanmoins, pour simplifier et arriver plus rapidement à un résultat exploitable, nous avons décidé de créer une table "spip_contacts" dont voici la structure :

Nota 1 : il est très important de garder une clé d’index sur le champ id_auteur, ce qui permet de faire la liaison avec la table spip_auteurs et d’utiliser des boucles (AUTEURS) avec un champ de la table spip_contact en critère.

Nota 2 : voir si la liaison peut s’étendre à des critères issus de la table spip_coordonnees dans une boucle (AUTEURS). Oui => c’est faisable en positionnant les 3 tables dans la boucle, de la manière suivante :

Table spip_adresses
Permet d’ajouter des adresses de différents types : perso, pro, vacance...

On peut ajouter une "adresse" aussi bien à un contact... qu’a un compte. ce fonctionnement est inspiré du très adulé système de gestion des documents dans SPIP (et qui gagnerait à être étendu à la gestion des mots-clé...). En effet, il existe une seule table documents, puis une seule table de liaisons permettant des liaisons à n’importe quel objet SPIP.

Table spip_comptes
Cette table permet(tra) de gérer des groupes de contacts. En voici sa structure pour l’instant :

La liaison comptes / contacts n’est pas encore opérationnelle pour l’instant. Doit elle être gérée avec un champ id_compte dans la table contacts ? doit elle être gérée avec une table de liaisons comptes_contacts ? A réfléchir. Pour l’instant les 2 plugins en cours de développement utilisant "Comptes & Contacts" n’ont pas encore besoin de la notion de comptes (seulement de contacts).

Réflexions sur les développements futurs

On distingue a priori 3 types de données relatives aux personnes :

-  1. les données "personnelles", uniques et intemporelles : prénom, date de naissance, genre (civilité), etc. Ces données sont d’une manière générale uniques (on n’est né qu’une seule fois, et à une seule date...) et ne se modifieront pas dans le temps ; elles seront donc placées dans une table possédant une liaison 1 à 1 avec la table spip_auteurs. Cette table est la table spip_contacts.

-  2. les données "de contact" multiples et plus ou moins "universelles" : adresse postale, numéro de téléphone, adresse mail, identifiant ICQ... D’une manière générale ces infos peuvent être multipliées : 1 adresse perso + 1 adresse pro, 1 tel portable, 1 tel domicile et un tel bureau, 1 contact MSN et un autre ICQ... Elles seront donc stockées dans une ou plusieurs tables qui pourront être livrées telles quelles avec le plugin : une table spip_adresses, une table spip_numeros, une table spip_chat (?) chacune avec leur table de liaison permettant d’attribuer par exemple plusieurs numéros différents à une personne. Les liaisons son 1 à n (1 auteur à n adresses).

-  3. des données "spécifiques" à une application, et par définition volatile [1] : inscription, achat (?), participation à un congrès, une conférence... Ce sont ces données qui devront pouvoir être étendues facilement en fonction des besoins.

De base, le plugin fournira les données "personnelles" (uniques) et "de contact" (multiples). Des extensions possibles avec d’autres tables "spécifiques" sont possibles. Il ne restera plus qu’à gérer les formulaires avec ce formidable outil qu’est la méthode CVT.

Autres évolutions

Pour continuer sur la gestion des personnes, envisager l’évolution vers d’autres types de liens, p. exemple liens familiaux (ou d’amitié). Les liens de type CV sont la plupart du temps gérés avec un enregistrement de la table articles lié à l’auteur.

Notes

[1] dans le sens éphémères

Retour en haut de la page

24 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3

  • Répondre à ce message

    9 mars 16:58, par Cyril MARION

    Mort, non, endormi c’est possible...
    La prochaine grosse étape serait d’intégrer la partie « gestion depuis l’interface privée » en utilisant le dernier gros commit de xdjuj ( 34647 ).
    Ne pas utiliser en prod.

  • Répondre à ce message

    9 mars 12:09

    Il n’y a plus d’évolution apparente. Je peux donc installer ? Tous les bugs mentionnés dans les autres messages sont corrigés ? Merci d’avance.

  • Répondre à ce message

    3 février 12:09

    inscription ne sert pour l’instant que pour la liste des pays ; une modif est en cours pour requerir le plugin geographie, à la place. Si vous pouvez utiliser inscrition, aucun intérêt à utiliser Comptes & Contacts.

  • Répondre à ce message

    3 février 11:15

    pour pouvoir s’activer, ce plugin réclame :
    -  SPIP_BONUX 1.8.8
    -  VERIFIER 0.1.
    -  INSCRIPTION2 0.71

    mais quel est l’utilité si je peux utiliser inscription2 ?

  • Répondre à ce message

    19 janvier 15:31, par gilcot

    j’hésite encore : j’ai prévu à la fois les tables spip_numeros, spip_emails et spip_messagerie pour gérer les 3 champs séparéments, mais aussi une table unique spip_champs pour ces 3 types de données avec une colonne supplémentaire ’type_champ’ qui peut prendre les valeurs email, numero, messagerie.

    les deux approches se défendent... tout dépend de la souplessse d’utilisation que l’on veut (quoi que je ne vois pas trop si ça fera vraiment une différence pour l’utilisateur) et/ou de la complexité (pour les développeurs qui souhaitent étendre le plugin ou l’interfacer avec une autre application)

    Il faut voir à l’usage, et dans les jours qui viennent je vais importer des données d’un gros CRM et voir ce qui est le plus facile et le plus souple à gérer.

    les deux approches existent... il y a des CRM pour lesquels tout est combiné avec l’adresse : c’est moins souple...

    l’avantage d’une table est qu’au niveau des requêtes, ça peut paraitre plus simple : on lit/écrit une seule table.. mais cette simplicité est apparente car il faut lire plusieurs occurrences (relation 1-N) et faire le tri selon le type_champ (en particulier quand on ne veut récupérer qu’une seule information et non plusieurs). mais en écriture, c’est moins simple que d’adresser plusieurs tables dans une seule requête (je me place du point de vue où il y a un numéro et un mail, sinon c’est tout aussi complexe, mais toujours moins de requêtes à faire...) :-/ je crois qu’il faut tester et ne garder que la solution la plus simple et souple au niveau de l’écriture des boucles (la viabilité du plugin dépendra de sa facilité à être intégré dans les squelettes)

    les 3 extensions d’une hcard selon la page du wiki sont : adr tel email Cela correspond aux 3 tables spip_adresses, spip_numeros et spip_emails.

    il faut que je regarde comment sont traités les messageries (mais pour beaucoup d’application, c’est traité comme l’email sauf que c’est d’un type msn/icq/yim et non mail —et dans ces cas, ils ne font pas de différence entre les mails qui peuvent être principal/pro/perso/etc.—)

    • email
      • id_auteur (pour le lien)
      • type (privé/pro/...)
      • valeur (qui devrait être unique !)
    • messagerie (qui peut utiliser une adresse email...)
      • id_auteur (pour le lien)
      • type (gadu/gtalk/icq/aol/...)
      • valeur (qui devrait être unique !)
    • numéro
      • id_auteur (pour le lien)
      • type (fax/gsm/biper/...)
      • valeur (habituellement unique —gsm— mais peut être partagé quand c’est lié à une adresse —rtc/fax— finalement donc indexable mais sans contrainte)
    • adresse (lui est clairement différent des autres et a besoin d’une table de liaison...)
      • lignes d’adresse (en général deux ou trois, mais il est plus souple d’avoir un unique textarea de trois lignes)
      • code postal (normalement entier mais stocké comme chaine non contrôlée —comme les numéros, peut commencer par zéro, contenir des espace ou un caractère—)
      • département (quelques caractères)
      • ville...
      • pays
      • geo (il y a d’autres extensions possibles, mais celle-ci est la plus courante avec les GPS qui se démocratisent)
      • notes (toujours utile pour indiquer porte, code d’accès au bâtiment et autres infos non transmises avec la vCard)
        -  
  • Répondre à ce message

    19 janvier 15:02, par Cyril MARION

    passage à l’éditeur netbeans 9_9

  • Répondre à ce message

    19 janvier 14:55, par gilcot

    attention aux réglages/préférences de l’éditeur, notamment en ce qui concerne le style de codage (usage des tabulations, convention de nommage, indentation) et —dans le cas présent— à l’encodage utilisé...
    je vois ici des é qui ne le sont plus (on dirait un passage en utf8, ce qui est une bonne chose, mais ne semble pas correspondre au format dans lequel on enregistre). par ailleurs, pour une meilleure portabilité, il est recommandé d’utiliser les entités HTML/XML pour les fichiers de langue et tous les textes d’interface de SPIP :)

  • Répondre à ce message

    19 janvier 12:34, par Cyril MARION

    les 3 extensions d’une hcard selon la page du wiki sont :
    -  adr
    -  tel
    -  email

    Cela correspond aux 3 tables spip_adresses, spip_numeros et spip_emails.

  • Répondre à ce message

    19 janvier 08:52, par Cyril MARION

    Bonne remarque également, concernant les clés primaires de spip_contacts et spip_comptes ; du fait que chaque enregistrement de ces 2 tables est lié de manière unique à un enregistrement de spip_auteurs, le id_contact et le id_compte pourraient être supprimés et remplacés par le id_auteur...

    A intégrer dans la structure.

  • Répondre à ce message

    19 janvier 08:48, par Cyril MARION

    Bonnes remarques, le n° et la voie dans la table spip_adresses pourraient être regroupées. En revanche j’hésite encore : j’ai prévu à la fois les tables spip_numeros, spip_emails et spip_messagerie pour gérer les 3 champs séparéments, mais aussi une table unique spip_champs pour ces 3 types de données avec une colonne supplémentaire ’type_champ’ qui peut prendre les valeurs email, numero, messagerie.

    Il faut voir à l’usage, et dans les jours qui viennent je vais importer des données d’un gros CRM et voir ce qui est le plus facile et le plus souple à gérer.

    Commentaires et remarques bienvenus !

Pages 1 | 2 | 3

Répondre à cet article

Retour en haut de la page

Ça discute par ici

  • Le plugin saveauto : sauvegarde automatique de la base de données de SPIP

    27 novembre 2006 – 73 commentaires

    Le plugin saveauto permet de réaliser automatiquement une sauvegarde de la base de données de SPIP selon une fréquence et des paramètres configurables.

  • CleverMail

    20 janvier – 71 commentaires

    CleverMail est un plugin permettant d’envoyer des lettres d’informations à des abonnés depuis SPIP. Issu au départ d’un développement libre complètement indépendant de SPIP, il a connu une première version pour SPIP 1.9 avant d’être complètement réécris (...)

  • Diapos

    10 mars – 38 commentaires

    Comme son nom l’indique, c’est un (petit) plugin qui rappelle un peu le fonctionnement d’un projecteur de diapositives. Seules contraintes : il nous faut des images ayant la même largeur et il nous faut numéroter les images. Il suffit pour cela de (...)

  • Forms&Tables 2.0

    31 décembre 2009 – 136 commentaires

    Gestion et administration de formulaires éditables. Ce plugin permet également la publication de sondages et enquètes, la collecte des réponses dans la base de données et le téléchargement au format csv. Ce plugin est une adaptation de la version pour (...)

  • SPIP Zen Garden

    12 novembre 2009 – 68 commentaires

    Le plugin Zen Garden [1], ou Jardin Zen, vous permet de gérer une galerie de thèmes pour votre site, et de changer très facilement de thèmes parmi les thèmes disponibles. Pré-requis Le jardin Zen nécessite d’utiliser un squelette comme le squelette (...)