db-functions.php 44.9 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
139
140
141
142
143
144
// ---------------------------------------------------------------------
// Intervention
// ---------------------------------------------------------------------

/**
 * Récupère tout le contenu des intervention appartenant à un 
 * équipement
 * 
 * @return false|array
 */
145
function get_interventions_all_by_equipment($pdo, $equipment_id) {
146
147
148
149
150
151
152
153
154
	$sql = 'SELECT * FROM interventions WHERE f_listing = ?;';
	$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;
}

155
156
157
158
// ---------------------------------------------------------------------
// Category
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
159
160
161
162
163
/**
 * Récupère l'ID et le nom de la catégorie via son ID
 * 
 * @return array Retourne directement l'élément
 */
164
165
166
167
168
169
170
171
172
173
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
174
175
176
177
178
179
/**
 * Récupère l'ID et le nom de toutes les catégories rangées 
 * par nom croissant
 * 
 * @return array
 */
180
181
182
183
184
185
186
187
188
189
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
190
191
192
193
194
195
196
/**
 * 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
 */
197
198
199
200
201
202
203
204
205
206
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
207
208
209
210
211
/**
 * Ajoute une catégorie
 * 
 * @return int
 */
212
213
214
215
216
217
218
219
220
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
221
222
223
/**
 * Met à jour une catégorie (nom) via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
224
function set_category_update($pdo, $category_id, $name) {
225
226
	$sql = 'UPDATE categorie SET nom = ? WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
227
	$stmt->execute(array($name, $category_id));
228
229
230
231
}

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

Estéban Ristich's avatar
Estéban Ristich committed
232
233
234
/**
 * Supprime une catégorie via son ID
 */
235
236
237
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
238
239
	$iostat = $stmt->execute(array($id));
	return $iostat;
240
241
}

242
243
// ---------------------------------------------------------------------
// Datasheet
Gabriel Moreau's avatar
Gabriel Moreau committed
244
// ---------------------------------------------------------------------
245

Gabriel Moreau's avatar
Gabriel Moreau committed
246
function get_datasheet_basepath() {
247
248
249
250
251
	return './data/datasheet';
}

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

Estéban Ristich's avatar
Estéban Ristich committed
252
253
254
255
256
/**
 * Récupère tout le contenu d'une notice via son ID
 * 
 * @return false|array Retourne directement l'élément
 */
257
258
259
260
261
262
263
264
265
266
267
268
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
269
270
271
272
273
274
/**
 * Récupère tout le contenu des notices appartenant à un 
 * équipement spécifié
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
275
function get_datasheet_listall_by_equipment($pdo, $equipment_id) {
276
277
	$sql = 'SELECT * FROM datasheet WHERE id_equipment = ?;' ;
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
278
	$stmt->execute(array($equipment_id));
279
280
281
282
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

Gabriel Moreau's avatar
Gabriel Moreau committed
283
// ---------------------------------------------------------------------
284

Estéban Ristich's avatar
Estéban Ristich committed
285
286
287
288
289
/**
 * Récupère le nombre de notice pour un équipement donné
 * 
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
290
function get_datasheet_count_by_equipment($pdo, $equipment_id) {
291
292
	$sql = 'SELECT COUNT(*) as count FROM datasheet WHERE id_equipment = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
293
	$stmt->execute(array($equipment_id));
294
295
296
297
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

298
299
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
300
301
302
/**
 * Ajoute ou met à jour une notice
 */
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
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]);
320
		return false;
321
322
323
324
325
326
	}

	if (!preg_match('/\.pdf$/i', $datasheet_filename_upload)) {
		error_log('Error: datasheet file not a pdf - '.$datasheet_filename_upload);
		return false;
	}
327
328
329
330
331

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

Gabriel Moreau's avatar
Gabriel Moreau committed
332
	$datasheet_filename_no_ext = pathinfo($datasheet_filename_upload, PATHINFO_FILENAME);
Gabriel Moreau's avatar
Gabriel Moreau committed
333
	$datasheet_filename_kebab = string_to_filename_kebab($datasheet_filename_no_ext).'.pdf';
334
335
336

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

