1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13: namespace app\controllers;
14: use \mako\database\ConnectionManager;
15: use \mako\database\Connection;
16: use \mako\application\Application;
17: use \PDO;
18:
19: class SearchAvisData
20: {
21: protected $hendelseMapping = array(
22: "avdo" => "dodsfall",
23: "avju" => "jubileer",
24: "avekt" => "bryllup",
25: "avalmen" => "almen"
26: );
27:
28: protected $privateFieldsMapping = array(
29: "name" => "navn",
30: "surname" => "etternavn",
31: "kjonn" =>"kjonn",
32:
33:
34:
35: "place" =>"sted"
36:
37:
38: );
39:
40:
41: public function __construct()
42: {
43:
44:
45:
46: }
47:
48:
49:
50:
51: private function prepareParamsForSearch($searchparams)
52: {
53: $res = '';
54: $count = 0;
55: 56: 57: 58: 59: 60: 61: 62: 63:
64:
65: foreach ($this->privateFieldsMapping as $key=>$value)
66: {
67: if (array_key_exists ($key,$searchparams) && !empty($searchparams[$key]))
68: {
69:
70: if ($count > 0)
71: $res .= ' AND ';
72: else
73: $count = 1;
74: $res .= "avis_personer.".$value." = '".$searchparams[$key]."'";
75: }
76: }
77: return $res;
78: }
79:
80: private function makeSearchSubstringForHendelser($params)
81: {
82: $res = '';
83: $count = 0;
84: if (array_key_exists ('avishendelser',$params) && count($params['avishendelser'] > 0))
85: {
86: foreach ($params['avishendelser'] as $p)
87: {
88: if ($count > 0)
89: $res .= ' OR ';
90: else
91: {
92: $count = 1;
93: }
94: $res .= "avis_annonser.hendelse = '".$this->hendelseMapping[$p]."'";
95: }
96:
97: }
98: return $res;
99: }
100:
101: public function getFamilyById($id)
102: {
103: $family = NULL;
104: $pdo = $this->getPDO();
105: if ($pdo != NULL)
106: {
107: $queryperson = "SELECT * FROM avis_familie_relasjoner WHERE person1_id='".$id."' OR person2_id='".$id."'";
108: $sth = $pdo->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
109: $sth->execute(array());
110: $links = $sth->fetchAll();
111: if ($links != NULL && count($links) > 0)
112: {
113: $partner= '';
114: if ($links[0]->person1_id == $id)
115: $partner= $links[0]->person2_id;
116: else if ($links[0]->person2_id == $id)
117: $partner= $links[0]->person1_id;
118: else
119: return NULL;
120: $queryperson = "SELECT * FROM avis_personer WHERE autoid='".$partner."'";
121: $sth = $pdo->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
122: $sth->execute(array());
123: $family = $sth->fetchAll();
124: if ($family != NULL && count($family) > 0)
125: return $family[0];
126: }
127: }
128: return $family;
129: }
130:
131: private function formatDateToWebPageFormat($date)
132: {
133: $res = "";
134: $parts = explode ("-",$date);
135: if (count ($parts) == 3)
136: {
137: $res = $parts[2].'.'.$parts[1].'.'.$parts[0];
138: }
139: return $res;
140: }
141:
142: public function getPersonByPFid($pfid)
143: {
144: $person = NULL;
145: $pdo = $this->getPDO();
146: if ($pdo != NULL)
147: {
148: $queryperson = "SELECT * FROM avis_personer WHERE avispersonid='".$pfid."'";
149: $sth = $pdo->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
150: $sth->execute(array());
151: $person = $sth->fetchAll();
152: if ($person != NULL && count($person) > 0)
153: $person = $person[0];
154:
155: }
156: if ($person != NULL)
157: {
158: if (property_exists($person, "annonse_id"))
159: {
160:
161: $autoid = $person->annonse_id;
162: $queryperson = "SELECT * FROM avis_annonser WHERE autoid='".$autoid."'";
163: $sth = $pdo->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
164: $sth->execute(array());
165: $annonse = $sth->fetchAll();
166: if ($annonse != NULL && count($annonse) > 0)
167: {
168: $annonse = $annonse[0];
169: $person->hendelse = $annonse->hendelse;
170: $person->hendelsedato = $this->formatDateToWebPageFormat($annonse->dato);
171: $person->annonselenke = $annonse->lenke;
172: $person->avisid = $annonse->avis_id;
173: $queryperson = "SELECT * FROM aviser WHERE autoid='".$person->avisid."'";
174: $sth = $pdo->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
175: $sth->execute(array());
176: $avis = $sth->fetchAll();
177: if ($avis != NULL && count($avis) > 0)
178: {
179: $person->avis = $avis[0]->avis_name;
180: }
181: }
182: }
183: }
184:
185: return $person;
186: }
187:
188: private function getPDO()
189: {
190: $manager = Application::instance()->getContainer()->get('database');
191: $connection = $manager->connection('avis');
192: return $connection->getPDO();
193: }
194:
195: public function searchPersons($searchparams)
196: {
197: $persons = array();
198: if ((array_key_exists ('avishendelser', $searchparams) && !empty($searchparams['avishendelser'])) || !array_key_exists ('hendelser', $searchparams))
199: {
200: $manager = Application::instance()->getContainer()->get('database');
201: $connection = $manager->connection('avis');
202:
203: $dbh = $connection->getPDO();
204: $private = $this->prepareParamsForSearch($searchparams);
205: $hendelser = $this->makeSearchSubstringForHendelser($searchparams);
206: if (!empty($private) && !empty($hendelser))
207: {
208: $hendelser = ' AND ( '.$hendelser.') AND ';
209: }
210: else if (!empty($hendelser))
211: {
212: $hendelser = ' ( '.$hendelser.') AND ';
213: }
214: else if (!empty($private))
215: {
216: $private .= ' AND ';
217: }
218: $queryperson = "SELECT * FROM avis_personer, avis_annonser, aviser WHERE ".$private.$hendelser." avis_personer.annonse_id = avis_annonser.autoid AND avis_annonser.avis_id = aviser.autoid" ;
219:
220: $sth = $dbh->prepare($queryperson, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
221: $sth->execute(array());
222: $persons = $sth->fetchAll();
223: }
224: return $persons;
225:
226: }
227: }
228: