Changeset 48173 in spip-zone
- Timestamp:
- May 26, 2011, 9:21:52 PM (10 years ago)
- Location:
- _plugins_/Association/Associaspip
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/Association/Associaspip/exec/adherents.php
r48001 r48173 34 34 echo debut_gauche("",true); 35 35 36 /* recuperation des variables */ 36 37 $critere = request_statut_interne(); // peut appeler set_request 37 38 $statut_interne = _request('statut_interne'); 39 $lettre= _request('lettre'); 38 40 39 41 echo debut_boite_info(true); … … 61 63 echo fin_boite_info(true); 62 64 65 /* on appelle ici la fonction qui calcule le code du formulaire/tableau de membres pour pouvoir recuperer la liste des membres affiches a transmettre a adherents_table pour la generation du pdf */ 66 list($liste_id_auteurs, $code_liste_membres) = adherents_liste(intval(_request('debut')), $lettre, $critere, $statut_interne); 67 63 68 echo debut_cadre_enfonce('',true), 64 69 '<h3 style="text-align:center;">', 65 70 _T('plugins_vue_liste'), '</h3>', 66 adherents_table( ),71 adherents_table($liste_id_auteurs), 67 72 fin_cadre_enfonce(true); 68 73 … … 78 83 echo '<td>'; 79 84 80 $lettre= _request('lettre');85 81 86 if (!$lettre) { $lettre = "%"; } 82 87 … … 132 137 133 138 //Affichage de la liste 134 echo adherents_liste(intval(_request('debut')), $lettre, $critere, $statut_interne);139 echo $code_liste_membres; 135 140 echo fin_cadre_relief(true); 136 141 echo fin_page_association(); … … 138 143 } 139 144 145 /* adherent liste renvoie un tableau des id des auteurs affiches et le code html */ 140 146 function adherents_liste($debut, $lettre, $critere, $statut_interne) 141 147 { … … 148 154 $query = sql_select('a.id_auteur AS id_auteur, b.email AS email, a.sexe, a.nom_famille, a.prenom, a.id_asso, b.statut AS statut, a.validite, a.statut_interne, a.categorie, b.bio AS bio','spip_asso_membres' . " a LEFT JOIN spip_auteurs b ON a.id_auteur=b.id_auteur", $critere, '', "nom_famille ", "$debut,$max_par_page" ); 149 155 $auteurs = ''; 156 $liste_id_auteurs = array(); 150 157 while ($data = sql_fetch($query)) { 151 $id_auteur=$data['id_auteur']; 158 $id_auteur=$data['id_auteur']; 159 $liste_id_auteurs[] = $id_auteur; 152 160 $class = $GLOBALS['association_styles_des_statuts'][$data['statut_interne']] . " border1"; 153 161 … … 257 265 . '</div>'; 258 266 259 return generer_form_ecrire('action_adherents', $res); 260 267 return array($liste_id_auteurs, generer_form_ecrire('action_adherents', $res)); 261 268 } 262 269 … … 268 275 } 269 276 270 function adherents_table( )277 function adherents_table($liste_id_auteurs) 271 278 { 272 279 $champs = $GLOBALS['association_tables_principales']['spip_asso_membres']['field']; … … 285 292 286 293 /* si le plugin coordonnees est actif, on ajoute l'adresse et le telephone */ 287 /*if (plugin_actif('COORDONNEES')) {294 if (plugin_actif('COORDONNEES')) { 288 295 $res .= "<input type='checkbox' name='champs[adresse]' />"._T('asso:adresse')."<br />"; 289 296 $res .= "<input type='checkbox' name='champs[telephone]' />"._T('asso:telephone')."<br />"; 290 297 } 291 */ 292 /* on fait suivre l e statut interne*/293 $res .= "<input type='hidden' name=' statut_interne' value='"._request('statut_interne')."'/>";298 299 /* on fait suivre la liste des auteurs a afficher */ 300 $res .= "<input type='hidden' name='liste_id_auteurs' value='".serialize($liste_id_auteurs)."'/>"; 294 301 295 302 return generer_form_ecrire('pdf_adherents', $res, '', _T('asso:bouton_impression')); -
_plugins_/Association/Associaspip/exec/pdf_adherents.php
r48001 r48173 38 38 } 39 39 } 40 40 41 // ainsi que les colonnes pour les champs hors table spip_asso_membres 41 if ($sent['email']=='on') $pdf->AddCol('email',45 ,_T('asso:adherent_libelle_email'), 'C'); 42 // if ($sent['adresse']=='on') $pdf->AddCol('adresse',45 ,_T('asso:adherent_libelle_adresse'), 'L'); 43 // if ($sent['telephone']=='on') $pdf->AddCol('telephone',20 ,_T('asso:adherent_libelle_telephone'), 'C'); 42 include_spip('inc/association_coordonnees'); 43 $liste_id_auteurs = unserialize(_request('liste_id_auteurs')); 44 if ($sent['email']=='on') { 45 $pdf->AddCol('email',45 ,_T('asso:adherent_libelle_email'), 'C'); 46 $emails = association_recuperer_emails($liste_id_auteurs); 47 } 48 49 if ($sent['adresse']=='on') { 50 $pdf->AddCol('adresse',45 ,_T('asso:adherent_libelle_adresse'), 'L'); 51 $adresses = association_recuperer_adresses($liste_id_auteurs,"\n"," "); 52 } 53 if ($sent['telephone']=='on') { 54 $pdf->AddCol('telephone',30 ,_T('asso:adherent_libelle_telephone'), 'C'); 55 $telephones = association_recuperer_telephones($liste_id_auteurs); 56 } 44 57 45 58 $prop=array( … … 49 62 'padding'=>2 50 63 ); 51 $order = ' m.id_auteur';64 $order = 'id_auteur'; 52 65 if ($sent['nom_famille']=='on') 53 $order = 'm.nom_famille' . ",$order"; 54 //* A FAIRE : AJOUTER LE MAIL, ADRESSE, TELEPHONE DANS LA QUERY ou trouver un autre moyen 55 $pdf->Query(sql_select('*','spip_asso_membres as m INNER JOIN spip_auteurs as a ON m.id_auteur=a.id_auteur', request_statut_interne(), '', $order), $prop); 66 $order = 'nom_famille' . ",$order"; 67 68 $adresses_tels = array(); 69 foreach($liste_id_auteurs as $id_auteur) { 70 $adresses_tels[$id_auteur] = array(); 71 if ($sent['email']=='on') $adresses_tels[$id_auteur]['email'] = implode("\n", $emails[$id_auteur]); 72 if ($sent['adresse']=='on') $adresses_tels[$id_auteur]['adresse'] = implode("\n\n", $adresses[$id_auteur]); 73 if ($sent['telephone']=='on') { 74 $first_tel = true; 75 $telephones_string = ''; 76 foreach ($telephones[$id_auteur] as $telephone) { 77 if (!$first_tel) {$telephones_string .= "\n";} else $first_tel = false; 78 $telephones_string .= print_tel($telephone," "); 79 } 80 $adresses_tels[$id_auteur]['telephone'] = $telephones_string; 81 } 82 } 83 84 $pdf->Query_extended(sql_select('*','spip_asso_membres', sql_in('id_auteur', $liste_id_auteurs), '', $order), $prop, $adresses_tels, 'id_auteur'); 56 85 $pdf->Output(); 57 86 } -
_plugins_/Association/Associaspip/exec/voir_adherent.php
r48107 r48173 29 29 $nom_membre = association_calculer_nom_membre($data['sexe'], $data['prenom'], $data['nom_famille']); 30 30 $validite=$data['validite']; 31 $adresses = association_recuperer_adresses_string( $id_auteur);31 $adresses = association_recuperer_adresses_string(array($id_auteur)); 32 32 $emails = association_recuperer_emails_string(array($id_auteur)); 33 33 $telephones = association_recuperer_telephones_string(array($id_auteur)); … … 56 56 "</a>"; 57 57 58 $coord = '<br /><div style="font-weight: bold; text-align: center" class="verdana1 spip_xx-small">' . $adresses . '<br />' . $emails[$id_auteur] . '<br/>' . $telephones[$id_auteur] . "<p>".$categorie."</p></div>\n";58 $coord = '<br /><div style="font-weight: bold; text-align: center" class="verdana1 spip_xx-small">' . $adresses[$id_auteur] . '<br />' . $emails[$id_auteur] . '<br/>' . $telephones[$id_auteur] . "<p>".$categorie."</p></div>\n"; 59 59 60 60 } else $coord = ''; -
_plugins_/Association/Associaspip/inc/association_coordonnees.php
r48008 r48173 53 53 } 54 54 55 /* prend en argument un id_auteur et retourne un tableau d'adresses */ 55 /* Cette fonction prend en argument un tableau d'id_auteurs et renvoie un tableau 56 id_auteur => array(adresses). Les adresses sont constituees d'une chaine, les caracteres de retour a la ligne et espace peuvent etre passe en parametre */ 56 57 /* TODO: l'affichage du pays devrait etre optionnel */ 57 function association_recuperer_adresses($id_auteur )58 function association_recuperer_adresses($id_auteurs, $newline="<br/>", $espace=" ") 58 59 { 59 $tab_result=array(); 60 if (plugin_actif('COORDONNEES')) { 61 $query = sql_select('a.titre as titre, a.voie as voie, a.complement as complement, a.boite_postale as boite_postale, a.code_postal as code_postal, a.ville as ville, a.pays as pays', 'spip_adresses as a INNER JOIN spip_adresses_liens AS al ON al.id_adresse=a.id_adresse','al.id_objet='.$id_auteur.' and al.objet=\'auteur\''); 62 while ($data = sql_fetch($query)) { 63 $voie = ($data['voie'])?$data['voie'].'<br/>':''; 64 $complement = ($data['complement'])?$data['complement'].'<br/>':''; 65 $boite_postale = ($data['boite_postale'])?$data['boite_postale'].'<br/>':''; 66 $code_postal = ($data['code_postal'])?$data['code_postal'].' ':''; 67 $ville = ($data['ville'])?$data['ville'].'<br/>':''; 68 $pays = ($data['pays'])?$data['pays'].'<br/>':''; 60 /* prepare la structure du tableau renvoye */ 61 $adresses_auteurs = array(); 62 foreach ($id_auteurs as $id_auteur) { 63 $adresses_auteurs[$id_auteur] = array(); 64 } 69 65 70 $tab_result[] = $voie.$complement.$boite_postale.$code_postal.$ville.$pays; 71 } 66 if (plugin_actif('COORDONNEES')) { 67 $id_auteurs_list = sql_in('al.id_objet', $id_auteurs); 68 $query = sql_select('al.id_objet as id_auteur, a.titre as titre, a.voie as voie, a.complement as complement, a.boite_postale as boite_postale, a.code_postal as code_postal, a.ville as ville, a.pays as pays', 'spip_adresses as a INNER JOIN spip_adresses_liens AS al ON al.id_adresse=a.id_adresse',$id_auteurs_list.' AND al.objet=\'auteur\''); 69 while ($data = sql_fetch($query)) { 70 $voie = ($data['voie'])?$data['voie'].$newline:''; 71 $complement = ($data['complement'])?$data['complement'].$newline:''; 72 $boite_postale = ($data['boite_postale'])?$data['boite_postale'].$newline:''; 73 $code_postal = ($data['code_postal'])?$data['code_postal'].$espace:''; 74 $ville = ($data['ville'])?$data['ville'].$newline:''; 75 $pays = ($data['pays'])?$data['pays']:''; 76 77 $adresses_auteurs[$data['id_auteur']][] = $voie.$complement.$boite_postale.$code_postal.$ville.$pays; 72 78 } 73 return $tab_result; 79 } 80 return $adresses_auteurs; 74 81 } 75 82 76 /* prend en argument 1 id auteur et renvoie un string html listant toutes ses adresses*/83 /* prend en argument un tableau d'id_auteurs et retourne un tableau id_auteur => code html listant toutes les adresses de l'auteur */ 77 84 function association_recuperer_adresses_string($id_auteur) 78 85 { 79 $adresses = association_recuperer_adresses($id_auteur); 80 $adresses_string = ''; 81 if (count($adresses)) { 82 foreach ($adresses as $adresse) { 83 $adresses_string .= $adresse.'<br/>'; 86 $adresses_auteurs = association_recuperer_adresses($id_auteur); 87 88 $adresses_string = array(); 89 90 /* on le transforme en tableau de strings html */ 91 foreach ($adresses_auteurs as $id_auteur => $adresses) { 92 $adresses_strings[$id_auteur] = ''; 93 if (count($adresses)) { 94 $adresses_strings[$id_auteur] = implode("<br/><br/>",$adresses); 84 95 } 85 96 } 86 return $adresses_string; 97 98 return $adresses_strings; 87 99 } 88 100 … … 141 153 } 142 154 143 function print_tel($n )155 function print_tel($n, $separateur=" ") 144 156 { 145 157 $n = preg_replace('/\D/', '', $n); 146 158 if (!intval($n)) return ''; 147 return preg_replace('/(\d\d)/', '\1 ', $n);159 return preg_replace('/(\d\d)/', '\1'.$separateur, $n); 148 160 } 149 161 ?> -
_plugins_/Association/Associaspip/lang/asso_fr.php
r48134 r48173 156 156 'adherent_libelle_mobile' => "Mobile", 157 157 'adherent_libelle_email' => "Mail", 158 'adherent_libelle_adresse' => "Adresse", 158 159 159 160 'adherent_libelle_statut_ok' => 'À jour', -
_plugins_/Association/Associaspip/pdf/extends.php
r38578 r48173 24 24 parent::Header(); 25 25 } 26 27 /* fonction ajoute pour Associaspip */ 28 /* alors que la fonction Query de base prend uniquement une query sql, celle-ci permet d'ajouter un tableau et le nom d'un champs sur lequel */ 29 /* faire la jointure avec la query existente. Cela permet d'ajouter a la query (par un array_merge qui peut ecraser des champs si ils sont */ 30 /* nommes comme ceux des tables) un tableau qui sera donc ajoute a chaque ligne de data retournee par le fetch de la query sql. */ 31 /* l'interet est de pouvoir faire des traitement et affichers de donnees traites apres une query (dans notre cas un concat fait en php et qui*/ 32 /* fonctionne donc aussi bien en mysql qu'en postgresql */ 33 34 /* le code reprend donc l'integralite du code de Query mais ajoute un merge_array sur chaque ligne de donnees retournee par le fetch */ 35 /* le parametre data doit donc etre un tableau de la forme: valeur_champ_jointure => array(champs1=>valeur, champs2=>valeur, ..) afin d'inserer */ 36 /* dans le resultat de la requete les champs champs1 et champ2 en jointure = sur le champs fourni dans l'autre parametre */ 37 function Query_extended($res, $prop=array(), $data, $champ_jointure) { 38 //Traite les propriétés 39 if(!isset($prop['width'])) 40 $prop['width']=0; 41 if($prop['width']==0) 42 $prop['width']=$this->w-$this->lMargin-$this->rMargin; 43 if(!isset($prop['align'])) 44 $prop['align']='C'; 45 if(!isset($prop['padding'])) 46 $prop['padding']=$this->cMargin; 47 $cMargin=$this->cMargin; 48 $this->cMargin=$prop['padding']; 49 if(!isset($prop['HeaderColor'])) 50 $prop['HeaderColor']=array(); 51 $this->HeaderColor=$prop['HeaderColor']; 52 if(!isset($prop['color1'])) 53 $prop['color1']=array(); 54 if(!isset($prop['color2'])) 55 $prop['color2']=array(); 56 $this->RowColors=array($prop['color1'],$prop['color2']); 57 //Calcule les largeurs des colonnes 58 $this->CalcWidths($prop['width'],$prop['align']); 59 //Imprime l'en-tête 60 $this->TableHeader(); 61 //Imprime les lignes 62 $this->SetFont('Arial','',8); 63 $this->ColorIndex=0; 64 $this->ProcessingTable=true; 65 /* partie du code modifiee pour etendre la fonction Query */ 66 while($row=sql_fetch($res)) { 67 if (is_array($data[$row[$champ_jointure]])) $row = array_merge($row,$data[$row[$champ_jointure]]); 68 $this->RowMulticell($row); 69 } 70 /* fin de partie du code modifie pour etendre la fonction Query */ 71 $this->ProcessingTable=false; 72 $this->cMargin=$cMargin; 73 $this->aCols=array(); 74 } 75 76 /* fonction qui permet d'utiliser des multicells et non cells pour avoir du texte sur plusieurs lignes dans les cases */ 77 function RowMultiCell($data){ 78 /* on commence par calculer le nombre de lignes de chaque cellule et le max */ 79 $max_nb_lignes = 1; 80 $nb_lignes = array(); 81 foreach($this->aCols as $col) { 82 $lignes = explode("\n",$data[$col['f']]); 83 $nb_lignes[$col['f']] = count($lignes); 84 foreach ($lignes as $ligne) { 85 $nb_lignes[$col['f']] += floor(($this->GetStringWidth($ligne)+4)/$col['w']); /* le +4 c'est le padding a 2 dans pdf_adherents */ 86 } 87 $max_nb_lignes = ($nb_lignes[$col['f']]>$max_nb_lignes)?$nb_lignes[$col['f']]:$max_nb_lignes; 88 } 89 90 $x = $this->TableX; 91 $y = $this->GetY(); 92 $this->SetX($x); 93 $ci=$this->ColorIndex; 94 $fill=!empty($this->RowColors[$ci]); 95 if($fill) 96 $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]); 97 $y = $this->GetY(); 98 99 foreach($this->aCols as $col) { 100 $this->SetX($x); 101 $y = $this->GetY(); 102 $this->MultiCell($col['w'],5*$max_nb_lignes/$nb_lignes[$col['f']],utf8_decode($data[$col['f']]),1,$col['a'],$fill); 103 $this->SetY($y); 104 $x += $col['w']; 105 106 107 } 108 //$this->Ln(); 109 $this->setY($y+5*$max_nb_lignes); 110 $this->ColorIndex=1-$ci; 111 } 26 112 } 27 113 ?>
Note: See TracChangeset
for help on using the changeset viewer.