ajpsc-annuaire /includes/fonctions.inc.php

Language PHP Lines 730
MD5 Hash 62f78de862507dc20c0fac03eb93308e Estimated Cost $11,192 (why?)
Repository https://bitbucket.org/mw4rf/ajpsc-annuaire.git View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
<?php
/*
Nom: dire
But: Détecte la langue du client et affiche une phrase dans sa langue
Info: Guillaume Florimond, 16/12/2006
*/
function dire($item)
{
    echo donner($item);
}

/*
Nom: message
But: Détecte la langue du client et affiche le message, dans le div MESSAGE, dans sa langue
Alors que la fonction dire() n'affique que le string localisé, cette fonction d'encapsule dans une div qui peut être formatée avec les CSS.
Info: Guillaume Florimond, 10/04/2007
*/
function message($item)
{
    echo "<div class=\"message\">".donner($item)."</div>";
}

/*
Nom: donner
But: Détecte la langue du client et renvoie une phrase dans sa langue
Info: Guillaume Florimond, 16/12/2006
*/
function donner($item)
{
    // Vérifie si l'utilisateur a choisi manuellement une langue
    if(isset($_SESSION["langue"]))
    {
        $lang = $_SESSION["langue"];
    }
    // S'il n'a rien choisi, déterminer la langue par défaut de son navigateur
    else
    {
        // Vérifie si l'information a bien été transmise en header
        if(isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
        {
            /* Obtient les deux premiers caractères de la chaîne qui correspondent à la
            langue par défaut du client (fr, en, etc...). Le reste de la chaîne contient
            la liste des langues gérées par le client, ce qui n'est pas utile ici. */
            $lang = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
        }
        // S'il n'y a pas de choix et que le header n'a pas été transmis: par défaut
        else
        {
            $lang = "fr"; // par défaut
        }
    }

    // Liste à modifier en fonction des langues disponibles:
    // français (fr) - espagnol (es) - anglais (en)
    if($lang != "fr" and $lang != "es" and $lang != "en")
    {
        $lang = "fr";
    }

    // Obtient la phrase demandée dans la langue demandée
    global $phrase;

        // 1er cas: la phrase existe dans la langue choisie.
        if(isset($phrase[$lang][$item]))
        {
            $res = $phrase[$lang][$item];
        }
        // 2ème cas: la phrase n'existe pas dans la langue choisie mais elle existe en FR
        elseif(isset($phrase["fr"][$item]))
        {
            $res = $phrase["fr"][$item];
        }
        // 3ème cas: la phrase n'existe ni dans la langue choisie ni en français
        else
        {
            $res = "";
        }

    // AFFICHE le résultat
    return $res;
}

/*
Nom: obtenir_theme
But: Renvoie le nom du thème utilisé à l'instant
Info: Guillaume Florimond, 01/01/2007
*/
function obtenir_theme()
{
    global $_config;

    if(isset($_SESSION['theme_personnalise']) and $_SESSION['theme_personnalise'] == 1 and isset($_SESSION['theme']))
    {
        return $_SESSION['theme'];
    }
    else
    {
        return $_config['theme'];
    }
}

/*
Nom: definir_theme
But: Définit un thème personnalisé pour l'utilisateur, qui dure le temps de la session
Info: Guillaume Florimond, 01/01/2007
*/
function definir_theme($theme)
{
    /* Correction bug - 03/01/07: les changements de thème ne sont pas pris en compte après rafraichissement de la page */

    /* Etrangement, chez Celeonet, écraser l'ancienne valeur de $_SESSION["theme"] par une nouvelle valeur ne suffit pas. Cela l'écrase sur le moment, mais au prochain appel de $_SESSION["theme"], c'est la valeur d'origine qui sera retournée ! Pour éviter cela, il faut utiliser la fonction unset() qui supprime réellement l'entrée dans le tableau $_SESSION, pour laisser la place à une nouvelle entrée. */
    unset($_SESSION['theme']);
    unset($_SESSION['theme_personnalise']);

    $_SESSION['theme'] = $theme;
    $_SESSION['theme_personnalise'] = 1;
}

/*
Nom: parcourir_dossier
But: Renvoie le contenu d'un dossier du FTP sous forme de tableau, ou FALSE en cas d'erreur
Info: Guillaume Florimond, 01/01/2007
*/
function parcourir_dossier($chemin)
{
    if ($handle = opendir($chemin))
    {
        /* Indice pour remplir le tableau */
        $i = 0;
        /* Ceci est la bonne manière pour parcourir un dossier. */
        while (false !== ($fichier = readdir($handle)))
        {
            if ($fichier != "." // protège contre le répertoire supérieur
                and $fichier != ".." // protège contre le répertoire racine
                and $fichier{0} != ".") // protège contre les fichiers cachés unix (".file")
            {
                $contenu[$i] = $fichier;
                $i++;
            }
        }
       closedir($handle);
       return $contenu;
    }
    return false;
}

/*
Nom: changer_langue
But: Change la langue courante et l'enregistre dans la SESSION, en fonction du choix de l'utilisateur
Param: la langue en deux lettre: "fr" français, "es" espagnol, "en" anglais
Info: Guillaume Florimond, 01/01/2007
*/
function changer_langue($langue)
{
    // Protection pour ne pas appliquer une langue inconnue
    if($langue != "fr" and $langue != "es" and $langue != "en")
    {
        $langue = "fr";
    }

    $_SESSION["langue"] = $langue;
}

/*
Nom: abbr
But: Affiche le résultat de abbr2 - Argument: la chaîne dans le tableau $phrases
Info: Guillaume Florimond, 25/12/2006
*/
function abbr($c)
{
    echo abbr2($c);
}

/*
Nom: abbr2
But: Renvoie le code HTML qui contient le tooltip et le contenu à afficher.
Info: Guillaume Florimond, 25/12/2006
Dans le fichier de langue, créer deux entrées:
- $phrase["fr"]["x"]
- $phrase["fr"]["@x"]
L'argument $c doit être "x". La fonction renvoie alors "x" affiché sur la page et "@x" en tooltip.
*/
function abbr2($c)
{
    global $_config;
    if($_config['tooltips'] == 1)
    {
        return "<abbr title=\"".donner("@".$c)."\">".donner($c)."</abbr>";
    }
    else
    {
        return donner($c);
    }
}

/*
Nom: abbr3
But: Renvoie le code HTML qui contient le tooltip et le contenu à afficher.
Info: Guillaume Florimond, 25/12/2006
*/
function abbr3($contenu, $abbr)
{
    global $_config;
    if($_config['tooltips'] == 1)
    {
        return "<abbr title=\"$abbr\">$contenu</abbr>";
    }
    else
    {
        return $contenu;
    }
}

/*
Nom: promotion
But: Renvoie la date de début et de fin des études en fonction de la promotion (dans une phrase)
Info: Guillaume Florimond, 25/12/2006
*/
function promotion($promo)
{
    $fin = $promo;
    $debut = $promo-4;
    $res = donner('promo1')." $promo ".donner('promo2')." $debut ".donner('promo3')." $fin ".donner('promo4');
    return $res;
}

/*
Nom: convertir_date
But: Affiche d'une date du type 1900-01-01 sous la forme "1er janvier 1900"
Info: Guillaume Florimond, 16/12/2006
*/
function convertir_date($date)
{
    $dt = explode("-", $date);
    $j = $dt["2"]; // jour
    $m = $dt["1"]; // mois
    $a = $dt["0"]; // année

    // Convertir les jours sur 1 chiffre si nécessaire, p. ex. 03 janvier => 3 janvier
    switch($j)
    {
        case 01: $j = "1"; break;
        case 02: $j = "2"; break;
        case 03: $j = "3"; break;
        case 04: $j = "4"; break;
        case 05: $j = "5"; break;
        case 06: $j = "6"; break;
        case 07: $j = "7"; break;
        case 08: $j = "8"; break;
        case 09: $j = "9"; break;
        default;
    }

    // Modificateur éventuel pour le 1 => 1er janvier...
    if($j == 1) { $j = $j.donner("dt-1er"); }

    // Nommer les mois
    $m = donner($m);

    // Construire la date
    $sep = donner("dt-sep"); // séparateur de date, p. ex. "de" => "1 de enero de 1900"
    $res = $j." ".$sep." ".$m." ".$sep." ".$a;

    // Renvoyer
    return $res;
}

/*
Nom: formater_date
But: Convertit une date au format français vers le format MySQL: 01/02/2006 => 2006-02-01
Info: Guillaume Florimond, 10/04/2007
Param: $date: la date à convertir
    $vers_mysql: TRUE pour JJ/MM/AAAA => AAAA-MM-JJ ; FALSE pour AAAA-MM-JJ => JJ/MM/AAAA
ATTENTION: quand la langue est l'anglais, les dates sont affichées au format américain, MM/DD/YYYY
*/
function formater_date($date, $vers_mysql = true)
{
    // 1er cas: la langue est l'ANGLAIS, format US: MM/DD/YYYY
    if(isset($_SESSION["langue"]) and $_SESSION["langue"] == "en")
    {
        // MM/DD/YYYY => YYYY-MM-DD
        if($vers_mysql)
        {
            $pattern     = "`([0-9]{2})/([0-9]{2})/([0-9]{4})`";
            $replacement = "$3-$1-$2";
        }
        // YYYY-MM-DD => DD/MM/YYYY
        else
        {
            $pattern     = "`([0-9]{4})-([0-9]{2})-([0-9]{2})`";
            $replacement = "$2/$3/$1";
        }
    }

    // 2ème cas: la langue est FRANCAIS ou ESPAGNOl, format EUROPEEN: DD/MM/AAAA
    else
    {
        // JJ/MM/AAAA => AAAA-MM-JJ
        if($vers_mysql)
        {
            $pattern     = "`([0-9]{2})/([0-9]{2})/([0-9]{4})`";
            $replacement = "$3-$2-$1";
        }
        // AAAA-MM-JJ => JJ/MM/AAAA
        else
        {
            $pattern     = "`([0-9]{4})-([0-9]{2})-([0-9]{2})`";
            $replacement = "$3/$2/$1";
        }
    }

    return preg_replace($pattern, $replacement, $date);
}

/*
Nom: formater_nom
But: Convertit le nom de famille: FULANO => Fulano
Info: Guillaume Florimond, 17/12/2006
*/
function formater_nom($nom, $charset="UTF-8")
{
    // CASE_TITLE mets des majuscules à la première lettre de chaque mot
    // Avantage: les minuscules accentuées sont bien converties en majuscules accentuées.
    $nom = mb_convert_case($nom, MB_CASE_TITLE, $charset);
    return $nom;
}

/*
Nom: texte_vers_html
But: Convertir du texte brut en html *sécurisé* (p. ex. remplacer linebreak par <br />)
Info: Guillaume Florimond, 17/12/2006
*/
function texte_vers_html($texte)
{
    // Enlever tous les vilains tags
    global $html_allowed; // voir dans config.inc.php
    $texte = strip_tags($texte, $html_allowed);

    // Convertir les linebreak en <br />
    $texte = nl2br($texte);

    return $texte;
}

/*
Nom: html_vers_texte
But: Convertir du html en texte brut, SEULEMENT en ce qui concerne les <br /> !!
Info: Guillaume Florimond, 17/12/2006
*/
function html_vers_texte($html)
{
    // Convertir les <br /> en linebreak
    $html = str_replace("\r\n", "\n", $html);
    $html = str_replace("<br />\n", "\n", $html);

    // Convertir les entités
    $html = html_entity_decode($html);

    return $html;
}

/*
Nom: from_utf8
But: convertit une chaîne de texte provenant de la BDD de l'UTF-8 vers l'ISO-LATIN-1, afin de l'insérer dans le fichier PDF généré par FPDF (qui ne supporte pas l'UTF-8).
Info: Guillaume Florimond, 15/02/2013
*/
function from_utf8($str)
{
    if(function_exists('iconv'))
        return iconv('UTF-8', 'iso-8859-1', $str);
    else
        return utf8_decode($str);
}

/*
Nom: donner_latin1
But: Convertit le texte en ISO-8859-1 avant de le renvoyer.
Info: Guillaume Florimond, 15/02/2013
*/
function donner_latin1($str)
{
    return from_utf8(donner($str));
}


/*
Nom: connexion
But: Connexion à la base de données
Info: Guillaume Florimond, 9/12/2006
*/
function connexion()
{
    if(!checkauth()) return;
    global $_config;
    $db = mysql_connect($_config["host"], $_config["user"], $_config["passwd"]);
    mysql_select_db($_config["base"],$db);
    // Fix charset
    if (!function_exists('mysql_set_charset')) {
        mysql_query("set names utf8",$db);
    } else {
        mysql_set_charset('utf8', $db);
    }
}

/*
Nom: auth
But: Vérification du mot de passe soumis et connexion de l'utilisateur
Info: Guillaume Florimond, 9/12/2006
*/
function auth($passwd)
{
    global $_config;

    $db = mysql_connect($_config["host"], $_config["user"], $_config["passwd"]);
    mysql_select_db($_config["base"],$db);

    $sql = "SELECT pass FROM admin WHERE id=1;";
    $req = mysql_query($sql);
    $data = mysql_fetch_assoc($req) or die("Erreur");
    $passwd = sha1($passwd);

    //Hypothèse 1: identification correcte
    if($passwd == $data['pass'])
    {
        //Identification réussie
        $_SESSION['auth'] = 1;
        $_SESSION['mauvais_mdp'] = false;

    }
    //Hypothèse 2: identification incorrecte
    else
    {
        $_SESSION['mauvais_mdp'] = true;
    }
}

/*
Nom: checkauth
But: Vérifie si l'utilisateur est bien connecté avant de lui donner accès aux données
Info: Guillaume Florimond, 9/12/2006
*/
function checkauth()
{
    global $_config;
    if($_config['auth'] == 0)
    {
        return true;
    }

    if(isset($_SESSION['auth']) and $_SESSION['auth'] == 1)
    {
        return true;
    }
    else return false;
}

/*
Nom: adminauth
But: Authentification en tant qu'administrateur de l'annuaire
Info: Guillaume Florimond, 23/02/2007
*/
function adminauth($passwd)
{
    global $_config;

    $db = mysql_connect($_config["host"], $_config["user"], $_config["passwd"]);
    mysql_select_db($_config["base"],$db);

    $sql = "SELECT adminpass FROM admin WHERE id=1;";
    $req = mysql_query($sql);
    $data = mysql_fetch_assoc($req) or die("Erreur");
    $passwd = sha1($passwd);

    //Hypothèse 1: identification correcte
    if($passwd == $data['adminpass'])
    {
        //Identification réussie
        $_SESSION['isadmin'] = 1;
        $_SESSION['auth'] = 1;
        $_SESSION['mauvais_mdp'] = false;

    }
    //Hypothèse 2: identification incorrecte
    else
    {
        $_SESSION['mauvais_mdp'] = true;
    }
}

/*
Nom: isadmin
But: Renvoie TRUE si l'utilisateur est administrateur, FALSE dans le cas contraire
Info: Guillaume Florimond, 23/02/2007
*/
function isadmin()
{
    if(isset($_SESSION['isadmin']) and $_SESSION['isadmin'] == 1)
        return true;
    else
        return false;
}

/*
Nom: ajouter
But: Ajoute une fiche à la base de données
Info: Guillaume Florimond, 9/12/2006
*/
function ajouter($post)
{
    connexion();

    /* Collecte des données depuis le formulaire */
    /* Cela permettra de manipuler ces données, p. ex. pour contrôler leur conformité */
    $data["nom"] = addslashes(texte_vers_html(formater_nom($post["nom"])));
    $data["prenom"] = addslashes(texte_vers_html(formater_nom($post["prenom"])));
    $data["promotion"] = addslashes(texte_vers_html($post["promotion"]));
    $data["nationalite"] = addslashes(texte_vers_html($post["nationalite"]));
    $data["naissance"] = addslashes(texte_vers_html(formater_date($post["naissance"])));
    $data["adresse"] = addslashes(texte_vers_html($post["adresse"]));
    $data["email"] = addslashes(texte_vers_html($post["email"]));

    $data["q1"] = addslashes(texte_vers_html($post["q1"]));
    $data["q2"] = addslashes(texte_vers_html($post["q2"]));
    $data["q3"] = addslashes(texte_vers_html($post["q3"]));
    $data["q4"] = addslashes(texte_vers_html($post["q4"]));
    $data["q5"] = addslashes(texte_vers_html($post["q5"]));
    $data["q6"] = addslashes(texte_vers_html($post["q6"]));
    $data["q7"] = addslashes(texte_vers_html($post["q7"]));

    $data["secret_question"] = addslashes($post["secret_question"]);
    $data["secret_reponse"] = sha1($post["secret_reponse"]);

    /* Système anti-doublons */
    $sql = "SELECT id FROM utilisateur WHERE nom='".$data["nom"]."' AND prenom='".$data["prenom"]."'";
    $req = mysql_query($sql) or die("Erreur: $sql<br />".mysql_error());
    $res = mysql_num_rows($req);
    if($res!=0) { message("doublon"); return "erreur"; }

    /* Le champ "modif" représente la date de la dernière modification de la fiche, aujourd'hui*/
    $modif = date("Y-m-d");

    /* Formulation de la requête */
    $sql = "INSERT INTO utilisateur (nom, prenom, promotion, nationalite, naissance, adresse, email, q1, q2, q3, q4, q5, q6, q7, secret_question, secret_reponse, modif) VALUES ('".$data["nom"]."', '".$data["prenom"]."', '".$data["promotion"]."', '".$data["nationalite"]."', '".$data["naissance"]."', '".$data["adresse"]."', '".$data["email"]."', '".$data["q1"]."', '".$data["q2"]."', '".$data["q3"]."', '".$data["q4"]."', '".$data["q5"]."', '".$data["q6"]."', '".$data["q7"]."', '".$data["secret_question"]."', '".$data["secret_reponse"]."', '$modif');";

    /* Exécution de la requête */
    mysql_query($sql) or die ("Erreur: $sql<br />".mysql_error());

    /* Message ok */
    message("enre");

    /* Récupération de l'id de l'enregistrement créé */
    $sql = "SELECT id FROM utilisateur ORDER BY id DESC";
    $req = mysql_query($sql);
    while($data = mysql_fetch_assoc($req))
        //echo "id = ".$data['id'];
        return $data['id'];
}

function ajouter_photo($_UPLOADED_UPLOADED_FILES,$id)
{
    global $_config;

    @list($width, $height, $imgtype, $strtag) = getimagesize($_UPLOADED_UPLOADED_FILES['image']['tmp_name']);

    switch($imgtype)
    {
        case 1: $ext = 'gif'; break;
        case 2: $ext = 'jpg'; break;
        case 3: $ext = 'png'; break;
        default: $ext = false; break;
    }

    if(!$ext) // unknown file format
        die(dire("photo1"));

    // Stockage des photos dans la base de données
    if($_config["photos_storage"] == "DB") {
        $imgdata = file_get_contents($_UPLOADED_UPLOADED_FILES['image']['tmp_name']);
        $imgdata = addslashes($imgdata); // mysql_real_escape_string seems broken on some configurations...
        //Insérer dans la bdd
        connexion();
        $sql = "INSERT INTO photo SET id='', user_id='$id', photo='$imgdata', extension='$ext', height='$height', width='$width'";
        @mysql_query($sql);
    }
    // Stockage des photos dans le système de fichiers
    else {
        // Stockage
        // Le nom du fichier est : user_id.extension (i.e. 66.png)
        $destination = $_config['data_folder']."/photos/$id.$ext";
        move_uploaded_file($_FILES['image']['tmp_name'], $destination);
        // Créer un lien vers ce fichier dans la BDD
        connexion();
        $sql = "INSERT INTO photo SET id='', user_id='$id', photo='', extension='$ext', height='$height', width='$width'";
        @mysql_query($sql);
    }

}

/*
Nom: modifier
But: Modifie une fiche de la base de données
Info: Guillaume Florimond, 9/12/2006
*/
function modifier($post)
{
    connexion();
    /* Collecte des données depuis le formulaire */
    /* Cela permettra de manipuler ces données, p. ex. pour contrôler leur conformité */
    $id = $post["id"];
    $data["nom"] = addslashes(texte_vers_html(formater_nom($post["nom"])));
    $data["prenom"] = addslashes(texte_vers_html(formater_nom($post["prenom"])));
    $data["promotion"] = addslashes(texte_vers_html($post["promotion"]));
    $data["nationalite"] = addslashes(texte_vers_html($post["nationalite"]));
    $data["naissance"] = addslashes(texte_vers_html(formater_date($post["naissance"])));
    $data["adresse"] = addslashes(texte_vers_html($post["adresse"]));
    $data["email"] = addslashes(texte_vers_html($post["email"]));

    $data["q1"] = addslashes(texte_vers_html($post["q1"]));
    $data["q2"] = addslashes(texte_vers_html($post["q2"]));
    $data["q3"] = addslashes(texte_vers_html($post["q3"]));
    $data["q4"] = addslashes(texte_vers_html($post["q4"]));
    $data["q5"] = addslashes(texte_vers_html($post["q5"]));
    $data["q6"] = addslashes(texte_vers_html($post["q6"]));
    $data["q7"] = addslashes(texte_vers_html($post["q7"]));

    /* Si l'utilisateur est administrateur on passe, sinon on teste la réponse secrete*/
    if(!isadmin())
    {
        /* On vérifie que la réponse secrète correspond à celle stockée dans la bdd */
        $sql = "SELECT secret_reponse FROM utilisateur WHERE id='$id'";
        $req = mysql_query($sql) or die('Erreur');
        $dat = mysql_fetch_assoc($req);
        if($dat["secret_reponse"] != sha1($post["secret_reponse"]))
        {
            message("sr");
            return; // Si cela ne correspond pas, on sort. Sinon, on continue.
        }
    }

    /* Le champ "modif" représente la date de la dernière modification de la fiche, aujourd'hui*/
    $modif = date("Y-m-d");

    /* Formulation de la requête */
    $sql = "UPDATE utilisateur SET"
            ." nom='".$data["nom"]."',"
            ." prenom='".$data["prenom"]."',"
            ." promotion='".$data["promotion"]."',"
            ." nationalite='".$data["nationalite"]."',"
            ." naissance='".$data["naissance"]."',"
            ." adresse='".$data["adresse"]."',"
            ." email='".$data["email"]."',"
            ." q1='".$data["q1"]."',"
            ." q2='".$data["q2"]."',"
            ." q3='".$data["q3"]."',"
            ." q4='".$data["q4"]."',"
            ." q5='".$data["q5"]."',"
            ." q6='".$data["q6"]."',"
            ." q7='".$data["q7"]."',"
            ." modif='$modif'"
            ." WHERE id='$id';";

    /* Exécution de la requête */
    mysql_query($sql) or die ("Erreur: ".$sql);
}

function modifier_photo($_UPLOADED_FILES,$id)
{
    global $_config;

    if(empty($_UPLOADED_FILES['image']['tmp_name'])) return;

    @list($width, $height, $imgtype, $strtag) = getimagesize($_UPLOADED_FILES['image']['tmp_name']);

    switch($imgtype)
    {
        case 1: $ext = 'gif'; break;
        case 2: $ext = 'jpg'; break;
        case 3: $ext = 'png'; break;
        default: $ext = false; break;
    }

    if(!$ext) // unknown file format
        die(dire('photo1'));

    /* Opérations sur la bdd */
    connexion();

    // Rechercher si la photo existe déjà
    $sql = "SELECT * FROM photo WHERE user_id='$id'";
    $num = mysql_num_rows(mysql_query($sql));
    // Si elle existe, la supprimer
    if($num)
    {
        $sql = "DELETE FROM photo WHERE user_id='$id'";
        @mysql_query($sql);
    }

    // Stockage des photos dans la base de données
    if($_config["photos_storage"] == "DB") {
        $imgdata = file_get_contents($_UPLOADED_FILES['image']['tmp_name']);
        $imgdata = addslashes($imgdata); // mysql_real_escape_string seems broken on some configurations...
        // Ajouter ensuite la photo
        $sql = "INSERT INTO photo SET id='', user_id='$id', photo='$imgdata', extension='$ext', height='$height', width='$width'";
        @mysql_query($sql);
    }
    // Stockage des photos dans le système de fichiers
    else {
        // Stockage
        // Le nom du fichier est : user_id.extension (i.e. 66.png)
        $destination = $_config['data_folder']."/photos/$id.$ext";
        move_uploaded_file($_FILES['image']['tmp_name'], $destination);
        // Créer un lien vers ce fichier dans la BDD
        $sql = "INSERT INTO photo SET id='', user_id='$id', photo='', extension='$ext', height='$height', width='$width'";
        @mysql_query($sql);
    }

}

/*
Nom: supprimer
But: Supprime une fiche de la base de données
Info: Guillaume Florimond, 17/12/2006
*/
function supprimer($id)
{
    connexion();
    $sql = "DELETE FROM utilisateur WHERE id=$id;";
    mysql_query($sql) or die('Erreur');
}
?>
Back to Top