db-functions.php 49.1 KB
Newer Older
Gabriel Moreau's avatar
Gabriel Moreau committed
1
<?php if (!$web_page) exit() ?>
2

Gabriel Moreau's avatar
Gabriel Moreau committed
3
<?php
4
require_once('base-functions.php');
5
6
require_once('connect.php');

Gabriel Moreau's avatar
Gabriel Moreau committed
7
// ---------------------------------------------------------------------
8

9
10
11
12
define('GESTEX_DB_VERSION', 4);

// ---------------------------------------------------------------------

Gabriel Moreau's avatar
Gabriel Moreau committed
13
// connexion au serveur mySQL
14

15
function connect_db_minimal() {
16
17
18
19
20
21
22
23
	try{
		$pdo = new PDO('mysql:host='.GESTEX_DB_SERVER.'; dbname='.GESTEX_DB_DATABASE, GESTEX_DB_USER, GESTEX_DB_PASSWORD);
	}
	catch(PDOException $exception){
		error_log('Connection error: '.$exception->getMessage());
		echo $exception->getMessage();
		return false;
	}
24

25
26
27
28
29
30
31
32
33
34
35
36
	return $pdo;
}

// ---------------------------------------------------------------------

function connect_db() {
	if ($pdo = connect_db_minimal()) {
		try{
			$datasheet_version = get_version_by_name($pdo, 'datasheet');
			if ($datasheet_version < GESTEX_DB_VERSION) {
				error_log('Database version error: update the database schema');
				echo "Mettre à jour le schéma de la base de données";
37
				return false;
38
39
40
41
42
43
			}
		}
		catch(PDOException $exception){
			error_log('Database version error: '.$exception->getMessage());
			echo $exception->getMessage();
			return false;
44
45
46
		}
	}

47
48
49
	return $pdo;
}

Gabriel Moreau's avatar
Gabriel Moreau committed
50
// ---------------------------------------------------------------------
51

52
53
54
55
56
57
58
59
60
61
function connect_db_or_alert() {
	if ($pdo = connect_db())
		return $pdo;

	include_once('include/alert-db.php');
	exit();
}

// ---------------------------------------------------------------------

62
63
64
65
66
67
function query_db($statement) {
	$result   = mysql_query($statement) or die("<pre>\n\nCan't perform query: " . mysql_error() . " \n\n$statement\n\n</pre>");
	$num_rows = numrows_db($result);
	return array($result, $num_rows);
}

Gabriel Moreau's avatar
Gabriel Moreau committed
68
// ---------------------------------------------------------------------
69
70
71
72
73

function numrows_db($result) {
	return @mysql_num_rows($result);
}

Gabriel Moreau's avatar
Gabriel Moreau committed
74
// ---------------------------------------------------------------------
75
76
77
78
79
80
81
82

function result_db($result,$i=-1) {
	if ($i >= 0) {
		@mysql_data_seek($result,$i);
	}
	return mysql_fetch_array($result);
}

Gabriel Moreau's avatar
Gabriel Moreau committed
83
// ---------------------------------------------------------------------
84
85
86
87
88

function last_id_db() {
	return mysql_insert_id();
}

Gabriel Moreau's avatar
Gabriel Moreau committed
89
// ---------------------------------------------------------------------
90

Estéban Ristich's avatar
Estéban Ristich committed
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/**
 * Vérifie si un pret a été emprunté. Retourne "false" s'il n'y en a pas
 * et "true" s'il en trouve au moins un. Il n'est censé normalement n'y 
 * avoir qu'un seul pret emprunter.
 * 
 * @todo Pensez à faire une méthode pour avertir s'il y a plus de 1 pret
 * emprunté
 * @return boolean
 */
function check_loan_borrowed_by_equipment($pdo, $equipment_id) {
	$sql = 'SELECT id FROM pret WHERE nom = ? AND status = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($equipment_id, STATUS_LOAN_BORROWED));
	$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result) > 0)
		return true;
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
112
113
114
115
116
117
118
/**
 * Permet de vérifier si la valeur existe dans la colonne d'une table
 * spécifié manuellement. La fonction retournera "true" si la vérification
 * trouve des données sinon elle retournera "false"
 * 
 * @return boolean
 */
119
120
121
function check_val_in_db($pdo, $table, $col, $value) {
	//teste l'existence de $value dans le champ $col de la table $table
	//echo "check in:".$table.":".$col." for ".$value."<br />";
122
123
124
	//$sql = 'SELECT * FROM ? WHERE ? = ?;';
	$stmt = $pdo->prepare("SELECT * FROM $table WHERE $col = '$value'");
	$stmt->execute();
125
126
127
128
129
130
131
132
133
134
	$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

	///echo "check_val:".numrows_db($reponse)."<br />";
	//renvoie 0 si non trouve
	//renvoie le nbre d'occurences autrement
	if (count($result) > 0)
		return true;
	return false;
}

135
136
137
138
// ---------------------------------------------------------------------
// Category
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
139
140
141
142
143
/**
 * Récupère l'ID et le nom de la catégorie via son ID
 * 
 * @return array Retourne directement l'élément
 */
