Clean Master for Merge
continuous-integration/drone/push Build is failing Details

pull/19/head
tomivt 6 months ago
parent de7487f001
commit d23bb7bb31

BIN
.DS_Store vendored

Binary file not shown.

@ -1,7 +0,0 @@
{
"files.associations": {
"stdio.h": "c",
"stdbool.h": "c",
"tp2.h": "c"
}
}

@ -1,2 +0,0 @@
# WikiFantasyWeb

@ -1,372 +0,0 @@
Dans le monde il ny a pas dun côté le bien et le mal, il y a une part de lumière et dombre en chacun de nous. Ce qui compte cest celle que lon choisit de montrer dans nos actes, ça cest ce que lon est vraiment.; Harry Potter et Lordre du Phoenix; Sirius Black; 2001; https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137&h=195&c=7&r=0&o=5&pid=1.7
Il faut du courage pour affronter ses ennemis mais il en faut encore plus pour affronter ses amis…; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Ce ne sont pas vos ressemblances qui comptent Harry, ce sont vos différences.; Harry Potter et Lordre du Phoenix; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Le problème, cest que les humains ont un don pour désirer ce qui leur fait le plus de mal.; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Ce dont vous avez le plus peur est la peur elle-même, cest une preuve de sagesse.; Harry Potter et le prisonnier dAzkaban; Remus Lupin; 2001; https://tse1.mm.bing.net/th/id/OIP.01EekTJQq0yQ9QQ_aNq87gHaJ-?w=162&h=218&c=7&r=0&o=5&pid=1.7
Jai tout appris dans les livres. Mais il y a des choses beaucoup plus importantes, le courage, lamitié.; Harry Potter à lécole des sorciers; Hermione; 2001; https://tse2.mm.bing.net/th/id/OPEC.aBKNyvpNlyyj9g474C474?w=186&h=241&o=5&pid=1.7
Tout est possible du moment quon a assez de cran.; Harry Potter et Lordre du Phoenix; Ginny Weasley; 2001; https://tse3.mm.bing.net/th/id/OIP.QwHMbOI-N9zfJ_Re9I65ggHaJ1?w=140&h=187&c=7&r=0&o=5&pid=1.7
Ça ne fait pas grand bien de sinstaller dans les rêves en oubliant de vivre…; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Nous avons parié, mon père et moi. Je ne crois pas que tu tiendras dix minutes dans ce tournoi. Lui, il nest pas daccord, il croit que tu nen tiendras pas cinq.; Harry Potter et la coupe de feu; Drago Malefoy; 2001; https://tse2.mm.bing.net/th/id/OIP.CthWIxuLm0a8THOguTDB_AAAAA?w=157&h=207&c=7&r=0&o=5&pid=1.7
Cest de la force des convictions que dépend la réussite, pas du nombre des partisans.; Harry Potter et les reliques de la mort - 2e partie; Remus Lupin; 2001; https://tse1.mm.bing.net/th/id/OIP.01EekTJQq0yQ9QQ_aNq87gHaJ-?w=162&h=218&c=7&r=0&o=5&pid=1.7
Je me fiche éperdument de ce que pense ton père, Malefoy. Il est vil et cruel. Et toi, tu es pathétique.; Harry Potter et la coupe de feu; Harry; 2001; https://tse3.mm.bing.net/th/id/OIP.IV9gltTWHTVtnezyCVXjwAHaJ4?w=120&h=180&c=7&r=0&o=5&pid=1.7
Jai lu dans ton cœur, et ton cœur est mien.; Harry Potter et les reliques de la mort - 1re partie; Lord Voldemort; 2001; https://tse2.mm.bing.net/th/id/OIP.B9RbuWnpmV-7fI8v-H0G8gHaEK?w=290&h=180&c=7&r=0&o=5&pid=1.7
Dans le monde il ny a pas dun côté le bien et le mal, il y a une part de lumière et dombre en chacun de nous. Ce qui compte cest celle que lon choisit de montrer dans nos actes, ça cest ce que lon est vraiment.; Harry Potter et Lordre du Phoenix; Sirius Black; 2001; https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137&h=195&c=7&r=0&o=5&pid=1.7
Il faut du courage pour affronter ses ennemis mais il en faut encore plus pour affronter ses amis…; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Ce ne sont pas nos capacités qui déterminent ce que nous sommes, Harry, ce sont nos choix !; Harry Potter et la chambre des secrets; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Ce ne sont pas vos ressemblances qui comptent Harry, ce sont vos différences.; Harry Potter et Lordre du Phoenix; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Le problème, cest que les humains ont un don pour désirer ce qui leur fait le plus de mal.; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Ce dont vous avez le plus peur est la peur elle-même, cest une preuve de sagesse.; Harry Potter et le prisonnier dAzkaban; Remus Lupin; 2001; https://tse1.mm.bing.net/th/id/OIP.01EekTJQq0yQ9QQ_aNq87gHaJ-?w=162&h=218&c=7&r=0&o=5&pid=1.7
Jai tout appris dans les livres. Mais il y a des choses beaucoup plus importantes, le courage, lamitié.; Harry Potter à lécole des sorciers; Hermione; 2001; https://tse1.mm.bing.net/th/id/OIP.DNVVrGRcxyoXfy8Nqn4DnwHaJ4?w=194&h=259&c=7&r=0&o=5&pid=1.7
Tout est possible du moment quon a assez de cran.; Harry Potter et Lordre du Phoenix; Ginny Weasley; 2001; https://tse3.mm.bing.net/th/id/OIP.QwHMbOI-N9zfJ_Re9I65ggHaJ1?w=140&h=187&c=7&r=0&o=5&pid=1.7
Ça ne fait pas grand bien de sinstaller dans les rêves en oubliant de vivre…; Harry Potter à lécole des sorciers; Dumbledore; 2001; https://tse4.mm.bing.net/th/id/OIP.3i5U6ihAOUsTFvLLT-RKtAHaJd?w=68&h=180&c=7&r=0&o=5&pid=1.7
Nous avons parié, mon père et moi. Je ne crois pas que tu tiendras dix minutes dans ce tournoi. Lui, il nest pas daccord, il croit que tu nen tiendras pas cinq.; Harry Potter et la coupe de feu; Drago Malefoy; 2001; https://tse2.mm.bing.net/th/id/OIP.CthWIxuLm0a8THOguTDB_AAAAA?w=157&h=207&c=7&r=0&o=5&pid=1.7
Cest de la force des convictions que dépend la réussite, pas du nombre des partisans.; Harry Potter et les reliques de la mort - 2e partie; Remus Lupin; 2001; https://tse1.mm.bing.net/th/id/OIP.01EekTJQq0yQ9QQ_aNq87gHaJ-?w=162&h=218&c=7&r=0&o=5&pid=1.7
Je me fiche éperdument de ce que pense ton père, Malefoy. Il est vil et cruel. Et toi, tu es pathétique.; Harry Potter et la coupe de feu; Harry; 2001; https://tse3.mm.bing.net/th/id/OIP.IV9gltTWHTVtnezyCVXjwAHaJ4?w=120&h=180&c=7&r=0&o=5&pid=1.7
Jai lu dans ton cœur, et ton cœur est mien.; Harry Potter et les reliques de la mort - 1re partie; Lord Voldemort; 2001; https://tse2.mm.bing.net/th/id/OIP.B9RbuWnpmV-7fI8v-H0G8gHaEK?w=290&h=180&c=7&r=0&o=5&pid=1.7
Nessaie pas ! Fais-le, ou ne le fais pas ! Il ny a pas dessai.; Star Wars : Episode 5 - Lempire contre-attaque; Yoda; 1977; https://tse4.mm.bing.net/th/id/OIP.n7EwvRfr2000cw-wPd84BwHaEo?w=244&h=180&c=7&r=0&o=5&pid=1.7
Que la Force soit avec toi…; Star Wars : Episode 4 - Un nouvel espoir; Obi-Wan; 1977; https://tse3.mm.bing.net/th/id/OIP.J7Kmtok0f2mQT7iX_JA_5QHaE8?w=218&h=180&c=7&r=0&o=5&pid=1.7
Je suis ton père.; Star Wars : Episode 5 - Lempire contre-attaque; Dark Vador; 1977; https://tse3.mm.bing.net/th/id/OIP.r0YMrIo2bkQFbcmZLdrVVAHaEK?w=294&h=180&c=7&r=0&o=5&pid=1.7
La prophétie voulait que tu détruises les Sith pas que tu deviennes comme eux !; Star Wars : Episode 3 - La revanche des sith; Obi-Wan; 1977; https://tse3.mm.bing.net/th/id/OIP.J7Kmtok0f2mQT7iX_JA_5QHaE8?w=218&h=180&c=7&r=0&o=5&pid=1.7
Il y en a toujours un pour manger lautre !; Star Wars : Episode 1 - La menace fantôme; Qui-Gon Jinn; 1977; https://tse2.mm.bing.net/th/id/OIP.oZP8cTT95_4nR6VK5uB7QgHaKH?w=133&h=183&c=7&r=0&o=5&pid=1.7
Qui est le plus fou des deux, le fou ou le fou qui le suit ?; Star Wars : Episode 4 - Un nouvel espoir; Obi-Wan; 1977; https://tse3.mm.bing.net/th/id/OIP.J7Kmtok0f2mQT7iX_JA_5QHaE8?w=218&h=180&c=7&r=0&o=5&pid=1.7
Sil y a un point central dans cet univers, tu es sur la planète qui en est le plus éloigné…; Star Wars : Episode 4 - Un nouvel espoir; Luke; 1977; https://tse2.mm.bing.net/th/id/OIP.N2JpjF9aPxvz9vZYEOjc2QHaFj?w=177&h=180&c=7&r=0&o=5&pid=1.7
Si cest pour largent que vous faites ça, alors cest tout ce que vous recevrez !; Star Wars : Episode 4 - Un nouvel espoir; Leia; 1977; https://tse2.mm.bing.net/th/id/OIP.P5CMgdStIPfYvfNky4Kh7QHaLF?w=115&h=180&c=7&r=0&o=5&pid=1.7
Je sais ce quil faut que je fasse mais je ne sais pas si jen aurai la force.; Star Wars : Episode 7 - Le réveil de la force; Kylo Ren; 1977; https://tse1.mm.bing.net/th/id/OIP.HlRkAcz7BjIBsRU59L4owAHaHa?w=149&h=180&c=7&r=0&o=5&pid=1.7
La mort est une partie naturelle de la vie.; Star Wars : Episode 3 - La revanche des sith; Yoda; 1977; https://tse4.mm.bing.net/th/id/OIP.n7EwvRfr2000cw-wPd84BwHaEo?w=244&h=180&c=7&r=0&o=5&pid=1.7
Votre manque de foi me consterne.; Star Wars : Episode 4 - Un nouvel espoir; Dark Vador; 1977; https://tse3.mm.bing.net/th/id/OIP.r0YMrIo2bkQFbcmZLdrVVAHaEK?w=294&h=180&c=7&r=0&o=5&pid=1.7
Il ne faut jamais sous-estimer un droïde.; Star Wars : Episode 9 - L'ascension de Skywalker; Leia; 1977; https://tse2.mm.bing.net/th/id/OIP.P5CMgdStIPfYvfNky4Kh7QHaLF?w=115&h=180&c=7&r=0&o=5&pid=1.7
Tu as peur de ne jamais être aussi fort que Dark Vador.; Star Wars : Episode 7 - Le réveil de la force; Rey; 1977; https://tse3.mm.bing.net/th/id/OIP.pPDkRAfYT1rldQW1FRuxaAHaJQ?w=123&h=180&c=7&r=0&o=5&pid=1.7
Vous ne passerez pas !; Le seigneur des anneaux : la communauté de lanneau; Gandalf; 2001; https://tse2.mm.bing.net/th/id/OIP.ztKYa5HLhCKgVkY0GZ4rSAHaJ4?w=71&h=180&c=7&r=0&o=5&pid=1.7
Il y a du bon dans ce monde, et il faut se battre pour cela.; Le seigneur des anneaux : la communauté de lanneau; Sam; 2001; https://tse4.mm.bing.net/th/id/OIP.edxwKxyoPXfV7_DSTeerFAHaHa?w=180&h=180&c=7&r=0&o=5&pid=1.7
Je ne vous dirais pas de ne pas pleurer car toutes les larmes ne sont pas un mal.; Le Seigneur des anneaux : le retour du roi; Gandalf; 2001; https://tse2.mm.bing.net/th/id/OIP.ztKYa5HLhCKgVkY0GZ4rSAHaJ4?w=71&h=180&c=7&r=0&o=5&pid=1.7
Je ne peux le porter pour vous, mais je peux vous porter vous !; Le Seigneur des anneaux : le retour du roi; Sam; 2001; https://tse4.mm.bing.net/th/id/OIP.edxwKxyoPXfV7_DSTeerFAHaHa?w=180&h=180&c=7&r=0&o=5&pid=1.7
Et bien, cest plus gai dans un cimetière…; Le seigneur des anneaux : les deux tours; Gimli; 2001; https://tse1.mm.bing.net/th/id/OIP.RzN-g8st6li9R5HA3IIrQgHaF3?w=215&h=180&c=7&r=0&o=5&pid=1.7
Mon précieux.; Le seigneur des anneaux : la communauté de lanneau; Gollum; 2001; https://tse2.mm.bing.net/th/id/OIP.s8Egh2FBsKGr6QdkdWEPnwHaE6?w=212&h=180&c=7&r=0&o=5&pid=1.7
Je vous aurais suivi mon frère, mon capitaine, mon roi.; Le seigneur des anneaux : la communauté de lanneau; Boromir; 2001; https://tse1.mm.bing.net/th/id/OIP._uHLsNbgnf1m1vK3ZWE2UAHaEo?w=217&h=180&c=7&r=0&o=5&pid=1.7
On nous a envoyé sauver la Comté Sam, et elle a été sauvée. Mais, pas pour moi…; Le Seigneur des anneaux : le retour du roi; Frodon; 2001; https://tse2.mm.bing.net/th/id/OIP.PPIESqZaNDa-qUcfSDXhdQHaGK?w=210&h=180&c=7&r=0&o=5&pid=1.7
Et mon arc est vôtre !; Le seigneur des anneaux : la communauté de lanneau; Legolas; 2001; https://tse1.mm.bing.net/th/id/OIP.-8TP3nkEc30yCD1PolGRbQHaJW?w=194&h=245&c=7&r=0&o=5&pid=1.7
Toutes les larmes ne sont pas un mal.; Le Seigneur des anneaux : le retour du roi; Gandalf; 2001; https://tse2.mm.bing.net/th/id/OIP.ztKYa5HLhCKgVkY0GZ4rSAHaJ4?w=71&h=180&c=7&r=0&o=5&pid=1.7
Je suis Gandhalf le blanc, et je reviens vers vous en ce moment décisif.; Le seigneur des anneaux : les deux tours; Gandalf; 2001; https://tse2.mm.bing.net/th/id/OIP.ztKYa5HLhCKgVkY0GZ4rSAHaJ4?w=71&h=180&c=7&r=0&o=5&pid=1.7
Tout ce que nous avons à décider, cest ce que nous devons faire du temps qui nous est imparti.; Le seigneur des anneaux : la communauté de lanneau; Gandalf; 2001; https://tse2.mm.bing.net/th/id/OIP.ztKYa5HLhCKgVkY0GZ4rSAHaJ4?w=71&h=180&c=7&r=0&o=5&pid=1.7
Si par ma vie ou ma mort je peux vous protéger je le ferai !
Mon épée est votre !; Le seigneur des anneaux : la communauté de lanneau; Aragorn; 2001; https://tse1.mm.bing.net/th/id/OIP.GQ9p5tZGZBKv3fURChVROwE7DG?w=260&h=180&c=7&r=0&o=5&pid=1.7
Pour Frodon.; Le Seigneur des anneaux : le retour du roi; Aragorn; 2001; https://tse1.mm.bing.net/th/id/OIP.GQ9p5tZGZBKv3fURChVROwE7DG?w=260&h=180&c=7&r=0&o=5&pid=1.7
Mes amis… ce nest pas à vous de vous incliner.; Le Seigneur des anneaux : le retour du roi; Aragorn; 2001; https://tse1.mm.bing.net/th/id/OIP.GQ9p5tZGZBKv3fURChVROwE7DG?w=260&h=180&c=7&r=0&o=5&pid=1.7
Si Dieu est tout puissant, alors il ne peut pas être tout bienfaisant. Et sil est tout bienfaisant, cest quil ne peut pas être tout puissant.; Batman v Superman : laube de la justice; Lex Luthor; 1989; https://tse3.mm.bing.net/th/id/OIP.S4q6m2na1Rxkc7xZ1lcfKQHaJe?w=135&h=180&c=7&r=0&o=5&pid=1.7
Je ne vais pas vous tuer… mais rien ne moblige à vous sauver.; Batman begins; Batman; 1989; https://tse1.mm.bing.net/th/id/OIP.k-xCm-NCW6Dxah3T2FlcFQHaEK?w=326&h=183&c=7&r=0&o=5&pid=1.7
Ne compte pas me mettre au frais !; Batman & Robin; Mr. Freeze; 1989; https://tse1.mm.bing.net/th/id/OIP.c5hOJMCbBn2CugR3e1ltNQHaIh?w=194&h=223&c=7&r=0&o=5&pid=1.7
Que la farce soit avec toi.; Batman, la série animée; le Joker; 1989; https://tse2.mm.bing.net/th/id/OIP.RrJkua2jY_o24eUG7wmk8QHaE-?w=232&h=180&c=7&r=0&o=5&pid=1.7
Tu sais, si tas lintention de voler des voitures, te déguises pas en voleur de voitures.; The Amazing Spider-Man; Peter Parker; 2002; https://tse1.mm.bing.net/th/id/OIP.OpPUQy_RrqL5sMd_KR7D8gHaD4?w=283&h=180&c=7&r=0&o=5&pid=1.7
Ne texcuse jamais dêtre le plus malin de la bande.; Spider-Man : Far From Home; Quentin Beck; 2002; https://tse4.mm.bing.net/th/id/OIP._ROT4QN7TDwCQHn6OLEswAHaEK?w=299&h=180&c=7&r=0&o=5&pid=1.7
Tu en fais trop : les études, le boulot, tout le temps que tu passes avec moi… Tu nes pas Superman tu sais !; Spider-Man; May Parker; 2002; https://tse1.mm.bing.net/th/id/OIP.Fzb2IGNnUPn1wc_ne1cqgAHaL2?w=119&h=191&c=7&r=0&o=5&pid=1.7
Jarvis, il faut parfois savoir courir avant de savoir marcher.; Iron Man; Tony Stark; 2008; https://tse2.mm.bing.net/th/id/OIP.s4nqc0QluImn7arGZTfurQHaI7?w=131&h=180&c=7&r=0&o=5&pid=1.7
Les records sont fait pour être battus !; Iron Man; Tony Stark; 2008; https://tse2.mm.bing.net/th/id/OIP.s4nqc0QluImn7arGZTfurQHaI7?w=131&h=180&c=7&r=0&o=5&pid=1.7
Absorbez la pression, ne me la transmettez pas.; Iron Man; Tony Stark; 2008; https://tse2.mm.bing.net/th/id/OIP.s4nqc0QluImn7arGZTfurQHaI7?w=131&h=180&c=7&r=0&o=5&pid=1.7
Cest comme dans un rêve.; Iron Man; Tony Stark; 2008; https://tse2.mm.bing.net/th/id/OIP.s4nqc0QluImn7arGZTfurQHaI7?w=131&h=180&c=7&r=0&o=5&pid=1.7
La merde se crée toute seule, je ne fais que la remuer.; Deadpool; Wade / Deadpool; 2016; https://tse3.mm.bing.net/th/id/OIP.wYPg61JNUvsouPzwUhr0-QHaHa?w=162&h=180&c=7&r=0&o=5&pid=1.7
µ; Je parie que Vulverine en a une jolie paire dans son slip kangourou.; Deadpool; Wade / Deadpool; 2016; https://tse3.mm.bing.net/th/id/OIP.wYPg61JNUvsouPzwUhr0-QHaHa?w=162&h=180&c=7&r=0&o=5&pid=1.7
La plupart des gens sont condamnés à ne jamais rien voir au delà de ce que leurs yeux leur disent…; X-men 2; Kurt Wagner; 2000; https://tse3.mm.bing.net/th/id/OIP.hyDe8SvEEvDhmKfsQBqWEwHaJ8?w=194&h=261&c=7&r=0&o=5&pid=1.7
Disons que je suis le monstre de Frankenstein, et que je cherche mon créateur.; X-Men : Le commencement; Magneto; 2000; https://tse2.mm.bing.net/th/id/OIP.7eXM4Na7unM6BWLJcapqVwHaJ4?w=194&h=259&c=7&r=0&o=5&pid=1.7
Tu vaux tellement plus que ce que tu ne crois. Il ny a pas que la douleur, la colère, tu as du cœur aussi, je lai vu en toi. Ce nest pas quà moi que tu tournes le dos. Ici tu as une chance de faire partie dune chose beaucoup plus grande que toi, une chose qui a besoin de toi.; X-Men : Apocalypse; Professeur Charles Xavier; 2000; https://tse3.mm.bing.net/th/id/OIP.lDzxwo1weGaA-hRMfV6bYwHaGp?w=194&h=174&c=7&r=0&o=5&pid=1.7
Elle ne me laisse pas faire !; X-men 2; Kurt Wagner; 2000; https://tse3.mm.bing.net/th/id/OIP.hyDe8SvEEvDhmKfsQBqWEwHaJ8?w=194&h=261&c=7&r=0&o=5&pid=1.7
Si je suis venu, cest que je navais pas le choix. Je suis venu sauver mon monde, les personnes que jaime. Et je suis venu parce-que le trident est leur seul espoir. Et si ça suffit pas comme raison, tu peux aller te faire foutre.; Aquaman; Arthur; 2018; https://tse3.mm.bing.net/th/id/OIP.Vbj0KGYQt_M2kAZNEdX3lQHaLb?w=194&h=299&c=7&r=0&o=5&pid=1.7
Un homme qui ne passe pas de temps avec sa famille nest pas vraiment un homme.; Le parrain; Vito Corleone; 1972; https://tse2.mm.bing.net/th/id/OIP.jzIdpLlEe-MQogtqU8kAxAHaHa?w=149&h=180&c=7&r=0&o=5&pid=1.7
Il ne faut pas surestimer le pouvoir de pardonner.; Le Parrain, 3ème partie; Michael Corleone; 1972; https://tse2.mm.bing.net/th/id/OIP.2tQ82oaA3J3wmLyBBjrgWAHaJF?w=138&h=180&c=7&r=0&o=5&pid=1.7
Il ne faut pas que sa mère le voit dans cet état.; Le parrain; Vito Corleone; 1972; https://tse2.mm.bing.net/th/id/OIP.jzIdpLlEe-MQogtqU8kAxAHaHa?w=149&h=180&c=7&r=0&o=5&pid=1.7
Le pouvoir ça se donne pas ça se prend.; Le Parrain, 3ème partie; Michael Corleone; 1972; https://tse2.mm.bing.net/th/id/OIP.2tQ82oaA3J3wmLyBBjrgWAHaJF?w=138&h=180&c=7&r=0&o=5&pid=1.7
Ce qui ne me tue pas me rend plus… bizarre.; The Dark Knight: Le Chevalier noir; le Joker; 2008; https://tse4.mm.bing.net/th/id/OIP.FKM9RHVwmPE_eTQm6cvlbgHaLL?w=115&h=180&c=7&r=0&o=5&pid=1.7
Je suis comme un chien enragé qui court après une voiture, mais si jen attrape une je ne sais pas à quoi elle me serait utile.; The Dark Knight: Le Chevalier noir; le Joker; 2008; https://tse4.mm.bing.net/th/id/OIP.FKM9RHVwmPE_eTQm6cvlbgHaLL?w=115&h=180&c=7&r=0&o=5&pid=1.7
Bien le bonsoir, je suis lanimation de la soirée !; The Dark Knight: Le Chevalier noir; le Joker; 2008; https://tse4.mm.bing.net/th/id/OIP.FKM9RHVwmPE_eTQm6cvlbgHaLL?w=115&h=180&c=7&r=0&o=5&pid=1.7
Vous voyez ce stylo ? Je vais le faire disparaître *BIM*.
Et voila, il a disparu.; The Dark Knight: Le Chevalier noir; le Joker; 2008; https://tse4.mm.bing.net/th/id/OIP.FKM9RHVwmPE_eTQm6cvlbgHaLL?w=115&h=180&c=7&r=0&o=5&pid=1.7
Ce ne sont pas juste des rêves, ce sont des souvenirs et tu as dit de ne jamais utiliser des souvenirs !; Inception; Ariadne; 2010; https://tse2.mm.bing.net/th/id/OIP.xkBsnyA8BI1MgSGbQpFhOQAAAA?w=115&h=180&c=7&r=0&o=5&pid=1.7
Il ne suffit pas de se mettre une plume dans le cul pour ressembler à un coq.; Fight Club; Tyler; 1999; https://tse2.mm.bing.net/th/id/OIP.GKlbhFXb8PhWKTBgLYCRNAHaHX?w=176&h=180&c=7&r=0&o=5&pid=1.7
Je le considère comme un impôt sur la connerie.; Fight Club; Marla; 1999; https://tse4.mm.bing.net/th/id/OIP.nFqhuPIEX-oV0i8PWjC1DwHaEx?w=186&h=180&c=7&r=0&o=5&pid=1.7
Si javais vraiment une tumeur je la nommerais Marla… Marla, la petite écorchure quon a sur le palais et qui ne peut cicatriser que si on ne cesse de la lécher. Mais on ne peut pas.; Fight Club; le narrateur; 1999; https://tse4.mm.bing.net/th/id/OIP.OQFYbcxGZsFJlvLIT8jrLAHaDt?w=310&h=180&c=7&r=0&o=5&pid=1.7
Je veux que tu saches, au lieu den avoir peur, que tu saches que tu mourras un jour.; Fight Club; Tyler; 1999; https://tse2.mm.bing.net/th/id/OIP.GKlbhFXb8PhWKTBgLYCRNAHaHX?w=176&h=180&c=7&r=0&o=5&pid=1.7
Vous avez une sorte de désespoir hystérique dans votre rire.; Fight Club; Tyler; 1999; https://tse2.mm.bing.net/th/id/OIP.GKlbhFXb8PhWKTBgLYCRNAHaHX?w=176&h=180&c=7&r=0&o=5&pid=1.7
Je veux que tu me frappes aussi fort que tu peux.; Fight Club; Tyler; 1999; https://tse2.mm.bing.net/th/id/OIP.GKlbhFXb8PhWKTBgLYCRNAHaHX?w=176&h=180&c=7&r=0&o=5&pid=1.7
Je le sais, parce que Tyler le sait.; Fight Club; le narrateur; 1999; https://tse4.mm.bing.net/th/id/OIP.OQFYbcxGZsFJlvLIT8jrLAHaDt?w=310&h=180&c=7&r=0&o=5&pid=1.7
Je fabrique et je vends du savon, lobjet qui indique le degré de civilisation.; Fight Club; Tyler; 1999; https://tse2.mm.bing.net/th/id/OIP.GKlbhFXb8PhWKTBgLYCRNAHaHX?w=176&h=180&c=7&r=0&o=5&pid=1.7
Pas de peur, pas daffolement, et la faculté dignorer totalement ce qui est sans importance.; Fight Club; le narrateur; 1999; https://tse4.mm.bing.net/th/id/OIP.OQFYbcxGZsFJlvLIT8jrLAHaDt?w=310&h=180&c=7&r=0&o=5&pid=1.7
Si vous le voulez bien, on se taillera des pipes plus tard, les enfants.; Pulp Fiction; The Wolf; 1994; https://tse4.mm.bing.net/th/id/OIP.fc5TQflh0cbxB1GUeOdk6gHaK8?w=123&h=180&c=7&r=0&o=5&pid=1.7
Je fais le mort dans la 5e.; Pulp Fiction; Butch; 1994; https://tse1.mm.bing.net/th/id/OIP.luN_zVQJt2Kyf7H_kSrPyQHaJD?w=115&h=180&c=7&r=0&o=5&pid=1.7
Je courrais toujours pour aller partout, mais je ne pensais pas pour autant que ça allait me mener quelque part.; Forrest Gump; Forrest Gump; 1994; https://tse3.mm.bing.net/th/id/OIP.GT8e1PVP9IQvdn49uMVgeAHaE0?w=262&h=180&c=7&r=0&o=5&pid=1.7
Je ne sais pas si cest maman qui avait raison ou si cest le lieutenant Dan… Je sais pas si nous avons chacun un destin… ou si nous… si nous nous laissons porter par le hasard comme sur une brise… Mais je… je crois que cest peut-être un peu des deux… peut-être un peu des deux arrive en même temps.; Forrest Gump; Forrest Gump; 1994; https://tse3.mm.bing.net/th/id/OIP.GT8e1PVP9IQvdn49uMVgeAHaE0?w=262&h=180&c=7&r=0&o=5&pid=1.7
Vous ne croirez pas si je vous le disais, mais je cours comme souffle le vent. À partir de ce jour, dès que jallais quelque part, je le faisais en courant.; Forrest Gump; Forrest Gump; 1994; https://tse3.mm.bing.net/th/id/OIP.GT8e1PVP9IQvdn49uMVgeAHaE0?w=262&h=180&c=7&r=0&o=5&pid=1.7
Nous ne sommes pas ici parce que nous sommes libres, nous sommes ici parce que nous ne le sommes pas.; The Matrix Reloaded; Agent Smith; 1999; https://tse4.mm.bing.net/th/id/OIP.1mHiCYi8mwl6uzmVk0JZ3AHaJQ?w=141&h=180&c=7&r=0&o=5&pid=1.7
Tu prends la pilule bleue, lhistoire sarrête là, tu te réveilles dans ton lit, et tu crois ce que tu veux. Tu prends la pilule rouge, tu restes au Pays des Merveilles et je te montre jusquoù va le terrier.; Matrix; Morpheus; 1999; https://tse4.mm.bing.net/th/id/OIP.HHsnDYoQ9ZZwLthfRpMNugHaEL?w=291&h=180&c=7&r=0&o=5&pid=1.7
Le choix est une illusion créée entre ceux qui ont le pouvoir et ceux qui ne lont pas.; The Matrix Reloaded; le mérovingien; 1999; https://tse4.mm.bing.net/th/id/OIP.vku_hB1875k65Vxs1GKm_wAAAA?w=333&h=184&c=7&r=0&o=5&pid=1.7
Le pouvoir génétique est la force la plus terrible que la planète ait connu, mais vous la maniez comme un enfant qui a trouvé le flingue de son père !; Jurassic park; Ian Malcolm; 1993; https://tse1.mm.bing.net/th/id/OIP.H7i5IHvFUZl9DgyVtITn_wHaEK?w=296&h=180&c=7&r=0&o=5&pid=1.7
Il nous abandonne ! Il nous abandonne !; Jurassic park; Lex; 1993; https://tse4.mm.bing.net/th/id/OIP.ckCQ_jiHNatyzti0Fnq4PQHaED?w=317&h=180&c=7&r=0&o=5&pid=1.7
Ils se déplacent en troupeaux ! Ils se déplacent en troupeaux !; Jurassic park; Alan Grant; 1993; https://tse2.mm.bing.net/th/id/OIP.TJuWNCsibz8MVmhdNQEdMwHaE8?w=254&h=180&c=7&r=0&o=5&pid=1.7
Son acuité visuelle est basée sur le mouvement.; Jurassic park; Ian Malcolm; 1993; https://tse1.mm.bing.net/th/id/OIP.H7i5IHvFUZl9DgyVtITn_wHaEK?w=296&h=180&c=7&r=0&o=5&pid=1.7
Nous allons dans le seul endroit au monde où ce sont les oies qui vous chassent !; Le monde perdu; Ian Malcolm; 1993; https://tse1.mm.bing.net/th/id/OIP.H7i5IHvFUZl9DgyVtITn_wHaEK?w=296&h=180&c=7&r=0&o=5&pid=1.7
Ce que vous faites dans la vie résonne dans léternité.; Gladiator; Maximus; 2000; https://tse2.mm.bing.net/th/id/OIP.JfomwO3LzG6t7lsTTPtonAHaK7?w=117&h=180&c=7&r=0&o=5&pid=1.7
Le véritable cœur de Rome nest pas dans le marbre du Sénat, mais dans le sable du Colisée.; Gladiator; Sénateur Gracchus; 2000; https://tse3.mm.bing.net/th/id/OIP.v7fsQh9Sd5LytyVQoez3cwHaE2?w=194&h=127&c=7&r=0&o=5&pid=1.7
La boue sefface plus facilement que le sang.; Gladiator; Maximus; 2000; https://tse2.mm.bing.net/th/id/OIP.JfomwO3LzG6t7lsTTPtonAHaK7?w=117&h=180&c=7&r=0&o=5&pid=1.7
Mon nom est gladiator…; Gladiator; Maximus; 2000; https://tse2.mm.bing.net/th/id/OIP.JfomwO3LzG6t7lsTTPtonAHaK7?w=117&h=180&c=7&r=0&o=5&pid=1.7
Ils peuvent nous ôter la vie… Mais ils ne nous ôteront jamais notre liberté.; Braveheart; William Wallace; 1995; https://tse2.mm.bing.net/th/id/OIP.UICndeUgBDrka76aTOvAKQHaLH?w=147&h=220&c=7&r=0&o=5&pid=1.7
Ton cœur est libre, trouve le courage de le suivre.; Braveheart; Malcolm Wallace; 1995; https://tse2.mm.bing.net/th/id/OIP.7MO2w6ic7ik2arvdOTejHwHaLa?w=115&h=180&c=7&r=0&o=5&pid=1.7
Ils se battirent en guerrier et en poète. Ils se battirent en écossais et gagnèrent leur liberté.; Braveheart; William Wallace; 1995; https://tse2.mm.bing.net/th/id/OIP.UICndeUgBDrka76aTOvAKQHaLH?w=147&h=220&c=7&r=0&o=5&pid=1.7
Il les a tuées avec leur amour. Cest comme ça tous les jours dans le monde entier.; La Ligne Verte; John Coffey; 1999; https://tse4.mm.bing.net/th/id/OIP.loqNhw71Vk_C-TiyWQJoKAHaKK?w=95&h=180&c=7&r=0&o=5&pid=1.7
On ne peut pas cacher ce quon a dans son cœur.; La Ligne Verte; John Coffey; 1999; https://tse4.mm.bing.net/th/id/OIP.loqNhw71Vk_C-TiyWQJoKAHaKK?w=95&h=180&c=7&r=0&o=5&pid=1.7
Cest comme si javais des bouts de verres dans ma tête… tout le temps.; La Ligne Verte; John Coffey; 1999; https://tse4.mm.bing.net/th/id/OIP.loqNhw71Vk_C-TiyWQJoKAHaKK?w=95&h=180&c=7&r=0&o=5&pid=1.7
John tenait a me donner un peu de lui. Le jour ou il a saisit ma main, une partie de son pouvoir est entrée en moi. Il nous a condamné a la vie.; La Ligne Verte; Paul Edgecomb; 1999; https://tse1.mm.bing.net/th/id/OIP.csFLWCPUhS7NhdJT8-Cq-QHaEL?w=270&h=180&c=7&r=0&o=5&pid=1.7
Jai rêvé de toi, jai rêvé que tu cherchais ton chemin dans la nuit, tout comme moi, et nous finissions par nous rencontrer… dans les ténèbres nous errions lun et lautre.; La Ligne Verte; Melinda Moores; 1999; https://tse4.mm.bing.net/th/id/OIP.6XMc0WCQbJ5xbzekralK7gHaD4?w=301&h=180&c=7&r=0&o=5&pid=1.7
Tout ce que je sais, cest quà chaque fois que je tue un homme je méloigne un peu plus de chez moi.; Il faut sauver le soldat Ryan; le capitaine Miller; 1998; https://tse3.mm.bing.net/th/id/OIP.BeQYJEP1pQKzHDLGhTLBtgHaFj?w=243&h=182&c=7&r=0&o=5&pid=1.7
Cest toujours rassurant de voir que le monde est encore plus cinglé que vous !; Thor : le monde des Ténèbres; Erik Selvig; 2011; https://tse4.mm.bing.net/th/id/OIP.mbfvWIhPg0gZJA5FGmkilwHaFr?w=188&h=180&c=7&r=0&o=5&pid=1.7
La victoire au prix du sang des innocents nest pas la victoire de la justice, cest la victoire de la honte.; Captain America : civil war; le roi TChaka; 2011; https://tse3.mm.bing.net/th/id/OIP.eYavZu8-Xp11x2Pod8v6bQHaKw?w=194&h=282&c=7&r=0&o=5&pid=1.7
La vengeance est un déesse dévorante. Eux aussi en sont victimes… Je ne dois pas céder à son appel. La justice finira par triompher.; Captain America : civil war; TChalla / Black Panther; 2011; https://tse4.mm.bing.net/th/id/OIP.XNQPKwc1OUfvnSO9MsxDYgHaE7?w=202&h=180&c=7&r=0&o=5&pid=1.7
Je fais les mêmes choses que Captain, mais plus lentement.; Captain America : le soldat de l'hiver; Sam Wilson; 2011; https://tse4.mm.bing.net/th/id/OIP.5XrvOjUpYQsABU-bnFQIxwHaK7?w=127&h=187&c=7&r=0&o=5&pid=1.7
Tu obtiens quoi si tu croises un aliéné mental solitaire avec une société qui labandonne dans son coin et le traite comme de la merde ? Je vais te le dire, moi, ce que tu obtiens ! Tu obtiens ce que tu mérites, enculé !; Joker; le Joker; 2019; https://tse3.mm.bing.net/th/id/OIP.P4hzN60jIU4IQ7WnfJHN5AHaJQ?w=135&h=180&c=7&r=0&o=5&pid=1.7
Est-ce moi, ou est-ce le monde qui devient de plus en plus fou ?; Joker; le Joker; 2019; https://tse3.mm.bing.net/th/id/OIP.P4hzN60jIU4IQ7WnfJHN5AHaJQ?w=135&h=180&c=7&r=0&o=5&pid=1.7
Tout ce que jai cest des idées noires.; Joker; le Joker; 2019; https://tse3.mm.bing.net/th/id/OIP.P4hzN60jIU4IQ7WnfJHN5AHaJQ?w=135&h=180&c=7&r=0&o=5&pid=1.7
Ma mère me dit tout le temps de sourire, de faire bonne figure, elle ma dit que javais une mission dans la vie : mettre du rire et de la joie dans ce monde.; Joker; le Joker; 2019; https://tse3.mm.bing.net/th/id/OIP.P4hzN60jIU4IQ7WnfJHN5AHaJQ?w=135&h=180&c=7&r=0&o=5&pid=1.7
Lespoir est la seule chose plus forte que la peur.; Hunger Games; le président Snow; 2012; https://tse1.mm.bing.net/th/id/OIP._zw8Sl9IsgfLzI_gd9SvRQHaEK?w=243&h=180&c=7&r=0&o=5&pid=1.7
Si je dois mourir, je préfère rester comme je suis…; Hunger Games; Peeta; 2012; https://tse4.mm.bing.net/th/id/OIP.a93tPzA08bhvfY-tSHHYBwHaIt?w=194&h=229&c=7&r=0&o=5&pid=1.7
Tu ne vas pas mourir. Je te linterdis. Daccord ?; Hunger Games; Katniss; 2012; https://tse4.mm.bing.net/th/id/OIP.6PMXCMTZgkDKCkeY-NP6sAHaKB?w=145&h=197&c=7&r=0&o=5&pid=1.7
Il faut que tu gagnes, Katniss.; Hunger Games; Rue; 2012; https://tse3.mm.bing.net/th/id/OIP.nn0EAEXX7rZ2fIMSSDThGQAAAA?w=115&h=180&c=7&r=0&o=5&pid=1.7
Je ne veux pas perdre le garçon avec le pain.; Hunger Games; Peeta; 2012; https://tse4.mm.bing.net/th/id/OIP.a93tPzA08bhvfY-tSHHYBwHaIt?w=194&h=229&c=7&r=0&o=5&pid=1.7
On pourrait le faire tu sais, senfuir et vivre dans les bois.; Hunger Games; Gale; 2012; https://tse4.mm.bing.net/th/id/OIP.iuYaquLDGgV_o3vDOphh-gHaLH?w=127&h=191&c=7&r=0&o=5&pid=1.7
Acceptez la possibilité de votre mort imminente. Et comprenez au plus profond de vous que je ne pourrais rien faire pour vous sauver.; Hunger Games; Haymitch Abernathy; 2012; https://tse2.mm.bing.net/th/id/OIP.UKHYE8eX_v3E_G8OSFUcjQAAAA?w=142&h=180&c=7&r=0&o=5&pid=1.7
Tu pourrais vivre cent vies que tu ne le mériterais pas tu sais…; Hunger Games; Haymitch Abernathy; 2012; https://tse2.mm.bing.net/th/id/OIP.UKHYE8eX_v3E_G8OSFUcjQAAAA?w=142&h=180&c=7&r=0&o=5&pid=1.7
Il ne faut surtout pas te laisser aller. Cest dix fois plus long de se reconstruire que de sécrouler.; Hunger Games : lembrasement; Finnick Odair; 2012; https://tse2.mm.bing.net/th/id/OIP.3Je-oEIjxk44RyMF3nSi-gHaEK?w=289&h=180&c=7&r=0&o=5&pid=1.7
Tu veux un sucre.; Hunger Games : lembrasement; Finnick Odair; 2012; https://tse2.mm.bing.net/th/id/OIP.3Je-oEIjxk44RyMF3nSi-gHaEK?w=289&h=180&c=7&r=0&o=5&pid=1.7
Il ny a plus de district 12 Katniss.; Hunger Games : lembrasement; Gale; 2012; https://tse4.mm.bing.net/th/id/OIP.iuYaquLDGgV_o3vDOphh-gHaLH?w=127&h=191&c=7&r=0&o=5&pid=1.7
Si nous brûlons, vous brûlerez avec nous !; Hunger Games : la révolte - 1re partie; Katniss; 2012; https://tse4.mm.bing.net/th/id/OIP.6PMXCMTZgkDKCkeY-NP6sAHaKB?w=145&h=197&c=7&r=0&o=5&pid=1.7
Jimagine que le moment est mal choisi pour vous dire que jai pendu un mannequin par le cou et inscrit le nom de Seneca Crane sur son torse.; Hunger Games; Katniss; 2012; https://tse4.mm.bing.net/th/id/OIP.6PMXCMTZgkDKCkeY-NP6sAHaKB?w=145&h=197&c=7&r=0&o=5&pid=1.7
Le feux ça se propage et si nous brûlons vous brûlerez avec nous !; Hunger Games; Katniss; 2012; https://tse4.mm.bing.net/th/id/OIP.6PMXCMTZgkDKCkeY-NP6sAHaKB?w=145&h=197&c=7&r=0&o=5&pid=1.7
La peur ne te paralyse pas elle te réveille.; Divergente; Quatre; 2014; https://tse2.mm.bing.net/th/id/OIP.VGvVLSX6Yib-4x0JJOMWUQHaEK?w=305&h=180&c=7&r=0&o=5&pid=1.7
Les gens avides de pouvoir et qui finissent par lobtenir vivent dans la terreur de le perdre. Et cest pour cette raison quil ne faut en donner quà ceux qui ne le désirent pas.; Divergente; Tris; 2014; https://tse3.mm.bing.net/th/id/OIP.VYjPaxqX_66-rJho-f-rCQHaK4?w=194&h=284&c=7&r=0&o=5&pid=1.7
La politesse, ce nest que de la fausseté dans un paquet-cadeau.; Divergente; Christina; 2014; https://tse3.mm.bing.net/th/id/OIP.-wz8nDaqKV8gu0xZsfcE_AHaLG?w=115&h=180&c=7&r=0&o=5&pid=1.7
Quand on a peu de possessions, peu de désirs et que tout le monde a la même chose, on ne convoite pas les biens des autres.; Divergente; Tris; 2014; https://tse3.mm.bing.net/th/id/OIP.VYjPaxqX_66-rJho-f-rCQHaK4?w=194&h=284&c=7&r=0&o=5&pid=1.7
Être désavoué par des lâches fait la grandeur des braves.; Les animaux fantastiques : les crimes de Grindewald; Grindelwald; 2016; https://tse4.mm.bing.net/th/id/OIP.FFOI1GRf_n-bX02pAlZYwQHaEc?w=244&h=180&c=7&r=0&o=5&pid=1.7
Je suis le feu. Je suis… la Mort.; Le hobbit : la désolation de Smaug; Smaug; 2012; https://tse2.mm.bing.net/th/id/OIP.3vXkEUJ9J8s-GsnBC6I3KAHaF0?w=185&h=180&c=7&r=0&o=5&pid=1.7
Je jure que je ne me séparerai pas dune seule pièce dor, pas de la moindre parcelle.; Le hobbit : la bataille des cinq armées; Thorin; 2012; https://tse4.mm.bing.net/th/id/OIP.F1alSEClhkaZE3VGDf9IbgHaHa?w=209&h=209&c=7&r=0&o=5&pid=1.7
De la loyauté, de lhonneur, un cœur vaillant, cest tout ce que je demande !; Le Hobbit : un voyage inattendu; Thörin II Ecu-De-Chêne; 2012; https://tse1.mm.bing.net/th/id/OIP.AzOPUHw61pXF-W3a1giYwAHaFH?w=194&h=134&c=7&r=0&o=5&pid=1.7
Will Turner, est-ce que tu veux me prendre pour femme, pour le meilleur est pour le pire, je crois que le pire est à envisager.; Pirates des Caraïbes, jusquau bout du monde; Elizabeth; 2003; https://tse3.mm.bing.net/th/id/OIP.VFLqe8JlbX0imVJ-Rjn4mgHaDt?w=316&h=174&c=7&r=0&o=5&pid=1.7
Tous les trésors ne sont pas dargent et dor…; Pirates des Caraibes, la malédiction du Black Pearl; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
Tu ne remarques rien ? Ou plutôt ne remarques-tu pas labsence de ce que tu devrais remarquer ?; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
Vous pouvez me tuer mon ami, mais ne minsultez pas !; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
La mort a une curieuse façon de faire le tri parmi les priorités.; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
Mais il me semble que comme jai un navire et pas vous, cest vous qui avez besoin que je vous sauve, et je ne sais pas si jy suis vraiment disposé.; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
La cruauté est affaire de perspective.; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
Pas de ça de pas de ça !; Pirates des Caraïbes, jusquau bout du monde; Jack; 2003; https://tse2.mm.bing.net/th/id/OIP.l_zFAxgXMX9SnNDbFfXnqwHaFj?w=202&h=180&c=7&r=0&o=5&pid=1.7
Je sais pas cqui me retient de le mettre en orbite !; Toy Story 2; M. Patate; 1995; https://tse1.mm.bing.net/th/id/OIP.je21xi_joSEUE4w8OkIg9gHaEL?w=317&h=180&c=7&r=0&o=5&pid=1.7
Tu mas oublié en oubliant qui tu étais.; Le roi lion; Mufassa; 1994; https://tse3.mm.bing.net/th/id/OIP.raX8ZfSizmfVbeMrR0ghZgHaG2?w=173&h=180&c=7&r=0&o=5&pid=1.7
Quand le monde te persécute, tu te dois de persécuter le monde.; Le roi lion; Timon; 1994; https://tse3.mm.bing.net/th/id/OIP.djhwHrNS0CLKzx4LLJWpLAHaFs?w=173&h=180&c=7&r=0&o=5&pid=1.7
Regarde au delà de ce que tu vois.; Le roi lion; Rafiki; 1994; https://tse4.mm.bing.net/th/id/OIP.8My5fvsa2Z1P6oWhtJc6WQHaKl?w=127&h=181&c=7&r=0&o=5&pid=1.7
Et si je te le dis !; Le roi lion; Scar; 1994; https://tse3.mm.bing.net/th/id/OIP.b9_3MMu1kK4yyKVCt-wtYwHaEK?w=278&h=180&c=7&r=0&o=5&pid=1.7
Je patauge dans limbécillité.; Le roi lion; Scar; 1994; https://tse3.mm.bing.net/th/id/OIP.b9_3MMu1kK4yyKVCt-wtYwHaEK?w=278&h=180&c=7&r=0&o=5&pid=1.7
Noublie pas qui tu es.; Le roi lion; Mufassa; 1994; https://tse3.mm.bing.net/th/id/OIP.raX8ZfSizmfVbeMrR0ghZgHaG2?w=173&h=180&c=7&r=0&o=5&pid=1.7
Noublie pas qui tu es.; Le roi lion; Mufassa; 1994; https://tse3.mm.bing.net/th/id/OIP.raX8ZfSizmfVbeMrR0ghZgHaG2?w=173&h=180&c=7&r=0&o=5&pid=1.7
Jai un corps dApollon et du plomb dans la tête.; La belle et la bête; Gaston; 1991; https://tse2.mm.bing.net/th/id/OIP.PziDszqyhWeRqKHDL8ouwgHaJ4?w=115&h=180&c=7&r=0&o=5&pid=1.7
La mort… par décapitation…; Aladdin; Jafar; 1992; https://tse3.mm.bing.net/th/id/OIP.gl3qdaf8Njvek6PM5AVgXgHaFj?w=228&h=180&c=7&r=0&o=5&pid=1.7
Quand on a rien, il faut faire comme si tout nous appartenait.; Aladdin; Aladdin; 1992; https://tse4.mm.bing.net/th/id/OIP._TZXuDVR3nHwrSJ9PPxJvAHaFO?w=230&h=180&c=7&r=0&o=5&pid=1.7
Mon seul devoir est celui de mon cœur.; Mulan 2; Mulan; 1998; https://tse1.mm.bing.net/th/id/OIP.LTvVuaapKih6VpqAOtZudgHaK6?w=194&h=287&c=7&r=0&o=5&pid=1.7
Nan mais tu les as vus ?! Ils sont sortis, comme des marguerites !!; Mulan; Mushu; 1998; https://tse4.mm.bing.net/th/id/OIP.omU-pPTNgHJEiTKJUpB1MAHaIw?w=114&h=180&c=7&r=0&o=5&pid=1.7
Vous êtes le plus privilégié des privilégiés, en contrepartie il vous faut remplir certaines responsabilités.; À tout jamais, une histoire de Cendrillon; Danielle; 1950; https://tse2.mm.bing.net/th/id/OIP.79bf2opzc4vp3nvyKdI9QAHaHa?w=164&h=180&c=7&r=0&o=5&pid=1.7
Je rêve ou je suis en train de me battre en duel avec un cheval ?; Raiponce; Flynn Rider; 2010; https://tse1.mm.bing.net/th/id/OIP.3svdf3xniHZ5huU-D1cptQHaEK?w=329&h=185&c=7&r=0&o=5&pid=1.7
Wow, que démotions, et il est que huit heure du matin !; Raiponce; Flynn Rider; 2010; https://tse1.mm.bing.net/th/id/OIP.3svdf3xniHZ5huU-D1cptQHaEK?w=329&h=185&c=7&r=0&o=5&pid=1.7
Il ne se passera plus un jour, une heure, une minute sans que je me batte !; Raiponce; Raiponce; 2010; https://tse4.mm.bing.net/th/id/OIP.lObXQdwuf5hDc_g40knCmQHaDt?w=348&h=174&c=7&r=0&o=5&pid=1.7
Il suffit que je te regarde dans les yeux et je me sens… je me sens chez moi.; Le monde de Némo; Dory; 2003; https://tse2.mm.bing.net/th/id/OIP.zR4rzkK7q2wCcNwZd6jjegHaIC?w=163&h=180&c=7&r=0&o=5&pid=1.7
Je souffre de perte de la mémoire courte.; Le monde de Némo; Dory; 2003; https://tse2.mm.bing.net/th/id/OIP.zR4rzkK7q2wCcNwZd6jjegHaIC?w=163&h=180&c=7&r=0&o=5&pid=1.7
Oh il a de la chance de parler baleine !; Le monde de Némo; Dory; 2003; https://tse2.mm.bing.net/th/id/OIP.zR4rzkK7q2wCcNwZd6jjegHaIC?w=163&h=180&c=7&r=0&o=5&pid=1.7
Je ne vous connais pas, mais je vous aime déjà.; Là-haut; Dug; 2009; https://tse1.mm.bing.net/th/id/OIP.uDr845hAlB9JoYe8i-DJ0QAAAA?w=294&h=170&c=7&r=0&o=5&pid=1.7
Arrête de faire ton Jean-Jacques !; Coco; Coco; 2017; https://tse1.mm.bing.net/th/id/OIP.GPIbva8dEP6Kllx-sj5ysAHaK-?w=115&h=180&c=7&r=0&o=5&pid=1.7
Tu conduis comme tu répares les routes.; Cars; Doc Hudson; 2006; https://tse1.mm.bing.net/th/id/OIP.7ZWmLIPHcKWDZZjROnCh3AHaDF?w=287&h=145&c=7&r=0&o=5&pid=1.7
Je ne veux pas dexcuses, je veux des résultats !; Madagascar; les pingouins; 2005; https://tse2.mm.bing.net/th/id/OIP.UMdT8raLVqv9rCr2E1O_nAHaFS?w=244&h=180&c=7&r=0&o=5&pid=1.7
Tu me mords… LES MEULES !; Madagascar; Marty; 2005; https://tse2.mm.bing.net/th/id/OIP.Qoh2doQIigxyiOBuhgRx9gHaM7?w=115&h=186&c=7&r=0&o=5&pid=1.7
Pour toi poupée, je me couperais en quatre…; Shrek 2; le chat potté; 2001; https://tse4.mm.bing.net/th/id/OIP.kS6XFK6-lD-RzYdwHAj_LgHaEK?w=255&h=180&c=7&r=0&o=5&pid=1.7
Ma maman elle est malade et mon papa il dévalise les poubelles.; Shrek; le chat potté; 2001; https://tse4.mm.bing.net/th/id/OIP.kS6XFK6-lD-RzYdwHAj_LgHaEK?w=255&h=180&c=7&r=0&o=5&pid=1.7
Moi je vois pas lintérêt de savoir parler si je peux pas raconter les secrets !; Shrek; l'âne; 2001; https://tse3.mm.bing.net/th/id/OIP.-1Ds-2D5GPiu9uejDdmgNgHaH3?w=124&h=180&c=7&r=0&o=5&pid=1.7
Nouille ou pas nouille, tu te préoccupes trop de ce qui a été ou de ce qui sera.; Kung Fu Panda; Maître Oogway; 2008; https://tse4.mm.bing.net/th/id/OIP.QzDh_d2T5aADiDJ7uMFU6gHaHa?w=157&h=180&c=7&r=0&o=5&pid=1.7
On ne facture pas la toplessitude et la séductivité.; Kung Fu Panda; Po; 2008; https://tse2.mm.bing.net/th/id/OIP.oBoBPN1VKEeJglTjZbtRUAHaJ5?w=94&h=180&c=7&r=0&o=5&pid=1.7
Mon nom est Po, et il va me falloir un chapeau !; Kung Fu Panda 2; Po; 2008; https://tse2.mm.bing.net/th/id/OIP.oBoBPN1VKEeJglTjZbtRUAHaJ5?w=94&h=180&c=7&r=0&o=5&pid=1.7
Tu viens de me montrer au complet ?!; Dragons; Harold; 2010; https://tse2.mm.bing.net/th/id/OIP._OiJHgI7cal4cWNHcCE9zAHaM2?w=115&h=180&c=7&r=0&o=5&pid=1.7

