1: <?php
2:
3:
4: 5: 6: 7: 8:
9:
10: namespace app\views\search;
11:
12: require_once getcwd().'/app/views/search/Fylker.php';
13: require_once getcwd().'/app/views/search/HTMLWrapper.php';
14: require_once getcwd().'/app/views/search/Format.php';
15: require_once getcwd().'/app/views/common/ProjectUrl.php';
16:
17: class SearchResultsPage
18: {
19:
20:
21:
22:
23:
24:
25: protected $kb = "kb";
26: protected $ft = "ft";
27: protected $em = "em";
28:
29: protected $header = array("pfid"=>"PFID",
30:
31: "navn" =>"Navn",
32: "kjonn"=>"Kjønn", "rolle"=>"Rolle", "fodselsaar"=>"Fødselsår",
33: "fodested"=>"Fødested", "bosted"=>"Bosted", "stilling_stand"=>"Stilling og stand", "hendelsesdato"=>"Hendelsesdato",
34: "kildetype"=>"Kilde", "kildekategori"=>"Kildekategori");
35: protected $avisheader = array("pfid", "navn",
36:
37: "kjonn", "rolle", "year_birth", "fodested", "sted", "stilling", "dato", "avis_name", "hendelse");
38: protected $fieldsmapping = array("hendelse"=>array("almen"=>"hendelser av allmenn interesse", "bryllup"=>"ekteskap", "dodsfall"=>"dødsannonser", "jubileer"=>"jubileer"));
39: protected $hendelseMapping = array("almen"=>"hendelser av allmenn interesse", "bryllup"=>"ekteskap", "dodsfall"=>"dode", "jubileer"=>"jubileer");
40:
41: private $fylker;
42: private $wrapper;
43: public function __construct() {
44: $this->fylker = new Fylker();
45: $this->wrapper = new HTMLWrapper();
46: $this->url = new ProjectUrl();
47: }
48:
49: private function getPfidDALink($entry)
50: {
51: $res = '';
52: $listetype = '';
53: $pfid = $entry->pfid;
54: $kildekat = $entry->kildekategori;
55: if ($kildekat == $this->kb)
56: $listetype = '/'.$entry->listetype;
57:
58:
59: $url = $this->url->daUrl.'/'.$kildekat.$listetype.'/person/'.$pfid;
60:
61: if ($kildekat == $this->em)
62: {
63: $res = $pfid;
64: }
65: else
66: {
67: $res = '<a href="'.$url.'" target="_blank">'.$pfid.'</a>';
68: }
69: return $res;
70: }
71:
72: private function getKildeLink($entry)
73: {
74: $res = '';
75: $kldtype = '';
76: $kommune = '';
77: $period = '';
78: if (!empty($entry->kildetype))
79: $kldtype = $entry->kildetype;
80: if (!empty($entry->{"kommuner_1947"}))
81: $kommune =", ".$this->fylker->getKommuneNavn($entry->{"kommuner_1947"});
82: if (!(empty($entry->{"startaar"}) || empty($entry->{"sluttaar"})))
83: $period = ", ".$entry->{"startaar"}."-".$entry->{"sluttaar"};
84: $url = $this->url->daUrl.'/kilde/'.$entry->kildeid;
85: $res= '<a href="'.$url.'" target="_blank">'.$kldtype.$kommune.$period.'</a>';
86: return $res;
87: }
88:
89: private function getPersonLinkAvis($entry)
90: {
91:
92: $res = '';
93: $text = '';
94: $url = $this->url->avisUrl;
95: $format = new Format();
96: if (property_exists ($entry, "pfid"))
97: {
98: $text = $entry->pfid;
99: }
100: if (empty($text))
101: return '';
102: if (property_exists ($entry, "dato"))
103: {
104: $url .= "startdate=".$format->formatDateToWebPageFormat($entry->dato)."&stopdate=";
105: }
106: else
107: {
108: return $text;
109: }
110: if (property_exists ($entry, "avis_id"))
111: {
112: $url .= "&avis=".$entry->avis_id;
113: }
114: else
115: {
116: return $text;
117: }
118:
119:
120: if (array_key_exists ($entry->hendelse,$this->hendelseMapping))
121: {
122: $url .= "&hendelse=".$this->hendelseMapping[$entry->hendelse];
123: }
124: else
125: {
126: return $text;
127: }
128: $url .= "&date=Begrens+s%C3%B8ket";
129: $res = '<a href="'.$url.'" target="_blank">'.$text.'</a>';
130: return $res;
131: }
132:
133: private function getKildeLinkAvis($entry)
134: {
135: $res = '';
136: $text = '';
137: $url = $this->url->avisUrl;
138: if (property_exists ($entry, "avis_name"))
139: {
140: $text= $entry->avis_name;
141: }
142: if (empty($text))
143: return '';
144: if (property_exists ($entry, "avis_id"))
145: {
146: $url .= "avis=".$entry->avis_id;
147: }
148: else
149: {
150: return $text;
151: }
152: if (array_key_exists ($entry->hendelse,$this->hendelseMapping))
153: {
154: $url .= "&hendelse=".$this->hendelseMapping[$entry->hendelse];
155: }
156: else
157: {
158: return $text;
159: }
160: $res = '<a href="'.$url.'" target="_blank">'.$text.'</a>';
161: return $res;
162: }
163:
164: private function getName($entry, $type)
165: {
166: $res = '';
167: switch($type)
168: {
169: case "daid":
170:
171: if (!empty($entry->fornavn))
172: $res = $entry->fornavn.' ';
173: if (!empty($entry->etternavn))
174: $res .= $entry->etternavn;
175: break;
176: case "avisid":
177:
178: if (!empty($entry->navn))
179: $res = $entry->navn.' ';
180: if (!empty($entry->etternavn))
181: $res .= $entry->etternavn;
182:
183: break;
184: case "":
185:
186: break;
187: }
188: $res = trim($res);
189: return $res;
190: }
191:
192: private function getNavnLink($entry, $type)
193: {
194: $res = '';
195: $text = '';
196: $url = $this->url->projecturl.'person/'.$type.'/';
197: $field = '';
198: switch($type)
199: {
200: case "daid":
201: $field = 'pfid';
202: break;
203: case "avisid":
204: $field = 'avispersonid';
205: break;
206: case "":
207:
208: break;
209: }
210:
211: $text = $this->getName($entry, $type);
212: if (!empty($entry->{$field}))
213: $url .= $entry->{$field};
214: else
215: return $text;
216: $res = '<a href="'.$url.'" target="_blank">'.$text.'</a>';
217: return $res;
218: }
219:
220: public function getPage($inputda, $inputavis)
221: {
222: $table = array();
223: if ($inputda == NULL && $inputavis == NULL)
224: {
225: $output = '<p> null treff </p>';
226: }
227: else
228: {
229: $headerline = array();
230: foreach ($this->header as $key=>$value)
231: {
232: $headerline[] = $value;
233: }
234: $table[] = $headerline;
235: foreach ($inputda as $one)
236: {
237: $line = array();
238: foreach($this->header as $key=>$value)
239: {
240: if ($key == "pfid")
241: {
242: $line[] = $this->getPfidDALink($one);
243: }
244: else if ($key == "kildetype")
245: {
246: $line[] = $this->getKildeLink($one);
247: }
248: else if ($key == "navn")
249: {
250: $line[] = $this->getNavnLink($one, 'daid');
251: }
252: else
253: {
254: $line[]= $one->{$key};
255: }
256: }
257: $table[] = $line;
258: }
259: foreach ($inputavis as $one)
260: {
261: $line = array();
262: foreach($this->avisheader as $cell)
263: {
264: if (property_exists ($one,$cell))
265: {
266: if ($cell == "avis_name")
267: {
268: $line[] = $this->getKildeLinkAvis($one);
269: }
270: else if ($cell == "pfid")
271: {
272: $line[] = $this->getPersonLinkAvis($one);
273: }
274: else if ($cell == "navn")
275: {
276: $line[] = $this->getNavnLink($one, 'avisid');
277: }
278: else if ( array_key_exists($cell, $this->fieldsmapping))
279: {
280: if (array_key_exists ($one->{$cell}, $this->fieldsmapping[$cell]))
281: {
282: $line[]= $this->fieldsmapping[$cell][$one->{$cell}];
283: }
284:
285: else
286: {
287: if ($one->{$cell} == "0")
288: $line[]= '';
289: else
290: $line[]= $one->{$cell};
291: }
292: }
293: else
294: {
295: if ($one->{$cell} == "0")
296: $line[]= '';
297: else
298: $line[]= $one->{$cell};
299: }
300: }
301: else
302: {
303: $line[]= '';
304: }
305: }
306: $table[] = $line;
307: }
308: $output = $this->wrapper->formatTable($table);
309: }
310:
311: return $output;
312: }
313: }