Gabriel Moreau's avatar
Gabriel Moreau committed
340
	$sub_path = $datasheet_id.'-'.random_string(8);
341
342
	$sql2 = 'UPDATE datasheet SET pathname = ? WHERE id = ?;';
	$stmt2 = $pdo->prepare($sql2);
Gabriel Moreau's avatar
Gabriel Moreau committed
343
	$stmt2->execute(array($sub_path.'/'.$datasheet_filename_kebab, $datasheet_id));
344
345
346
347

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

Gabriel Moreau's avatar
Gabriel Moreau committed
349
350
	$iostat = move_uploaded_file($datasheet_tmp_file, $new_dir.'/'.$datasheet_filename_kebab);
	if (!$iostat) {
351
		error_log('Error: not move datasheet file '.$datasheet_filename_upload.' to '.$datasheet_filename_kebab);
Gabriel Moreau's avatar
Gabriel Moreau committed
352
		del_datasheet_by_id($pdo, $datasheet_id);
353
354
		return false;
	}
355

Gabriel Moreau's avatar
Gabriel Moreau committed
356
	return $datasheet_id;
357
358
}

359
360
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
361
362
363
364
/**
 * Supprime la notice via son ID ainsi que son fichier et son dossier 
 * sur le disque s'ils éxistent
 */
365
function del_datasheet_by_id($pdo, $id) {
366
367
368
369
370
371
372
	$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
373
		$iostat = unlink($datasheet_basepath.'/'.$datasheet_pathname);
374
375

	if (!empty($datasheet_dirname) and is_dir($datasheet_basepath.'/'.$datasheet_dirname))
Gabriel Moreau's avatar
Gabriel Moreau committed
376
		$iostat = rmdir($datasheet_basepath.'/'.$datasheet_dirname);
377
378
379

	$sql = 'DELETE LOW_PRIORITY FROM datasheet WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
380
381
	$iostat = $stmt->execute(array($id));
	return $iostat;
382
383
}

384
385
// ---------------------------------------------------------------------
// Equipment
Gabriel Moreau's avatar
Gabriel Moreau committed
386
// ---------------------------------------------------------------------
387

Estéban Ristich's avatar
Estéban Ristich committed
388
389
390
391
392
/**
 * 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
393
function get_equipment_listshort_by_id($pdo, $id) {
394
395
396
	$sql = 'SELECT id, nom FROM Listing WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
397
398
399
400
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
401
402
}

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

Estéban Ristich's avatar
Estéban Ristich committed
405
406
407
408
409
/**
 * Récupère tout le contenu d'un équipement par son ID
 * 
 * @return false|array Le contenu d'un équipement directement
 */
