source: spip-zone/_plugins_/inc/gedcom_fonctions_export.php @ 31412

Last change on this file since 31412 was 31412, checked in by fdm@…, 12 years ago

Mise à jour spip 2.0

File size: 8.2 KB
Line 
1<?php
2/*******************GEDCOM*******************************/
3function genespip_TraitementDate2($mois)
4{
5 $split = split(' ',$mois);
6
7 $mois_eng = Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
8 $mois_fr = Array('01','02','03','04','05','06','07','08','09','10','11','12');
9
10 /* Remplacement */
11 $mois = str_replace($mois_fr, $mois_eng, $mois);
12
13 return ($mois);
14}
15
16function genespip_Traitementmot2($mot)
17{
18 $split = split(' ',$mot);
19
20 $mots_eng = Array('BEF','AFT','ABT','EST',NULL);
21 $mots_fr = Array('<','>','~','~','=');
22
23 /* Remplacement */
24 $mot = str_replace($mots_fr, $mots_eng, $mot);
25
26 return ($mot);
27}
28
29//Conversion de date français Gedcom
30function genespip_dategedfr($precision,$date) {
31if ($precision!=NULL or $precision!="="){$precision=genespip_Traitementmot2($precision)." ";}else{$precision=NULL;}
32    $split = split('-',$date); 
33    if ($split[0]=="0000"){$annee=NULL;}else{$annee = $split[0];}
34    if ($split[1]=="00"){$mois=NULL;}else{$mois = $split[1]." ";}
35    if ($split[2]=="00"){$jour=NULL;}else{$jour = $split[2]." ";}
36return $precision.$jour.genespip_TraitementDate2($mois).$annee;
37}
38
39function genespip_evt($type_evt,$id_individu) {
40  $result_evt = spip_query("SELECT * FROM spip_genespip_evenements,spip_genespip_type_evenements where id_individu=$id_individu and spip_genespip_evenements.id_type_evenement=spip_genespip_type_evenements.id_type_evenement and spip_genespip_evenements.id_type_evenement=$type_evt");
41  while ($evt = spip_fetch_array($result_evt)) {
42$indi .= "1 ".$evt['type_evenement']."\r\n";
43$indi .= "2 DATE ".genespip_dategedfr($evt['precision_date'],$evt['date_evenement'])."\r\n";
44   if ($evt['id_lieu']!=1){
45    $result_lieu = spip_query("SELECT * FROM spip_genespip_lieux where id_lieu=".$evt['id_lieu']);
46    while ($lieu = spip_fetch_array($result_lieu)) {
47$indi .= "2 PLAC ".utf8_decode($lieu['ville']).",".$lieu['code_departement'].",".utf8_decode($lieu['departement']).",".utf8_decode($lieu['region']).",".$lieu['pays']."\r\n";
48    }
49   }
50  }
51return $indi;
52}
53//creation table famille temp
54function genespip_famille() {
55$sql = 'CREATE TABLE `spip_genespip_famtempo` ('
56        . ' `id_fam` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
57        . ' `fam` TEXT NOT NULL, '
58        . ' `type` TEXT NOT NULL, '
59        . ' `id_individu` INT NOT NULL, '
60        . ' `date_evt` TEXT NOT NULL, '
61        . ' `place_evt` TEXT NOT NULL '
62        . ' )';
63$sql = spip_query($sql) or die ("Requête creation table invalide<br />");
64}
65function genespip_famille_remplir() {
66//entrees HUSB et WIFE
67  //selection des hommes dans la bd
68  $result_individu = spip_query("SELECT * FROM spip_genespip_individu where poubelle!=1 and sexe=0");
69     while ($I = spip_fetch_array($result_individu)) {
70        $result_evt = spip_query("SELECT * FROM spip_genespip_evenements where id_type_evenement=3 and id_individu=".$I['id_individu']);
71           while ($evt = spip_fetch_array($result_evt)) {
72            $date_evt = "2 DATE ".genespip_dategedfr($evt['precision_date'],$evt['date_evenement']);
73             if ($evt['id_lieu']!=1){
74              $result_lieu = spip_query("SELECT * FROM spip_genespip_lieux where id_lieu=".$evt['id_lieu']);
75              while ($lieu = spip_fetch_array($result_lieu)) {
76               $place_evt = "2 PLAC ".utf8_decode($lieu['ville']).",".$lieu['code_departement'].",".utf8_decode($lieu['departement']).",".utf8_decode($lieu['region']).",".$lieu['pays'];
77              }
78             }
79            $num_fam=$evt['id_individu']."-".$evt['id_epoux'];
80            $insert=spip_query("INSERT INTO spip_genespip_famtempo (fam, type, id_individu) VALUES ('".$num_fam."', 'HUSB', ".$evt['id_individu'].")");
81            $insert=spip_query("INSERT INTO spip_genespip_famtempo (fam, type, id_individu, date_evt, place_evt) VALUES ('".$num_fam."', 'WIFE', ".$evt['id_epoux']." ,'".$date_evt."', '".$place_evt."')");
82            $date_evt=NULL;
83            $place_evt=NULL;
84            }
85     }
86//entrees CHIL
87  $result_individu = spip_query("SELECT * FROM spip_genespip_individu where poubelle!=1");
88     while ($I = spip_fetch_array($result_individu)) {
89   // a pere et mere > num fam = pere-mere
90      if ($I['pere']!=0 and $I['mere']!=0){
91       $insert=spip_query("INSERT INTO spip_genespip_famtempo (fam, type, id_individu) VALUES ('".$I['pere']."-".$I['mere']."', 'CHIL', ".$I['id_individu'].")");
92      }
93   // a pere uniquement > num fam = pere
94      elseif ($I['pere']!=0 and $I['pere']==0){
95       $insert=spip_query("INSERT INTO spip_genespip_famtempo (fam, type, id_individu) VALUES (".$I['pere'].", 'CHIL', ".$I['id_individu'].")");
96      }
97   // a mere uniquement > num fam = mere
98      elseif ($I['pere']!=0 and $I['pere']==0){
99       $insert=spip_query("INSERT INTO spip_genespip_famtempo (fam, type, id_individu) VALUES (".$I['mere'].", 'CHIL', ".$I['id_individu'].")");
100      }
101     }
102}
103
104function genespip_gedcom_export() {
105set_time_limit(0);
106genespip_famille();
107genespip_famille_remplir();
108$chemin = _DIR_PLUGIN_GENESPIP."gedcom/";
109$fic = "gedcom-".date("Y-m-d-H-i-s").".ged";
110$handle = fopen($chemin.$fic, "x+");
111echo "<a href='".$chemin.$fic."' target='_blank'>$fic</a><br />";
112//Entete GedCOM GeneSPIP
113$entete .="0 HEAD\r\n";
114$entete .="1 SOUR GENESPIP\r\n";
115$entete .="2 VERS 1\r\n";
116$entete .="2 NAME GENESPIP\r\n";
117$entete .="2 CORP CR\r\n";
118$entete .="3 ADDR www.genespip.fr\r\n";
119$entete .="1 DATE ".date("d-m-Y")."\r\n";
120$entete .="2 TIME ".date("H:i:s")."\r\n";
121$entete .="1 GEDC\r\n";
122$entete .="2 VERS 5.5\r\n";
123$entete .="2 FORM LINEAGE-LINKED\r\n";
124$entete .="1 CHAR ANSEL\r\n";
125$entete .="1 PLAC\r\n";
126$entete .="2 FORM town , Area code , County , Region , Country\r\n";
127fwrite($handle, $entete);
128//INDIVIDU
129$pointeurnote=0;
130  $result_individu = spip_query("SELECT * FROM spip_genespip_individu where poubelle!=1");
131  while ($I = spip_fetch_array($result_individu)) {
132   if ($I['sexe']==1){$sexe="F";}else{$sexe="M";}
133    $indi .= "0 @I".$I['id_individu']."@ INDI\r\n";
134    $indi .= "1 NAME ".utf8_decode($I['prenom'])."/".$I['nom']."/\r\n";
135    $indi .= "2 GIVN ".utf8_decode($I['prenom'])."\r\n";
136    $indi .= "2 SURN ".utf8_decode($I['nom'])."\r\n";
137    $indi .= "1 SEX ".$sexe."\r\n";
138    $indi .= genespip_evt(1,$I['id_individu']);
139    $indi .= genespip_evt(2,$I['id_individu']);
140     if ($I['metier']!=NULL){$indi .= "1 OCCU ".utf8_decode($I['metier'])."\r\n";}
141     if ($I['adresse']!=NULL){$indi .= "1 RESI ".utf8_decode($I['adresse'])."\r\n";}
142//déclaration famille des parents
143    $result_fams=spip_query("SELECT * FROM spip_genespip_famtempo WHERE id_individu=".$I['id_individu']." and type='CHIL'");
144     while ($FAMS = spip_fetch_array($result_fams)) {
145      $indi .= "1 FAMC @F".$FAMS['fam']."@\r\n";
146     }
147//déclaration famille du couple
148    $result_fams=spip_query("SELECT * FROM spip_genespip_famtempo WHERE id_individu=".$I['id_individu']." and type='HUSB' or id_individu=".$I['id_individu']." and type='WIFE'");
149     while ($FAMS = spip_fetch_array($result_fams)) {
150      $indi .= "1 FAMS @F".$FAMS['fam']."@\r\n";
151     }
152    if ($I['note']!=NULL){
153     $pointeurnote=$pointeurnote+1;
154     $indi .= "1 NOTE @NI".$pointeurnote."@\r\n";
155     $indi .= "0 @NI".$pointeurnote."@ NOTE\r\n";
156$note = str_replace("\n", "1 CONT ", $I['note']);
157     $indi .= "1 CONT ".utf8_decode($note)."\r\n";
158    }
159   fwrite($handle, $indi);
160   $indi=NULL;
161  }
162
163//FAMILLE
164  $result_fams=spip_query("SELECT fam FROM spip_genespip_famtempo group by fam");
165  while ($FAMS = spip_fetch_array($result_fams)) {
166   $fam .= "0 @F".$FAMS['fam']."@ FAM\r\n";
167   $result_membre_fams=spip_query("SELECT * FROM spip_genespip_famtempo where fam='".$FAMS['fam']."'");
168    while ($FAMS_M = spip_fetch_array($result_membre_fams)) {
169     $fam .= "1 ".$FAMS_M['type']." @I".$FAMS_M['id_individu']."@\r\n";
170      if ($FAMS_M['type']=="WIFE"){
171      $fam .= "1 MARR\r\n";
172      if ($FAMS_M['date_evt']!=NULL){$fam .= $FAMS_M['date_evt']."\r\n";}
173      if ($FAMS_M['place_evt']!=NULL){$fam .= $FAMS_M['place_evt']."\r\n";}
174      }
175    }
176  fwrite($handle, $fam);
177  $fam=NULL;
178  }
179fwrite($handle, "0 TRLR");
180fclose($handle);
181echo "Export termin&eacute;<br />";
182//Suppression table famtempo
183$supptempo=spip_query("DROP TABLE spip_genespip_famtempo");
184}
185?>
Note: See TracBrowser for help on using the repository browser.