|
1
|
|
|
<?php |
|
2
|
|
|
/* For licensing terms, see /license.txt*/ |
|
3
|
|
|
|
|
4
|
|
|
/** |
|
5
|
|
|
* create a new category definition for the user information. |
|
6
|
|
|
* |
|
7
|
|
|
* @author - Hugues peeters <[email protected]> |
|
8
|
|
|
* @author - Christophe Gesch� <[email protected]> |
|
9
|
|
|
* |
|
10
|
|
|
* @param string $title - category title |
|
11
|
|
|
* @param string $comment - title comment |
|
12
|
|
|
* @param int $nbline - lines number for the field the user will fill |
|
13
|
|
|
* |
|
14
|
|
|
* @return bool true if succeed, else bolean false |
|
15
|
|
|
*/ |
|
16
|
|
|
function create_cat_def($title = "", $comment = "", $nbline = "5") |
|
17
|
|
|
{ |
|
18
|
|
|
global $TBL_USERINFO_DEF; //taken from userInfo.php |
|
19
|
|
|
|
|
20
|
|
|
$title = Database::escape_string(trim($title)); |
|
21
|
|
|
$comment = Database::escape_string(trim($comment)); |
|
22
|
|
|
$nbline = strval(intval($nbline)); |
|
23
|
|
|
|
|
24
|
|
|
if (0 == (int) $nbline || empty($title)) { |
|
25
|
|
|
return false; |
|
26
|
|
|
} |
|
27
|
|
|
|
|
28
|
|
|
$sql = "SELECT MAX(rank) as maxRank FROM ".$TBL_USERINFO_DEF; |
|
29
|
|
|
$result = Database::query($sql); |
|
30
|
|
|
if ($result) { |
|
|
|
|
|
|
31
|
|
|
$maxRank = Database::fetch_array($result); |
|
32
|
|
|
} |
|
33
|
|
|
|
|
34
|
|
|
$maxRank = $maxRank['maxRank']; |
|
|
|
|
|
|
35
|
|
|
$thisRank = $maxRank + 1; |
|
36
|
|
|
|
|
37
|
|
|
$sql = "INSERT INTO $TBL_USERINFO_DEF SET |
|
38
|
|
|
title = '$title', |
|
39
|
|
|
comment = '$comment', |
|
40
|
|
|
line_count = '$nbline', |
|
41
|
|
|
rank = '$thisRank'"; |
|
42
|
|
|
|
|
43
|
|
|
Database::query($sql); |
|
44
|
|
|
|
|
45
|
|
|
return true; |
|
46
|
|
|
} |
|
47
|
|
|
|
|
48
|
|
|
/** |
|
49
|
|
|
* modify the definition of a user information category. |
|
50
|
|
|
* |
|
51
|
|
|
* @author - Hugues peeters <[email protected]> |
|
52
|
|
|
* @author - Christophe Gesch� <[email protected]> |
|
53
|
|
|
* |
|
54
|
|
|
* @param int $id - id of the category |
|
55
|
|
|
* @param string $title - category title |
|
56
|
|
|
* @param string $comment - title comment |
|
57
|
|
|
* @param int $nbline - lines number for the field the user will fill |
|
58
|
|
|
* |
|
59
|
|
|
* @return - boolean true if succeed, else otherwise |
|
|
|
|
|
|
60
|
|
|
*/ |
|
61
|
|
|
function edit_cat_def($id, $title, $comment, $nbline) |
|
62
|
|
|
{ |
|
63
|
|
|
global $TBL_USERINFO_DEF; |
|
64
|
|
|
|
|
65
|
|
|
if (0 == $nbline || 0 == $id) { |
|
66
|
|
|
return false; |
|
67
|
|
|
} |
|
68
|
|
|
$id = strval(intval($id)); //make sure id is integer |
|
69
|
|
|
$title = Database::escape_string(trim($title)); |
|
70
|
|
|
$comment = Database::escape_string(trim($comment)); |
|
71
|
|
|
$nbline = strval(intval($nbline)); |
|
72
|
|
|
|
|
73
|
|
|
$sql = "UPDATE $TBL_USERINFO_DEF SET |
|
74
|
|
|
title = '$title', |
|
75
|
|
|
comment = '$comment', |
|
76
|
|
|
line_count = '$nbline' |
|
77
|
|
|
WHERE id = '$id'"; |
|
78
|
|
|
Database::query($sql); |
|
79
|
|
|
|
|
80
|
|
|
return true; |
|
81
|
|
|
} |
|
82
|
|
|
|
|
83
|
|
|
/** |
|
84
|
|
|
* remove a category from the category list. |
|
85
|
|
|
* |
|
86
|
|
|
* @author - Hugues peeters <[email protected]> |
|
87
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
88
|
|
|
* |
|
89
|
|
|
* @param int $id - id of the category |
|
90
|
|
|
* or "ALL" for all category |
|
91
|
|
|
* @param bool $force - FALSE (default) : prevents removal if users have |
|
92
|
|
|
* already fill this category |
|
93
|
|
|
* TRUE : bypass user content existence check |
|
94
|
|
|
* |
|
95
|
|
|
* @return bool - TRUE if succeed, ELSE otherwise |
|
96
|
|
|
*/ |
|
97
|
|
|
function remove_cat_def($id, $force = false) |
|
98
|
|
|
{ |
|
99
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(TABLE_USER_INFO_DEF); |
|
100
|
|
|
$TBL_USERINFO_CONTENT = Database::get_course_table(TABLE_USER_INFO_CONTENT); |
|
101
|
|
|
|
|
102
|
|
|
$id = strval(intval($id)); |
|
103
|
|
|
|
|
104
|
|
|
if ((0 == (int) $id || $id == "ALL") || !is_bool($force)) { |
|
105
|
|
|
return false; |
|
106
|
|
|
} |
|
107
|
|
|
$sqlCondition = " WHERE id = $id"; |
|
108
|
|
|
if (!$force) { |
|
109
|
|
|
$sql = "SELECT * FROM $TBL_USERINFO_CONTENT $sqlCondition"; |
|
110
|
|
|
$result = Database::query($sql); |
|
111
|
|
|
|
|
112
|
|
|
if (Database::num_rows($result) > 0) { |
|
113
|
|
|
return false; |
|
114
|
|
|
} |
|
115
|
|
|
} |
|
116
|
|
|
$sql = "DELETE FROM $TBL_USERINFO_DEF $sqlCondition"; |
|
117
|
|
|
Database::query($sql); |
|
118
|
|
|
} |
|
119
|
|
|
|
|
120
|
|
|
/** |
|
121
|
|
|
* move a category in the category list. |
|
122
|
|
|
* |
|
123
|
|
|
* @author - Hugues peeters <[email protected]> |
|
124
|
|
|
* @author - Christophe Gesch� <[email protected]> |
|
125
|
|
|
* |
|
126
|
|
|
* @param int $id - id of the category |
|
127
|
|
|
* @param string $direction "up" or "down" : |
|
128
|
|
|
* "up" decrease the rank of gived $id by switching rank with the just lower |
|
129
|
|
|
* "down" increase the rank of gived $id by switching rank with the just upper |
|
130
|
|
|
* |
|
131
|
|
|
* @return bool true if succeed, else boolean false |
|
132
|
|
|
*/ |
|
133
|
|
|
function move_cat_rank($id, $direction) // up & down. |
|
134
|
|
|
{ |
|
135
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(userinfo_def); |
|
|
|
|
|
|
136
|
|
|
$id = strval(intval($id)); |
|
137
|
|
|
|
|
138
|
|
|
if (0 == (int) $id || !($direction == "up" || $direction == "down")) { |
|
139
|
|
|
return false; |
|
140
|
|
|
} |
|
141
|
|
|
|
|
142
|
|
|
$sql = "SELECT rank FROM $TBL_USERINFO_DEF WHERE id = $id"; |
|
143
|
|
|
$result = Database::query($sql); |
|
144
|
|
|
|
|
145
|
|
|
if (Database::num_rows($result) < 1) { |
|
146
|
|
|
return false; |
|
147
|
|
|
} |
|
148
|
|
|
|
|
149
|
|
|
$cat = Database::fetch_array($result); |
|
150
|
|
|
$rank = (int) $cat['rank']; |
|
151
|
|
|
|
|
152
|
|
|
return move_cat_rank_by_rank($rank, $direction); |
|
153
|
|
|
} |
|
154
|
|
|
|
|
155
|
|
|
/** |
|
156
|
|
|
* move a category in the category list. |
|
157
|
|
|
* |
|
158
|
|
|
* @author - Hugues peeters <[email protected]> |
|
159
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
160
|
|
|
* |
|
161
|
|
|
* @param int $rank - actual rank of the category |
|
162
|
|
|
* @param string $direction "up" or "down" : |
|
163
|
|
|
* "up" decrease the rank of gived $rank by switching rank with the just lower |
|
164
|
|
|
* "down" increase the rank of gived $rank by switching rank with the just upper |
|
165
|
|
|
* |
|
166
|
|
|
* @return bool true if succeed, else boolean false |
|
167
|
|
|
*/ |
|
168
|
|
|
function move_cat_rank_by_rank($rank, $direction) // up & down. |
|
169
|
|
|
{ |
|
170
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(userinfo_def); |
|
|
|
|
|
|
171
|
|
|
|
|
172
|
|
|
if (0 == (int) $rank || !($direction == "up" || $direction == "down")) { |
|
173
|
|
|
return false; |
|
174
|
|
|
} |
|
175
|
|
|
|
|
176
|
|
|
if ($direction === "down") { |
|
177
|
|
|
// thus increase rank ... |
|
178
|
|
|
$sort = "ASC"; |
|
179
|
|
|
$compOp = ">="; |
|
180
|
|
|
} else { |
|
181
|
|
|
// thus decrease rank ... |
|
182
|
|
|
$sort = "DESC"; |
|
183
|
|
|
$compOp = "<="; |
|
184
|
|
|
} |
|
185
|
|
|
|
|
186
|
|
|
// this request find the 2 line to be switched (on rank value) |
|
187
|
|
|
$sql = "SELECT id, rank FROM $TBL_USERINFO_DEF |
|
188
|
|
|
WHERE rank $compOp $rank |
|
189
|
|
|
ORDER BY rank $sort LIMIT 2"; |
|
190
|
|
|
|
|
191
|
|
|
$result = Database::query($sql); |
|
192
|
|
|
|
|
193
|
|
|
if (Database::num_rows($result) < 2) { |
|
194
|
|
|
return false; |
|
195
|
|
|
} |
|
196
|
|
|
|
|
197
|
|
|
$thisCat = Database::fetch_array($result); |
|
198
|
|
|
$nextCat = Database::fetch_array($result); |
|
199
|
|
|
|
|
200
|
|
|
$sql1 = "UPDATE $TBL_USERINFO_DEF SET rank ='".$nextCat['rank']. |
|
201
|
|
|
"' WHERE id = '".$thisCat['id']."'"; |
|
202
|
|
|
$sql2 = "UPDATE $TBL_USERINFO_DEF SET rank ='".$thisCat['rank']. |
|
203
|
|
|
"' WHERE id = '".$nextCat['id']."'"; |
|
204
|
|
|
|
|
205
|
|
|
Database::query($sql1); |
|
206
|
|
|
Database::query($sql2); |
|
207
|
|
|
|
|
208
|
|
|
return true; |
|
209
|
|
|
} |
|
210
|
|
|
|
|
211
|
|
|
/** |
|
212
|
|
|
* @author Hugues Peeters - [email protected] |
|
213
|
|
|
* |
|
214
|
|
|
* @param int $user_id |
|
215
|
|
|
* @param string $course_code |
|
216
|
|
|
* @param array $properties - should contain 'role', 'status', 'tutor_id' |
|
217
|
|
|
* |
|
218
|
|
|
* @return bool true if succeed false otherwise |
|
219
|
|
|
*/ |
|
220
|
|
|
function update_user_course_properties($user_id, $course_code, $properties, $horaire_name, $course_id) |
|
221
|
|
|
{ |
|
222
|
|
|
global $tbl_coursUser, $_user; |
|
223
|
|
|
$sqlChangeStatus = ""; |
|
224
|
|
|
$user_id = (int) $user_id; //filter integer |
|
225
|
|
|
$course_code = Database::escape_string($course_code); |
|
226
|
|
|
$course_id = (int) $course_id; |
|
227
|
|
|
$horaire_name = Database::escape_string($horaire_name); |
|
228
|
|
|
$status = Database::escape_string($properties['status']); |
|
229
|
|
|
$tutor = Database::escape_string($properties['tutor']); |
|
230
|
|
|
if ($user_id != $_user['user_id']) { |
|
231
|
|
|
$sqlChangeStatus = "status = '$status',"; |
|
232
|
|
|
} |
|
233
|
|
|
|
|
234
|
|
|
$sql = "UPDATE $tbl_coursUser |
|
235
|
|
|
SET $sqlChangeStatus |
|
236
|
|
|
is_tutor = '$tutor' |
|
237
|
|
|
WHERE user_id = $user_id AND c_id = $course_id"; |
|
238
|
|
|
Database::query($sql); |
|
239
|
|
|
//update official-code: Horaire |
|
240
|
|
|
$table_user = Database::get_main_table(TABLE_MAIN_USER); |
|
241
|
|
|
$sql2 = "UPDATE $table_user |
|
242
|
|
|
SET official_code = '$horaire_name' |
|
243
|
|
|
WHERE user_id = $user_id"; |
|
244
|
|
|
Database::query($sql2); |
|
245
|
|
|
//on récupère l'horaire |
|
246
|
|
|
$tbl_personal_agenda = Database::get_main_table(TABLE_PERSONAL_AGENDA); |
|
247
|
|
|
$TABLECALDATES = Database::get_course_table(cal_dates); |
|
|
|
|
|
|
248
|
|
|
$jour = 0; |
|
249
|
|
|
$sql3 = "SELECT date FROM $TABLECALDATES |
|
250
|
|
|
WHERE |
|
251
|
|
|
horaire_name = '$horaire_name' AND |
|
252
|
|
|
status = 'C' AND |
|
253
|
|
|
c_id = $course_id |
|
254
|
|
|
ORDER BY date "; |
|
255
|
|
|
$result3 = Database::query($sql3); |
|
256
|
|
|
|
|
257
|
|
|
if (Database::num_rows($result3) == '0') { |
|
258
|
|
|
return false; |
|
259
|
|
|
} |
|
260
|
|
|
|
|
261
|
|
|
//on efface ce qui est déjà inscrit |
|
262
|
|
|
$sql4 = "DELETE FROM $tbl_personal_agenda |
|
263
|
|
|
WHERE user = $user_id |
|
264
|
|
|
AND text = 'Pour le calendrier, ne pas effacer'"; |
|
265
|
|
|
Database::query($sql4); |
|
266
|
|
|
|
|
267
|
|
|
$sql = "DELETE FROM $tbl_personal_agenda |
|
268
|
|
|
WHERE user = $user_id AND title = 'Examen*'"; |
|
269
|
|
|
Database::query($sql); |
|
270
|
|
|
//à chaque date dans l'horaire |
|
271
|
|
|
while ($res3 = Database::fetch_array($result3)) { |
|
272
|
|
|
$date = $res3['date']; |
|
273
|
|
|
//on incrémente les jours de cours |
|
274
|
|
|
$date = api_get_utc_datetime($date); |
|
275
|
|
|
$jour = $jour + 1; |
|
276
|
|
|
//on réinsère le nouvel horaire |
|
277
|
|
|
$sql = "INSERT ".$tbl_personal_agenda." (user,title,text,date) |
|
278
|
|
|
VALUES ($user_id, $jour, 'Pour le calendrier, ne pas effacer', '$date')"; |
|
279
|
|
|
Database::query($sql); |
|
280
|
|
|
// pour les inscrire examens dans agenda |
|
281
|
|
|
$sql5 = "SELECT date FROM $TABLECALDATES |
|
282
|
|
|
WHERE horaire_name = '$horaire_name' AND status = 'E' |
|
283
|
|
|
AND c_id = '$course_id' |
|
284
|
|
|
ORDER BY date |
|
285
|
|
|
"; |
|
286
|
|
|
$result5 = Database::query($sql5); |
|
287
|
|
|
} |
|
288
|
|
|
|
|
289
|
|
|
//à chaque date dans l'horaire |
|
290
|
|
|
while ($res5 = Database::fetch_array($result5)) { |
|
|
|
|
|
|
291
|
|
|
$date = $res5['date']; |
|
292
|
|
|
$date = api_get_utc_datetime($date); |
|
293
|
|
|
//on réinsère le nouvel horaire |
|
294
|
|
|
$sql7 = "INSERT $tbl_personal_agenda (user, title, date) VALUES ($user_id, 'Examen*', '$date')"; |
|
295
|
|
|
Database::query($sql7); |
|
296
|
|
|
} |
|
297
|
|
|
} |
|
298
|
|
|
|
|
299
|
|
|
/** |
|
300
|
|
|
* fill a bloc for information category. |
|
301
|
|
|
* |
|
302
|
|
|
* @author - Hugues peeters <[email protected]> |
|
303
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
304
|
|
|
* |
|
305
|
|
|
* @param $definition_id |
|
306
|
|
|
* @param $user_id |
|
307
|
|
|
* @param $user_ip |
|
308
|
|
|
* @param $content |
|
309
|
|
|
* |
|
310
|
|
|
* @return bool true if succeed, else boolean false |
|
311
|
|
|
*/ |
|
312
|
|
|
function fill_new_cat_content($definition_id, $user_id, $content = "", $user_ip = "") |
|
313
|
|
|
{ |
|
314
|
|
|
global $TBL_USERINFO_CONTENT; |
|
315
|
|
|
|
|
316
|
|
|
if (empty($user_ip)) { |
|
317
|
|
|
$user_ip = $_SERVER['REMOTE_ADDR']; |
|
318
|
|
|
} |
|
319
|
|
|
$definition_id = (int) $definition_id; |
|
320
|
|
|
$user_id = (int) $user_id; |
|
321
|
|
|
$content = Database::escape_string(trim($content)); |
|
322
|
|
|
$user_ip = Database::escape_string(trim($user_ip)); |
|
323
|
|
|
|
|
324
|
|
|
if (0 == $definition_id || 0 == $user_id || $content == "") { |
|
325
|
|
|
// Here we should introduce an error handling system... |
|
326
|
|
|
|
|
327
|
|
|
return false; |
|
328
|
|
|
} |
|
329
|
|
|
|
|
330
|
|
|
// Do not create if already exist |
|
331
|
|
|
$sql = "SELECT id FROM $TBL_USERINFO_CONTENT |
|
332
|
|
|
WHERE definition_id = '$definition_id' |
|
333
|
|
|
AND user_id = $user_id"; |
|
334
|
|
|
|
|
335
|
|
|
$result = Database::query($sql); |
|
336
|
|
|
|
|
337
|
|
|
if (Database::num_rows($result) > 0) { |
|
338
|
|
|
return false; |
|
339
|
|
|
} |
|
340
|
|
|
|
|
341
|
|
|
$sql = "INSERT INTO $TBL_USERINFO_CONTENT SET |
|
342
|
|
|
content = '$content', |
|
343
|
|
|
definition_id = $definition_id, |
|
344
|
|
|
user_id = $user_id, |
|
345
|
|
|
editor_ip = '$user_ip', |
|
346
|
|
|
edition_time = now()"; |
|
347
|
|
|
|
|
348
|
|
|
Database::query($sql); |
|
349
|
|
|
|
|
350
|
|
|
return true; |
|
351
|
|
|
} |
|
352
|
|
|
|
|
353
|
|
|
/** |
|
354
|
|
|
* Edit a bloc for information category. |
|
355
|
|
|
* |
|
356
|
|
|
* @author - Hugues peeters <[email protected]> |
|
357
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
358
|
|
|
* |
|
359
|
|
|
* @param $definition_id |
|
360
|
|
|
* @param $user_id |
|
361
|
|
|
* @param $user_ip DEFAULT $REMOTE_ADDR |
|
362
|
|
|
* @param $content if empty call delete the bloc |
|
363
|
|
|
* |
|
364
|
|
|
* @return bool true if succeed, else boolean false |
|
365
|
|
|
*/ |
|
366
|
|
|
function edit_cat_content($definition_id, $user_id, $content = "", $user_ip = "") |
|
367
|
|
|
{ |
|
368
|
|
|
global $TBL_USERINFO_CONTENT; |
|
369
|
|
|
$definition_id = (int) $definition_id; |
|
370
|
|
|
$user_id = (int) $user_id; |
|
371
|
|
|
$content = Database::escape_string(trim($content)); |
|
372
|
|
|
if (empty($user_ip)) { |
|
373
|
|
|
$user_ip = $_SERVER['REMOTE_ADDR']; |
|
374
|
|
|
} |
|
375
|
|
|
$user_ip = Database::escape_string($user_ip); |
|
376
|
|
|
|
|
377
|
|
|
if (0 == $user_id || 0 == $definition_id) { |
|
378
|
|
|
return false; |
|
379
|
|
|
} |
|
380
|
|
|
|
|
381
|
|
|
if ($content == "") { |
|
382
|
|
|
return cleanout_cat_content($user_id, $definition_id); |
|
383
|
|
|
} |
|
384
|
|
|
|
|
385
|
|
|
$sql = "UPDATE $TBL_USERINFO_CONTENT SET |
|
386
|
|
|
content = '$content', |
|
387
|
|
|
editor_ip = '$user_ip', |
|
388
|
|
|
edition_time = now() |
|
389
|
|
|
WHERE definition_id = $definition_id AND user_id = $user_id"; |
|
390
|
|
|
|
|
391
|
|
|
Database::query($sql); |
|
392
|
|
|
|
|
393
|
|
|
return true; |
|
394
|
|
|
} |
|
395
|
|
|
|
|
396
|
|
|
/** |
|
397
|
|
|
* clean the content of a bloc for information category. |
|
398
|
|
|
* |
|
399
|
|
|
* @author Hugues peeters <[email protected]> |
|
400
|
|
|
* @author Christophe Gesche <[email protected]> |
|
401
|
|
|
* |
|
402
|
|
|
* @param $definition_id |
|
403
|
|
|
* @param $user_id |
|
404
|
|
|
* |
|
405
|
|
|
* @return bool true if succeed, else boolean false |
|
406
|
|
|
*/ |
|
407
|
|
|
function cleanout_cat_content($user_id, $definition_id) |
|
408
|
|
|
{ |
|
409
|
|
|
global $TBL_USERINFO_CONTENT; |
|
410
|
|
|
$user_id = (int) $user_id; |
|
411
|
|
|
$definition_id = (int) $definition_id; |
|
412
|
|
|
|
|
413
|
|
|
if (0 == $user_id || 0 == $definition_id) { |
|
414
|
|
|
return false; |
|
415
|
|
|
} |
|
416
|
|
|
|
|
417
|
|
|
$sql = "DELETE FROM $TBL_USERINFO_CONTENT |
|
418
|
|
|
WHERE user_id = $user_id AND definition_id = $definition_id"; |
|
419
|
|
|
|
|
420
|
|
|
Database::query($sql); |
|
421
|
|
|
|
|
422
|
|
|
return true; |
|
423
|
|
|
} |
|
424
|
|
|
|
|
425
|
|
|
/** |
|
426
|
|
|
* get the user info from the user id. |
|
427
|
|
|
* |
|
428
|
|
|
* @author - Hugues Peeters <[email protected]> |
|
429
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
430
|
|
|
* |
|
431
|
|
|
* @param int $user_id user id as stored in the Dokeos main db |
|
432
|
|
|
* |
|
433
|
|
|
* @return array containg user info sort by categories rank |
|
434
|
|
|
* each rank contains 'title', 'comment', 'content', 'cat_id' |
|
435
|
|
|
*/ |
|
436
|
|
|
function get_course_user_info($user_id) |
|
437
|
|
|
{ |
|
438
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(TABLE_USER_INFO_DEF); |
|
439
|
|
|
$TBL_USERINFO_CONTENT = Database::get_course_table(TABLE_USER_INFO_CONTENT); |
|
440
|
|
|
|
|
441
|
|
|
$user_id = (int) $user_id; |
|
442
|
|
|
$sql = "SELECT cat.id catId, cat.title, |
|
443
|
|
|
cat.comment , content.content |
|
444
|
|
|
FROM $TBL_USERINFO_DEF cat LEFT JOIN $TBL_USERINFO_CONTENT content |
|
445
|
|
|
ON cat.id = content.definition_id AND content.user_id = $user_id |
|
446
|
|
|
ORDER BY cat.rank, content.id"; |
|
447
|
|
|
|
|
448
|
|
|
$result = Database::query($sql); |
|
449
|
|
|
|
|
450
|
|
|
if (Database::num_rows($result) > 0) { |
|
451
|
|
|
while ($userInfo = Database::fetch_array($result, 'ASSOC')) { |
|
452
|
|
|
$userInfos[] = $userInfo; |
|
453
|
|
|
} |
|
454
|
|
|
|
|
455
|
|
|
return $userInfos; |
|
|
|
|
|
|
456
|
|
|
} |
|
457
|
|
|
|
|
458
|
|
|
return false; |
|
459
|
|
|
} |
|
460
|
|
|
|
|
461
|
|
|
/** |
|
462
|
|
|
* get the user content of a categories plus the categories definition. |
|
463
|
|
|
* |
|
464
|
|
|
* @author - Hugues Peeters <[email protected]> |
|
465
|
|
|
* @author - Christophe Gesche <[email protected]> |
|
466
|
|
|
* |
|
467
|
|
|
* @param int $userId id of the user |
|
468
|
|
|
* @param int $catId id of the categories |
|
469
|
|
|
* |
|
470
|
|
|
* @return array containing 'catId', 'title', 'comment', 'nbline', 'contentId' and 'content' |
|
471
|
|
|
*/ |
|
472
|
|
|
function get_cat_content($userId, $catId) |
|
473
|
|
|
{ |
|
474
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(TABLE_USER_INFO_DEF); |
|
475
|
|
|
$TBL_USERINFO_CONTENT = Database::get_course_table(TABLE_USER_INFO_CONTENT); |
|
476
|
|
|
|
|
477
|
|
|
$userId = (int) $userId; |
|
478
|
|
|
$catId = (int) $catId; |
|
479
|
|
|
$sql = "SELECT cat.id catId, cat.title, |
|
480
|
|
|
cat.comment , cat.line_count, |
|
481
|
|
|
content.id contentId, content.content |
|
482
|
|
|
FROM $TBL_USERINFO_DEF cat LEFT JOIN $TBL_USERINFO_CONTENT content |
|
483
|
|
|
ON cat.id = content.definition_id |
|
484
|
|
|
AND content.user_id = $userId |
|
485
|
|
|
WHERE cat.id = $catId "; |
|
486
|
|
|
$result = Database::query($sql); |
|
487
|
|
|
|
|
488
|
|
|
if (Database::num_rows($result) > 0) { |
|
489
|
|
|
$catContent = Database::fetch_array($result, 'ASSOC'); |
|
490
|
|
|
$catContent['nbline'] = $catContent['line_count']; |
|
491
|
|
|
|
|
492
|
|
|
return $catContent; |
|
493
|
|
|
} |
|
494
|
|
|
|
|
495
|
|
|
return false; |
|
496
|
|
|
} |
|
497
|
|
|
|
|
498
|
|
|
/** |
|
499
|
|
|
* get the definition of a category. |
|
500
|
|
|
* |
|
501
|
|
|
* @author Christophe Gesche <[email protected]> |
|
502
|
|
|
* @author Hugues Peeters <[email protected]> |
|
503
|
|
|
* |
|
504
|
|
|
* @param int $catId - id of the categories |
|
505
|
|
|
* |
|
506
|
|
|
* @return array containing 'id', 'title', 'comment', and 'nbline', |
|
507
|
|
|
*/ |
|
508
|
|
|
function get_cat_def($catId) |
|
509
|
|
|
{ |
|
510
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(TABLE_USER_INFO_DEF); |
|
511
|
|
|
|
|
512
|
|
|
$catId = (int) $catId; |
|
513
|
|
|
$sql = "SELECT id, title, comment, line_count, rank FROM $TBL_USERINFO_DEF WHERE id = $catId"; |
|
514
|
|
|
|
|
515
|
|
|
$result = Database::query($sql); |
|
516
|
|
|
|
|
517
|
|
|
if (Database::num_rows($result) > 0) { |
|
518
|
|
|
$catDef = Database::fetch_array($result, 'ASSOC'); |
|
519
|
|
|
$catDef['nbline'] = $catDef['line_count']; |
|
520
|
|
|
|
|
521
|
|
|
return $catDef; |
|
522
|
|
|
} |
|
523
|
|
|
|
|
524
|
|
|
return false; |
|
525
|
|
|
} |
|
526
|
|
|
|
|
527
|
|
|
/** |
|
528
|
|
|
* get list of all this course categories. |
|
529
|
|
|
* |
|
530
|
|
|
* @author Christophe Gesche <[email protected]> |
|
531
|
|
|
* @author Hugues Peeters <[email protected]> |
|
532
|
|
|
* |
|
533
|
|
|
* @return array containing a list of arrays. |
|
534
|
|
|
* And each of these arrays contains |
|
535
|
|
|
* 'catId', 'title', 'comment', and 'nbline', |
|
536
|
|
|
*/ |
|
537
|
|
|
function get_cat_def_list() |
|
538
|
|
|
{ |
|
539
|
|
|
$TBL_USERINFO_DEF = Database::get_course_table(TABLE_USER_INFO_DEF); |
|
540
|
|
|
|
|
541
|
|
|
$sql = "SELECT id catId, title, comment , line_count |
|
542
|
|
|
FROM $TBL_USERINFO_DEF |
|
543
|
|
|
ORDER BY rank"; |
|
544
|
|
|
|
|
545
|
|
|
$result = Database::query($sql); |
|
546
|
|
|
|
|
547
|
|
|
if (Database::num_rows($result) > 0) { |
|
548
|
|
|
while ($cat_def = Database::fetch_array($result, 'ASSOC')) { |
|
549
|
|
|
$cat_def_list[] = $cat_def; |
|
550
|
|
|
} |
|
551
|
|
|
|
|
552
|
|
|
return $cat_def_list; |
|
|
|
|
|
|
553
|
|
|
} |
|
554
|
|
|
|
|
555
|
|
|
return false; |
|
556
|
|
|
} |
|
557
|
|
|
|
|
558
|
|
|
/** |
|
559
|
|
|
* transform content in a html display. |
|
560
|
|
|
* |
|
561
|
|
|
* @author Hugues Peeters <[email protected]> |
|
562
|
|
|
* |
|
563
|
|
|
* @param string $string string to htmlize |
|
564
|
|
|
* |
|
565
|
|
|
* @return string htmlized |
|
566
|
|
|
*/ |
|
567
|
|
|
function htmlize($string) |
|
568
|
|
|
{ |
|
569
|
|
|
global $charset; |
|
570
|
|
|
|
|
571
|
|
|
return nl2br(htmlspecialchars($string, ENT_QUOTES, $charset)); |
|
572
|
|
|
} |
|
573
|
|
|
|