@ -1,28 +0,0 @@
<?php
require_once(__DIR__ . '/../models/CitationModel.php');
require_once(__DIR__ . '/../views/CitationView.php');
require_once(__DIR__ . '/../views/HeaderView.php');
class CitationController {
public function index() {
// Gestion du thème
if (isset($_POST['theme'])) {
$theme = $_POST['theme'];
setcookie('theme', $theme, time() + (30 * 24 * 60 * 60), "/");
} elseif (isset($_COOKIE['theme'])) {
$theme = $_COOKIE['theme'];
} else {
$theme = 'dark-mode';
}
// Récupérer les données via le modèle
$model = new CitationModel();
$citationDuJour = $model->getCitationDuJour();
$suggestions = $model->getSuggestions($citationDuJour);
// Afficher la page via la vue
HeaderView::display($theme);
CitationView::display($citationDuJour, $suggestions);
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

@ -1,3 +0,0 @@
<svg width="138" height="130" viewBox="0 0 138 130" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M69 11.3884C107.279 -28.1488 202.984 41.037 69 130C-64.9844 41.0456 30.7212 -28.1488 69 11.3884Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 269 B

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 512 262.86">
<path fill-rule="nonzero" d="M316.78 16.55h-205.9c-30.5 0-58.22 12.48-78.31 32.57C12.47 69.21 0 96.93 0 127.44c0 30.5 12.47 58.22 32.57 78.31 20.09 20.1 47.81 32.57 78.31 32.57h193.25c21.54 15.43 47.9 24.54 76.26 24.54h.18c36.14 0 69.02-14.79 92.83-38.6 23.8-23.81 38.6-56.67 38.6-92.83 0-36.15-14.78-69.03-38.63-92.8C449.53 14.8 416.67 0 380.57 0h-.18c-23.02 0-44.72 6.02-63.61 16.55zm70.62 97.17.43.09c.82-3.45 2.83-6.19 6.04-8.16 3.2-1.98 6.53-2.57 10.01-1.75l.1-.43c-3.47-.82-6.2-2.83-8.17-6.03-1.98-3.22-2.57-6.55-1.75-10.01l-.43-.1c-.82 3.47-2.83 6.2-6.03 8.18-3.21 1.98-6.55 2.56-10.02 1.74l-.1.43c3.47.82 6.2 2.84 8.18 6.04 1.99 3.19 2.56 6.52 1.74 10zm36.87 16.77.53.12c1.02-4.35 3.55-7.78 7.58-10.26 4.02-2.49 8.2-3.22 12.56-2.19l.13-.53c-4.35-1.03-7.78-3.55-10.26-7.59-2.49-4.03-3.22-8.22-2.2-12.56l-.53-.12c-1.02 4.35-3.55 7.77-7.58 10.26-4.02 2.49-8.21 3.22-12.56 2.19l-.13.53c4.36 1.03 7.78 3.55 10.26 7.58 2.49 4.02 3.22 8.22 2.2 12.57zm-38.79-61.01c-15.69 7.67-26.98 23.26-28.29 41.93-1.96 27.88 19.05 52.06 46.92 54.02 13.23.93 25.64-3.32 35.22-11.02 4.75-3.82 9.66-.45 7.59 4.36-11.33 26.42-38.45 44.04-68.74 41.91-38.29-2.69-67.14-35.91-64.45-74.19C316.3 89.8 347.05 61.67 383.44 62c6.71.06 8.13 4.5 2.04 7.48zm-5.09-53.95h.18c63.75 0 115.91 52.15 115.91 115.9 0 63.75-52.23 115.91-115.91 115.91h-.18c-63.68 0-115.91-52.16-115.91-115.91s52.16-115.9 115.91-115.9z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

@ -1,10 +0,0 @@
<svg width="72" height="37" viewBox="0 0 72 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_103_508)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.0028 0H18.0281C21.1261 0 24.0511 0.817919 26.6062 2.25434H56.1909C60.5348 2.25434 64.4878 4.08237 67.3538 7.0289C70.2211 9.96965 72 14.0318 72 18.5C72 22.9682 70.2197 27.0303 67.3566 29.974L67.2975 30.0289C64.4372 32.9408 60.5067 34.7457 56.1909 34.7457H26.6119C24.0567 36.1806 21.1303 37 18.0281 37H18.0028C13.0528 37 8.55 34.9176 5.2875 31.5665C2.02641 28.2153 0 23.5896 0 18.5C0 13.4104 2.025 8.78324 5.28609 5.43208L5.41406 5.31214C8.66953 2.03035 13.1189 0 18.0028 0ZM17.1661 7.86416C17.1661 7.58237 17.2786 7.32514 17.4586 7.14162C17.8439 6.74133 18.4809 6.74277 18.8677 7.14017L18.8873 7.16329C19.0624 7.35234 19.16 7.60324 19.1602 7.86416V9.73555C19.1602 10.0173 19.0477 10.2746 18.8677 10.4595C18.4809 10.8569 17.8453 10.8569 17.4586 10.4595C17.3659 10.3645 17.2924 10.2517 17.2422 10.1275C17.192 10.0032 17.1662 9.87006 17.1661 9.73555V7.86416ZM18.0169 12.3685C19.665 12.3685 21.1556 13.0549 22.2356 14.1647C23.3142 15.2746 23.9836 16.8078 23.9836 18.5C23.9836 20.1936 23.3156 21.7254 22.2356 22.8353C21.1556 23.9451 19.665 24.6315 18.0169 24.6315C16.3687 24.6315 14.8781 23.9451 13.7967 22.8353C12.7181 21.7254 12.0487 20.1936 12.0487 18.5C12.0487 16.8064 12.7181 15.2746 13.7967 14.1647C14.8781 13.0564 16.3702 12.3685 18.0169 12.3685ZM10.0955 11.5968C9.90926 11.4044 9.80462 11.1442 9.80437 10.8728C9.80437 10.3092 10.2516 9.84827 10.8014 9.84827C11.0559 9.84827 11.3105 9.94798 11.5045 10.1474L12.7927 11.4711C12.8854 11.566 12.959 11.6788 13.0092 11.8031C13.0594 11.9273 13.0852 12.0606 13.0852 12.1951C13.0852 12.4552 12.9867 12.7182 12.7927 12.9191C12.7003 13.0145 12.5905 13.0901 12.4696 13.1417C12.3487 13.1933 12.219 13.2198 12.0881 13.2197C11.835 13.2197 11.5805 13.1185 11.385 12.9205L10.0955 11.5968ZM7.66547 19.3728C7.39125 19.3728 7.14094 19.2572 6.96234 19.0723C6.57281 18.6763 6.57422 18.0217 6.96094 17.6257L6.98203 17.6055C7.16633 17.4253 7.41107 17.3249 7.66547 17.3251H9.48516C9.61613 17.325 9.74585 17.3514 9.86688 17.4028C9.98791 17.4543 10.0979 17.5297 10.1905 17.6249C10.2831 17.7201 10.3565 17.8331 10.4066 17.9574C10.4566 18.0818 10.4823 18.2151 10.4822 18.3497C10.4822 18.6315 10.3697 18.8887 10.1911 19.0737C10.0037 19.2656 9.74975 19.3732 9.48516 19.3728H7.66547ZM11.2964 26.6387C11.2042 26.7337 11.0946 26.8091 10.9739 26.8604C10.8532 26.9117 10.7239 26.9381 10.5933 26.9379C10.0434 26.9379 9.59625 26.4812 9.59625 25.9147C9.59625 25.6532 9.69187 25.3916 9.88734 25.1908L11.1966 23.8483C11.3807 23.6678 11.6255 23.5674 11.88 23.5679C12.1444 23.5679 12.398 23.6759 12.585 23.868C12.772 24.0601 12.877 24.3208 12.877 24.5925C12.877 24.8512 12.78 25.1127 12.5845 25.3136L11.2964 26.6387ZM18.8648 29.1373C18.8648 29.4176 18.7523 29.6763 18.5723 29.8598C18.187 30.2587 17.55 30.2572 17.1633 29.8598L17.145 29.8381C16.9699 29.6492 16.8722 29.3982 16.8722 29.1373V27.2659C16.8722 26.9827 16.9847 26.7269 17.1633 26.5419C17.5514 26.1445 18.1856 26.1445 18.5737 26.5419C18.7601 26.7342 18.8648 26.9945 18.8648 27.2659V29.1373ZM25.9355 25.4046C26.028 25.4996 26.1014 25.6125 26.1514 25.7367C26.2013 25.861 26.2269 25.9942 26.2266 26.1286C26.2266 26.6907 25.7794 27.1532 25.2309 27.1532C24.9764 27.1532 24.7205 27.0535 24.5264 26.854L23.2383 25.5303C23.0515 25.3378 22.9468 25.0768 22.9472 24.8049C22.9472 24.2413 23.3944 23.7803 23.9428 23.7803C24.1959 23.7803 24.4505 23.8815 24.6459 24.0809L25.9355 25.4046ZM28.3669 17.6272C28.6383 17.6272 28.8914 17.7442 29.07 17.9277C29.4581 18.3251 29.4567 18.9783 29.07 19.3757L29.0489 19.396C28.8645 19.5751 28.6206 19.6753 28.3669 19.6763H26.5458C26.2702 19.6763 26.0198 19.5607 25.8412 19.3757C25.4531 18.9783 25.4531 18.3251 25.8412 17.9277C25.9335 17.8323 26.0433 17.7566 26.1643 17.705C26.2852 17.6534 26.4149 17.627 26.5458 17.6272H28.3669ZM24.7345 10.3613C24.9211 10.1697 25.174 10.0621 25.4377 10.0621C25.9861 10.0621 26.4361 10.5231 26.4361 11.0867C26.4361 11.3483 26.3391 11.6098 26.145 11.8092L24.8344 13.1546C24.6492 13.3333 24.4049 13.433 24.1509 13.4335C23.6011 13.4335 23.1539 12.974 23.1539 12.409C23.1539 12.1488 23.2523 11.8873 23.4464 11.6864L24.7345 10.3613ZM29.5397 4.31069C29.9559 4.66763 30.3567 5.04335 30.7392 5.43786C34.0045 8.78324 36.0309 13.4104 36.0309 18.5C36.0309 23.5896 34.0031 28.2153 30.7434 31.5665C30.3613 31.9587 29.9625 32.3333 29.5481 32.6893H56.1909C59.9639 32.6893 63.3966 31.1127 65.8969 28.5708L65.9419 28.5202C68.4436 25.9494 69.9989 22.4003 69.9989 18.5C69.9989 14.5997 68.4436 11.0506 65.9419 8.47832C63.443 5.90607 59.9892 4.31069 56.1909 4.31069H29.5397ZM18.0028 2.18497H18.0281C26.7595 2.18497 33.9033 9.52746 33.9033 18.5C33.9033 27.474 26.7511 34.815 18.0281 34.815H18.0028C9.27984 34.815 2.12625 27.474 2.12625 18.5C2.12625 9.52746 9.27141 2.18497 18.0028 2.18497Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_103_508">
<rect width="72" height="37" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 46.574219 3.425781 C 45.625 2.476563 44.378906 2 43.132813 2 C 41.886719 2 40.640625 2.476563 39.691406 3.425781 C 39.691406 3.425781 39.621094 3.492188 39.53125 3.585938 C 39.523438 3.59375 39.511719 3.597656 39.503906 3.605469 L 4.300781 38.804688 C 4.179688 38.929688 4.089844 39.082031 4.042969 39.253906 L 2.035156 46.742188 C 1.941406 47.085938 2.039063 47.453125 2.292969 47.707031 C 2.484375 47.898438 2.738281 48 3 48 C 3.085938 48 3.171875 47.988281 3.257813 47.964844 L 10.746094 45.957031 C 10.917969 45.910156 11.070313 45.820313 11.195313 45.695313 L 46.394531 10.5 C 46.40625 10.488281 46.410156 10.472656 46.417969 10.460938 C 46.507813 10.371094 46.570313 10.308594 46.570313 10.308594 C 48.476563 8.40625 48.476563 5.324219 46.574219 3.425781 Z M 45.160156 4.839844 C 46.277344 5.957031 46.277344 7.777344 45.160156 8.894531 C 44.828125 9.222656 44.546875 9.507813 44.304688 9.75 L 40.25 5.695313 C 40.710938 5.234375 41.105469 4.839844 41.105469 4.839844 C 41.644531 4.296875 42.367188 4 43.132813 4 C 43.898438 4 44.617188 4.300781 45.160156 4.839844 Z M 5.605469 41.152344 L 8.847656 44.394531 L 4.414063 45.585938 Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@ -1,3 +0,0 @@
<svg width="165" height="263" viewBox="0 0 165 263" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M107.959 174.467C98.9557 168.667 96.0352 168.667 71.2207 174.467C73.0133 161.115 71.2207 146.011 71.2207 136.444C71.2207 123.354 76.6992 117.829 84.4336 109.236C92.168 100.643 96.0352 91.7282 96.0352 82.4909C96.0352 75.8315 94.209 69.8166 90.5566 64.446C86.9043 59.0755 80.459 56.3903 71.2207 56.3903C63.7012 56.3903 56.2891 59.0755 48.9844 64.446C41.8945 69.8166 35.9863 79.8057 31.2598 94.4135C20.7324 93.3394 12.8906 89.4726 7.73437 82.8132C2.57812 76.1538 0 68.5276 0 59.9348C0 50.6976 2.79297 41.4603 8.37891 32.223C14.1797 22.9858 22.8809 15.3596 34.4824 9.34467C46.2988 3.11489 61.0156 0 78.6328 0C99.6875 0 116.445 3.54453 128.906 10.6336C141.582 17.7227 150.713 26.8525 156.299 38.0232C162.1 49.1938 165 60.7941 165 72.824C165 86.3577 162.852 98.8173 158.555 110.203C154.473 121.373 148.779 131.04 141.475 139.203C134.385 147.367 126.436 153.704 117.627 158.215C108.818 162.726 113.135 170.621 107.959 174.467ZM80.0622 263C70.1794 263 61.9079 259.778 55.2477 253.333C48.8024 246.674 45.5798 238.618 45.5798 229.166C45.5798 221.862 47.4059 215.203 51.0583 209.188C54.7106 202.958 59.5446 197.91 65.5602 194.043C71.7907 190.176 78.6657 188.243 86.1852 188.243C96.0681 188.243 104.232 191.572 110.677 198.232C117.338 204.676 120.668 212.625 120.668 222.077C120.668 229.166 118.841 235.825 115.189 242.055C111.537 248.285 106.595 253.333 100.365 257.2C94.3493 261.067 87.5817 263 80.0622 263Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link rel="stylesheet" href="../styles/style.css">
<script defer src="../script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false">
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>Wiki Fantasy</h1>
</body>
</html>

@ -1,45 +0,0 @@
<?php
class CitationModel {
private $filePath = __DIR__ . '/../citation.txt';
// Fonction pour obtenir la citation du jour
public function getCitationDuJour() {
if (!file_exists($this->filePath)) {
return null;
}
$citations = file($this->filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($citations as $citation) {
$parts = explode(';', $citation);
// Vérifier si la citation commence par 'µ'
if (strpos(trim($parts[0]), 'µ') === 0) {
return $parts; // Retourne la citation du jour
}
}
return null;
}
// Fonction pour obtenir les suggestions de citations
public function getSuggestions($citationDuJour) {
if (!file_exists($this->filePath)) {
return [];
}
$citations = file($this->filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$suggestions = [];
foreach ($citations as $citation) {
$parts = explode(';', $citation);
// On ajoute la citation si elle n'est pas la citation du jour
if (!($parts[0] === $citationDuJour[0])) {
$suggestions[] = $parts;
}
}
// Limiter à 10 suggestions
shuffle($suggestions);
return array_slice($suggestions, 0, 10);
}
}

@ -1,38 +0,0 @@
<?php
class ArtisteGateway {
private Connection $co;
public function __construct(Connection $co)
{
$this -> co = $co;
}
public function findByName($name)
{
$query = "SELECT * FROM Artiste WHERE nom = :nom";
$this -> co -> executeQuery($query, array('nom' => array($name, PDO::PARAM_STR)));
$res = $this -> co -> getResults();
foreach ($res as $row)
{
$tab[] = new Artiste(
$row['id'],
$row['nom'],
$row['prenom'],
$row['nb'],
);
}
return $tab;
}
}
foreach ($listNews as $news)
{
}

Binary file not shown.

@ -1,6 +0,0 @@
<?php
require_once('../../controllers/CitationController.php');
$controller = new CitationController();
$controller->index();
?>

@ -1,30 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy : Favoris</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link rel="stylesheet" href="../styles/style.css">
<script defer src="../script/theme-toggle.js"></script>
<script src="../script/auth-check.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>Wiki Fantasy</h1>
</body>
</html>

@ -1,49 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../styles/styleLogin.css" media="screen">
<title>Wiki Fantasy : Connexion</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ Connexion ◀</h1>
<div class="login">
<p> <strong>Identifiant *</strong></p>
<input type="text" class="connexion" name="name" required />
<p> <strong> Mot de passe *</strong></p>
<input type="password" class="connexion" name="passwd" required />
<div class="createAccount">
<p class="createAccount">Vous n'avez pas de compte?</p>
<a href="signin.html" class="createAccount">S'incrire</a>
</div>
<div class="buttonSudmiteDiv">
<button class="buttonSudmite">Connexion</button>
</div>
</div>
</body>
</html>

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../styles/styleProfil.css" media="screen">
<title>Wiki Fantasy : Profil</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
</div>
</div>
<div class="login">
<h1>▶ Profil ◀</h1>
<img src="../images/imageProfil.png" class="imageProfil" onmousedown="return false"/>
<p class="nameProfil"> <strong> Tyler De Dordogne</strong></p>
<p class="nameProfil"> <strong> user@wikiFantasy.com</strong></p>
<p class="nameProfil"> <strong> *********</strong></p>
<div class="languageDiv">
<p class="languageTitle">Language :</p>
</div>
<img class="languageImage" src="../images/drapeauFrance.png" onmousedown="return false"/>
<div class="createQuote">
<a href="rien" class="createQuote">Ajouter une citation</a>
</div>
<div class="buttonSudmiteDiv">
<button class="buttonSudmite">Se déconnecter</button>
</div>
</div>
</body>
</html>

@ -1,74 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../styles/styleProfil.css" media="screen">
<title>Wiki Fantasy : Profil</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../script/theme-toggle.js"></script>
<script defer src="../script/changeData.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<img src="../../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false" >
</div>
</div>
</div>
<div class="login">
<h1>▶ Profil ◀</h1>
<?php
include ('../script/user.php');
echo "<img src='{$u->img}' class='imageProfil' onmousedown='return false'/>";
// Nom d'utilisateur
echo "<p id='username' class='infoProfil'>
<strong>{$u->username}
<img class='imgModify' src='../../images/modify.svg' onclick='editFieldUsername(\"username\")'/>
</strong>
</p>";
// Email
echo "<p id='email' class='infoProfil'>
<strong>{$u->email}
<img class='imgModify' src='../../images/modify.svg' onclick='editFieldEmail(\"email\")'/>
</strong>
</p>";
// Mot de passe
echo "<p id='passwd' class='infoProfil'>
<strong>{$u->hidenPasswd}
<img class='imgModify' src='../../images/modify.svg' onclick='editFieldPassWd(\"passwd\")'/>
</strong>
</p>";
?>
<div class="languageDiv">
<p class="languageTitle">Language :</p>
</div>
<img class="languageImage" src="../../images/drapeauFrance.png" onmousedown="return false"/>
<div class="createQuote">
<a href="rien" class="createQuote">Ajouter une citation</a>
</div>
<div class="buttonSudmiteDiv">
<button class="buttonSudmite">Se déconnecter</button>
</div>
</div>
</body>
</html>

@ -1,61 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy : Quiz</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link rel="stylesheet" href="../styles/styleQuiz.css">
<script defer src="../script/theme-toggle.js"></script>
<script>
// Timer pour 5 minutes
var timeLeft = 300;
function countdown() {
var timerDisplay = document.getElementById("timer");
if (timeLeft <= 0) {
document.getElementById("quizForm").submit();
} else {
timerDisplay.innerHTML = timeLeft + " seconds left";
timeLeft -= 1;
setTimeout(countdown, 1000);
}
}
window.onload = countdown;
</script>
</head>
<body>
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
<h1>▶ Quiz ◀</h1>
<div class="quiz">
<h2>Question 1</h2>
<p>“Tu es un sorcier Harry”</p>
<!-- Grille de réponses (2 par ligne) -->
<div class="answers">
<button class="answer">Fight Club</button>
<button class="answer">Jurassic World</button>
<button class="answer">La 7ème compagnie</button>
<button class="answer">Harry Potter à l'école des sorciers</button>
</div>
<div class="submit-button">
<button class="buttonSudmite" type="submit">Confirmer</button>
</div>
</div>
</body>
</html>

@ -1,97 +0,0 @@
<?php
session_start();
// Configuration de la base de données
$host = 'localhost';
$db = 'dbwikifantasy'; // Remplace par le nom de ta base de données
$user = 'kiem'; // Remplace par ton nom d'utilisateur
try {
// Créer une connexion à la base de données avec PDO
$conn = new PDO("pgsql:host=$host;dbname=$db", $user);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Requête pour récupérer une question du quiz
$sql = "SELECT * FROM question WHERE id_question = 1"; // Adapte cette requête selon ta table de questions
$stmt = $conn->prepare($sql);
$stmt->execute();
// Récupère toutes les questions
$question = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo "Erreur de connexion : " . $e->getMessage();
}
// Ferme la connexion (optionnel avec PDO)
$conn = null;
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy : Quiz</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link rel="stylesheet" href="../styles/styleQuiz.css">
<script defer src="../script/theme-toggle.js"></script>
<script>
// Timer pour 5 minutes
var timeLeft = 300;
function countdown() {
var timerDisplay = document.getElementById("timer");
if (timeLeft <= 0) {
document.getElementById("quizForm").submit();
} else {
timerDisplay.innerHTML = timeLeft + " seconds left";
timeLeft -= 1;
setTimeout(countdown, 1000);
}
}
window.onload = countdown;
</script>
</head>
<body>
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false">
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
<h1>▶ Quiz ◀</h1>
<div class="quiz">
<h2>Question 1</h2>
<h3><?=$question[0]['question']?></h3>
<a id="timer"> 300 seconds left .. </a>
<form id="quizForm" method="POST" action="submit_quiz.php">
<div class="answers">
<button class="answer" type="submit" name="answer" value="A">
<?=$question[0]['answera']?>
</button>
<button class="answer" type="submit" name="answer" value="B">
<?=$question[0]['answerb']?>
</button>
<button class="answer" type="submit" name="answer" value="C">
<?=$question[0]['answerc']?>
</button>
<button class="answer" type="submit" name="answer" value="D">
<?=$question[0]['answerd']?>
</button>
</div>
<div class="submit-button">
<button class="buttonSudmite" type="submit">Confirmer</button>
</div>
</form>
</div>
</body>
</html>

@ -1,211 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy : Quizz</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<style>
@import url('https://fonts.googleapis.com/css2?family=Lemon&display=swap');
/* ====== DARK MODE ====== */
body.dark-mode h1, body.dark-mode h2, body.dark-mode p {
color: white;
font-family: "Lemon", serif;
text-align: center;
}
body.dark-mode .quizz {
background-color: black;
width: 50%;
margin: 3% auto;
padding: 2%;
border-radius: 25px;
border: 2px solid transparent;
}
body.dark-mode .answers {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
gap: 10px;
}
body.dark-mode .answer {
background-color: #1b0048;
color: white;
border: none;
border-radius: 25px;
width: 45%;
padding: 10px;
font-size: 18px;
text-align: center;
cursor: pointer;
}
body.dark-mode .answer:hover {
background-color: #6100ff;
}
body.dark-mode .submit-button {
text-align: center;
margin-top: 20px;
}
body.dark-mode .buttonSudmite {
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
font-family: "Lemon", serif;
border: none;
color: white;
padding: 10px 20px;
border-radius: 25px;
font-size: 20px;
cursor: pointer;
}
/* ====== LIGHT MODE ====== */
body.light-mode h1, body.light-mode h2, body.light-mode p {
color: black;
font-family: "Lemon", serif;
text-align: center;
}
body.light-mode .quizz {
background-color: white;
width: 50%;
margin: 3% auto;
padding: 2%;
border-radius: 25px;
border: 2px solid black;
}
body.light-mode .answers {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
gap: 10px;
}
body.light-mode .answer {
background-color: #fff1f1;
color: black;
border: 1px solid black;
border-radius: 25px;
width: 45%;
padding: 10px;
font-size: 18px;
text-align: center;
cursor: pointer;
}
body.light-mode .answer:hover {
background-color: #c7f6c4;
}
body.light-mode .submit-button {
text-align: center;
margin-top: 20px;
}
body.light-mode .buttonSudmite {
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif;
border: none;
color: black;
padding: 10px 20px;
border-radius: 25px;
font-size: 20px;
cursor: pointer;
}
/* ====== OTHER ====== */
.container {
width: 100%;
height: 100px;
background-color: transparent;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 50px;
}
.header {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
}
.nav img {
margin-right: 10px;
}
.logo img {
display: block;
margin: 0 auto;
}
.user img {
margin-left: 10px;
}
</style>
</head>
<body class="dark-mode"> <!-- Ajouter ici la classe pour le mode sombre ou clair -->
<!-- Bandeau du haut avec les images -->
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<!-- Section du quizz -->
<h1>▶ Quizz ◀</h1>
<div class="quizz">
<h2>Question 1</h2>
<p>“Tu es un sorcier Harry”</p>
<!-- Grille de réponses (2 par ligne) -->
<div class="answers">
<button class="answer">Fight Club</button>
<button class="answer">Jurassic World</button>
<button class="answer">La 7ème compagnie</button>
<button class="answer">Harry Potter à l'école des sorciers</button>
</div>
<div class="submit-button">
<button class="buttonSudmite">Confirmer</button>
</div>
</div>
<script>
function toggleTheme() {
const body = document.body;
body.classList.toggle("dark-mode");
body.classList.toggle("light-mode");
const themeIcon = document.getElementById("theme-icon");
if (body.classList.contains("dark-mode")) {
themeIcon.src = "../images/light.svg";
} else {
themeIcon.src = "../images/dark.svg";
}
}
</script>
</body>
</html>

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../styles/styleQuote.css" media="screen">
<title>Wiki Fantasy : Citations</title>
<link rel="icon" href="../images/Logo.ico">
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
</head>
<body>
</body>
</html>

@ -1,63 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link rel="stylesheet" href="../styles/style.css">
<script defer src="../script/theme-toggle.js"></script>
<script src="../script/auth-check.js"></script>
</head>
<body>
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<a href="profil.html"><img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false"></a>
</div>
</div>
<div class="container">
<div class="row">
<div>
<input class="searchBarre" type="text" value="" placeholder="Rechercher"/>
<div>
<?php
#session_start();
#require_once('../bd/connexionDB.php');
#
#if(isset($_GET['user'])){
#$user = (String) trim($_GET['user']);
#
#$req = $DB->query("SELECT *
# FROM utilisateur
# WHERE nom LIKE ?
# LIMIT 10",
# array("$user%"));
#
#$req = $req->fetchALL();
$req=array(array('nom'=>'nom1','prenom'=>'prenom1'),array('nom'=>'nom2','prenom'=>'prenom2'),array('nom'=>'nom3','prenom'=>'prenom3'));
foreach($req as $r){
?>
<div style="margin-top: 20px 0; border-bottom: 2px solid #ccc"><?= $r['nom'] . " " . $r['prenom'] ?></div><?php
}
#}
?>
</div>
</div>
</div>
</div>
</body>
</html>

@ -1,62 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../styles/styleSignin.css" media="screen">
<title>Wiki Fantasy : Inscription</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ S'inscrire ◀</h1>
<form action="../script/signin.php" method="post">
<div class="signin">
<div class="DivId">
<p>Identifiant *</p>
<input type="text" class="champ" id="name" name="name" required/>
</div>
<div class="DivEmail">
<p>Email *</p>
<input type="email" class="champ" id="email" name="email" required/>
</div>
<div class="mdp">
<p>Mot de passe *</p>
<input type="password" class="champ" id="pswd" name="pswd" required/>
</div>
<div class="confmdp">
<p>Confirmer mot de passe *</p>
<input type="password" class="champ" id="confpswd" name="confpswd" required/>
</div>
<div class="imgprof">
<p>Image *</p>
</div>
<div class="confirmer">
<input type="submit" class="btn" value="Inscription" />
</div>
</div>
</form>
</body>
</html>

@ -1,32 +0,0 @@
<?php
class Connection extends PDO {
private $stmt;
public function __construct(string $dsn, string $username, string $password) {
parent::__construct($dsn,$username,$password);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/** * @param string $query
* @param array $parameters *
* @return bool Returns `true` on success, `false` otherwise
*/
public function executeQuery(string $query, array $parameters = []) : bool{
$this->stmt = parent::prepare($query);
foreach ($parameters as $name => $value) {
$this->stmt->bindValue($name, $value[0], $value[1]);
}
return $this->stmt->execute();
}
public function getResults() : array {
return $this->stmt->fetchall();
}
}
?>

@ -1,27 +0,0 @@
<?php
#session_start();
#require_once('../bd/connexionDB.php');
#
#if(isset($_GET['user'])){
#$user = (String) trim($_GET['user']);
#
#$req = $DB->query("SELECT *
# FROM utilisateur
# WHERE nom LIKE ?
# LIMIT 10",
# array("$user%"));
#
#$req = $req->fetchALL();
$req=query(array('nom'=>'nom1','prenom'=>'prenom1'),array('nom'=>'nom2','prenom'=>'prenom2'),array('nom'=>'nom3','prenom'=>'prenom3'));
$req = $req->fetchALL();
foreach($req as $r){
?>
<div style="margin-top: 20px 0; border-bottom: 2px solid #ccc"><?= $r['nom'] . " " . $r['prenom'] ?></div><?php
}
#}
?>

@ -1,39 +0,0 @@
// auth-check.js
// Vérifier si l'utilisateur est connecté
function isUserLoggedIn() {
// Vérifiez si 'isLoggedIn' est défini dans le localStorage ou par un cookie
return localStorage.getItem('isLoggedIn') === 'true';
}
// Redirection des liens en fonction de l'état de connexion
function setupLinks() {
const favoriteLink = document.querySelector('a[href="favorite.html"]');
const quizLink = document.querySelector('a[href="quiz.html"]');
const userIcon = document.querySelector('.user img');
if (!isUserLoggedIn()) {
// Si l'utilisateur n'est pas connecté, rediriger vers la page de connexion
if (favoriteLink) favoriteLink.href = "login.html";
if (quizLink) quizLink.href = "login.html";
if (userIcon) {
userIcon.style.cursor = "pointer"; // Changer le curseur pour indiquer la cliquabilité
userIcon.addEventListener('click', () => {
window.location.href = "login.html";
});
}
} else {
// Si l'utilisateur est connecté, définir les liens vers les pages dédiées
if (favoriteLink) favoriteLink.href = "favorite.html";
if (quizLink) quizLink.href = "quiz.html";
if (userIcon) {
userIcon.style.cursor = "pointer"; // Changer le curseur pour indiquer la cliquabilité
userIcon.addEventListener('click', () => {
window.location.href = "user-profile.html";
});
}
}
}
// Initialiser les liens lors du chargement de la page
document.addEventListener('DOMContentLoaded', setupLinks);

@ -1,169 +0,0 @@
function editFieldUsername(id) {
var pElement = document.getElementById(id);// Récupérer l'élément <p> via son identifiant
var currentValue = pElement.textContent.trim();// Obtenir le texte actuel du <p>
// Créer un champ de saisie <input> avec la valeur actuelle
var input = document.createElement('input');
input.type = 'text';
input.value = currentValue
input.class = 'changeValue';
input.setAttribute('onblur', 'saveFieldUsername("' + id + '", this.value)'); // Sauvegarde lors de la perte de focus
// Remplacer le <p> par le champ <input>
pElement.innerHTML = '';
pElement.appendChild(input);
input.focus(); // Mettre le focus sur le champ de saisie
}
//Sauvegarder les changements sur la vue pour le username
function saveFieldUsername(id, newValue) {
if (id === 'username') {
if (newValue.trim() === "") {
alert('Le nom d\'utilisateur ne peut pas être vide.');
document.getElementById(id).querySelector('input').focus();
return; // Ne pas sauvegarder si le nom d'utilisateur est vide
}
}
var pElement = document.getElementById(id);// Récupérer l'élément <p> via son identifiant
// Mettre à jour la valeur avec la nouvelle saisie
pElement.innerHTML = '<strong>' + newValue + ' <img class="imgModify" src="../../images/modify.svg" onclick="editFieldUsername(\'' + id + '\')"/></strong>';
}
function editFieldEmail(id) {
var pElement = document.getElementById(id);// Récupérer l'élément <p> via son identifiant
var currentValue = pElement.textContent.trim();// Obtenir le texte actuel du <p>
// Créer un champ de saisie <input> avec la valeur actuelle
var input = document.createElement('input');
input.type = 'email';
input.value = currentValue
input.class = 'changeValue';
input.setAttribute('onblur', 'saveFieldEmail("' + id + '", this.value)'); // Sauvegarde lors de la perte de focus
// Remplacer le <p> par le champ <input>
pElement.innerHTML = '';
pElement.appendChild(input);
input.focus(); // Mettre le focus sur le champ de saisie
}
//Sauvegarder les changements sur la vue pour l'email
function saveFieldEmail(id, newValue) {
if (id === 'email') {
if (!validateEmail(newValue)) {
alert('Adresse email invalide. Veuillez entrer un email valide.');
document.getElementById(id).querySelector('input').focus();
return; // Ne pas sauvegarder si l'email n'est pas valide
}
}
if (id === 'username') {
if (newValue.trim() === "") {
alert('Le nom d\'utilisateur ne peut pas être vide.');
document.getElementById(id).querySelector('input').focus();
return; // Ne pas sauvegarder si le nom d'utilisateur est vide
}
}
var pElement = document.getElementById(id); // Récupérer l'élément <p> via son identifiant
// Mettre à jour la valeur avec la nouvelle saisie
pElement.innerHTML = '<strong>' + newValue + ' <img class="imgModify" src="../../images/modify.svg" onclick="editFieldEmail(\'' + id + '\')"/></strong>';
}
//Email valide
function validateEmail(email) {
var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;// Regex pour vérifier le format de l'email
return re.test(String(email).toLowerCase());
}
function editFieldPassWd(id) {
var pElement = document.getElementById(id);// Récupérer l'élément <p> via son identifiant
pElement.innerHTML = '';// Effacer le contenu actuel de <p> pour insérer les inputs
// Créer le champ de saisie pour le nouveau mot de passe
var inputNewPass = document.createElement('input');
inputNewPass.type = 'password';
inputNewPass.placeholder = 'Nouveau mot de passe'; // Un placeholder pour indiquer la fonction du champ
inputNewPass.classList.add('changeValue'); // Ajouter une classe CSS pour styliser l'input
inputNewPass.setAttribute('id', 'newPassword'); // Ajouter un ID pour la gestion
inputNewPass.classList.add('inputPasswd'); // Ajouter une classe au input
// Créer le champ de saisie pour la confirmation du mot de passe
var inputConfirmPass = document.createElement('input');
inputConfirmPass.type = 'password';
inputConfirmPass.placeholder = 'Confirmer le mot de passe'; // Un placeholder pour indiquer la fonction du champ
inputConfirmPass.classList.add('changeValue'); // Ajouter une classe CSS pour styliser l'input
inputConfirmPass.setAttribute('id', 'confirmPassword'); // Ajouter un ID pour la gestion
inputConfirmPass.classList.add('inputPasswd'); // Ajouter une classe au input
// Ajouter un bouton de sauvegarde
var saveButton = document.createElement('button');
saveButton.textContent = 'Sauvegarder le mot de passe';
saveButton.classList.add('saveButtonPasswd'); // Ajouter une classe au bouton
saveButton.onclick = function() {
savePasswordFields(id, inputNewPass.value, inputConfirmPass.value);
};
// Ajouter les deux champs de saisie et le bouton dans l'élément <p>
pElement.appendChild(inputNewPass);
pElement.appendChild(document.createElement('br')); // Saut de ligne pour espacer les champs
pElement.appendChild(inputConfirmPass);
pElement.appendChild(document.createElement('br')); // Saut de ligne pour espacer
pElement.appendChild(saveButton);
inputNewPass.focus();// Mettre le focus sur le premier champ de saisie
}
function savePasswordFields(id, newPassword, confirmPassword) {
// Vérification si les champs sont vides
if (newPassword.trim() === "" || confirmPassword.trim() === ""){
alert("Les champs de mot de passe ne doivent pas être vides.");
return;
}
// Vérification de la correspondance des deux mots de passe
if (newPassword === confirmPassword) {
var pElement = document.getElementById(id);// Récupérer l'élément <p> via son identifiant
if(newPassword.length >= 16){
var maskedPassword = '*'.repeat(16); // Masquer le nouveau mot de passe pour l'affichage
}
else{
var maskedPassword = "*".repeat(newPassword.length); // Masquer le nouveau mot de passe pour l'affichage
}
// Remplacer les champs input par le texte masqué
pElement.innerHTML = '<strong>' + maskedPassword + '</strong> <img class="imgModify" src="../../images/modify.svg" onclick="editFieldPassWd(\'' + id + '\')"/></strong>';
alert('Mot de passe mis à jour avec succès');
// Possibilité d'ajouter ici une fonction pour envoyer les nouveaux mots de passe au serveur
} else {
alert('Les mots de passe ne correspondent pas.');
}
}

@ -1,16 +0,0 @@
<?php
class Quote{
public int $id;
public string $content;
public string $carac;
public string $imgPath;
public string $titleSrc;
public string $dateSrc;
public int $like;
public string $langue;
function __construct() {
}
}
?>

@ -1,49 +0,0 @@
<?php
include('Connection.php');
Class UserGateway{
private Connection $con;
public function __construct(Connection $con){
$this->con=$con;
}
public function searchQuote(string $quote,int $numpage,string $language):array{
//recherche par citation
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE content LIKE '%:quote%' AND isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':quote' => array($quote,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchSource(string $source,int $numpage,string $language):array{
//recherche par source
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE s.title LIKE '%:source%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':source' => array($source,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchPers(string $Carac,int $numpage,string $language):array{
//recherche par personnage
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE c.caracter LIKE '%:pers%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':pers' => array($Pers,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function getComment(int $id):array{
//obtention des commentaire d'une citation
$query="SELECT c.id_comment u.username, u.imgPath, c.comment, c.date FROM Commentary c JOIN Quote q ON c.quote = q.id_quote JOIN User u ON u.id_user = c.user JOIN Image i ON i.id_img = u.img WHERE id_quote = :id;";
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
$result=$this->con->getResults();
return $result;
}
}
?>

@ -1,51 +0,0 @@
// Quand le document est prêt
document.addEventListener("DOMContentLoaded", function() {
const themeIcon = document.getElementById('theme-icon');
const favicon = document.getElementById('favicon'); // Sélectionne la favicon
// Vérifie si les éléments existent bien avant d'y accéder
if (themeIcon && favicon) {
const currentTheme = localStorage.getItem('theme') || 'dark'; // Par défaut, sombre
// Applique le bon thème au chargement de la page
if (currentTheme === 'light') {
document.body.classList.remove('dark-mode');
document.body.classList.add('light-mode');
themeIcon.src = '../../images/light.svg'; // Affiche l'icône pour basculer vers le mode sombre
favicon.href = '../../images/iconeClaire.ico'; // Favicon pour le mode clair
} else {
document.body.classList.add('dark-mode');
themeIcon.src = '../../images/dark.svg'; // Affiche l'icône pour basculer vers le mode clair
favicon.href = '../../images/iconeSombre.ico'; // Favicon pour le mode sombre
}
} else {
console.error("Élément(s) manquant(s) : icône du thème ou favicon.");
}
});
// Fonction pour basculer entre les thèmes
function toggleTheme() {
const body = document.body;
const themeIcon = document.getElementById('theme-icon');
const favicon = document.getElementById('favicon'); // Sélectionne la favicon
if (themeIcon && favicon) {
if (body.classList.contains('dark-mode')) {
// Si on est en mode sombre, on passe en mode clair
body.classList.remove('dark-mode');
body.classList.add('light-mode');
themeIcon.src = '../../images/light.svg'; // Change vers le logo sombre
favicon.href = '../../images/iconeClaire.ico'; // Favicon pour le mode clair
localStorage.setItem('theme', 'light'); // Enregistre le thème clair dans localStorage
} else {
// Sinon, on repasse en mode sombre
body.classList.remove('light-mode');
body.classList.add('dark-mode');
themeIcon.src = '../../images/dark.svg'; // Change vers le logo clair
favicon.href = '../../images/iconeSombre.ico'; // Favicon pour le mode sombre
localStorage.setItem('theme', 'dark'); // Enregistre le thème sombre dans localStorage
}
} else {
console.error("Impossible de trouver l'icône ou le favicon.");
}
}

@ -1,11 +0,0 @@
document.addEventListener("DOMContentLoaded", function() {
const quoteElements = document.querySelectorAll('.citation-container .quote');
quoteElements.forEach(quote => {
let maxLength = 135; // Nombre max de caractères avant la coupure
if (quote.textContent.length > maxLength) {
let displayedText = quote.textContent.slice(0, maxLength) + '...\"';
quote.textContent = displayedText;
}
});
});

@ -1,96 +0,0 @@
<?php
class User{
public string $id;
public string $username;
public string $passwd;
public string $hidenPasswd;
public string $img;
public string $email;
function __construct(string $id, string $pseudo, string $password, string $image, string $mail) {
$this->id = $id;
$this->username = $pseudo;
$this->passwd = $password;
$this->hidenPasswd = hidenPassWd($password);
$this->img = $image;
$this->email = $mail;
}
public function updateUsername(string $newUsername){
if(isset($newUsername)){
$this->username = $newUsername;
}
}
public function updateEmail(string $newEmail) {
if(isset($newEmail)){
$this->email = $newEmail;
}
}
public function modifyImage(string $image){
if(isset($image)){
$u->img = $image;
}
}
}
//include("userGateway.php");
//$result = donneeUser('U003');
// ============================================ En attente du Model ============================================
include("Connection.php");
$dsn = "pgsql:host=londres;dbname=dblebeaulato";
$username = "lebeaulato";
$password = "MaSQL:2004!";
$con = new Connection($dsn,$username,$password);
$query = 'SELECT * FROM Users WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array('U003', PDO::PARAM_STR)));
$result = $con->getResults();
$u = new User($result[0]['id_user'],$result[0]['username'], $result[0]['pssword'], '../../images/imageProfil.png', $result[0]['email']); /*Test*/
//UPDATE username User
$query = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array('U003', PDO::PARAM_STR), ':newUsername'=> array('Hello', PDO::PARAM_STR)));
$queryReponse = 'SELECT username FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array('U003', PDO::PARAM_STR)));
$result = $con->getResults();
$u->username = $result[0]['username']; /*Test*/
//UPDATE email User
$query = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array('U003', PDO::PARAM_STR), ':newEmail'=> array('Sinper42Gamer@gmail.com', PDO::PARAM_STR)));
$queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array('U003', PDO::PARAM_STR)));
$result = $con->getResults();
$u->email = $result[0]['email']; /*Test*/
//UPDATE passwd User
$query = 'UPDATE Users SET pssword=:newPassWd WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array('U003', PDO::PARAM_STR), ':newPassWd'=> array('TestMotDePasssse', PDO::PARAM_STR)));
$queryReponse = 'SELECT pssword FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array('U003', PDO::PARAM_STR)));
$result = $con->getResults();
$u->passwd = $result[0]['pssword']; /*Test*/
// ================================================================================================================
function hidenPassWd(string $passwd){
if(strlen($passwd) >= 16) return str_repeat('*', 16);
return str_repeat('*', strlen($passwd));
}
?>

@ -1,105 +0,0 @@
<?php
include('Connection.php');
Class UserGateway{
private Connection $con;
public function __construct(Connection $con){
$this->con=$con;
}
public function insert(string $username,string $email,string $passwd):int{
// récupération id
$query='SELECT id_user FROM Users WHERE id_user >= ALL (SELECT id_user FROM Users);';
$this->con->executeQuery($query);
$result=$this->con->getResults();
foreach($result as $row){
$id=$row['id_user'] + 1;
}
// insertion user
$query='INSERT INTO Users VALUES (:id,:username,:email,:passwd,CURRENT_DATE,false);';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT),':username' => array($u->username,PDO::PARAM_STR),':email' => array($u->email,PDO::PARAM_STR),':passwd' => array($u->passwd,PDO::PARAM_STR)));
return $id;
}
public function delete(int $id){
// supretion user
$query='DELETE FROM Users WHERE id_user = :id;';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
}
public function getFavorite(int $id):array{
//obtention favoris d'un user
$query='SELECT * FROM Quote WHERE id_quote IN (SELECT id_quote IN Favorite f JOIN User u ON u.id_user = f.user WHERE id_user = :id);';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
$result=$this->con->getResults();
return $result;
}
public function donneeUser(string $id):array{
$query = 'SELECT * FROM Users WHERE id_user=:idUser';
$this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $this->con->getResults();
return $result;
}
// ===================== UPDATE FUNCTION =====================
public function updateUsername(string $id, string $newUsername):array{
//Update le nom du user passé en paramètre
$queryUpdate = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser';
$this->con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR)));
//Renvoie le nouveau nom du user
$queryReponse = 'SELECT username FROM Users WHERE id_user=:idUser';
$this->con->executeQuery($queryReponse, array($id=>array($newUsername, PDO::PARAM_STR)));
return $result;
}
public function updateEmail(string $id, string $newEmail):array{
//Update le email du user passé en paramètre
$queryUpdate = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser';
$this->con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR)));
//Renvoie le nouveau email du user
$queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateImg(string $id, string $newImg):array{
//Update l'image du user passé en paramètre
$query = 'UPDATE Users SET img=:newImg WHERE id_user=:idUser';
$this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR)));
//Renvoie la nouvelle image du user
$queryReponse = 'SELECT img FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $this->con->getResults();
return $result;
}
public function updatePasswd(string $id, string $newPassWd):array{
//Update le passwd du user passé en paramètre
$query = 'UPDATE Users SET pssword=:newPassWd WHERE id_user=:idUser';
$this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR)));
//Renvoie le nouveau passwd du user
$queryReponse = 'SELECT pssword FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $this->con->getResults();
return $result;
}
}
//$uG = new UserGateway(new Connection("pgsql:host=londres;dbname=dbkekentin","kekentin",""));
$uG = new UserGateway(new Connection("pgsql:host=londres;dbname=dblebeaulato","lebeaulato",""));
$uG->delete(2);
?>

