diff --git a/MyAccount.php b/MyAccount.php index e7423ff971f48a12277adcf4f114b34e13333683..93307b639eaba9d61a9a742b64864264434e6500 100644 --- a/MyAccount.php +++ b/MyAccount.php @@ -8,6 +8,16 @@ <body> <h1>My Account</h1> + <?php + + include "scripts/SQL.php"; + + echo connect('ivanalglave@outlook.fr', '123'); + echo '<br>'; + echo get_email(); + echo '<br>'; + echo get_favourites(); + ?> </body> </html> \ No newline at end of file diff --git a/MyFavouriteRecipes.php b/MyFavouriteRecipes.php index 247eebc82e2f7d9f50cc0b80bea6cc6f4569fdfd..7a2728e4dc22118a1e8e20915886211937efe59e 100644 --- a/MyFavouriteRecipes.php +++ b/MyFavouriteRecipes.php @@ -3,18 +3,22 @@ <head> <title>Drinkpedia</title> <meta charset="UTF-8"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> + <script src="scripts/DataQuery.js"></script> <script> - var data = { - event: 'recipelist', - value: sessionStorage.getItem('favourites'), - showScore: 'false', - title: 'Favoris :' - }; - window.top.postMessage(data, [data.event, data.value, data.showScore, data.title]); - + getFavourites(function(e) + { + var data = { + event: 'recipelist', + value: e, + showScore: 'false', + title: 'Favoris :' + }; + window.top.postMessage(data, [data.event, data.value, data.showScore, data.title]); + }) </script> </body> diff --git a/RecipeList.php b/RecipeList.php index ecb63105fe7106f112486ed1ba6783c7e1775392..bd2e359bccb810a05f544a1e3e612907d22bcd2c 100644 --- a/RecipeList.php +++ b/RecipeList.php @@ -4,6 +4,7 @@ <title>Drinkpedia</title> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="css/RecipeList.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> @@ -58,6 +59,7 @@ </ul> + <script src="scripts/DataQuery.js"></script> <script> document.addEventListener('keyup', function (e) { @@ -82,24 +84,27 @@ function switchFavourite(img) { - let new_src = "images/favourite_off.png"; + //let new_src = "images/favourite_off.png"; if(!img.classList.contains('favouriteOn')) { new_src = "images/favourite_on.png"; img.classList.add('favouriteOn'); img.classList.remove('favouriteOff'); - let f = sessionStorage.getItem('favourites'); + /*let f = sessionStorage.getItem('favourites'); if(f != '') f += '|'; f += img.alt; - sessionStorage.setItem('favourites', f); + sessionStorage.setItem('favourites', f);*/ + addFavourite(img.alt, function(e) { + refreshFavourites(); + }); } else { img.classList.remove('favouriteOn'); img.classList.add('favouriteOff'); - let f = sessionStorage.getItem('favourites').split('|'); + /*let f = sessionStorage.getItem('favourites').split('|'); let nf = ''; for(let i = 0; i < f.length; i++) { @@ -108,17 +113,20 @@ if(i != 0) nf += '|'; nf += f[i]; } - } - sessionStorage.setItem('favourites', nf); + }*/ + + removeFavourite(img.alt, function(e){ + refreshFavourites(); + }); } - img.src= new_src; + //img.src= new_src; } function refreshFavourites() { let collection = document.getElementsByClassName('toggleFavourite'); - let favourites = sessionStorage.getItem('favourites').split('|'); + /*let favourites = sessionStorage.getItem('favourites').split('|'); for(let i = 0; i < collection.length; i++) { let node = collection[i]; @@ -135,7 +143,28 @@ node.classList.remove('favouriteOn'); node.src = "images/favourite_off.png"; } - } + }*/ + + getFavourites(function(e) { + let favourites = e; + for(let i = 0; i < collection.length; i++) + { + let node = collection[i]; + let r_id = node.value; + if(favourites.findIndex(val => val == node.alt) >= 0) + { + node.classList.add('favouriteOn'); + node.classList.remove('favouriteOff'); + node.src = "images/favourite_on.png"; + } + else + { + node.classList.add('favouriteOff'); + node.classList.remove('favouriteOn'); + node.src = "images/favourite_off.png"; + } + } + }) } diff --git a/css/MyAccount.css b/css/MyAccount.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/scripts/DataQuery.js b/scripts/DataQuery.js index 8122cb25a42bfa8ae03026159151c9aea2c5e3c8..86f63e64405937ae988848fb396020f3360176f8 100644 --- a/scripts/DataQuery.js +++ b/scripts/DataQuery.js @@ -23,4 +23,126 @@ function getRecipeImage(id, callback) function getAllIngredients(callback) { query('getAllIngredients', [], callback); +} + +function create_user(u_email, u_pwd, callback) +{ + query('create_user', [u_email, u_pwd], callback); +} + +function connect(u_email, u_pwd, callback) +{ + query('connect', [u_email, u_pwd], callback); +} + +function is_connected(callback) +{ + query('is_connected', [], callback); +} + +function get_email(callback) +{ + query('get_email', [], callback); +} + +function get_favourites(callback) +{ + query('get_favourites', [], callback); +} + +function set_favourites(favourites, callback) +{ + query('set_favourites', [favourites], callback); +} + +function set_password(u_newpwd, callback) +{ + query('set_password', [u_newpwd], callback); +} + +function getFavourites(callback) +{ + is_connected(function(e) + { + alert('Connected : ' + (e ? 'true' : 'false')); + + get_favourites(function(f) + { + let localFavourites = sessionStorage.getItem('favourites').split('|'); + let dbFavourites = f.split('|'); + let res = joinCheckDuplicates(localFavourites, dbFavourites); + callback(res); + }); + }) +} + +function joinCheckDuplicates(e1, e2) +{ + let e3 = e1; + for(let i = 0; i < e2.length; i++) + { + if(e3.indexOf(e2[i]) < 0) e3.push(e2[i]); + } + return e3; +} + +function addFavourite(id, callback) +{ + get_favourites(function(f) + { + let localFavourites = sessionStorage.getItem('favourites').split('|'); + let dbFavourites = f.split('|'); + let res = joinCheckDuplicates(localFavourites, dbFavourites); + let indexOfTest = res.indexOf(id); + if(indexOfTest < 0) res.push(id); + + let resultStr = ''; + let first = true; + + for(let i = 0; i < res.length; i++) + { + if(res[i] != '') + { + if(!first) resultStr += '|'; + else first = false; + resultStr += res[i]; + } + } + + sessionStorage.setItem('favourites', resultStr); + + set_favourites(function(g) { + callback(resultStr); + }) + }); +} + +function removeFavourite(id, callback) +{ + get_favourites(function(f) + { + let localFavourites = sessionStorage.getItem('favourites').split('|'); + let dbFavourites = f.split('|'); + let res = joinCheckDuplicates(localFavourites, dbFavourites); + let indexOfToRemove = res.indexOf(id); + if(indexOfToRemove >= 0) res.splice(indexOfToRemove, 1); + + let resultStr = ''; + let first = true; + + for(let i = 0; i < res.length; i++) + { + if(res[i] != '') + { + if(!first) resultStr += '|'; + resultStr += res[i]; + } + } + + sessionStorage.setItem('favourites', resultStr); + + set_favourites(function(g) { + callback(resultStr); + }) + }); } \ No newline at end of file diff --git a/scripts/DataQuery.php b/scripts/DataQuery.php index 6e024dd80fde62eb86b8180f57603d63aa9998be..1ae0401152e0411f0a1a4b549cc57db80cbf9a94 100644 --- a/scripts/DataQuery.php +++ b/scripts/DataQuery.php @@ -1,6 +1,7 @@ <?php include "Functions.php"; + include "SQL.php"; $funcName = $_POST['functionname']; @@ -26,9 +27,36 @@ { echo implode('|', getAllIngredients()); } + else if($funcName == 'create_user') + { + echo create_user($_POST['arguments'][0], $_POST['arguments'][1]); + } + else if($funcName == 'connect') + { + echo connect($_POST['arguments'][0], $_POST['arguments'][1]); + } + else if($funcName == 'is_connected') + { + echo is_connected(); + } + else if($funcName == 'get_email') + { + echo get_email(); + } + else if($funcName == 'get_favourites') + { + echo get_favourites(); + } + else if($funcName == 'set_favourites') + { + echo set_favourites($_POST['arguments'][0]); + } + else if($funcName == 'set_password') + { + echo set_password($_POST['arguments'][0]); + } else { echo 'error - unknown func'; } - ?> \ No newline at end of file diff --git a/scripts/SQL.php b/scripts/SQL.php new file mode 100644 index 0000000000000000000000000000000000000000..a8376c5e0a8b7b0077a6fe1953a5a2745cdd5f83 --- /dev/null +++ b/scripts/SQL.php @@ -0,0 +1,75 @@ +<?php + +$bdd = new PDO('mysql:host=localhost;dbname=drinkpedia;charset=utf8', 'root', '', array( + PDO::ATTR_PERSISTENT => true +)); +$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$email = ''; + +function create_user($u_email, $u_pwd) +{ + global $bdd; + $bdd->query('INSERT INTO user (email, pwdhash, favourites) VALUES (\'' . $u_email . '\', \'' . $u_pwd . '\', \'1|2|4\')'); +} + +function connect($u_email, $u_pwd) +{ + global $bdd, $email; + $res = $bdd->query('SELECT pwdhash FROM user WHERE email LIKE \'' . $u_email . '\''); + if($res) + { + $res = $res->fetch(); + if(count($res) > 0) + { + $fetched_pwd = $res[0]; + if($fetched_pwd == $u_pwd) + { + $email = $u_email; + return true; + } + } + } + return false; +} + +function is_connected() +{ + global $email; + return $email == '' ? false : true; +} + +function get_email() +{ + global $email; + return $email; +} + +function get_favourites() +{ + global $bdd, $email; + if($email != '') + { + return $bdd->query('SELECT favourites FROM user WHERE email LIKE \'' . $email . '\'')->fetch()[0]; + } + return ''; +} + +function set_favourites($favourites) +{ + global $bdd, $email; + if($email != '') + { + $bdd->query('UPDATE user SET favourites=\'' . $favourites . '\' WHERE email like \'' . $email . '\''); + } +} + +function set_password($u_newpwd) +{ + global $bdd, $email; + if($email != '') + { + $bdd->query('UPDATE user SET pwdhash=\'' . $u_newpwd . '\' WHERE email like \'' . $email . '\''); + } +} + +?> \ No newline at end of file