/[drupal]/contributions/modules/family/tree.inc
ViewVC logotype

Contents of /contributions/modules/family/tree.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download) (as text)
Sat Dec 6 03:18:15 2008 UTC (11 months, 2 weeks ago) by pyutaros
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +0 -0 lines
File MIME type: text/x-php
#322607 by Microbe:  Ascendants and Descendants tabs appear on every node type
#326432 by Microbe:  New 6.x-1.0-beta2 instalation - warning: mysql_fetch_array()
#339263 by Microbe:  Misspelling of word "Birth" in table
#339265 by Microbe:  Marriage type fields requested, in addition to "Religious"
#331459 by Microbe:  GEDCOM data confused on import
1 <?php
2 // $Id: tree.inc,v 1.2.2.1 2008/10/09 01:55:57 pyutaros Exp $
3 function family_tree_get_info($nidtoget){
4 $data=db_fetch_array(db_query('SELECT * FROM {family_individual} WHERE nid=%d',$nidtoget));
5 $output=array();
6 $output['nid'] = $nidtoget;
7 $output['NAME'] = family_make_name($nidtoget,TRUE);
8 //if(($output['NAME'])&&$output['NAME']!='Private'){
9 $output['BIRT'] = $data['birthdate'];
10 $output['DEAT'] = $data['deathdate'];
11 //}
12 return $output;
13 }
14 function family_tree_header($nid,$length=3,$detail){
15 $treecontent ="";
16 $treecontent .="<p>This page is still under development so not all features are working properly</p>
17 <p>Please choose a person and a tree type:</p>
18 <form method=get action='#'>";
19 //$content.="<select name='per'>";
20 //$results = db_query("SELECT nid FROM {family_individual} ");
21 // while($indi = db_fetch_array($results)){
22 //if(family_check_privacy($indi['nid'])){
23 //$content .= "<option value='".$indi['nid']."' ";
24 //if($indi['nid']==$nid){
25 //$content.="SELECTED";
26 //}
27 //$content.=">".family_make_name($indi['nid'],FALSE)."</option>";
28 // }
29 // }
30 //$content.="</select><br/>";
31 $treecontent.="Generations: <select name='len'>";
32 for($i=1;$i<=4;$i++){
33 $treecontent.="<option value='".$i."' ";
34 if($i==$length){
35 $treecontent.="SELECTED";
36 }
37 $treecontent.=">".($i+1)."</option>";
38 }
39 $treecontent.="</select>
40 <br/>Level of Detail: <select name='det'>";
41 for($i=1;$i<=2;$i++){
42 $treecontent.="<option value='".$i."' ";
43 if($i==$detail){
44 $treecontent.="SELECTED";
45 }
46 $treecontent.=">".($i)."</option>";
47 }
48 $treecontent.="</select> <br/><input type='submit' value='Submit'></form>
49 ";
50 return $treecontent;
51 }
52 function family_view_tree_asc($nid = 0) {
53 $personnode=$nid;
54 $length=$_GET['len'];
55 $detail=$_GET['det'];
56 $cellwidth=120;
57 if (!isset($length)){
58 $length=3;
59 }
60 $treecontent='';
61 $treecontent.=family_tree_header($personnode,$length,$detail);
62 //Get Data
63 $treearray[0][1]=family_tree_get_info($nid);
64 for($level=1;$level<=$length;$level++){
65 for($familyno=1;$familyno<=pow(2,$level);$familyno++){
66 $childid=$treearray[($level-1)][(ceil($familyno/2))]['nid'];
67 $fam = db_fetch_array(db_query("SELECT g.* FROM {family_group} g, {family_individual} i WHERE (g.nid=i.ancestor_group AND i.nid='%d')",$childid ));
68 if ($fam) {
69 $father = $fam['parent1'];
70 if ($father) {
71 $treearray[$level][$familyno]= family_tree_get_info($father);
72 }
73 $familyno++;
74 $mother = $fam['parent2'];
75 if ($mother) {
76 $treearray[$level][$familyno]= family_tree_get_info($mother);
77 }
78 }
79 }
80 }
81 //Output data
82 $toprowcells=pow(2,$length);
83 $totalwidth=$toprowcells*$cellwidth;
84 $treecontent.='<p align=center><div style="width: 100%;overflow: auto;"></br>
85
86 <p align=center><table><tr><td width=50%></td><td> <table width='.$totalwidth.'px valign=center CELLPADDING=0 cellspacing=0>
87 ';
88 for($level=$length;$level>=0;$level--){
89 $treecontent.='<tr>
90 ';
91 for($familyno=1;$familyno<=pow(2,$level);$familyno++){
92 $treecontent.= '<td width='.($totalwidth/pow(2,$level)).'px colspan='.($toprowcells/pow(2,$level)).'><p align=center>
93 ';
94 if($level!=$length){
95 // previous method for width of image '.((100/(pow(2,$level-1)))-(2/$level)).'
96 $treecontent.='<img src="'.url(drupal_get_path('module', 'family') .'/img/asctree.png',array('absolute' => TRUE)).'" width='.($totalwidth/pow(2,$level)).'px height=20px></br>';
97 }
98 if(isset($treearray[$level][$familyno]['NAME'])){
99 $treecontent.=$treearray[$level][$familyno]['NAME'];
100 if($detail==2 && $treearray[$level][$familyno]['NAME']!='Private'){
101 $treecontent.='<br/><font size=-1>b. '.$treearray[$level][$familyno]['BIRT'].'<br/>d. '.$treearray[$level][$familyno]['DEAT'].'
102 </font>';
103 }
104 }else{
105 $treecontent.='Unknown';
106 }
107 $treecontent.='
108 </td>
109 ';
110 }
111 $treecontent.='</tr>
112 ';
113 }
114 $treecontent.='</table></td><td width=50%></td></tr></table></div>';
115 $treecontent.="</p>";
116 return $treecontent;
117 }
118 function family_view_tree_desc($nid=0){
119 $personnode=$nid;
120 $length=$_GET['len'];
121 $detail=$_GET['det'];
122 $cellwidth=120;
123 if (!isset($length)){
124 $length=3;
125 }
126 $treecontent.=family_tree_header($personnode,$length,$detail);
127 $nid=$personnode;
128 //$content.='<p>The descendancy graphs are yet to be completed; hence it probably wont work<p>';
129 //Get Data
130 $treearray[0][1]=family_tree_get_info($nid);
131 $treearray[0][0]=1;
132 for($level=1;$level<=$length;$level++){
133 $treearray[$level][0]=0;
134 $familyno=1;
135 for($parentno=1;$parentno<=$treearray[$level-1][0];$parentno++){
136 //get child data for $treearray[$level-1][$parentno]
137 if($treearray[$level-1][$parentno]['blank']==FALSE){
138 $families = db_query("SELECT * FROM {family_group} WHERE ((parent1='%d' AND parent1<>'') OR (parent2='%d' AND parent2<>''))",$treearray[$level-1][$parentno]['nid'],$treearray[$level-1][$parentno]['nid']);
139 if ($families) {
140 while($family=db_fetch_array($families)) {
141 $children=db_query("SELECT * FROM {family_individual} WHERE ancestor_group=%d",$family['nid']);
142 if($children){
143 while ($child = db_fetch_array($children)) {
144 $treearray[$level][0]++;
145 $treearray[$level][$familyno] = family_tree_get_info($child['nid']);
146 $treearray[$level][$familyno]['parent'] = $parentno;
147 $treearray[$level][$familyno]['blank']=FALSE;
148 $familyno++;
149 }
150 }else{
151 $treearray[$level][0]++;
152 $treearray[$level][$familyno]['blank']=TRUE;
153 $treearray[$level][$familyno]['parent'] = $parentno;
154 $familyno++;
155 }
156 }
157 if(!($families)){
158 $treearray[$level][0]++;
159 $treearray[$level][$familyno]['blank']=TRUE;
160 $treearray[$level][$familyno]['parent'] = $parentno;
161 $familyno++;
162 }
163 }else{
164 $treearray[$level][0]++;
165 $treearray[$level][$familyno]['blank']=TRUE;
166 $treearray[$level][$familyno]['parent'] = $parentno;
167 $familyno++;
168 }
169 }else{
170 $treearray[$level][0]++;
171 $treearray[$level][$familyno]['blank']=TRUE;
172 $treearray[$level][$familyno]['parent'] = $parentno;
173 $familyno++;
174 }
175 }
176 }
177 for($familyno=1;$familyno<=$treearray[$length][0];$familyno++){
178 $treearray[$length][$familyno]['width']=1;
179 }
180 for($level=$length;$level>=1;$level--){
181 //echo $treearray[$level][0]."</br>";
182 for($familyno=1;$familyno<=$treearray[$level][0];$familyno++){
183 $treearray[$level-1][$treearray[$level][$familyno]['parent']]['width']+=$treearray[$level][$familyno]['width'];
184
185 }
186 }
187
188 //Output Data
189 $toprowcells=$treearray[$length][0];
190 $totalwidth=$toprowcells*$cellwidth;
191 $treecontent.='<p align=center><div style="width: 100%;overflow: auto;">
192
193 <p align=center><table width='.$totalwidth.'><tr><td width=50%><P>&nbsp;</td><td> <table width='.$totalwidth.'px valign=center CELLPADDING=0 cellspacing=0 border=0>
194 ';
195 for($level=0;$level<=$length;$level++){
196 $treecontent.="<tr>";
197 for($familyno=1;$familyno<=$treearray[$level][0];$familyno++){
198 //
199
200 $treecontent.="<td width=".($cellwidth*$treearray[$level][$familyno]['width'])."px height=10px cellpadding=0 CELLSPACING=0 border=0 colspan=".$treearray[$level][$familyno]['width'];
201
202 $treecontent.=">
203 <p align=center>
204 ";
205 if($treearray[$level][$familyno]['blank']==FALSE&&$level!=0){
206 if(($treearray[$level][$familyno-1]['parent'])&&$treearray[$level][$familyno-1]['parent']==$treearray[$level][$familyno+1]['parent']){
207 $treecontent.=" <img src='".url(drupal_get_path('module', 'family')."/img/center.png", array('absolute' => TRUE))."' width=100% height=10px padding=0 margin=0></br>";
208 }elseif($treearray[$level][$familyno]['parent']==$treearray[$level][$familyno-1]['parent']){
209 //$treecontent.=" background='../".drupal_get_path('module', 'family')."/img/right.png' STYLE='background-width: 100%;background-repeat: no-repeat;'";
210 $treecontent.=" <img src='".url(drupal_get_path('module', 'family')."/img/right.png", array('absolute' => TRUE))."' width=100% height=10px padding=0 margin=0></br>";
211 }elseif($treearray[$level][$familyno]['parent']==$treearray[$level][$familyno+1]['parent']){
212 //$treecontent.=" background='../".drupal_get_path('module', 'family')."/img/left.png' STYLE='background-width: 100%;background-repeat: no-repeat;'";
213 $treecontent.=" <img src='".url(drupal_get_path('module', 'family')."/img/left.png", array('absolute' => TRUE))."' width=100% height=10px padding=0 margin=0></br>";
214 }else{
215
216 $treecontent.=" <img src='".url(drupal_get_path('module', 'family')."/img/single.png", array('absolute' => TRUE))."' width=100% height=10px padding=0 margin=0></br>";
217 }
218 }
219 $treecontent.="</p></td>";
220 }
221 $treecontent.="</tr>
222 <tr>";
223 for($familyno=1;$familyno<=$treearray[$level][0];$familyno++){
224 //
225
226 $treecontent.="<td width=".($cellwidth*$treearray[$level][$familyno]['width'])."px colspan=".$treearray[$level][$familyno]['width'];
227
228 $treecontent.=" cellpadding=0 CELLSPACING=0 border=0>
229 <p align=center>
230 ";
231 //$treecontent.='<img src="../'.drupal_get_path('module', 'family') .'/white.jpg" width=100% height=1px>';
232 if($treearray[$level][$familyno]['blank']==FALSE){
233
234 $treecontent.=$treearray[$level][$familyno]['NAME'];
235 if($detail==2&&$treearray[$level][$familyno]['NAME']!='Private'){
236 $treecontent.='<br/><font size=-1>b. '.$treearray[$level][$familyno]['BIRT'].'<br/>d. '.$treearray[$level][$familyno]['DEAT'].'
237 </font>
238 ';
239 }
240 }else{
241 $treecontent.= "&nbsp;";
242 }
243 $treecontent.="</p></td>
244 ";
245 }
246 $treecontent.="</tr>
247 ";
248 }
249 $treecontent.="</table></td><td width=50%><p>&nbsp;</td></tr></table></div>
250 ";
251 return $treecontent;
252 }

  ViewVC Help
Powered by ViewVC 1.1.2