@ -1,145 +0,0 @@
/* header.css */
/* Styles généraux */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #120b1d;
font-family: "Lemon", serif;
margin-top: 200px;
}
/* Header */
.header {
display: flex;
position: fixed;
background-color: #000000;
right: 0;
top: 0;
width: 100%;
text-align: center;
padding: 20px;
}
.nav {
display: flex;
align-items: center;
vertical-align: center;
gap: 30px;
width: 40%;
}
.logo {
display: flex;
align-items: center;
justify-content: center;
width: 20%;
}
.user {
display: flex;
flex-direction: row;
justify-content: flex-end;
align-items: center;
vertical-align: center;
gap: 30px;
width: 40%;
}
/* Mode sombre */
body.dark-mode {
background-color: #120B1D;
color: #ffffff;
}
body.dark-mode .header {
background-color: #000;
}
body.dark-mode .header img {
filter: invert(0%);
}
body.dark-mode .nav img:hover {
filter: invert(59%) sepia(96%) saturate(6733%) hue-rotate(275deg) brightness(112%) contrast(122%);
}
/* Mode clair */
body.light-mode {
background-color: #ffffff;
color: #000000;
}
body.light-mode .header {
background-color: #F7F7EB;
}
body.light-mode .header img {
filter: invert(100%);
}
body.light-mode .nav img:hover {
filter: invert(22%) sepia(6%) saturate(2269%) hue-rotate(193deg) brightness(98%) contrast(106%);
}
/* Media queries for responsiveness */
/* For tablets and small devices */
@media (max-width: 768px) {
.header {
flex-direction: column;
text-align: center;
}
.nav, .logo, .user {
width: 100%;
margin-bottom: 10px;
}
}
/* For mobile phones */
@media (max-width: 480px) {
body {
margin-top: 100px;
}
.nav img, .logo img {
width: 50px;
height: auto;
}
.container {
padding: 10px;
}
form {
width: 100%;
}
form input {
width: 100%;
padding: 10px;
margin-bottom: 10px;
}
}
/* Banner images should be responsive */
.header img {
max-width: 100%;
height: auto;
}
/* Media queries for different screen sizes */
@media (max-width: 768px) {
.header {
flex-direction: column;
}
.header img {
width: 80px;
height: auto;
}
}

