/_plugins_/Associaspip/branches/v2.1/inc/post_edition.php

https://bitbucket.org/pombredanne/spip-zone-treemap · PHP · 88 lines · 67 code · 8 blank · 13 comment · 19 complexity · 053a22c73ab897958effb862891c95a3 MD5 · raw file

  1. <?php
  2. /***************************************************************************
  3. * Associaspip, extension de SPIP pour gestion d'associations *
  4. * *
  5. * Copyright (c) 2007 Bernard Blazin & Francois de Montlivault (V1) *
  6. * Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2) *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined("_ECRIRE_INC_VERSION")) return;
  12. function association_post_edition($flux){
  13. $id = $flux['args']['id_objet'];
  14. if ($id
  15. AND $flux['args']['table']=='spip_auteurs') {
  16. update_spip_asso_membre($id);
  17. }
  18. }
  19. function update_spip_asso_membre($id_auteur)
  20. {
  21. $auteur = sql_fetsel('statut, nom, bio', 'spip_auteurs', "id_auteur=$id_auteur");
  22. if ($auteur['statut'] == '5poubelle') { /* auteur a la poubelle: on le met aussi a la poubelle dans asso_membres si il est present dans la table */
  23. if (sql_getfetsel('id_auteur', 'spip_asso_membres', "id_auteur=$id_auteur")) {
  24. sql_updateq('spip_asso_membres', array('statut_interne' => 'sorti'), "id_auteur=$id_auteur");
  25. }
  26. return;
  27. }
  28. /* on recupere dans la bio les champs fonction, telephone, mobile, adresse, code postal et ville: 1 par ligne (sauf code postal et ville) */
  29. $bio = $auteur['bio'];
  30. if (preg_match_all('/(.+)$/m', $bio, $r)
  31. AND preg_match('/^\s*(\d{5})\s+(.*)/', $r[0][4], $m))
  32. $modif = array(
  33. 'fonction' => trim($r[0][0]),
  34. 'telephone' => telephone_std($r[0][1]),
  35. 'mobile' => telephone_std($r[0][2]),
  36. 'adresse' => trim($r[0][3]),
  37. 'code_postal' => $m[1],
  38. 'ville' => trim($m[2])
  39. );
  40. else $modif = array();
  41. /* on recupere les noms et prenoms dans le champ nom de l'auteur SPIP */
  42. $nom = $auteur['nom'];
  43. if ($nom) {
  44. /* selection du format d'import du champ non */
  45. if ($GLOBALS['association_metas']['import_nom_auteur'] == "prenom_nom") {
  46. list($prenom, $nom) = preg_split('/\s+/', $nom, 2);
  47. if (!$nom) {/* il n'y avait qu'une seule chaine -> on la met dans le nom et le prenom reste vide */
  48. $nom = $prenom;
  49. $prenom = '';
  50. }
  51. } elseif ($GLOBALS['association_metas']['import_nom_auteur'] == "nom") {
  52. $prenom = '';
  53. } else { // defaut: format nom prenom
  54. list($nom, $prenom) = preg_split('/\s+/', $nom, 2); /* il faudrait aussi gerer le cas ou le nom de famille contient un espace */
  55. }
  56. }
  57. else {$nom = _T('asso:activite_entete_adherent').' '.$id_auteur; $prenom = '';} /* si il est vide, le nom sera Adherents XX */
  58. $modif['nom_famille'] = $nom;
  59. $modif['prenom'] = $prenom;
  60. /* si l'auteur est deja present dans la base: on ne modifie pas les noms/prenoms/fonction [temporaire en attendant l'integration de Coordonnees] */
  61. $membre = sql_fetsel('id_auteur,statut_interne', 'spip_asso_membres', "id_auteur=$id_auteur");
  62. if ($membre['id_auteur']) {
  63. unset($modif['fonction']);
  64. unset($modif['nom_famille']);
  65. unset($modif['prenom']);
  66. if ($membre['statut_interne'] == 'sorti') $modif['statut_interne'] = 'prospect'; /* si un auteur est edite mais correspond a un membre sorti, on le repasse en prospect */
  67. sql_updateq('spip_asso_membres', $modif, "id_auteur=$id_auteur");
  68. } else { /* sinon on ajoute avec comme statut par defaut prospect */
  69. $modif['statut_interne'] = 'prospect';
  70. $modif['id_auteur'] = $id_auteur;
  71. sql_insertq('spip_asso_membres', $modif);
  72. }
  73. }
  74. function telephone_std($num)
  75. {
  76. $num = preg_replace('/\D/', '', $num);
  77. if ($num AND strlen($num) < 10) $num = '0'.$num;
  78. $num = preg_replace('/(\d\d)/', '\1 ', $num);
  79. return rtrim($num);
  80. } ?>