410
function get_equipment_all_by_id($pdo, $id) {
411
412
413
	$sql = 'SELECT * FROM Listing WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
414
415
416
417
418
419
	$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
420
// ---------------------------------------------------------------------
421

Estéban Ristich's avatar
Estéban Ristich committed
422
423
424
425
426
427
/**
 * Recupere tout le contenu d'un équipement ainsi que son nom de categorie
 * rangé par nom d'équipement et nom d'équipe
 * 
 * @return array
 */
428
function get_equipment_listall($pdo) {
429
430
	// $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;';
431
432
433
434
435
436
437
438
	$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
439
/**
Estéban Ristich's avatar
Estéban Ristich committed
440
441
 * 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
442
443
444
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
445
function get_equipment_listall_by_team($pdo, $team_id) {
446
447
	//$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;';
448
	$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;
}

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

Estéban Ristich's avatar
Estéban Ristich committed
456
457
458
459
460
461
/**
 * 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
462
function get_equipment_count_loanable_by_team($pdo, $team_id) {
463
464
	$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
465
	$stmt->execute(array($team_id));
466
467
468
469
470
471
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

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

Estéban Ristich's avatar
Estéban Ristich committed
472
473
474
475
476
477
/**
 * Recupere tout le contenu des equipements ayant la même 
 * categorie, rangé par nom
 * 
 * @return array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
478
function get_equipment_listall_by_category($pdo, $category_id) {
479
	$sql = 'SELECT * FROM Listing WHERE categorie = ? ORDER BY nom;';
480
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
481
	$stmt->execute(array($category_id));
482
483
484
485
486
487
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}

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

Estéban Ristich's avatar
Estéban Ristich committed
488
489
490
491
492
493
/**
 * Recupere l'ID et le nom de tout les equipements rangé par
 * catégorie et nom
 * 
 * @return array
 */
494
function get_equipment_listshort($pdo) {
495
	$sql = 'SELECT id, nom FROM Listing ORDER BY categorie, nom;';
496
497
	$stmt = $pdo->prepare($sql);
	$stmt->execute();
498
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
499
	return $result_fetch;
500
501
}

Gabriel Moreau's avatar
Gabriel Moreau committed
502
// ---------------------------------------------------------------------
503

Estéban Ristich's avatar
Estéban Ristich committed
504
505
506
507
508
509
/**
 * 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
510
function get_equipment_by_loan_id($pdo, $loan_id) {
511
512
	$sql = 'SELECT nom FROM pret WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
513
	$stmt->execute(array($loan_id));
514
515
516
517
518
519
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]["nom"];
}

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

Estéban Ristich's avatar
Estéban Ristich committed
520
521
522
523
524
525
/**
 * Créer un équipement
 * 
 * @return array|string Renvoie une chaine si echec sinon 
 * un tableau avec l'ID et un msg d'erreur eventuellement
 */
526
527
528
function set_equipment_new($pdo, $categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_loan_day) {
	$sql = 'INSERT INTO Listing (categorie, nom, modele, gamme, equipe, fournisseur, achat, responsable, reparation, accessoires, inventaire, notice, barcode, loanable, max_loan_day)';
	$sql .=            ' VALUES (?,         ?,   ?,      ?,     ?,      ?,           ?,     ?,           ?,          ?,           ?,          ?,      ?,       ?, 		?);';
529
	$stmt = $pdo->prepare($sql);
530
	$iostat = $stmt->execute(array($categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_loan_day));
531
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
532
	if (!$iostat)
Gabriel Moreau's avatar
Gabriel Moreau committed
533
		$err_msg = $stmt->errorInfo()[2];
534
	return array($pdo->lastInsertId(), $err_msg);
535
536
537
538
}

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

Estéban Ristich's avatar
Estéban Ristich committed
539
540
541
542
543
544
/**
 * Met à jour un équipement par son ID
 *
 * @return string Renvoie une chaine vide
 * si réussite sinon une chaine d'erreurs
 */
545
546
function set_equipment_update($pdo, $equipment_id, $categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_loan_day) {
	$sql = 'UPDATE Listing SET categorie = ?, nom = ?, modele = ?, gamme = ?, equipe = ?, fournisseur = ?, achat = ?, responsable = ?, reparation = ?, accessoires = ?, inventaire = ?, notice = ?, barcode = ?, loanable = ?, max_loan_day = ? WHERE id = ?;)';
547
	$stmt = $pdo->prepare($sql);
548
	$iostat = $stmt->execute(array($categorie, $nom, $modele, $feature, $equipe, $fourn, $achat, $tech, $reparation, $accessoires, $inventaire, $notice, $barcode, $loanable, $max_loan_day, $equipment_id));
549
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
550
	if (!$iostat)
551
552
553
554
555
556
		$err_msg = $stmt->errorInfo()[2];
	return $err_msg;
}

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

Estéban Ristich's avatar
Estéban Ristich committed
557
/**
Estéban Ristich's avatar
Estéban Ristich committed
558
 * Supprime un seul équipement par son ID
Estéban Ristich's avatar
Estéban Ristich committed
559
 */
560
function del_equipment_by_id($pdo, $id) {
561
562
	$sql = 'DELETE LOW_PRIORITY FROM Listing WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
563
564
	$iostat = $stmt->execute(array($id));
	return $iostat;
565
566
567
568
}

// ---------------------------------------------------------------------
// Loan
569
570
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
571
572
573
574
575
576
/**
 * 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
 */
577
578
579
580
581
582
583
584
585
586
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;
}

587
588
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
589
590
591
/**
 * Récupere tout les prets liés à un équipement qui ne sont pas retourné
 * 
Estéban Ristich's avatar
Estéban Ristich committed
592
 * @deprecated Remplacé par la fonction get_loans_all_not_return_by_equipment()
Estéban Ristich's avatar
Estéban Ristich committed
593
 */
Estéban Ristich's avatar
Estéban Ristich committed
594
function get_loans_all_by_equipment($pdo, $equipment_id) {
595
	$sql = 'SELECT * FROM pret WHERE nom = ? AND NOT status = ?;';
596
	$stmt = $pdo->prepare($sql);
597
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
598
599
600
601
602
603
604
605
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

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

606
607
/**
* Récupere tout les prets liés à un équipement qui ne sont pas retourné,
608
* rangé dans un certaine ordre de priorité.
609
*/
Estéban Ristich's avatar
Estéban Ristich committed
610
function get_loans_all_not_return_by_equipment($pdo, $equipment_id) {
611
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status != ? ORDER BY status DESC, emprunt ASC, retour ASC;';
612
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
613
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
614
615
616
617
618
619
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}

620
621
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
622
623
624
625
626
627
/**
 * 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
628
function get_loan_short_by_id_equipment($pdo, $equipment_id) {
Gabriel Moreau's avatar
Gabriel Moreau committed
629
	// recupere l'appareil via l'id qui est mis dans un champs texte (nom) !
Estéban Ristich's avatar
Estéban Ristich committed
630
	$sql = 'SELECT id, status FROM pret WHERE nom = ?;';
Gabriel Moreau's avatar
Gabriel Moreau committed
631
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
632
	$stmt->execute(array($equipment_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
633
634
635
636
637
638
639
640
	$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
641
642
643
644
645
/**
 * 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
646
function get_loan_all_by_id_equipment($pdo, $equipment_id) {
647
648
	// 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
649
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
650
	$stmt->execute(array($equipment_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
651
652
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
653
		return $result_fetch;
Gabriel Moreau's avatar
Gabriel Moreau committed
654
655
656
657
658
	return false;
}

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

Estéban Ristich's avatar
Estéban Ristich committed
659
660
661
/**
 * @todo effectuer la documentation de la jointure
 */
662
function get_loan_listall($pdo) {
663
	//$sql = 'SELECT * FROM pret;';
664
	$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;';
665
	$stmt = $pdo->prepare($sql);
666
	$stmt->execute(array(STATUS_LOAN_BORROWED));
667
668
669
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}
Gabriel Moreau's avatar
Gabriel Moreau committed
670
671
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
672
673
674
/**
 * @todo effectuer la documentation de la jointure
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
675
function get_loan_listall_by_team($pdo, $team_id) {
676
	$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
677
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
678
	$stmt->execute(array($team_id, STATUS_LOAN_BORROWED));
Gabriel Moreau's avatar
Gabriel Moreau committed
679
680
681
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch;
}
682
683
684

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

Estéban Ristich's avatar
Estéban Ristich committed
685
686
687
688
689
/**
 * Récupère le nombre de pret d'une équipe correspondante
 * 
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
690
function get_loan_count_by_team($pdo, $team_id) {
691
692
	$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
693
	$stmt->execute(array($team_id));
694
695
696
697
698
699
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]['count'];
}

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

Estéban Ristich's avatar
Estéban Ristich committed
700
701
702
703
704
705
706
/**
 * 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 
 */
707
708
709
710
711
712
713
714
715
716
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
717
718
719
720
721
722
/**
 * 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
723
function get_loans_all_by_equipment_borrowed($pdo, $equipment_id) {
724
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status = ?;';
725
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
726
	$stmt->execute(array($equipment_id, STATUS_LOAN_BORROWED));
727
728
729
730
731
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
}
732

733
734
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
735
736
/**
 * Récupère tout le contenu des prets étant dans l'intervalle d'emprunt
Estéban Ristich's avatar
Estéban Ristich committed
737
 * 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
738
739
740
 * 
 * @return false|array
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
741
function get_loans_interval_by_id($pdo, $equipment_id, $from, $to) {
742
	$sql = 'SELECT * FROM pret WHERE (((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` <= ? AND `retour` >= ?) AND `nom` = ?) OR ((`emprunt` >= ? AND `retour` <= ?) AND `nom` = ?)) AND status != ?;';
743
	$stmt = $pdo->prepare($sql);
744
	$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
745
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
746
747
748
	if (count($result_fetch) > 0)
		return $result_fetch;
	return false;
749
750
751
752
}

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

Estéban Ristich's avatar
Estéban Ristich committed
753
754
755
756
757
758
759
/**
 * 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
760
function get_loans_interval_by_id_except_loan($pdo, $equipment_id, $from, $to, $except_id) {
761
762
	$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
763
	$stmt->execute(array($from, $from, $equipment_id, $to, $to, $equipment_id, $from, $to, $equipment_id, $except_id));
764
765
766
767
768
769
770
771
	$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
772
773
774
775
776
/**
 * Récupère le status du pret via son ID
 * 
 * @return string 
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
777
function get_loan_status_by_id($pdo, $loan_id) {
778
779
	$sql = 'SELECT status FROM pret WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
780
	$stmt->execute(array($loan_id));
781
782
783
784
785
786
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	return $result_fetch[0]["status"];
}

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

Estéban Ristich's avatar
Estéban Ristich committed
787
/**
788
 * Récupère tout le contenu du dernier prêt retourné
Estéban Ristich's avatar
Estéban Ristich committed
789
 * 
790
 * @todo Faire en sorte de retourner qu'un seul objet directement
Estéban Ristich's avatar
Estéban Ristich committed
791
792
 * @return false|array
 */
793
function get_loan_all_last_returned($pdo, $equipment_id) {
794
	$sql = 'SELECT * FROM pret WHERE nom = ? AND status = ? ORDER BY retour DESC LIMIT 1;';
795
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
796
	$stmt->execute(array($equipment_id, STATUS_LOAN_RETURNED));
797
798
799
800
801
802
803
804
	$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
805
806
807
808
809
810
/**
 * Ajoute un nouveau pret défini comme étant actuellement en emprunt
 * 
 * @deprecated
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
811
function set_loan_borrowed_new($pdo, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
812
	$sql = 'INSERT INTO pret (nom, equipe, emprunt, retour, commentaire, status) VALUES (?, ?, ?, ?, ?, ?);';
813
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
814
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, STATUS_LOAN_BORROWED));
815
816
817
818
819
	return $pdo->lastInsertId();
}

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

Estéban Ristich's avatar
Estéban Ristich committed
820
821
822
823
824
825
/**
 * Ajoute un nouveau pret défini comme étant en réservation
 * 
 * @deprecated
 * @return int
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
826
function set_loan_reserved_new($pdo, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
827
	$sql = 'INSERT INTO pret (nom, equipe, emprunt, retour, commentaire, status) VALUES (?, ?, ?, ?, ?, ?);';
828
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
829
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, STATUS_LOAN_RESERVED));
830
	return $pdo->lastInsertId();
831
832
833
834
}

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

Estéban Ristich's avatar
Estéban Ristich committed
835
836
837
838
839
840
/**
 * 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
 */
841
function set_loan_update_to_borrowed($pdo, $loan_id) {
Estéban Ristich's avatar
Estéban Ristich committed
842
	$sql = 'UPDATE pret SET status = ?, emprunt = CURRENT_DATE WHERE id = ?;';
Gabriel Moreau's avatar
Gabriel Moreau committed
843
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
844
	$stmt->execute(array(STATUS_LOAN_BORROWED, $loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
845
846
}

Gabriel Moreau's avatar
Gabriel Moreau committed
847
848
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
849
850
851
/**
 * Met à jour le pret en spécifiant son ID sans modifier par défaut le status
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
852
function set_loan_update($pdo, $loan_id, $equipment_id, $team_id, $date_begin, $date_end, $comment) {
Gabriel Moreau's avatar
Gabriel Moreau committed
853
854
	$sql = 'UPDATE pret SET nom = ?, equipe = ?, emprunt = ?, retour = ?, commentaire = ? WHERE id = ?;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
855
	$stmt->execute(array($equipment_id, $team_id, $date_begin, $date_end, $comment, $loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
856
857
}

Gabriel Moreau's avatar
Gabriel Moreau committed
858
859
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
860
861
862
/**
 * Supprime un seul pret via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
863
function del_loan_by_id($pdo, $loan_id) {
Gabriel Moreau's avatar
Gabriel Moreau committed
864
865
	$sql = 'DELETE LOW_PRIORITY FROM pret WHERE id = ? LIMIT 1;';
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
866
	$iostat = $stmt->execute(array($loan_id));
Gabriel Moreau's avatar
Gabriel Moreau committed
867
	return $iostat;
Gabriel Moreau's avatar
Gabriel Moreau committed
868
869
}

870
871
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
872
873
874
875
/**
 * 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
876
function set_loan_to_returned($pdo, $loan_id) {
Estéban Ristich's avatar
Estéban Ristich committed
877
	$sql = 'UPDATE LOW_PRIORITY pret SET status = ? WHERE id = ?;';
878
	$stmt = $pdo->prepare($sql);
Gabriel Moreau's avatar
Gabriel Moreau committed
879
	$iostat = $stmt->execute(array(STATUS_LOAN_RETURNED, $loan_id));
880
881
882
	return $iostat;
}

883

884
885
// ---------------------------------------------------------------------
// Supplier
Gabriel Moreau's avatar
Gabriel Moreau committed
886
887
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
888
889
890
891
892
/**
 * 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
893
function get_supplier_short_by_id($pdo, $id) {
894
	$sql = 'SELECT id, nom FROM fournisseurs WHERE id = ?;';
895
896
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
897
898
899
900
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
901
902
}

Gabriel Moreau's avatar
Gabriel Moreau committed
903
// ---------------------------------------------------------------------
904

Estéban Ristich's avatar
Estéban Ristich committed
905
906
907
908
909
/**
 * Récupère tout le contenu d'un seul fournisseur via son ID
 * 
 * @return false|array Retourne directement le fournisseur
 */
910
911
912
913
914
915
916
917
918
919
920
921
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
922
923
924
925
926
/**
 * Récupère l'ID et le nom de tout les fournisseurs trier par nom croissant
 * 
 * @return array
 */
927
function get_supplier_listshort($pdo) {
928
	$sql = 'SELECT id, nom FROM fournisseurs ORDER BY nom;';
929
	$stmt = $pdo->prepare($sql);
930
	$stmt->execute();
931
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
932
	return $supplier_fetch;
933
934
}

Gabriel Moreau's avatar
Gabriel Moreau committed
935
// ---------------------------------------------------------------------
936

Estéban Ristich's avatar
Estéban Ristich committed
937
938
939
940
941
/**
 * Récupère tout le contenu de tout les fournisseurs trier par nom croissant
 * 
 * @return array
 */
942
function get_supplier_listall($pdo) {
943
	$sql = 'SELECT * FROM fournisseurs ORDER BY nom;';
944
	$stmt = $pdo->prepare($sql);
945
	$stmt->execute();
946
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
947
	return $supplier_fetch;
948
949
}

Gabriel Moreau's avatar
Gabriel Moreau committed
950
// ---------------------------------------------------------------------
951

Estéban Ristich's avatar
Estéban Ristich committed
952
953
954
955
956
957
958
959
/**
 * 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
 */
960
961
962
963
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 ?;';
964
	$stmt = $pdo->prepare($sql);
965
	$stmt->execute(array($find, $find));
966
	$supplier_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
967
	return $supplier_fetch;
968
969
}

970
971
// ---------------------------------------------------------------------

Estéban Ristich's avatar
Estéban Ristich committed
972
973
974
975
976
/**
 * Ajoute un nouveau fournisseur
 * 
 * @return array Avec chaine d'erreur au deuxième index
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
977
978
979
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
980
	$iostat = $stmt->execute(array($name, $address, $tel, $fax, $email, $www, $contact, $description));
Gabriel Moreau's avatar
Gabriel Moreau committed
981
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
982
	if (!$iostat)
Gabriel Moreau's avatar
Gabriel Moreau committed
983
984
985
986
987
988
		$err_msg = $stmt->errorInfo()[2];
	return array($pdo->lastInsertId(), $err_msg);
}

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

Estéban Ristich's avatar
Estéban Ristich committed
989
990
991
992
993
/**
 * Met à jour un fournisseur via son ID
 * 
 * @return array Avec chaine d'erreur au deuxième index
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
994
function set_supplier_update($pdo, $supplier_id, $name, $address, $tel, $fax, $email, $www, $contact, $description) {
995
996
	$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
997
	$iostat = $stmt->execute(array($name, $address, $tel, $fax, $email, $www, $contact, $description, $supplier_id));
998
	$err_msg = '';
Gabriel Moreau's avatar
Gabriel Moreau committed
999
	if (!$iostat)
1000
1001
1002
1003
		$err_msg = $stmt->errorInfo()[2];
	return $err_msg;
}

1004
// ---------------------------------------------------------------------
Gabriel Moreau's avatar
Gabriel Moreau committed
1005

Estéban Ristich's avatar
Estéban Ristich committed
1006
1007
1008
/**
 * Supprime un fournisseur via son ID
 */
Gabriel Moreau's avatar
Gabriel Moreau committed
1009
1010
1011
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
1012
1013
	$iostat = $stmt->execute(array($id));
	return $iostat;
Gabriel Moreau's avatar
Gabriel Moreau committed
1014
1015
1016
}

// ---------------------------------------------------------------------
1017
// Team
Gabriel Moreau's avatar
Gabriel Moreau committed
1018
// ---------------------------------------------------------------------
1019

Estéban Ristich's avatar
Estéban Ristich committed
1020
1021
1022
1023
1024
/**
 * Récupère l'ID et le nom d'une seul équipe via son ID
 * 
 * @return array Retourne directement l'équipe
 */
1025
1026
function get_team_by_id($pdo, $id) {
	$sql = 'SELECT id, nom FROM equipe WHERE id = ?;';
1027
1028
	$stmt = $pdo->prepare($sql);
	$stmt->execute(array($id));
1029
1030
1031
1032
	$result_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
	if (count($result_fetch) > 0)
		return $result_fetch[0];
	return false;
1033
1034
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1035
// ---------------------------------------------------------------------
1036

Estéban Ristich's avatar
Estéban Ristich committed
1037
1038
1039
1040
1041
/**
 * Récupère tout le contenu d'une seul équipe via son ID
 * 
 * @return array Retourne directement l'équipe
 */
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
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
1054
1055
1056
1057
1058
/**
 * Récupère l'ID et le nom de toutes les équipes par ordre de nom croissant
 * 
 * @return array
 */
1059
function get_team_listshort($pdo) {
1060
	$sql = 'SELECT id, nom FROM equipe ORDER BY nom;';
1061
	$stmt = $pdo->prepare($sql);
1062
	$stmt->execute();
1063
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1064
	return $team_fetch;
1065
1066
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1067
// ---------------------------------------------------------------------
1068

Estéban Ristich's avatar
Estéban Ristich committed
1069
1070
1071
1072
1073
/**
 * Récupère tout le contenu de toutes les équipe par ordre de nom croissant
 * 
 * @return array
 */
1074
function get_team_listall($pdo) {
1075
	$sql = 'SELECT * FROM equipe ORDER BY nom;';
1076
	$stmt = $pdo->prepare($sql);
1077
	$stmt->execute();
1078
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1079
	return $team_fetch;
1080
1081
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1082
// ---------------------------------------------------------------------
1083

Estéban Ristich's avatar
Estéban Ristich committed
1084
1085
1086
1087
1088
1089
/**
 * Récupère l'ID et le nom des équipe par ordre croissant de nom,
 * possèdant au moins un équipement
 * 
 * @return array
 */
1090
function get_team_with_appareil($pdo) {
1091
	$sql = 'SELECT DISTINCT equipe.id, equipe.nom FROM equipe INNER JOIN Listing ON equipe.id = Listing.equipe ORDER BY equipe.nom;';
1092
	$stmt = $pdo->prepare($sql);
1093
	$stmt->execute();
1094
	$team_fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
1095
	return $team_fetch;
1096
1097
}

Gabriel Moreau's avatar
Gabriel Moreau committed
1098
1099
// ---------------------------------------------------------------------