@ -1,135 +0,0 @@
@import url('style.css'); /* Import de style.css */
/* Conteneur général pour les citations */
.citations-section {
display: flex;
flex-direction: column;
gap: 20px;
padding: 20px 0;
align-items: center;
width: 100%;
margin: 0 0;
}
/* Conteneur pour les suggestions en deux colonnes */
.suggestions-container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
width: 90%;
margin: 0 auto;
}
/* Citations */
.citation-container {
background: linear-gradient(to right, #4a148c, #7b1fa2);
border-radius: 12px;
color: white;
display: flex;
align-items: flex-start;
width: 49%; /* Chaque citation occupe 45% de la largeur pour laisser 5% d'espace */
box-sizing: border-box;
padding: 0;
height: 150px;
overflow: hidden;
margin-bottom: 20px;
word-wrap: break-word; /* Permet de couper les mots trop longs */
word-break: break-word;
}
/* Fixe la taille pour s'assurer que toutes les citations restent cohérentes */
.citation-container .text-content {
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: center;
height: 150px;
}
/* Citation du jour - toujours en pleine largeur */
.citation-du-jour {
width: 90%; /* Prend toute la largeur */
background: linear-gradient(to right, #ff5722, #ff9800); /* Dégradé spécial pour la citation du jour */
padding: 0;
overflow: hidden;
margin-bottom: 20px;
height: 150px;
}
.suggestion {
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
padding: 0;
overflow: hidden;
}
.citation-image {
width: 150px;
height: 100%;
object-fit: cover;
margin: 0;
border-radius: 0;
}
.text-content {
flex: 1;
padding: 10px;
display: flex;
flex-direction: column;
justify-content: center; /* Centre verticalement le texte */
word-wrap: break-word; /* Permet de couper les mots trop longs */
word-break: break-word;
}
.quote {
font-size: 1.2em;
margin-bottom: 10px;
font-style: italic;
}
.movie, .character, .year {
margin-bottom: 5px;
}
/* Mode sombre */
body.dark-mode .suggestion {
background: linear-gradient(to right, #4a148c, #7b1fa2);
color:white;
}
/* Mode clair */
body.light-mode .suggestion {
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
color:black; /* Changer le texte en noir pour le mode clair */
}
body.light-mode .quote,
body.light-mode .movie,
body.light-mode .character,
body.light-mode .year {
color: black; /* Forcer le texte en noir pour le mode clair */
}
/* Responsive design */
@media (max-width: 768px) {
.suggestions-container {
flex-direction: column;
width: 100%;
}
.citation-container {
width: 100%; /* Chaque citation prend toute la largeur sur mobile */
max-width: 100%;
height: 100px; /* Supprimer la hauteur fixe sur mobile */
}
.citation-image {
width: 100px;
height: 100px;
}
.quote {
font-size: 1em;
}
}

@ -1,130 +0,0 @@
@import url(./style.css);
/* ====== DARK MODE ====== */
body.dark-mode h1{
color : white;
font-family: "Lemon", serif;
text-align: center;
font-size: 32px;
margin-top: 10%;
}
body.dark-mode p{
margin-top: 6%;
margin-bottom: 2%;
color : white;
font-size: 20px;
font-family: "Lemon", serif;
}
body.dark-mode .login{
background-color: black;
width: 30%;
margin-left: 35%;
margin-top: 3%;
border-radius: 25px;
border: 2px solid transparent;
padding: 2%;
}
body.dark-mode .createAccount{
margin-top: 5%;
margin-bottom: 5%;
font-size: 13px;
text-align: center;
padding-top: 1%;
color: white;
border: 1px solid transparent;
font-family: "Lemon", serif;
}
body.dark-mode .buttonSudmite{
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
font-family: "Lemon", serif;
border: none;
color: white;
padding: 2%;
border-radius: 25px;
width: 75%;
font-size: 20px;
}
body.dark-mode .connexion{
width:90%;
height: 40px;
padding-left: 3%;
margin-left: 1%;
margin-top: -1%;
border-radius: 25px;
border: none;
font-size: 15px;
}
/* ====== LIGHT MODE ====== */
body.light-mode h1{
color : black;
font-family: "Lemon", serif;
text-align: center;
font-size: 32px;
margin-top: 10%;
}
body.light-mode p{
margin-top: 6%;
margin-bottom: 2%;
color : black;
font-size: 20px;
font-family: "Lemon", serif;
}
body.light-mode .login{
background-color: white;
width: 30%;
margin-left: 35%;
margin-top: 3%;
border-radius: 25px;
border: 2px solid black;
padding: 2%;
}
body.light-mode .createAccount{
margin-top: 5%;
margin-bottom: 5%;
font-size: 13px;
text-align: center;
padding-top: 1%;
color: black;
font-family: "Lemon", serif;
}
body.light-mode .buttonSudmite{
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif;
border: none;
color: black;
padding: 2%;
border-radius: 25px;
width: 75%;
font-size: 20px;
}
body.light-mode .connexion{
width:90%;
height: 40px;
padding-left: 3%;
margin-left: 1%;
margin-top: -1%;
border-radius: 25px;
border: 1px solid black;
background-color: #fff1f1;
font-size: 15px;
}
/* ====== OTHER ====== */
.buttonSudmiteDiv{
text-align: center;
}

@ -1,226 +0,0 @@
@import url(./style.css);
/* ====== DARK MODE ====== */
body.dark-mode h1{
color : white;
font-family: "Lemon", serif;
text-align: center;
font-size: 35px;
margin-top: 10%;
}
body.dark-mode p{
margin-top: 6%;
margin-bottom: 2%;
color : white;
font-size: 20px;
font-family: "Lemon", serif;
}
body.dark-mode .buttonSudmite{
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
font-family: "Lemon", serif;
border: none;
color: white;
padding: 5%;
border-radius: 25px;
width: 75%;
font-size: 20px;
}
body.dark-mode .createQuote{
margin-top: 5%;
margin-bottom: 5%;
font-size: 15px;
text-align: center;
padding-top: 1%;
color: white;
font-family: "Lemon", serif;
}
body.dark-mode .login{
background-color: black;
width: 30%;
margin-left: 35%;
margin-top: 9%;
border-radius: 25px;
padding-top: 1px;
padding-bottom: 1%;
border: 2px solid transparent;
}
body.dark-mode .imgModify{
width: 3%;
margin-left: 5%;
margin-top: 5%;
filter: invert(100%) brightness(1000%) contrast(1000%);
}
body.dark-mode .infoProfil > input {
width:90%;
height: 40px;
padding-left: 3%;
margin-left: 1%;
margin-top: -1%;
border-radius: 25px;
border: none;
font-size: 15px;
font-family: "Lemon", serif;
}
body.dark-mode .inputPasswd{
font-family: "Lemon", serif;
margin-top: 40%;
color: black;
}
body.dark-mode .saveButtonPasswd {
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
font-family: "Lemon", serif;
border: none;
color: white;
padding: 1%;
border-radius: 25px;
width: 55%;
font-size: 15px;
margin-top: 5%;
}
/* ====== LIGHT MODE ====== */
body.light-mode h1{
color : black;
font-family: "Lemon", serif;
text-align: center;
font-size: 35px;
margin-top: 10%;
}
body.light-mode p{
margin-top: 6%;
margin-bottom: 2%;
color : black;
font-size: 20px;
font-family: "Lemon", serif;
}
body.light-mode .buttonSudmite{
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif;
border: none;
color: black;
padding: 5%;
border-radius: 25px;
width: 75%;
font-size: 20px;
}
body.light-mode .createQuote{
margin-top: 5%;
margin-bottom: 5%;
font-size: 15px;
text-align: center;
padding-top: 1%;
color: black;
font-family: "Lemon", serif;
}
body.light-mode .login{
background-color: white;
width: 30%;
margin-left: 35%;
margin-top: 9%;
border-radius: 25px;
padding-top: 1px;
padding-bottom: 1%;
border: 2px solid black;
}
body.light-mode .imgModify{
width: 3%;
margin-left: 5%;
margin-top: 5%;
}
body.light-mode .infoProfil > input {
width:90%;
height: 40px;
padding-left: 3%;
margin-left: 1%;
margin-top: -1%;
border-radius: 25px;
border: 1px solid black;
background-color: #fff1f1;
font-size: 15px;
font-family: "Lemon", serif;
color : black;
}
body.light-mode .inputPasswd{
font-family: "Lemon", serif;
margin-top: 40%;
color: black;
}
body.light-mode .saveButtonPasswd {
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif;
border: none;
color: black;
padding: 1%;
border-radius: 25px;
width: 55%;
font-size: 15px;
margin-top: 5%;
}
/* ====== OTHER ====== */
.buttonSudmiteDiv{
text-align: center;
}
.changeValue{
color: red;
}
.imageProfil{
width: 25%;
border-radius: 25px;
display:block;
margin-left: 38%;
margin-top: 5%;
}
.infoProfil{
margin-left: 10%;
text-align: center;
font-size: 120%;
}
.languageDiv{
margin-left: 25%;
}
.languageTitle{
text-align: left;
font-size: 100%;
}
.languageImage{
width: 300px;
height: 40px;
margin-left: 25%;
display:block;
}

@ -1,154 +0,0 @@
@import url(./style.css);
@import url('https://fonts.googleapis.com/css2?family=Lemon&display=swap');
body, html {
height: 100%;
overflow: hidden;
}
/* ====== DARK MODE ====== */
body.dark-mode h1, body.dark-mode h2, body.dark-mode p {
color: white;
font-family: "Lemon", serif;
text-align: center;
}
body.dark-mode .quiz {
background-color: black;
height: 60%;
width: 80%;
margin: 3% auto;
padding: 2%;
border-radius: 25px;
border: 2px solid transparent;
}
body.dark-mode .answers {
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
row-gap: 80px;
}
body.dark-mode .answer {
background-color: #1b0048;
color: white;
border: none;
border-radius: 25px;
width: 35%;
padding: 35px;
font-size: 30px;
text-align: center;
cursor: pointer;
}
body.dark-mode .answer:hover {
background-color: #6100ff;
}
body.dark-mode .submit-button {
text-align: center;
margin-top: 80px;
}
body.dark-mode .buttonSudmite {
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
font-family: "Lemon", serif;
border: none;
color: white;
padding: 10px 20px;
border-radius: 25px;
font-size: 30px;
cursor: pointer;
}
/* ====== LIGHT MODE ====== */
body.light-mode h1, body.light-mode h2, body.light-mode p {
color: black;
font-family: "Lemon", serif;
text-align: center;
}
body.light-mode .quiz {
background-color: white;
width: 50%;
height: 90%;
margin: 3% auto;
padding: 2%;
border-radius: 25px;
border: 2px solid black;
}
body.light-mode .answers {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
gap: 1000px;
height: 90%;
}
body.light-mode .answer {
background-color: #fff1f1;
color: black;
border: 1px solid black;
border-radius: 25px;
width: 45%;
padding: 10px;
font-size: 18px;
text-align: center;
cursor: pointer;
}
body.light-mode .answer:hover {
background-color: #c7f6c4;
}
body.light-mode .submit-button {
text-align: center;
margin-top: 20px;
}
body.light-mode .buttonSudmite {
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif;
border: none;
color: black;
padding: 10px 20px;
border-radius: 25px;
font-size: 20px;
cursor: pointer;
}
/* ====== OTHER ====== */
.container {
width: 100%;
height: 100px;
background-color: transparent;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 50px;
}
.header {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
}
.nav img {
margin-right: 10px;
}
.logo img {
display: block;
margin: 0 auto;
}
.user img {
margin-left: 10px;
}

@ -1 +0,0 @@
@import url(./style.css);

@ -1,120 +0,0 @@
@import url(./style.css);
h1{
margin-top: 10%;
text-align: center;
}
.signin{
border-radius: 25px;
display: grid;
grid-template-columns: 2fr 1fr;
grid-template-rows: repeat(5, 1fr);
width : 30%;
margin-left: 35%;
margin-top: 3%;
padding : 2%;
}
p{
font-size: 20px;
margin-top: 7%;
margin-bottom: 2%;
font-weight: bold;
}
.DivId{
grid-area: 1 / 1 / 2 / 2;
}
.DivEmail{
grid-area: 2 / 1 / 3 / 2;
}
.mdp{
grid-area: 3 / 1 / 4 / 3;
}
.confmdp{
grid-area: 4 / 1 / 5 / 3;
}
.imgprof{
grid-area: 1 / 2 / 3 / 3;
}
.confirmer{
grid-area: 5 / 1 / 6 / 3;
align-self: center;
text-align: center;
}
.champ{
width: 90%;
height : 35%;
border-radius: 25px;
margin-left: 1%;
padding-left: 3%;
margin-top: -1%;
font-size: 15px;
}
.btn{
margin-top: 10%;
width:75%;
font-size: 20px;
padding: 2%;
border-radius: 25px;
border: none;
font-family: "Lemon", serif;
}
/*Dark mode*/
body.dark-mode .signin{
background-color: #000000;
border: 2px solid transparent;
}
body.dark-mode .h1{
color : white;
}
body.dark-mode .p{
color : white;
}
body.dark-mode .btn{
background: linear-gradient(90deg, #6100ff 0%, #1b0048 100%);
color : white;
}
body.dark-mode .champ{
background-color: #ffffff;
border: 2px solid #ffffff;
}
/*Light*/
body.light-mode .signin{
background-color: #ffffff;
border: 2px solid #000000;
}
body.light-mode .h1{
color : #000000;
}
body.light-mode .p{
color : #000000;
}
body.light-mode .btn{
background: linear-gradient(90deg, #caffde 0%, #b7c8ff 100%);
color : #000000;
}
body.light-mode .champ{
background-color: #fff1f1;
border: 1px solid #000000;
}

@ -1,231 +0,0 @@
import requests
from bs4 import BeautifulSoup
import os
import time
# Liste de films associée à la liste de personnages fournie plus tôt
films = [
"Harry Potter", "Star Wars", "Le Seigneur des Anneaux", "Batman", "Spider-Man",
"Iron Man", "Les Avengers", "Doctor Strange", "Deadpool", "X-Men",
"Black Panther", "Aquaman", "La Ligue des Justiciers", "Shazam", "Les Gardiens de la Galaxie",
"Le Parrain", "Le Chevalier Noir", "Inception", "Fight Club", "Pulp Fiction",
"Forrest Gump", "Matrix", "Jurassic Park", "Gladiator", "Le Silence des Agneaux",
"La Liste de Schindler", "Braveheart", "La Ligne Verte", "Il faut sauver le soldat Ryan", "Thor",
"Captain America", "Logan", "Joker", "Wonder Woman", "L'Homme d'Acier",
"Hunger Games", "Divergente", "Les Animaux Fantastiques", "Le Hobbit",
"Pirates des Caraïbes", "Toy Story", "La Reine des Neiges", "Le Roi Lion", "La Belle et la Bête",
"Aladdin", "Mulan", "Cendrillon", "La Belle au bois dormant", "Blanche-Neige",
"Raiponce", "Vaiana", "Zootopie", "Vice-versa", "Le Monde de Nemo",
"Les Indestructibles", "Ratatouille", "WALL-E", "Là-haut", "Coco",
"Monstres & Cie", "Cars", "Madagascar", "Shrek", "Kung Fu Panda",
"Dragons", "L'Âge de glace", "Les Croods"
]
# Petite base de données locale avec les années des films
film_years = {
"Harry Potter": "2001",
"Star Wars": "1977",
"Le Seigneur des Anneaux": "2001",
"Batman": "1989",
"Spider-Man": "2002",
"Iron Man": "2008",
"Les Avengers": "2012",
"Doctor Strange": "2016",
"Deadpool": "2016",
"X-Men": "2000",
"Black Panther": "2018",
"Aquaman": "2018",
"La Ligue des Justiciers": "2017",
"Shazam": "2019",
"Les Gardiens de la Galaxie": "2014",
"Le Parrain": "1972",
"Le Chevalier Noir": "2008",
"Inception": "2010",
"Fight Club": "1999",
"Pulp Fiction": "1994",
"Forrest Gump": "1994",
"Matrix": "1999",
"Jurassic Park": "1993",
"Gladiator": "2000",
"Le Silence des Agneaux": "1991",
"La Liste de Schindler": "1993",
"Braveheart": "1995",
"La Ligne Verte": "1999",
"Il faut sauver le soldat Ryan": "1998",
"Thor": "2011",
"Captain America": "2011",
"Logan": "2017",
"Joker": "2019",
"Wonder Woman": "2017",
"L'Homme d'Acier": "2013",
"Hunger Games": "2012",
"Divergente": "2014",
"Les Animaux Fantastiques": "2016",
"Le Hobbit": "2012",
"Pirates des Caraïbes": "2003",
"Toy Story": "1995",
"La Reine des Neiges": "2013",
"Le Roi Lion": "1994",
"La Belle et la Bête": "1991",
"Aladdin": "1992",
"Mulan": "1998",
"Cendrillon": "1950",
"La Belle au bois dormant": "1959",
"Blanche-Neige": "1937",
"Raiponce": "2010",
"Vaiana": "2016",
"Zootopie": "2016",
"Vice-versa": "2015",
"Le Monde de Nemo": "2003",
"Les Indestructibles": "2004",
"Ratatouille": "2007",
"WALL-E": "2008",
"Là-haut": "2009",
"Coco": "2017",
"Monstres & Cie": "2001",
"Cars": "2006",
"Madagascar": "2005",
"Shrek": "2001",
"Kung Fu Panda": "2008",
"Dragons": "2010",
"L'Âge de glace": "2002",
"Les Croods": "2013"
}
# Fonction pour rechercher une image sur Bing
def search_image_bing(personnage, film):
url = f"https://www.bing.com/images/search?q={personnage.replace(' ', '+')}+{film.replace(' ', '+')}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
# Rechercher la première image
image = soup.find('img', {'class': 'mimg'})
if image and 'src' in image.attrs:
return image['src']
return None
# Vérifier si une citation est en français
common_french_words = {
'le', 'la', 'les', 'et', 'est', 'pour', 'que', 'qui', 'un', 'une', 'de', 'du', 'ce', 'cela',
'dans', 'sur', 'par', 'avec', 'en', 'au', 'aux', 'des', 'ou', 'mais', 'si', 'ne', 'pas',
'il', 'elle', 'ils', 'elles', 'nous', 'vous', 'tu', 'je', 'me', 'te', 'se', 'sont', 'été',
'avoir', 'être', 'faire', 'dire', 'pouvoir', 'aller', 'venir', 'voir', 'vouloir', 'savoir',
'bien', 'tout', 'mon', 'ton', 'son', 'notre', 'votre', 'leur', 'plus', 'aussi', 'comme',
'faut', 'a', 'le', 'la', 'les'
}
def is_french(citation_text):
words_in_citation = citation_text.lower().split()
french_word_count = sum(1 for word in words_in_citation if word in common_french_words)
# On considère que c'est français si au moins 50% des mots sont reconnus comme français
return french_word_count / len(words_in_citation) >= 0.5
# Fonction pour obtenir l'année du film depuis la base de données locale ou via Google
def get_film_year(film_name):
if film_name in film_years:
return film_years[film_name]
return '0' # Retourner 0 si l'année est inconnue
# Fonction pour scraper les citations d'un film
def scrape_citations(film_name):
url = "https://www.kaakook.fr/rechercher"
data = {
"extrfilm": film_name, # Nom du film
"extrcitation": "" # On laisse vide pour chercher toutes les citations du film
}
# Faire la requête POST
response = requests.post(url, data=data)
if response.status_code != 200:
print(f"Erreur avec le film {film_name}. Status code: {response.status_code}")
return []
# Parser la réponse HTML
soup = BeautifulSoup(response.content, "html.parser")
citations = []
# Extraire les citations et autres informations
articles = soup.find_all('article')
for article in articles:
citation_text = article.find('a').get_text().strip().replace("\n", " ").replace(" ", " ")
# Ignorer les citations contenant du HTML <br> (donc multi-lignes)
if "<br>" in str(article):
continue
# Vérifier si la citation commence par un tiret (dialogue)
if citation_text.startswith('-'):
continue
# Vérifier si la citation est en français
if not is_french(citation_text):
continue
source = article.find('cite').get_text().strip()
# Récupérer le personnage (ignorer si le personnage est inconnu)
footer_links = article.find('footer').find_all('a')
character = footer_links[1].get_text().strip() if len(footer_links) > 1 else 'Inconnu'
# Si le personnage est inconnu, on ignore cette citation
if character == 'Inconnu':
continue
# Récupérer l'image associée
img_tag = article.find('img')
image_url = img_tag['src'] if img_tag else 'images/default.jpg'
# Télécharger l'image si elle n'existe pas déjà
if image_url == 'images/default.jpg':
image_url = search_image_bing(character, film_name)
if image_url:
download_image(image_url, character)
# Récupérer l'année via la base de données locale ou Google
year = get_film_year(film_name)
# Stocker les résultats sous la forme "citation; source; character; year; image"
citations.append(f"\n{citation_text}; {source}; {character}; {year}; {image_url}")
return citations
# Fonction pour télécharger une image
def download_image(image_url, character_name):
image_name = f"{character_name.replace(' ', '_')}.jpg"
image_path = os.path.join("images", image_name)
# Vérifier si le dossier "images" existe, sinon le créer
if not os.path.exists("images"):
os.makedirs("images")
# Si l'image n'existe pas déjà, la télécharger
if not os.path.exists(image_path):
try:
img_data = requests.get(image_url).content
with open(image_path, 'wb') as handler:
handler.write(img_data)
print(f"Image téléchargée : {image_path}")
except Exception as e:
print(f"Erreur lors du téléchargement de l'image {image_url} : {e}")
# Ecrire les résultats dans un fichier txt unique
def save_citations_to_file(citations):
with open("citation.txt", "a", encoding="utf-8") as file:
for citation in citations:
file.write(citation + "\n")
# Itérer sur la liste des films et récupérer les citations
for film in films:
print(f"Recherche des citations pour le film : {film}")
citations = scrape_citations(film)
if citations:
save_citations_to_file(citations)
print(f"Ajouté {len(citations)} citation(s) pour {film}.")
else:
print(f"Aucune citation trouvée pour {film}.")
time.sleep(2) # Petite pause pour éviter d'envoyer trop de requêtes rapidement

BIN
src/.DS_Store vendored

Binary file not shown.

@ -1,87 +0,0 @@
<?php
class QuestionEntity {
private int $id_question;
private string $question;
private string $answerA;
private string $answerB;
private string $answerC;
private string $answerD;
private string $cAnswer;
public function __construct(int $id_question, string $question, string $answerA, string $answerB, string $answerC, string $answerD, string $cAnswer)
{
$this -> id_question = $id_question;
$this -> question = $question;
$this -> answerA = $answerA;
$this -> answerB = $answerB;
$this -> answerC = $answerC;
$this -> answerD = $answerD;
$this -> cAnswer = $cAnswer;
}
public function getIdQuestion() : int
{
return $this -> id_question;
}
public function getQuestion() : string
{
return $this -> question;
}
public function getAnswerA() : string
{
return $this -> answerA;
}
public function getAnswerB() : string
{
return $this -> answerB;
}
public function getAnswerC() : string
{
return $this -> answerC;
}
public function getAnswerD() : string
{
return $this -> answerD;
}
public function getCAnswer() : string
{
return $this -> cAnswer;
}
public function setQuestion(string $new_question) : void
{
$this -> question = $new_question;
}
public function setAnswerA(string $new_answera) : void
{
$this -> answerA = $new_answera;
}
public function setAnswerB(string $new_answerb) : void
{
$this -> answerB = $new_answerb;
}
public function setAnswerC(string $new_answerc) : void
{
$this -> answerC = $new_answerc;
}
public function setAnswerD(string $new_answerd) : void
{
$this -> answerD = $new_answerd;
}
public function setCAnswer(string $new_canswer) : void
{
$this -> cAnswer = $new_canswer;
}
}

@ -1,149 +0,0 @@
<?php
require_once("../public/script/Connection.php");
require_once("questionEntity.php");
class QuestionGateway
{
private Connection $co;
public function __construct(Connection $co)
{
$this -> co = $co;
}
/**
* Inserts a new question into the database
*
* @param QuestionEntity $q The `Question` object to insert
* @return bool True if the question was successfully inserted, false otherwise
*/
public function create(QuestionEntity $q) : bool
{
$query = "
INSERT INTO Question
VALUES (:id_q, :question, :answerA, :answerB, :answerC, :answerD, :cAnswer)
";
return $this -> co -> executeQuery($query, [
'id_q' => array($q -> getIdQuestion(), PDO::PARAM_INT),
'question' => array($q -> getQuestion(), PDO::PARAM_STR),
'answerA' => array($q -> getAnswerA(), PDO::PARAM_STR),
'answerB' => array($q -> getAnswerB(), PDO::PARAM_STR),
'answerC' => array($q -> getAnswerC(), PDO::PARAM_STR),
'answerD' => array($q -> getAnswerD(), PDO::PARAM_STR),
'cAnswer' => array($q -> getAnswerC(), PDO::PARAM_STR)
]);
}
/**
* Retrieves a question from the database by its ID
*
* @param int $id The ID of the question to retrieve
* @return QuestionEntity|null The `Question` object if found, null otherwise
*/
public function findById(int $id) : ?QuestionEntity
{
$query = "SELECT * FROM Question WHERE id_question = :id_q";
$this -> co -> executeQuery($query, ['id_q' => $id]);
$res = $this -> co -> getResults();
if ($res)
return new QuestionEntity(
$res['id_q'],
$res['question'],
$res['answerA'],
$res['answerB'],
$res['answerC'],
$res['answerD'],
$res['cAnswer'],
);
return null;
}
/**
* Updates the text of and an existing question in the database
*
* @param QuestionEntity $q The `Question` object with updated information
* @return bool True if the text of the question was successfully updated, false otherwise
*/
public function updateText(QuestionEntity $q) : bool
{
$query = "
UPDATE Question
SET question = :question
WHERE id_question = :id_q
";
return $this -> co -> executeQuery($query, [
'id_q' => array($q -> getIdQuestion(), PDO::PARAM_INT),
'question' => array($q -> getQuestion(), PDO::PARAM_STR)
]);
}
/**
* Updates the answers of an existing question in the database
*
* @param QuestionEntity $q The `Question` object with updated information
* @return bool True if the answers of the question was successfully updated, false otherwise
*/
public function updateAnswers(QuestionEntity $q) : bool
{
$query = "
UPDATE Question
SET answerA = :answerA, answerB = :answerB,
answerC = :answerC, answerD = :answerD, cAnswer = :cAnswer
WHERE id_question = :id_q
";
return $this -> co -> executeQuery($query, [
'id_q' => array($q -> getIdQuestion(), PDO::PARAM_INT),
'answerA' => array($q -> getAnswerA(), PDO::PARAM_STR),
'answerB' => array($q -> getAnswerB(), PDO::PARAM_STR),
'answerC' => array($q -> getAnswerC(), PDO::PARAM_STR),
'answerD' => array($q -> getAnswerD(), PDO::PARAM_STR),
'cAnswer' => array($q -> getAnswerC(), PDO::PARAM_STR)
]);
}
/**
* Deletes a question from the database by its ID
*
* @param int $id The ID of the question
* @return bool
*/
public function delete(int $id) : bool
{
$query = "DELETE FROM Question WHERE id_question = :id_q";
return $this -> co -> executeQuery($query, ['id_q' => $id]);
}
/**
* Retrieves all quizzes from the database
*
* @return QuestionEntity[] An array of `Question` objects
*/
public function findAll() : array
{
$query = "SELECT * FROM Question";
$this -> co -> executeQuery($query);
$res = $this -> co -> getResults();
$questions = [];
foreach ($res as $q)
$questions[] = new QuestionEntity(
$q['id_question'],
$q['question'],
$q['answerA'],
$q['answerB'],
$q['answerC'],
$q['answerD'],
$q['cAnswer']
);
return $questions;
}
}

@ -1,63 +0,0 @@
<?php
require_once("questionEntity.php");
require_once("questionGateway.php");
class QuestionModel {
private QuestionGateway $gateway;
public function __construct(QuestionGateway $gateway)
{
$this -> gateway = $gateway;
}
public function createQuestion(int $id_question, string $question, string $answerA, string $answerB, string $answerC, string $answerD, string $cAnswer) : bool
{
$q = new QuestionEntity($id_question, $question, $answerA, $answerB, $answerC, $answerD, $cAnswer);
return $this -> gateway -> create($q);
}
public function getQuestion(int $id_question) : ?QuestionEntity
{
return $this -> gateway -> findById($id_question);
}
public function updateTextQuestion(int $id_question, string $question) : bool
{
$q = $this -> gateway -> findById($id_question);
if ($q)
{
$q -> setQuestion($question);
return $this -> gateway -> updateText($q);
}
return false;
}
public function updateAnswersQuestion(int $id_question, string $answerA, string $answerB, string $answerC, string $answerD, string $cAnswer) : bool
{
$q = $this -> gateway -> findById($id_question);
if ($q)
{
$q -> setAnswerA($answerA);
$q -> setAnswerB($answerB);
$q -> setAnswerC($answerC);
$q -> setAnswerD($answerD);
$q -> setAnswerC($cAnswer);
return $this -> gateway -> updateAnswers($q);
}
return false;
}
public function deleteQuestion(int $id_question) : bool
{
return $this -> gateway -> delete($id_question);
}
public function getAllQuestions() : array
{
return $this -> gateway -> findAll();
}
}

@ -1,43 +0,0 @@
<?php
class QuizEntity {
private int $id_quiz;
private int $level;
private int $timer;
public function __construct(int $id_quiz, int $level, int $timer)
{
$this -> id_quiz = $id_quiz;
$this -> level = $level;
$this -> timer = $timer;
}
public function getIdQuiz(): int
{
return $this -> id_quiz;
}
public function getLevel(): int
{
return $this -> level;
}
public function getTimer(): int
{
return $this -> timer;
}
public function setLevel(int $new_level): void
{
$this -> level = $new_level;
}
public function setTimer(int $new_timer): void
{
$this -> timer = $new_timer;
}
}

@ -1,100 +0,0 @@
<?php
require_once("../public/script/Connection.php");
require_once("quizEntity.php");
class QuizGateway {
private Connection $co;
public function __construct(Connection $co)
{
$this -> co = $co;
}
public function create(QuizEntity $q) : bool
{
$query = "
INSERT INTO Quiz
VALUES (:id_quiz, :level, :timer)
";
return $this -> co -> executeQuery($query, [
':id_quiz' => array($q -> getIdQuiz(), PDO::PARAM_INT),
':level' => array($q -> getLevel(), PDO::PARAM_INT),
':timer' => array($q -> getTimer(), PDO::PARAM_INT)
]);
}
public function findQuizById(int $id) : ?QuizEntity
{
$query = "SELECT * FROM Quiz WHERE id_quiz = :id_q";
$this->co->executeQuery($query, [':id_q' => $id]);
$res = $this->co->getResults();
if ($res)
return new QuizEntity(
$res['id_quiz'],
$res['level'],
$res['timer']
);
return null;
}
public function updateLevel(QuizEntity $q) : bool
{
$query = "
UPDATE Quiz
SET level = :level
WHERE id_quiz = :id_q
";
return $this -> co -> executeQuery($query, [
':id_q' => array($q -> getIdQuiz(), PDO::PARAM_INT),
':level' => array($q -> getLevel(), PDO::PARAM_INT),
]);
}
public function updateTimer(QuizEntity $q) : bool
{
$query = "
UPDATE Quiz
SET timer = :timer
WHERE id_quiz = :id_q
";
return $this -> co -> executeQuery($query, [
':id_q' => array($q -> getIdQuiz(), PDO::PARAM_INT),
':timer' => array($q -> getTimer(), PDO::PARAM_INT),
]);
}
public function delete(int $id) : bool
{
$query = "DELETE FROM Quiz WHERE id_quiz = :id_q";
return $this -> co -> executeQuery($query, [':id_q' => $id]);
}
public function findAll() : array
{
$query = "SELECT * FROM Quiz";
$this -> co -> executeQuery($query);
$res = $this -> co -> getResults();
$quiz = [];
foreach ($res as $q)
$quiz[] = new QuizEntity(
$q['id_quiz'],
$q['level'],
$q['timer']
);
return $quiz;
}
}

@ -1,60 +0,0 @@
<?php
require_once("quizEntity.php");
require_once("quizGateway.php");
class QuizModel {
private QuizGateway $gateway;
public function __construct(QuizGateway $gateway)
{
$this -> gateway = $gateway;
}
public function createQuiz(int $id_quiz, int $level, int $timer) : bool
{
$q = new QuizEntity($id_quiz, $level, $timer);
return $this -> gateway -> create($q);
}
public function getQuiz(int $id_quiz) : ?QuizEntity
{
return $this -> gateway -> findQuizById($id_quiz);
}
public function updateLevelQuiz(int $id_quiz, int $level) : bool
{
$q = $this -> gateway -> findQuizById($id_quiz);
if ($q)
{
$q -> setLevel($level);
return $this -> gateway -> updateLevel($q);
}
return false;
}
public function updateTimerQuiz(int $id_quiz, int $timer) : bool
{
$q = $this -> gateway -> findQuizById($id_quiz);
if ($q)
{
$q -> setTimer($timer);
return $this -> gateway -> updateTimer($q);
}
return false;
}
public function deleteQuiz(int $id_quiz) : bool
{
return $this -> gateway -> delete($id_quiz);
}
public function getAllQuiz() : array
{
return $this -> gateway -> findAll();
}
}

@ -1,10 +0,0 @@
<?php
require_once('../script/Connection.php');
require_once('../src/questionGateway.php');
require_once('../src/questionModel.php');
$uAnswer = $_POST['answer'];
var_dump($_POST);
$cAnswer = $_POST['cAnswer'];
var_dump($cAnswer);

@ -1,4 +0,0 @@
TesteurFichier
motDepasseFichier
../images/imageProfil.png
testeurFichier.compte@wikifantasy.com

@ -1,64 +0,0 @@
<?php
class CitationView {
public static function display($citationDuJour, $suggestions) {
echo "<div class='citations-section'>";
// Afficher la citation du jour
if ($citationDuJour) {
$quote = htmlspecialchars(trim(substr($citationDuJour[1], 1))); // Retirer le symbole µ
$movie = htmlspecialchars(trim($citationDuJour[2]));
$character = htmlspecialchars(trim($citationDuJour[3]));
$year = htmlspecialchars(trim($citationDuJour[4]));
$imagePath = htmlspecialchars(trim($citationDuJour[5]));
echo "<h2>Citation du jour</h2>";
echo "<div class='citation-container citation-du-jour'>";
echo "<img src='$imagePath' alt='$movie' class='citation-image'>";
echo "<div class='text-content'>";
echo "<p class='quote'>\"$quote\"</p>";
echo "<p class='movie'>- $movie</p>";
echo "<p class='character'>Personnage : $character</p>";
echo "<p class='year'>Année : $year</p>";
echo "</div>";
echo "</div>";
} else {
echo "<p class='error'>Aucune citation du jour n'a été trouvée.</p>";
}
// Filtrer les suggestions pour éviter de reprendre la citation du jour
$filteredSuggestions = array_filter($suggestions, function($suggestion) use ($citationDuJour) {
// Vérifie que les deux citations ne sont pas identiques
return isset($suggestion[0]) && trim($suggestion[0]) !== trim($citationDuJour[1]);
});
// Afficher les suggestions
if (!empty($filteredSuggestions)) {
echo "<h2>Suggestions</h2>";
echo "<div class='suggestions-container'>"; // Conteneur pour gérer les colonnes
foreach ($filteredSuggestions as $suggestion) {
// Vérifier si tous les éléments requis sont bien présents dans $suggestion
$quote = isset($suggestion[0]) ? htmlspecialchars(trim($suggestion[0])) : '';
$movie = isset($suggestion[1]) ? htmlspecialchars(trim($suggestion[1])) : '';
$character = isset($suggestion[2]) ? htmlspecialchars(trim($suggestion[2])) : 'Inconnu';
$year = isset($suggestion[3]) ? htmlspecialchars(trim($suggestion[3])) : 'Inconnue';
$imagePath = isset($suggestion[4]) ? htmlspecialchars(trim($suggestion[4])) : 'images/default.jpg';
echo "<div class='citation-container suggestion'>";
echo "<img src='$imagePath' alt='$movie' class='citation-image'>";
echo "<div class='text-content'>";
echo "<p class='quote'>\"$quote\"</p>";
echo "<p class='movie'>- $movie</p>";
echo "<p class='character'>- Personnage : $character</p>";
echo "<p class='year'>- Année : $year</p>";
echo "</div>";
echo "</div>";
}
echo "</div>"; // Fin du conteneur suggestions
}
echo "</div>"; // Fin de la section des citations
echo "</body></html>"; // Clôture la structure HTML
}
}

@ -1,37 +0,0 @@
<?php
class HeaderView {
public static function display($theme) {
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wiki Fantasy</title>
<link id="favicon" rel="icon" href="../images/dark.svg" type="image/x-icon" />
<script src="../script/truncateQuotes.js"></script>
<link rel="stylesheet" href="../styles/styleAccueil.css"> <!-- Import de styleAccueil.css -->
<script defer src="../script/theme-toggle.js"></script> <!-- Import du script -->
</head>
<body class="<?php echo htmlspecialchars($theme); ?>">
<div class="container">
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/dark.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<a href="profil.html"><img src="../../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false"></a>
</div>
</div>
</div>
<?php
}
}
?>
Loading…
Cancel
Save