144
145
146
147
148
149
150
151
152
153
function get_category_by_id($pdo, $id) {
	$sql = 'SELECT id, nom FROM categorie WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
	$category_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $category_fetch[0];
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
154
155
156
157
158
159
/**
 * Récupère l'ID et le nom de toutes les catégories rangées 
 * par nom croissant
 * 
 * @return array
 */
160
161
162
163
164
165
166
167
168
169
function get_category_listshort($pdo) {
	$sql = 'SELECT id, nom FROM categorie ORDER BY nom;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute();
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
170
171
172
173
174
175
176
/**
 * Effectue une vérification pour savoir si le nom d'une catégorie
 * existe déjà. Retourne "true" si la catégorie est présente sinon
 * renvoie "false"
 * 
 * @return boolean
 */
177
178
179
180
181
182
183
184
185
186
function check_category_by_name($pdo, $name) {
	$sql = 'SELECT COUNT(*) as count FROM categorie WHERE nom = ?';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($name));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'] > 0 ? true : false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
187
188
189
190
191
/**
 * Ajoute une catégorie
 * 
 * @return int
 */
192
193
194
195
196
197
198
199
200
function set_category_new($pdo, $name) {
	$sql = 'INSERT INTO categorie (nom) VALUE (?);';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($name));
	return $pdo->lastInsertId();
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
201
202
203
/**
 * Met à jour une catégorie (nom) via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
204
function set_category_update($pdo, $category_id, $name) {
205
206
	$sql = 'UPDATE categorie SET nom = ? WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
207
	$stmt->execute(array($name, $category_id));
208
209
210
211
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
212
213
214
/**
 * Supprime une catégorie via son ID
 */
215
216
217
function del_category_by_id($pdo, $id) {
	$sql = 'DELETE LOW_PRIORITY FROM categorie WHERE id = ? LIMIT 1';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
218
219
	$iostat = $stmt->execute(array($id));
	return $iostat;
220
221
}

222
223
// ---------------------------------------------------------------------
// Datasheet
Gabriel Moreau's avatar
Gabriel Moreau committed
224
// ---------------------------------------------------------------------
225

Gabriel Moreau's avatar
Gabriel Moreau committed
226
function get_datasheet_basepath() {
227
228
229
	return './data/datasheet';
}

230
231
232
233
function get_recipe_basepath() {
	return './data/recipe';
}

234
235
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
236
237
238
239
240
/**
 * Récupère tout le contenu d'une notice via son ID
 * 
 * @return false|array Retourne directement l'élément
 */
241
242
243
244
245
246
247
248
249
250
251
252
function get_datasheet_all_by_id($pdo, $id) {
	$sql = 'SELECT * FROM datasheet WHERE id = ?;' ;
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
253
254
255
256
257
258
/**
 * Récupère tout le contenu des notices appartenant à un 
 * équipement spécifié
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
259
function get_datasheet_listall_by_equipment($pdo, $equipment_id) {
260
261
	$sql = 'SELECT * FROM datasheet WHERE id_equipment = ?;' ;
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
262
	$stmt->execute(array($equipment_id));
263
264
265
266
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

Gabriel Moreau's avatar
Gabriel Moreau committed
267
// ---------------------------------------------------------------------
268

Estéban Ristich's avatar
Estéban Ristich committed
269
270
271
272
273
/**
 * Récupère le nombre de notice pour un équipement donné
 * 
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
274
function get_datasheet_count_by_equipment($pdo, $equipment_id) {
275
276
	$sql = 'SELECT COUNT(*) as count FROM datasheet WHERE id_equipment = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
277
	$stmt->execute(array($equipment_id));
278
279
280
281
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

282
283
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
284
285
286
/**
 * Ajoute ou met à jour une notice
 */
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
function set_datasheet_new($pdo, $equipment_id, $file_field_name) {
	$datasheet_filename_upload = $_FILES[$file_field_name]['name'];
	$datasheet_tmp_file        = $_FILES[$file_field_name]['tmp_name'];
	$datasheet_io_error        = $_FILES[$file_field_name]['error'];

	$file_upload_errors = array(
		0 => 'There is no error, the file uploaded with success',
		1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
		2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
		3 => 'The uploaded file was only partially uploaded',
		4 => 'No file was uploaded',
		6 => 'Missing a temporary folder',
		7 => 'Failed to write file to disk.',
		8 => 'A PHP extension stopped the file upload.',
	);
	if (!is_uploaded_file($datasheet_tmp_file) or $datasheet_io_error > 0) {
		error_log('Error: not uploaded datasheet file - '.$datasheet_filename_upload.' - '.$file_upload_errors[$datasheet_io_error]);
304
		return false;
305
306
307
308
309
310
	}

	if (!preg_match('/\.pdf$/i', $datasheet_filename_upload)) {
		error_log('Error: datasheet file not a pdf - '.$datasheet_filename_upload);
		return false;
	}
311
312
313
314
315

	$new_datasheet_path = './data/datasheet';
	if (!is_dir($new_datasheet_path))
		mkdir($new_datasheet_path, 0755);

Gabriel Moreau's avatar
Gabriel Moreau committed
316
	$datasheet_filename_no_ext = pathinfo($datasheet_filename_upload, PATHINFO_FILENAME);
Gabriel Moreau's avatar
Gabriel Moreau committed
317
	$datasheet_filename_kebab = string_to_filename_kebab($datasheet_filename_no_ext).'.pdf';
318
319
320

	$sql1 = 'INSERT INTO datasheet (description, id_equipment) VALUES (?, ?);';
	$stmt1 = $pdo->prepare($sql1);
Gabriel Moreau's avatar
Gabriel Moreau committed
321
	$stmt1->execute(array($datasheet_filename_no_ext, $equipment_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
322
	$datasheet_id = $pdo->lastInsertId();
323

Gabriel Moreau's avatar
Gabriel Moreau committed
324
	$sub_path = $datasheet_id.'-'.random_string(8);
325
326
	$sql2 = 'UPDATE datasheet SET pathname = ? WHERE id = ?;';
	$stmt2 = $pdo->prepare($sql2);
Gabriel Moreau's avatar
Gabriel Moreau committed
327
	$stmt2->execute(array($sub_path.'/'.$datasheet_filename_kebab, $datasheet_id));
328
329
330
331

	$new_dir = $new_datasheet_path.'/'.$sub_path;
	if (!is_dir($new_dir))
		mkdir($new_dir, 0755);
332

Gabriel Moreau's avatar
Gabriel Moreau committed
333
334
	$iostat = move_uploaded_file($datasheet_tmp_file, $new_dir.'/'.$datasheet_filename_kebab);
	if (!$iostat) {
335
		error_log('Error: not move datasheet file '.$datasheet_filename_upload.' to '.$datasheet_filename_kebab);
Gabriel Moreau's avatar
Gabriel Moreau committed
336
		del_datasheet_by_id($pdo, $datasheet_id);
337
338
		return false;
	}
339

Gabriel Moreau's avatar
Gabriel Moreau committed
340
	return $datasheet_id;
341
342
}

343
344
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
345
346
347
348
/**
 * Supprime la notice via son ID ainsi que son fichier et son dossier 
 * sur le disque s'ils éxistent
 */
349
function del_datasheet_by_id($pdo, $id) {
350
351
352
353
354
355
356
	$datasheet_selected = get_datasheet_all_by_id($pdo, $id);

	$datasheet_basepath = get_datasheet_basepath();
	$datasheet_pathname = $datasheet_selected['pathname'];
	$datasheet_dirname  = pathinfo($datasheet_pathname, PATHINFO_DIRNAME);

	if (is_file($datasheet_basepath.'/'.$datasheet_pathname))
Gabriel Moreau's avatar
Gabriel Moreau committed
357
		$iostat = unlink($datasheet_basepath.'/'.$datasheet_pathname);
358
359

	if (!empty($datasheet_dirname) and is_dir($datasheet_basepath.'/'.$datasheet_dirname))
Gabriel Moreau's avatar
Gabriel Moreau committed
360
		$iostat = rmdir($datasheet_basepath.'/'.$datasheet_dirname);
361
362
363

	$sql = 'DELETE LOW_PRIORITY FROM datasheet WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
364
365
	$iostat = $stmt->execute(array($id));
	return $iostat;
366
367
}

368
369
// ---------------------------------------------------------------------
// Equipment
Gabriel Moreau's avatar
Gabriel Moreau committed
370
// ---------------------------------------------------------------------
371

Estéban Ristich's avatar
Estéban Ristich committed
372
373
374
375
376
/**
 * Recupère l'ID et le nom d'un équipement par son ID
 * 
 * @return false|array Le contenu d'un équipement directement
 */
Estéban Ristich's avatar
Estéban Ristich committed
377
function get_equipment_listshort_by_id($pdo, $id) {
378
379
380
	$sql = 'SELECT id, nom FROM Listing WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
381
382
383
384
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
385
386
}

Gabriel Moreau's avatar
Gabriel Moreau committed
387
// ---------------------------------------------------------------------
388

Estéban Ristich's avatar
Estéban Ristich committed
389
390
391
392
393
/**
 * Récupère tout le contenu d'un équipement par son ID
 * 
 * @return false|array Le contenu d'un équipement directement
 */
394
function get_equipment_all_by_id($pdo, $id) {
395
396
397
	$sql = 'SELECT * FROM Listing WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
398
399
400
401
402
403
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

Gabriel Moreau's avatar
Gabriel Moreau committed
404
// ---------------------------------------------------------------------
405

Estéban Ristich's avatar
Estéban Ristich committed
406
407
408
409
410
411
/**
 * Recupere tout le contenu d'un équipement ainsi que son nom de categorie
 * rangé par nom d'équipement et nom d'équipe
 * 
 * @return array
 */
412
function get_equipment_listall($pdo) {
413
414
	// $sql = 'SELECT * FROM Listing ORDER BY categorie, nom;';
	$sql = 'SELECT DISTINCT e.*, c.nom AS category_name FROM Listing AS e INNER JOIN categorie AS c ON e.categorie = c.id ORDER BY c.nom, e.nom;';
415
416
417
418
419
420
421
422
	$stmt = $pdo->prepare($sql);
	$stmt->execute();
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
423
/**
Estéban Ristich's avatar
Estéban Ristich committed
424
425
 * Recupere tout le contenu des équipements ainsi que leurs nom d'équipe via 
 * l'ID d'équipe, rangé par nom d'équipement et nom d'équipe
Estéban Ristich's avatar
Estéban Ristich committed
426
427
428
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
429
function get_equipment_listall_by_team($pdo, $team_id) {
430
431
	//$sql = 'SELECT * FROM Listing WHERE equipe = ? ORDER BY categorie, nom;';
	$sql = 'SELECT DISTINCT e.*, c.nom AS category_name FROM Listing AS e INNER JOIN categorie AS c ON e.categorie = c.id WHERE e.equipe = ? ORDER BY c.nom, e.nom;';
432
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
433
	$stmt->execute(array($team_id));
434
435
436
437
438
439
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
440
441
442
443
444
445
/**
 * Recupere le nombre d'équipement empruntable avec la même équipe via 
 * l'ID de l'équipe
 * 
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
446
function get_equipment_count_loanable_by_team($pdo, $team_id) {
447
448
	$sql = 'SELECT COUNT(*) as count FROM Listing AS e WHERE e.loanable = 1 and e.equipe = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
449
	$stmt->execute(array($team_id));
450
451
452
453
454
455
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
456
457
458
459
460
461
/**
 * Recupere tout le contenu des equipements ayant la même 
 * categorie, rangé par nom
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
462
function get_equipment_listall_by_category($pdo, $category_id) {
463
	$sql = 'SELECT * FROM Listing WHERE categorie = ? ORDER BY nom;';
464
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
465
	$stmt->execute(array($category_id));
466
467
468
469
470
471
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
472
473
474
475
476
477
/**
 * Recupere l'ID et le nom de tout les equipements rangé par
 * catégorie et nom
 * 
 * @return array
 */
478
function get_equipment_listshort($pdo) {
479
	$sql = 'SELECT id, nom FROM Listing ORDER BY categorie, nom;';
480
481
	$stmt = $pdo->prepare($sql);
	$stmt->execute();
482
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
483
	return $result_fetch;
484
485
}

Gabriel Moreau's avatar
Gabriel Moreau committed
486
// ---------------------------------------------------------------------
487

Estéban Ristich's avatar
Estéban Ristich committed
488
489
490
491
492
493
/**
 * Récupere l'ID d'un équipement depuis la table pret, 
 * de par l'ID du pret
 * 
 * @return ID de l'equipement
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
494
function get_equipment_by_loan_id($pdo, $loan_id) {
495
496
	$sql = 'SELECT nom FROM pret WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
497
	$stmt->execute(array($loan_id));
498
499
500
501
502
503
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]["nom"];
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
504
505
506
507
508
509
/**
 * Créer un équipement
 * 
 * @return array|string Renvoie une chaine si echec sinon 
 * un tableau avec l'ID et un msg d'erreur eventuellement
 */
510
511
function set_equipment_new($pdo, $categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_day) {
	$sql = 'INSERT INTO Listing (categorie, nom, modele, gamme, equipe, fournisseur, achat, responsable, reparation, accessoires, inventaire, notice, barcode, loanable, max_day)';
512
	$sql .=            ' VALUES (?,         ?,   ?,      ?,     ?,      ?,           ?,     ?,           ?,          ?,           ?,          ?,      ?,       ?, 		?);';
513
	$stmt = $pdo->prepare($sql);
514
	$iostat = $stmt->execute(array($categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_day));
515
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
516
	if (!$iostat)
Gabriel Moreau's avatar
Gabriel Moreau committed
517
		$err_msg = $stmt->errorInfo()[2];
518
	return array($pdo->lastInsertId(), $err_msg);
519
520
521
522
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
523
524
525
526
527
528
/**
 * Met à jour un équipement par son ID
 *
 * @return string Renvoie une chaine vide
 * si réussite sinon une chaine d'erreurs
 */
529
530
function set_equipment_update($pdo, $equipment_id, $categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_day) {
	$sql = 'UPDATE Listing SET categorie = ?, nom = ?, modele = ?, gamme = ?, equipe = ?, fournisseur = ?, achat = ?, responsable = ?, reparation = ?, accessoires = ?, inventaire = ?, notice = ?, barcode = ?, loanable = ?, max_day = ? WHERE id = ?;)';
531
	$stmt = $pdo->prepare($sql);
532
	$iostat = $stmt->execute(array($categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_day, $equipment_id));
533
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
534
	if (!$iostat)
535
536
537
538
539
540
		$err_msg = $stmt->errorInfo()[2];
	return $err_msg;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
541
/**
Estéban Ristich's avatar
Estéban Ristich committed
542
 * Supprime un seul équipement par son ID
Estéban Ristich's avatar
Estéban Ristich committed
543
 */
544
function del_equipment_by_id($pdo, $id) {
545
546
	$sql = 'DELETE LOW_PRIORITY FROM Listing WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
547
548
	$iostat = $stmt->execute(array($id));
	return $iostat;
549
550
}

Gabriel Moreau's avatar
Gabriel Moreau committed
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
// ---------------------------------------------------------------------
// Intervention
// ---------------------------------------------------------------------

/**
 * Récupère tout le contenu des intervention appartenant à un 
 * équipement
 * 
 * @return false|array
 */
function get_intervention_listall_by_equipment($pdo, $equipment_id) {
	$sql = 'SELECT * FROM intervention WHERE equipment_id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($equipment_id));
	$intervention_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($intervention_fetch) > 0)
		return $intervention_fetch;
	return false;
}

571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
// ---------------------------------------------------------------------

/**
 * Créer une nouvelle fiche d'intervention
 * 
 * @return array
 */
function set_new_intervention($pdo, $description, $supplier_id, $equipment_id, $date) {
	$sql = 'INSERT INTO intervention (supplier_id, equipment_id, description, date) VALUES (?, ?, ?, ?);';
	$stmt = $pdo->prepare($sql);
	$iostat = $stmt->execute(array($supplier_id, $equipment_id, $description, $date));
	$err_msg = '';
	if (!$iostat)
		$err_msg = $stmt->errorInfo()[2];
	return array($pdo->lastInsertId(), $err_msg);
}

588
589
// ---------------------------------------------------------------------
// Loan
590
591
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
592
593
594
595
596
597
/**
 * Récupère tout le contenu d'un pret par son ID
 * 
 * @return array|false S'il n'est pas "false", le 
 * retour ne sera qu'un seul objet
 */
598
599
600
601
602
603
604
605
606
607
function get_loan_all_by_id($pdo, $id) {
	$sql = 'SELECT * FROM pret WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

608
609
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
610
611
612
/**
 * Récupere tout les prets liés à un équipement qui ne sont pas retourné
 * 
Estéban Ristich's avatar
Estéban Ristich committed
613
 * @deprecated Remplacé par la fonction get_loans_all_not_return_by_equipment()
Estéban Ristich's avatar
Estéban Ristich committed
614
 */
Estéban Ristich's avatar
Estéban Ristich committed
615
function get_loans_all_by_equipment($pdo, $equipment_id) {
616
	$sql = 'SELECT * FROM pret WHERE nom = ? AND NOT status = ?;';
617
	$stmt = $pdo->prepare($sql);
618
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
619
620
621
622
623
624
625
626
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

// ---------------------------------------------------------------------

627
628
/**
* Récupere tout les prets liés à un équipement qui ne sont pas retourné,
629
* rangé dans un certaine ordre de priorité.
630
*/
Estéban Ristich's avatar
Estéban Ristich committed
631
function get_loans_all_not_return_by_equipment($pdo, $equipment_id) {
632
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status != ? ORDER BY status DESC, emprunt ASC, retour ASC;';
633
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
634
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
635
636
637
638
639
640
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

641
642
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
643
644
645
646
647
648
/**
 * Recupère l'ID et le status d'un pret via l'ID d'équipement
 * 
 * @return false|array Le contenu du pret directement
 * @deprecated
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
649
function get_loan_short_by_id_equipment($pdo, $equipment_id) {
Gabriel Moreau's avatar
Gabriel Moreau committed
650
	// recupere l'appareil via l'id qui est mis dans un champs texte (nom) !
Estéban Ristich's avatar
Estéban Ristich committed
651
	$sql = 'SELECT id, status FROM pret WHERE nom = ?;';
Gabriel Moreau's avatar
Gabriel Moreau committed
652
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
653
	$stmt->execute(array($equipment_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
654
655
656
657
658
659
660
661
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
662
663
664
665
666
/**
 * Recupère tout le contenu d'un pret via l'ID d'équipement
 * 
 * @return false|array Le contenu du pret directement
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
667
function get_loan_all_by_id_equipment($pdo, $equipment_id) {
668
669
	// recupere l'appareil via l'id qui est mis dans un champs texte (nom) !
	$sql = 'SELECT * FROM pret WHERE nom = ?;';
Gabriel Moreau's avatar
Gabriel Moreau committed
670
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
671
	$stmt->execute(array($equipment_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
672
673
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
674
		return $result_fetch;
Gabriel Moreau's avatar
Gabriel Moreau committed
675
676
677
678
679
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
680
681
682
/**
 * @todo effectuer la documentation de la jointure
 */
683
function get_loan_listall($pdo) {
684
	//$sql = 'SELECT * FROM pret;';
685
	$sql = 'SELECT DISTINCT l.*, e.nom AS equipment_name FROM pret AS l INNER JOIN Listing AS e ON l.nom = e.id WHERE status = ? ORDER BY l.retour DESC, l.emprunt DESC, e.nom;';
686
	$stmt = $pdo->prepare($sql);
687
	$stmt->execute(array(STATUS_LOAN_BORROWED));
688
689
690
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}
Gabriel Moreau's avatar
Gabriel Moreau committed
691
692
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
693
694
695
/**
 * @todo effectuer la documentation de la jointure
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
696
function get_loan_listall_by_team($pdo, $team_id) {
697
	$sql = 'SELECT DISTINCT l.*, e.nom AS equipment_name FROM pret AS l INNER JOIN Listing AS e ON l.nom = e.id WHERE l.equipe = ? AND status = ? ORDER BY l.retour DESC, l.emprunt DESC, e.nom;';
Gabriel Moreau's avatar
Gabriel Moreau committed
698
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
699
	$stmt->execute(array($team_id, STATUS_LOAN_BORROWED));
Gabriel Moreau's avatar
Gabriel Moreau committed
700
701
702
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}
703
704
705

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
706
707
708
709
710
/**
 * Récupère le nombre de pret d'une équipe correspondante
 * 
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
711
function get_loan_count_by_team($pdo, $team_id) {
712
713
	$sql = 'SELECT COUNT(*) as count FROM pret AS l INNER JOIN Listing AS e ON l.nom = e.id WHERE e.equipe = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
714
	$stmt->execute(array($team_id));
715
716
717
718
719
720
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
721
722
723
724
725
726
727
/**
 * Récupère tout le contenu des prets d'un emprunteur en utilisant
 * la directive "RLIKE" pour détécter l'utilisateur dans le champ
 * commentaire des prets
 * 
 * @return array 
 */
728
729
730
731
732
733
734
735
736
737
function get_loan_find($pdo, $find) {
	$sql = 'SELECT * FROM pret WHERE commentaire RLIKE ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($find));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
738
739
740
741
742
743
/**
 * Récupère tout le contenu des prets qui possède le même ID d'équipement
 * et étant actuellement en emprunt
 * 
 * @return false|array
 */
Estéban Ristich's avatar
Estéban Ristich committed
744
function get_loans_all_by_equipment_borrowed($pdo, $equipment_id) {
745
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status = ?;';
746
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
747
	$stmt->execute(array($equipment_id, STATUS_LOAN_BORROWED));
748
749
750
751
752
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}
753

754
755
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
756
757
/**
 * Récupère tout le contenu des prets étant dans l'intervalle d'emprunt
Estéban Ristich's avatar
Estéban Ristich committed
758
 * des dates d'un équipement spécifier. Renverra "false" s'il n'y en a pas
Estéban Ristich's avatar
Estéban Ristich committed
759
760
761
 * 
 * @return false|array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
762
function get_loans_interval_by_id($pdo, $equipment_id, $from, $to) {
763
	$sql = 'SELECT * FROM pret WHERE (((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` >= ? AND `retour` <= ?) AND `nom` = ?)) AND status != ?;';
764
	$stmt = $pdo->prepare($sql);
765
	$stmt->execute(array($from, $from, $equipment_id, $to, $to, $equipment_id, $from, $to, $equipment_id, STATUS_LOAN_RETURNED));
Estéban Ristich's avatar
Fix bug    
Estéban Ristich committed
766
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
767
768
769
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
770
771
772
773
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
774
775
776
777
778
779
780
/**
 * Récupère tout le contenu des prets étant dans l'intervalle d'emprunt
 * des dates d'un équipement spécifier excepter un emprunt en particulier.
 * Renverra "false" s'il n'y en a pas
 * 
 * @return false|array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
781
function get_loans_interval_by_id_except_loan($pdo, $equipment_id, $from, $to, $except_id) {
782
783
	$sql = 'SELECT * FROM pret WHERE (((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` >= ? AND `retour` <= ?) AND `nom` = ?)) AND NOT id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
784
	$stmt->execute(array($from, $from, $equipment_id, $to, $to, $equipment_id, $from, $to, $equipment_id, $except_id));
785
786
787
788
789
790
791
792
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
793
794
795
796
797
/**
 * Récupère le status du pret via son ID
 * 
 * @return string 
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
798
function get_loan_status_by_id($pdo, $loan_id) {
799
800
	$sql = 'SELECT status FROM pret WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
801
	$stmt->execute(array($loan_id));
802
803
804
805
806
807
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]["status"];
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
808
/**
809
 * Récupère tout le contenu du dernier prêt retourné
Estéban Ristich's avatar
Estéban Ristich committed
810
 * 
811
 * @todo Faire en sorte de retourner qu'un seul objet directement
Estéban Ristich's avatar
Estéban Ristich committed
812
813
 * @return false|array
 */
814
function get_loan_all_last_returned($pdo, $equipment_id) {
815
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status = ? ORDER BY retour DESC LIMIT 1;';
816
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
817
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
818
819
820
821
822
823
824
825
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
826
827
828
829
830
831
/**
 * Ajoute un nouveau pret défini comme étant actuellement en emprunt
 * 
 * @deprecated
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
832
function set_loan_borrowed_new($pdo, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
833
	$sql = 'INSERT INTO pret (nom, equipe, emprunt, retour, commentaire, status) VALUES (?, ?, ?, ?, ?, ?);';
834
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
835
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, STATUS_LOAN_BORROWED));
836
837
838
839
840
	return $pdo->lastInsertId();
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
841
842
843
844
845
846
/**
 * Ajoute un nouveau pret défini comme étant en réservation
 * 
 * @deprecated
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
847
function set_loan_reserved_new($pdo, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
848
	$sql = 'INSERT INTO pret (nom, equipe, emprunt, retour, commentaire, status) VALUES (?, ?, ?, ?, ?, ?);';
849
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
850
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, STATUS_LOAN_RESERVED));
851
	return $pdo->lastInsertId();
852
853
854
855
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
856
857
858
859
860
861
/**
 * Met à jour un emprunt (en spécifiant son ID) comme étant emprunter et bloque également
 * sa date d'emprunt au jour même de son appel
 * 
 * @deprecated
 */
862
function set_loan_update_to_borrowed($pdo, $loan_id) {
Estéban Ristich's avatar
Estéban Ristich committed
863
	$sql = 'UPDATE pret SET status = ?, emprunt = CURRENT_DATE WHERE id = ?;';
Gabriel Moreau's avatar
Gabriel Moreau committed
864
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
865
	$stmt->execute(array(STATUS_LOAN_BORROWED, $loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
866
867
}

Gabriel Moreau's avatar
Gabriel Moreau committed
868
869
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
870
871
872
/**
 * Met à jour le pret en spécifiant son ID sans modifier par défaut le status
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
873
function set_loan_update($pdo, $loan_id, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
Gabriel Moreau's avatar
Gabriel Moreau committed
874
875
	$sql = 'UPDATE pret SET nom = ?, equipe = ?, emprunt = ?, retour = ?, commentaire = ? WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
876
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, $loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
877
878
}

Gabriel Moreau's avatar
Gabriel Moreau committed
879
880
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
881
882
883
/**
 * Supprime un seul pret via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
884
function del_loan_by_id($pdo, $loan_id) {
Gabriel Moreau's avatar
Gabriel Moreau committed
885
886
	$sql = 'DELETE LOW_PRIORITY FROM pret WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
887
	$iostat = $stmt->execute(array($loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
888
	return $iostat;
Gabriel Moreau's avatar
Gabriel Moreau committed
889
890
}

891
892
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
893
894
895
896
/**
 * Met à jour un pret (en spécifiant son ID) comme étant retourné et
 * bloque sa date de retour au jour de son appel
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
897
function set_loan_to_returned($pdo, $loan_id) {
Estéban Ristich's avatar
Estéban Ristich committed
898
	$sql = 'UPDATE LOW_PRIORITY pret SET status = ? WHERE id = ?;';
899
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
900
	$iostat = $stmt->execute(array(STATUS_LOAN_RETURNED, $loan_id));
901
902
903
	return $iostat;
}

904

905
906
// ---------------------------------------------------------------------
// Supplier
Gabriel Moreau's avatar
Gabriel Moreau committed
907
908
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
909
910
911
912
913
/**
 * Récupère l'ID et le nom d'un fournisseur via son ID
 * 
 * @return false|array Retourne directement le fournisseur
 */
Estéban Ristich's avatar
Estéban Ristich committed
914
function get_supplier_short_by_id($pdo, $id) {
915
	$sql = 'SELECT id, nom FROM fournisseurs WHERE id = ?;';
916
917
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
918
919
920
921
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
922
923
}

Gabriel Moreau's avatar
Gabriel Moreau committed
924
// ---------------------------------------------------------------------
925

Estéban Ristich's avatar
Estéban Ristich committed
926
927
928
929
930
/**
 * Récupère tout le contenu d'un seul fournisseur via son ID
 * 
 * @return false|array Retourne directement le fournisseur
 */
931
932
933
934
935
936
937
938
939
940
941
942
function get_supplier_all_by_id($pdo, $id) {
	$sql = 'SELECT * FROM fournisseurs WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
943
944
945
946
947
/**
 * Récupère l'ID et le nom de tout les fournisseurs trier par nom croissant
 * 
 * @return array
 */
948
function get_supplier_listshort($pdo) {
949
	$sql = 'SELECT id, nom FROM fournisseurs ORDER BY nom;';
950
	$stmt = $pdo->prepare($sql);
951
	$stmt->execute();
952
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
953
	return $supplier_fetch;
954
955
}

Gabriel Moreau's avatar
Gabriel Moreau committed
956
// ---------------------------------------------------------------------
957

Estéban Ristich's avatar
Estéban Ristich committed
958
959
960
961
962
/**
 * Récupère tout le contenu de tout les fournisseurs trier par nom croissant
 * 
 * @return array
 */
963
function get_supplier_listall($pdo) {
964
	$sql = 'SELECT * FROM fournisseurs ORDER BY nom;';
965
	$stmt = $pdo->prepare($sql);
966
	$stmt->execute();
967
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
968
	return $supplier_fetch;
969
970
}

Gabriel Moreau's avatar
Gabriel Moreau committed
971
// ---------------------------------------------------------------------
972

Estéban Ristich's avatar
Estéban Ristich committed
973
974
975
976
977
978
979
980
/**
 * Retourne la liste de tout les fournisseurs si la valeurs $find est "true"
 * ou une chaîne vide. Sinon elle récuperera tout le contenu des fournisseurs
 * où le chaine demandé a le plus de similitude avec le nom ou la description
 * du fournisseur
 * 
 * @return array
 */
981
982
983
984
function get_supplier_find($pdo, $find='') {
	if (empty($find) or ($find === true))
		return get_supplier_listall($pdo);
	$sql = 'SELECT * FROM fournisseurs WHERE nom RLIKE ? OR descr RLIKE ?;';
985
	$stmt = $pdo->prepare($sql);
986
	$stmt->execute(array($find, $find));
987
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
988
	return $supplier_fetch;
989
990
}

991
992
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
993
994
995
996
997
/**
 * Ajoute un nouveau fournisseur
 * 
 * @return array Avec chaine d'erreur au deuxième index
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
998
999
1000
function set_supplier_new($pdo, $name, $address, $tel, $fax, $email, $www, $contact, $description) {
	$sql = 'INSERT INTO fournisseurs (nom, adresse, mail, www, tel, fax, contact, descr) VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
1001
	$iostat = $stmt->execute(array($name, $address, $tel, $fax, $email, $www, $contact, $description));
Gabriel Moreau's avatar
Gabriel Moreau committed
1002
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
1003
	if (!$iostat)
Gabriel Moreau's avatar
Gabriel Moreau committed
1004
1005
1006
1007
1008
1009
		$err_msg = $stmt->errorInfo()[2];
	return array($pdo->lastInsertId(), $err_msg);
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
1010
1011
1012
1013
1014
/**
 * Met à jour un fournisseur via son ID
 * 
 * @return array Avec chaine d'erreur au deuxième index
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
1015
function set_supplier_update($pdo, $supplier_id, $name, $address, $tel, $fax, $email, $www, $contact, $description) {
1016
1017
	$sql = 'UPDATE LOW_PRIORITY fournisseurs  SET nom = ?, adresse = ?, tel = ?, fax = ?, mail = ?, www = ?, contact = ?, descr = ? WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
1018
	$iostat = $stmt->execute(array($name, $address, $tel, $fax, $email, $www, $contact, $description, $supplier_id));
1019
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
1020
	if (!$iostat)
1021
1022
1023
1024
		$err_msg = $stmt->errorInfo()[2];
	return $err_msg;
}

1025
// ---------------------------------------------------------------------
Gabriel Moreau's avatar
Gabriel Moreau committed
1026

Estéban Ristich's avatar
Estéban Ristich committed
1027
1028
1029
/**
 * Supprime un fournisseur via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
1030
1031
1032
function del_supplier_by_id($pdo, $id) {
	$sql = 'DELETE LOW_PRIORITY FROM fournisseurs WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
1033
1034
	$iostat = $stmt->execute(array($id));
	return $iostat;
Gabriel Moreau's avatar
Gabriel Moreau committed
1035
1036
1037
}

// ---------------------------------------------------------------------
1038
// Team
Gabriel Moreau's avatar
Gabriel Moreau committed
1039
// ---------------------------------------------------------------------
1040

Estéban Ristich's avatar
Estéban Ristich committed
1041
1042
1043
1044
1045
/**
 * Récupère l'ID et le nom d'une seul équipe via son ID
 * 
 * @return array Retourne directement l'équipe
 */
1046
1047
function get_team_by_id($pdo, $id) {
	$sql = 'SELECT id, nom FROM equipe WHERE id = ?;';
1048
1049
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
1050
1051
1052
1053
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
1054
1055
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1056
// ---------------------------------------------------------------------
1057

Estéban Ristich's avatar
Estéban Ristich committed
1058
1059
1060
1061
1062
/**
 * Récupère tout le contenu d'une seul équipe via son ID
 * 
 * @return array Retourne directement l'équipe
 */
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
function get_team_all_by_id($pdo, $id) {
	$sql = 'SELECT * FROM equipe WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
}

// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
1075
1076
1077
1078
1079
/**
 * Récupère l'ID et le nom de toutes les équipes par ordre de nom croissant
 * 
 * @return array
 */
1080
function get_team_listshort($pdo) {
1081
	$sql = 'SELECT id, nom FROM equipe ORDER BY nom;';
1082
	$stmt = $pdo->prepare($sql);
1083
	$stmt->execute();
1084
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1085
	return $team_fetch;
1086
1087
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1088
// ---------------------------------------------------------------------
1089

Estéban Ristich's avatar
Estéban Ristich committed
1090
1091
1092
1093
1094
/**
 * Récupère tout le contenu de toutes les équipe par ordre de nom croissant
 * 
 * @return array
 */
1095
function get_team_listall($pdo) {
1096
	$sql = 'SELECT * FROM equipe ORDER BY nom;';
1097
	$stmt = $pdo->prepare($sql);
1098
	$stmt->execute();
1099
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1100
	return $team_fetch;
1101
1102
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1103
// ---------------------------------------------------------------------
1104

Estéban Ristich's avatar
Estéban Ristich committed
1105
1106
1107
1108
1109
1110
/**
 * Récupère l'ID et le nom des équipe par ordre croissant de nom,
 * possèdant au moins un équipement
 * 
 * @return array
 */
1111
function get_team_with_appareil($pdo) {
1112
	$sql = 'SELECT DISTINCT equipe.id, equipe.nom FROM equipe INNER JOIN Listing ON equipe.id = Listing.equipe ORDER BY equipe.nom;';
1113
	$stmt = $pdo->prepare($sql);
1114
	$stmt->execute();
1115
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1116
	return $team_fetch;
1117
1118
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1119
1120
// ---------------------------------------------------------------------

1121
1122
1123
1124
1125
/**
 * Récupère le nombre d'équipe directement
 * 
 * @return int
 */