|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace App\Models; |
|
4
|
|
|
|
|
5
|
|
|
use Nette\Database\Context; |
|
6
|
|
|
|
|
7
|
|
|
/** |
|
8
|
|
|
* Program model |
|
9
|
|
|
* |
|
10
|
|
|
* class for handling programs |
|
11
|
|
|
* |
|
12
|
|
|
* @created 2012-10-01 |
|
13
|
|
|
* @author Tomas Litera <[email protected]> |
|
14
|
|
|
*/ |
|
15
|
|
|
class ProgramModel extends BaseModel |
|
16
|
|
|
{ |
|
17
|
|
|
|
|
18
|
|
|
/** |
|
19
|
|
|
* @var array |
|
20
|
|
|
*/ |
|
21
|
|
|
public $columns = [ |
|
22
|
|
|
'guid', |
|
23
|
|
|
'name', |
|
24
|
|
|
'block', |
|
25
|
|
|
'display_in_reg', |
|
26
|
|
|
'description', |
|
27
|
|
|
'tutor', |
|
28
|
|
|
'email', |
|
29
|
|
|
'category', |
|
30
|
|
|
'material', |
|
31
|
|
|
'capacity', |
|
32
|
|
|
]; |
|
33
|
|
|
|
|
34
|
|
|
/** |
|
35
|
|
|
* Array of form names |
|
36
|
|
|
* |
|
37
|
|
|
* @var array form_names[] |
|
38
|
|
|
*/ |
|
39
|
|
|
public $formNames = array(); |
|
40
|
|
|
|
|
41
|
|
|
protected $table = 'kk_programs'; |
|
42
|
|
|
|
|
43
|
|
|
private static $connection; |
|
44
|
|
|
|
|
45
|
|
|
/** Constructor */ |
|
46
|
|
|
public function __construct(Context $database) |
|
47
|
|
|
{ |
|
48
|
|
|
$this->formNames = array('guid', "name", "description", "material", "tutor", "email", "capacity", "display_in_reg", "block", "category"); |
|
|
|
|
|
|
49
|
|
|
$this->setDatabase($database); |
|
50
|
|
|
self::$connection = $this->getDatabase(); |
|
51
|
|
|
} |
|
52
|
|
|
|
|
53
|
|
|
/** |
|
54
|
|
|
* Get programs |
|
55
|
|
|
* |
|
56
|
|
|
* @param int $block_id ID of block |
|
|
|
|
|
|
57
|
|
|
* @param int $visitor_id ID of visitor |
|
|
|
|
|
|
58
|
|
|
* @return string html |
|
59
|
|
|
*/ |
|
60
|
|
|
public function getPrograms($blockId, $vid) |
|
61
|
|
|
{ |
|
62
|
|
|
$blocks = $this->database |
|
63
|
|
|
->table($this->getTable()) |
|
64
|
|
|
->where('block ? AND deleted ?', $blockId, '0') |
|
65
|
|
|
->limit(10) |
|
66
|
|
|
->fetchAll(); |
|
67
|
|
|
|
|
68
|
|
|
if(!$blocks){ |
|
|
|
|
|
|
69
|
|
|
$html = ""; |
|
|
|
|
|
|
70
|
|
|
} else { |
|
71
|
|
|
/* |
|
|
|
|
|
|
72
|
|
|
$progSql = "SELECT progs.name AS prog_name |
|
73
|
|
|
FROM kk_programs AS progs |
|
74
|
|
|
LEFT JOIN `kk_visitor-program` AS visprog ON progs.id = visprog.program |
|
75
|
|
|
LEFT JOIN kk_visitors AS vis ON vis.id = visprog.visitor |
|
76
|
|
|
WHERE vis.id = '".$id."'"; |
|
77
|
|
|
*/ |
|
78
|
|
|
|
|
79
|
|
|
$html = "<div>\n"; |
|
80
|
|
|
|
|
81
|
|
|
$checked_flag = false; |
|
82
|
|
|
$html_input = ""; |
|
|
|
|
|
|
83
|
|
|
foreach($blocks as $data){ |
|
84
|
|
|
// full program capacity with visitors |
|
85
|
|
|
$fullProgramData = $this->database |
|
86
|
|
|
->query('SELECT COUNT(visitor) AS visitors FROM `kk_visitor-program` AS visprog |
|
87
|
|
|
LEFT JOIN kk_visitors AS vis ON vis.id = visprog.visitor |
|
88
|
|
|
WHERE program = ? AND vis.deleted = ?', |
|
89
|
|
|
$data['id'], '0')->fetch(); |
|
90
|
|
|
|
|
91
|
|
|
// if the program is checked |
|
92
|
|
|
$program = $this->database |
|
93
|
|
|
->table('kk_visitor-program') |
|
94
|
|
|
->where('program ? AND visitor ?', $data['id'], $vid) |
|
95
|
|
|
->fetch(); |
|
96
|
|
|
|
|
97
|
|
|
if($program){ |
|
98
|
|
|
$checked = "checked='checked'"; |
|
99
|
|
|
$checked_flag = true; |
|
100
|
|
|
} else { |
|
101
|
|
|
$checked = ""; |
|
|
|
|
|
|
102
|
|
|
} |
|
103
|
|
|
// if the capacity is full |
|
104
|
|
|
if($fullProgramData['visitors'] >= $data['capacity']){ |
|
105
|
|
|
$html_input .= "<input id='".$data['id'].$blockId."' ".$checked." disabled type='radio' name='blck_".$blockId."' value='".$data['id']."' />\n"; |
|
106
|
|
|
$fullProgramInfo = " (NELZE ZAPSAT - kapacita programu je již naplněna!)"; |
|
|
|
|
|
|
107
|
|
|
} else { |
|
108
|
|
|
$html_input .= "<input id='".$data['id'].$blockId."' ".$checked." type='radio' name='blck_".$blockId."' value='".$data['id']."' /> \n"; |
|
109
|
|
|
$fullProgramInfo = ""; |
|
|
|
|
|
|
110
|
|
|
} |
|
111
|
|
|
$html_input .= '<label for="'.$data['id'].$blockId.'">'.$data['name'].'</label>'; |
|
112
|
|
|
$html_input .= $fullProgramInfo; |
|
113
|
|
|
$html_input .= "<br />\n"; |
|
114
|
|
|
} |
|
115
|
|
|
|
|
116
|
|
|
// pokud uz jednou bylo zaskrtnuto, nezaskrtavam znovu |
|
117
|
|
|
if(!$checked_flag) $checked = "checked='checked'"; |
|
118
|
|
|
else $checked = ""; |
|
|
|
|
|
|
119
|
|
|
|
|
120
|
|
|
$html .= "<input ".$checked." type='radio' name='blck_".$blockId."' value='0' /> Nebudu přítomen <br />\n"; |
|
|
|
|
|
|
121
|
|
|
$html .= $html_input; |
|
122
|
|
|
|
|
123
|
|
|
$html .= "</div>\n"; |
|
124
|
|
|
} |
|
125
|
|
|
|
|
126
|
|
|
return $html; |
|
127
|
|
|
} |
|
128
|
|
|
|
|
129
|
|
|
public function getExportPrograms($blockId) |
|
130
|
|
|
{ |
|
131
|
|
|
$exportPrograms = $this->database |
|
132
|
|
|
->table($this->getTable()) |
|
133
|
|
|
->where('block ? AND deleted ?', $blockId, '0') |
|
134
|
|
|
->limit(10) |
|
135
|
|
|
->fetchAll(); |
|
136
|
|
|
|
|
137
|
|
|
if(!$exportPrograms) { |
|
|
|
|
|
|
138
|
|
|
$html = ""; |
|
|
|
|
|
|
139
|
|
|
} else { |
|
140
|
|
|
$html = "<table>\n"; |
|
141
|
|
|
foreach($exportPrograms as $data){ |
|
142
|
|
|
$html .= "<tr>"; |
|
|
|
|
|
|
143
|
|
|
//// resim kapacitu programu a jeho naplneni navstevniky |
|
144
|
|
|
$fullProgramData = $this->database |
|
145
|
|
|
->query('SELECT COUNT(visitor) AS visitors |
|
146
|
|
|
FROM `kk_visitor-program` AS visprog |
|
147
|
|
|
LEFT JOIN `kk_visitors` AS vis ON vis.id = visprog.visitor |
|
148
|
|
|
WHERE program = ? |
|
149
|
|
|
AND vis.deleted = ?', |
|
150
|
|
|
$data['id'], '0')->fetch(); |
|
151
|
|
|
|
|
152
|
|
|
if($fullProgramData['visitors'] >= $data['capacity']){ |
|
153
|
|
|
//$html .= "<input disabled type='radio' name='".$id."' value='".$data['id']."' />\n"; |
|
|
|
|
|
|
154
|
|
|
$fullProgramInfo = "<span style='font-size:12px; font-weight:bold;'>".$fullProgramData['visitors']."/".$data['capacity']."</span> (kapacita programu je naplněna!)"; |
|
|
|
|
|
|
155
|
|
|
} |
|
156
|
|
|
else { |
|
157
|
|
|
//$html .= "<input type='radio' name='".$id."' value='".$data['id']."' /> \n"; |
|
|
|
|
|
|
158
|
|
|
$fullProgramInfo = "<span style='font-size:12px; font-weight:bold;'>".$fullProgramData['visitors']."/".$data['capacity']."</span>"; |
|
|
|
|
|
|
159
|
|
|
} |
|
160
|
|
|
$html .= "<td style='min-width:270px;'>"; |
|
161
|
|
|
$html .= "<a rel='programDetail' href='".PRJ_DIR."program/?id=".$data['id']."&cms=edit&page=export' title='".$data['name']."'>".$data['name']."</a>\n"; |
|
|
|
|
|
|
162
|
|
|
$html .= "</td>"; |
|
|
|
|
|
|
163
|
|
|
$html .= "<td>"; |
|
|
|
|
|
|
164
|
|
|
$html .= $fullProgramInfo; |
|
165
|
|
|
$html .= "</td>"; |
|
|
|
|
|
|
166
|
|
|
$html .= "</tr>\n"; |
|
167
|
|
|
} |
|
168
|
|
|
$html .= "</table>\n"; |
|
169
|
|
|
} |
|
170
|
|
|
return $html; |
|
171
|
|
|
} |
|
172
|
|
|
|
|
173
|
|
|
public function renderExportPrograms() |
|
174
|
|
|
{ |
|
175
|
|
|
$programs = ""; |
|
|
|
|
|
|
176
|
|
|
|
|
177
|
|
|
$progSql = $this->database |
|
178
|
|
|
->table('kk_blocks') |
|
179
|
|
|
->select(' |
|
180
|
|
|
id, |
|
181
|
|
|
day, |
|
182
|
|
|
DATE_FORMAT(`from`, "%H:%i") AS `from`, |
|
183
|
|
|
DATE_FORMAT(`to`, "%H:%i") AS `to`, |
|
184
|
|
|
name, |
|
185
|
|
|
program' |
|
186
|
|
|
) |
|
187
|
|
|
->where('deleted = ? AND program = ? AND meeting = ?', '0', '1', $this->meetingId) |
|
188
|
|
|
->order('day ASC, from ASC') |
|
189
|
|
|
->fetchAll(); |
|
190
|
|
|
|
|
191
|
|
|
if(!$progSql){ |
|
|
|
|
|
|
192
|
|
|
$programs .= "<div class='emptyTable' style='width:400px;'>Nejsou žádná aktuální data.</div>\n"; |
|
193
|
|
|
} else { |
|
194
|
|
|
//// prasarnicka kvuli programu raftu - resim obsazenost dohromady u dvou polozek |
|
195
|
|
|
//$raftCountSql = "SELECT COUNT(visitor) AS raft FROM `kk_visitor-program` WHERE program='56|57'"; |
|
|
|
|
|
|
196
|
|
|
|
|
197
|
|
|
foreach($progSql as $progData){ |
|
198
|
|
|
//nemoznost volit predsnemovni dikusi |
|
199
|
|
|
if($progData['id'] == 63) $notDisplayed = "style='display:none;'"; |
|
200
|
|
|
//obsazenost raftu |
|
201
|
|
|
/* |
|
|
|
|
|
|
202
|
|
|
elseif($raftCountData['raft'] >= 18){ |
|
203
|
|
|
if($progData['id'] == 86) $notDisplayed = "style='display:none;'"; |
|
204
|
|
|
else $notDisplayed = ""; |
|
205
|
|
|
} |
|
206
|
|
|
*/ |
|
207
|
|
|
else $notDisplayed = ""; |
|
|
|
|
|
|
208
|
|
|
$programs .= "<div ".$notDisplayed.">".$progData['day'].", ".$progData['from']." - ".$progData['to']." : ".$progData['name']."</div>\n"; |
|
|
|
|
|
|
209
|
|
|
if($progData['program'] == 1) $programs .= "<div ".$notDisplayed.">".$this->getExportPrograms($progData['id'])."</div>"; |
|
|
|
|
|
|
210
|
|
|
$programs .= "<br />"; |
|
|
|
|
|
|
211
|
|
|
} |
|
212
|
|
|
} |
|
213
|
|
|
|
|
214
|
|
|
return $programs; |
|
215
|
|
|
} |
|
216
|
|
|
|
|
217
|
|
|
/** |
|
218
|
|
|
* Render data in a table |
|
219
|
|
|
* |
|
220
|
|
|
* @return string html of a table |
|
221
|
|
|
*/ |
|
222
|
|
|
public function getData($program_id = NULL) |
|
|
|
|
|
|
223
|
|
|
{ |
|
224
|
|
|
if(isset($program_id)) { |
|
225
|
|
|
$data = $this->database |
|
226
|
|
|
->table($this->getTable()) |
|
227
|
|
|
->where('id ? AND deleted ?', $program_id, '0') |
|
228
|
|
|
->limit(1) |
|
229
|
|
|
->fetch(); |
|
230
|
|
|
} else { |
|
231
|
|
|
$data = $this->database |
|
232
|
|
|
->query('SELECT programs.id AS id, |
|
233
|
|
|
programs.name AS name, |
|
234
|
|
|
programs.description AS description, |
|
235
|
|
|
programs.tutor AS tutor, |
|
236
|
|
|
programs.email AS email, |
|
237
|
|
|
blocks.name AS block, |
|
238
|
|
|
programs.capacity AS capacity, |
|
239
|
|
|
style, |
|
240
|
|
|
cat.name AS cat_name |
|
241
|
|
|
FROM kk_programs AS programs |
|
242
|
|
|
LEFT JOIN kk_blocks AS blocks ON blocks.id = programs.block |
|
243
|
|
|
LEFT JOIN kk_categories AS cat ON cat.id = programs.category |
|
244
|
|
|
WHERE blocks.meeting = ? AND programs.deleted = ? AND blocks.deleted = ? |
|
245
|
|
|
ORDER BY programs.id ASC', |
|
246
|
|
|
$this->meetingId, '0', '0')->fetchAll(); |
|
247
|
|
|
} |
|
248
|
|
|
|
|
249
|
|
|
return $data; |
|
250
|
|
|
} |
|
251
|
|
|
|
|
252
|
|
|
/** |
|
253
|
|
|
* @return Nette\Database\Table\ActiveRow |
|
254
|
|
|
*/ |
|
255
|
|
|
public function all() |
|
256
|
|
|
{ |
|
257
|
|
|
return $this->getDatabase() |
|
258
|
|
|
->query('SELECT programs.id AS id, |
|
259
|
|
|
programs.name AS name, |
|
260
|
|
|
programs.description AS description, |
|
261
|
|
|
programs.tutor AS tutor, |
|
262
|
|
|
programs.email AS email, |
|
263
|
|
|
blocks.name AS block, |
|
264
|
|
|
programs.capacity AS capacity, |
|
265
|
|
|
style, |
|
266
|
|
|
cat.name AS cat_name |
|
267
|
|
|
FROM kk_programs AS programs |
|
268
|
|
|
LEFT JOIN kk_blocks AS blocks ON blocks.id = programs.block |
|
269
|
|
|
LEFT JOIN kk_categories AS cat ON cat.id = programs.category |
|
270
|
|
|
WHERE blocks.meeting = ? AND programs.deleted = ? AND blocks.deleted = ? |
|
271
|
|
|
ORDER BY programs.id ASC', |
|
272
|
|
|
$this->getMeetingId(), '0', '0')->fetchAll(); |
|
273
|
|
|
} |
|
274
|
|
|
|
|
275
|
|
|
/** |
|
276
|
|
|
* @param string $guid |
|
277
|
|
|
* @return Nette\Database\Table\ActiveRow |
|
278
|
|
|
*/ |
|
279
|
|
|
public function annotation($guid) |
|
280
|
|
|
{ |
|
281
|
|
|
return $this->getDatabase() |
|
282
|
|
|
->table($this->getTable()) |
|
283
|
|
|
->where('guid ? AND deleted ?', $guid, '0') |
|
284
|
|
|
->limit(1) |
|
285
|
|
|
->fetch(); |
|
286
|
|
|
} |
|
287
|
|
|
|
|
288
|
|
|
/** |
|
289
|
|
|
* Get programs on registration |
|
290
|
|
|
* |
|
291
|
|
|
* @param int ID of program |
|
292
|
|
|
* @param string disabled |
|
293
|
|
|
* @return string html |
|
294
|
|
|
*/ |
|
295
|
|
|
public function getProgramsRegistration ($id, $disabled) |
|
296
|
|
|
{ |
|
297
|
|
|
$result = $this->database |
|
298
|
|
|
->table($this->getTable()) |
|
299
|
|
|
->where('block ? AND deleted ?', $id, '0') |
|
300
|
|
|
->limit(10) |
|
301
|
|
|
->fetchAll(); |
|
302
|
|
|
|
|
303
|
|
|
if(!$result){ |
|
|
|
|
|
|
304
|
|
|
$html = ""; |
|
|
|
|
|
|
305
|
|
|
} |
|
306
|
|
|
else{ |
|
307
|
|
|
$html = "<div>\n"; |
|
308
|
|
|
$html .= "<input ".$disabled." checked type='radio' name='".$id."' value='0' /> Nebudu přítomen <br />\n"; |
|
|
|
|
|
|
309
|
|
|
foreach($result as $data){ |
|
310
|
|
|
//// resim kapacitu programu a jeho naplneni navstevniky |
|
311
|
|
|
$fullProgramData = $this->database |
|
312
|
|
|
->query('SELECT COUNT(visitor) AS visitors FROM `kk_visitor-program` AS visprog |
|
313
|
|
|
LEFT JOIN kk_visitors AS vis ON vis.id = visprog.visitor |
|
314
|
|
|
WHERE program = ? AND vis.deleted = ?', |
|
315
|
|
|
$data['id'], '0')->fetch(); |
|
316
|
|
|
|
|
317
|
|
|
// nezobrazeni programu v registraci, v adminu zaskrtavatko u programu |
|
318
|
|
|
if($data['display_in_reg'] == 0) $notDisplayedProg = "style='display:none;'"; |
|
319
|
|
|
else $notDisplayedProg = ""; |
|
|
|
|
|
|
320
|
|
|
|
|
321
|
|
|
if($fullProgramData['visitors'] >= $data['capacity']){ |
|
322
|
|
|
$html .= "<div ".$notDisplayedProg."><input disabled type='radio' name='".$id."' value='".$data['id']."' />\n"; |
|
|
|
|
|
|
323
|
|
|
$fullProgramInfo = " (NELZE ZAPSAT - kapacita programu je již naplněna!)"; |
|
|
|
|
|
|
324
|
|
|
} |
|
325
|
|
|
else { |
|
326
|
|
|
$html .= "<div ".$notDisplayedProg."><input ".$disabled." type='radio' name='".$id."' value='".$data['id']."' /> \n"; |
|
|
|
|
|
|
327
|
|
|
$fullProgramInfo = ""; |
|
|
|
|
|
|
328
|
|
|
} |
|
329
|
|
|
$html .= "<a class='programLink' rel='programDetail' href='".HTTP_DIR."srazvs/detail.php?id=".$data['id']."&type=program' title='".file_get_contents(HTTP_DIR.'srazvs/detail.php?id='.$data['id'].'&type=program')."' target='_blank'>".$data['name']."</a>\n"; |
|
|
|
|
|
|
330
|
|
|
$html .= $fullProgramInfo; |
|
331
|
|
|
$html .= "</div>\n"; |
|
332
|
|
|
} |
|
333
|
|
|
$html .= "</div>\n"; |
|
334
|
|
|
} |
|
335
|
|
|
return $html; |
|
336
|
|
|
} |
|
337
|
|
|
|
|
338
|
|
|
/** |
|
339
|
|
|
* Get visitors registred on program |
|
340
|
|
|
* |
|
341
|
|
|
* @param int $programId ID of program |
|
342
|
|
|
* @return string html or null |
|
343
|
|
|
*/ |
|
344
|
|
|
public function getProgramVisitors($programId = NULL) |
|
345
|
|
|
{ |
|
346
|
|
|
if(!isset($programId)) { |
|
347
|
|
|
return NULL; |
|
348
|
|
|
} else { |
|
349
|
|
|
$html = " <div style='border-bottom:1px solid black;text-align:right;'>účastníci</div>"; |
|
350
|
|
|
|
|
351
|
|
|
$html .= "<br /><a style='text-decoration:none; display:block; margin-bottom:4px;' href='?cms=export-visitors&id=".$programId."'> |
|
352
|
|
|
<img style='border:none;' align='absbottom' src='".IMG_DIR."icons/pdf.png' />Účastníci programu</a>"; |
|
353
|
|
|
|
|
354
|
|
|
$result = $this->database |
|
355
|
|
|
->query('SELECT vis.name AS name, |
|
356
|
|
|
vis.surname AS surname, |
|
357
|
|
|
vis.nick AS nick |
|
358
|
|
|
FROM kk_visitors AS vis |
|
359
|
|
|
LEFT JOIN `kk_visitor-program` AS visprog ON vis.id = visprog.visitor |
|
360
|
|
|
WHERE visprog.program = ? AND vis.deleted = ?', |
|
361
|
|
|
$programId, '0')->fetchAll(); |
|
362
|
|
|
$i = 1; |
|
363
|
|
|
foreach($result as $data){ |
|
364
|
|
|
$html .= $i.". ".$data['name']." ".$data['surname']." - ".$data['nick']."<br />"; |
|
|
|
|
|
|
365
|
|
|
$i++; |
|
366
|
|
|
} |
|
367
|
|
|
|
|
368
|
|
|
return $html; |
|
369
|
|
|
} |
|
370
|
|
|
} |
|
371
|
|
|
|
|
372
|
|
|
public function getSelectedPrograms($visitorId) { |
|
373
|
|
|
$programs = " <div style='border-bottom:1px solid black;text-align:right;'>vybrané programy</div>"; |
|
374
|
|
|
|
|
375
|
|
|
$result = $this->database |
|
376
|
|
|
->query('SELECT progs.name AS prog_name, |
|
377
|
|
|
day, |
|
378
|
|
|
DATE_FORMAT(`from`, "%H:%i") AS `from`, |
|
379
|
|
|
DATE_FORMAT(`to`, "%H:%i") AS `to` |
|
380
|
|
|
FROM kk_programs AS progs |
|
381
|
|
|
LEFT JOIN `kk_visitor-program` AS visprog ON progs.id = visprog.program |
|
382
|
|
|
LEFT JOIN kk_visitors AS vis ON vis.id = visprog.visitor |
|
383
|
|
|
LEFT JOIN kk_blocks AS blocks ON progs.block = blocks.id |
|
384
|
|
|
WHERE vis.id = ? |
|
385
|
|
|
ORDER BY `day`, `from` ASC', |
|
386
|
|
|
$visitorId)->fetchAll(); |
|
387
|
|
|
|
|
388
|
|
|
foreach($result as $progData){ |
|
389
|
|
|
$programs .= $progData['day'].", ".$progData['from']." - ".$progData['to'].""; |
|
|
|
|
|
|
390
|
|
|
$programs .= "<div style='padding:5px 0px 5px 20px;'>- ".$progData['prog_name']."</div>"; |
|
|
|
|
|
|
391
|
|
|
} |
|
392
|
|
|
|
|
393
|
|
|
return $programs; |
|
394
|
|
|
} |
|
395
|
|
|
|
|
396
|
|
|
public static function getPdfPrograms($id, $vid, $database){ |
|
397
|
|
|
$result = $database |
|
398
|
|
|
->table('kk_programs') |
|
399
|
|
|
->where('block ? AND deleted ?', $id, '0') |
|
400
|
|
|
->limit(10) |
|
401
|
|
|
->fetchAll(); |
|
402
|
|
|
|
|
403
|
|
|
if(!$result){ |
|
404
|
|
|
$html = ""; |
|
|
|
|
|
|
405
|
|
|
} else { |
|
406
|
|
|
|
|
407
|
|
|
$html = "<div class='program'>\n"; |
|
408
|
|
|
|
|
409
|
|
|
foreach($result as $data){ |
|
410
|
|
|
$rows = $database |
|
411
|
|
|
->table('kk_visitor-program') |
|
412
|
|
|
->where('program ? AND visitor ?', $data->id, $vid) |
|
413
|
|
|
->fetchAll(); |
|
414
|
|
|
if($rows) $html .= $data['name']; |
|
415
|
|
|
} |
|
416
|
|
|
$html .= "</div>\n"; |
|
417
|
|
|
} |
|
418
|
|
|
|
|
419
|
|
|
return $html; |
|
420
|
|
|
} |
|
421
|
|
|
|
|
422
|
|
|
public function getProgramsLarge($id){ |
|
423
|
|
|
$result = $this->database |
|
424
|
|
|
->query('SELECT progs.name AS name, |
|
425
|
|
|
cat.style AS style |
|
426
|
|
|
FROM kk_programs AS progs |
|
427
|
|
|
LEFT JOIN kk_categories AS cat ON cat.id = progs.category |
|
428
|
|
|
WHERE block = ? AND progs.deleted = ? |
|
429
|
|
|
LIMIT 10', |
|
430
|
|
|
$id, '0')->fetchAll(); |
|
431
|
|
|
|
|
432
|
|
|
if(!$result) $html = ""; |
|
|
|
|
|
|
433
|
|
|
else { |
|
434
|
|
|
$html = "<table>"; |
|
|
|
|
|
|
435
|
|
|
$html .= " <tr>"; |
|
|
|
|
|
|
436
|
|
|
foreach($result as $data){ |
|
437
|
|
|
$html .= "<td class='category cat-".$data['style']."' >".$data['name']."</td>\n"; |
|
438
|
|
|
} |
|
439
|
|
|
$html .= " </tr>\n"; |
|
440
|
|
|
$html .= "</table>\n"; |
|
441
|
|
|
} |
|
442
|
|
|
return $html; |
|
443
|
|
|
} |
|
444
|
|
|
|
|
445
|
|
|
public static function getProgramNames($block_id) |
|
|
|
|
|
|
446
|
|
|
{ |
|
447
|
|
|
$result = self::$connection |
|
448
|
|
|
->table('kk_programs') |
|
449
|
|
|
->select('name') |
|
450
|
|
|
->where('block ? AND deleted ?', $block_id, '0') |
|
451
|
|
|
->limit(10) |
|
452
|
|
|
->fetchAll(); |
|
453
|
|
|
|
|
454
|
|
|
$html = ''; |
|
455
|
|
|
|
|
456
|
|
|
if(!$result) $html = ""; |
|
|
|
|
|
|
457
|
|
|
else { |
|
458
|
|
|
foreach($result as $data){ |
|
459
|
|
|
$html .= $data['name'].",\n"; |
|
460
|
|
|
} |
|
461
|
|
|
} |
|
462
|
|
|
return $html; |
|
463
|
|
|
} |
|
464
|
|
|
|
|
465
|
|
|
public function getDetail($id, $type, $httpEncoding) |
|
466
|
|
|
{ |
|
467
|
|
|
$data = $this->database |
|
468
|
|
|
->table('kk_' . $type . 's') |
|
469
|
|
|
->where('id ? AND deleted ?', $id, '0') |
|
470
|
|
|
->limit(1) |
|
471
|
|
|
->fetch(); |
|
472
|
|
|
|
|
473
|
|
|
$name = $data['name']; |
|
474
|
|
|
$description = $data['description']; |
|
475
|
|
|
$tutor = $data['tutor']; |
|
476
|
|
|
$email = $data['email']; |
|
477
|
|
|
|
|
478
|
|
|
if($type == "program"){ |
|
|
|
|
|
|
479
|
|
|
$capacity = $data['capacity']; |
|
480
|
|
|
|
|
481
|
|
|
$countData = $this->database |
|
482
|
|
|
->query('SELECT COUNT(visitor) AS visitors |
|
483
|
|
|
FROM `kk_visitor-program` AS visprog |
|
484
|
|
|
LEFT JOIN kk_visitors AS vis ON vis.id = visprog.visitor |
|
485
|
|
|
WHERE program = ? AND vis.deleted = ?', |
|
486
|
|
|
$data->id, '0')->fetch(); |
|
487
|
|
|
|
|
488
|
|
|
$inner_html = "<tr>\n"; |
|
489
|
|
|
$inner_html .= " <td class=\"label\">Obsazenost programu:</td>\n"; |
|
490
|
|
|
$inner_html .= " <td class=\"text\">".$countData['visitors']."/".$capacity."</td>\n"; |
|
|
|
|
|
|
491
|
|
|
$inner_html .= "</tr>\n"; |
|
492
|
|
|
} |
|
493
|
|
|
else $inner_html = ""; |
|
|
|
|
|
|
494
|
|
|
|
|
495
|
|
|
$html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset='.$httpEncoding.'" /></head><body><style>td.text {text-align:left;}</style><table class="form"><tr><td class="label">Program:</td><td class="text">'.$name.'</td></tr><tr><td class="label">Popis:</td><td class="text">'.$description.'</td></tr><tr><td class="label">Lektor:</td><td class="text">'.$tutor.'</td></tr><tr><td class="label">E-mail:</td><td class="text"><a href="mailto:'.$email.'" title="e-mail">'.$email.'</a></td></tr>'.$inner_html.'</table></body></html>'; |
|
496
|
|
|
|
|
497
|
|
|
return $html; |
|
498
|
|
|
} |
|
499
|
|
|
|
|
500
|
|
|
/** |
|
501
|
|
|
* Get tutor e-mail address |
|
502
|
|
|
* |
|
503
|
|
|
* @param int $id id of block item |
|
504
|
|
|
* @return Nette\Database\Table\ActiveRow object with e-mail address |
|
505
|
|
|
*/ |
|
506
|
|
|
public function getTutor($id) |
|
507
|
|
|
{ |
|
508
|
|
|
return $this->database |
|
509
|
|
|
->table($this->getTable()) |
|
510
|
|
|
->select('guid, email, tutor') |
|
511
|
|
|
->where('id ? AND deleted ?', $id, '0') |
|
512
|
|
|
->limit(1) |
|
513
|
|
|
->fetch(); |
|
514
|
|
|
} |
|
515
|
|
|
|
|
516
|
|
|
/** |
|
517
|
|
|
* @param integer $blockId |
|
518
|
|
|
* @return Row |
|
519
|
|
|
*/ |
|
520
|
|
|
public function findByBlockId($blockId = null) |
|
521
|
|
|
{ |
|
522
|
|
|
return $this->getDatabase() |
|
523
|
|
|
->query('SELECT progs.id AS id, |
|
524
|
|
|
progs.name AS name, |
|
525
|
|
|
style |
|
526
|
|
|
FROM kk_programs AS progs |
|
527
|
|
|
LEFT JOIN kk_categories AS cat ON cat.id = progs.category |
|
528
|
|
|
WHERE block = ? AND progs.deleted = ? |
|
529
|
|
|
LIMIT 10', |
|
530
|
|
|
$blockId, '0') |
|
531
|
|
|
->fetchAll(); |
|
532
|
|
|
} |
|
533
|
|
|
|
|
534
|
|
|
} |
|
535
|
|
|
|
PHP provides two ways to mark string literals. Either with single quotes
'literal'or with double quotes"literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (
\') and the backslash (\\). Every other character is displayed as is.Double quoted string literals may contain other variables or more complex escape sequences.
will print an indented:
Single is ValueIf your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.
For more information on PHP string literals and available escape sequences see the PHP core documentation.