aboutsummaryrefslogtreecommitdiff
path: root/Html/admin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Html/admin/.htaccess1
-rw-r--r--Html/admin/add-category.php134
-rw-r--r--Html/admin/add-licence.php134
-rw-r--r--Html/admin/add-user.php156
-rw-r--r--Html/admin/categories.php112
-rw-r--r--Html/admin/download.php90
-rw-r--r--Html/admin/edit-category.php125
-rw-r--r--Html/admin/edit-licence.php125
-rw-r--r--Html/admin/edit-post.php398
-rw-r--r--Html/admin/edit-profil.php281
-rw-r--r--Html/admin/edit-user.php166
-rw-r--r--Html/admin/index.php185
-rw-r--r--Html/admin/licences.php110
-rw-r--r--Html/admin/login.php92
-rw-r--r--Html/admin/logout.php17
-rw-r--r--Html/admin/logs.php95
-rw-r--r--Html/admin/menu.php11
-rw-r--r--Html/admin/messagerie.php111
-rw-r--r--Html/admin/messages_envoyer_tous.php114
-rw-r--r--Html/admin/profil.php619
-rw-r--r--Html/admin/recup_pass.php124
-rw-r--r--Html/admin/signup.php233
-rw-r--r--Html/admin/upload.php373
-rw-r--r--Html/admin/upload.php.DIST372
-rw-r--r--Html/admin/users.php170
25 files changed, 4348 insertions, 0 deletions
diff --git a/Html/admin/.htaccess b/Html/admin/.htaccess
new file mode 100644
index 0000000..5a928f6
--- /dev/null
+++ b/Html/admin/.htaccess
@@ -0,0 +1 @@
+Options -Indexes
diff --git a/Html/admin/add-category.php b/Html/admin/add-category.php
new file mode 100644
index 0000000..9e8ce8b
--- /dev/null
+++ b/Html/admin/add-category.php
@@ -0,0 +1,134 @@
+<?php
+require('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle = 'Admin : ajouter une catégorie';
+require('../includes/header.php');
+?>
+
+
+<body>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+<?php
+// fil d'ariane
+$def = "index";
+$dPath = $_SERVER['REQUEST_URI'];
+$dChunks = explode("/", $dPath);
+
+echo('<a class="dynNav" href="/">Accueil</a><span class="dynNav"> > </span>');
+for($i=1; $i<count($dChunks); $i++ ){
+ echo('<a class="dynNav" href="/');
+ for($j=1; $j<=$i; $j++ ){
+ echo($dChunks[$j]);
+ if($j!=count($dChunks)-1){ echo("/");}
+ }
+
+ if($i==count($dChunks)-1){
+ $prChunks = explode(".", $dChunks[$i]);
+ if ($prChunks[0] == $def) $prChunks[0] = "";
+ $prChunks[0] = $prChunks[0] . "</a>";
+ }
+ else $prChunks[0]=$dChunks[$i] . '</a><span class="dynNav"> > </span>';
+ echo('">');
+ echo(str_replace("_" , " " , $prChunks[0]));
+}
+?>
+<br /><br />
+
+
+ <?php include('menu.php');?>
+
+ <p><a href="categories.php">Categories Index</a></p>
+ <h2>Ajouter une catégorie</h2>
+
+ <?php
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ $_POST = array_map( 'stripslashes', $_POST );
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($catTitle ==''){
+ $error[] = 'Veuillez entrer un nom de catégorie.';
+ }
+
+ if(!isset($error)){
+
+ try {
+
+ $catSlug = slug($catTitle);
+
+ //insert into database
+ $stmt = $db->prepare('INSERT INTO blog_cats (catTitle,catSlug) VALUES (:catTitle, :catSlug)') ;
+ $stmt->execute(array(
+ ':catTitle' => $catTitle,
+ ':catSlug' => $catSlug
+ ));
+
+ //redirect to index page
+ header('Location: categories.php?action=ajoute');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<p class="error">'.$error.'</p>';
+ }
+ }
+ ?>
+
+<form action='' method='post'>
+
+ <p><label>Titre</label><br />
+ <input type='text' name='catTitle' value='<?php if(isset($error)){ echo html($_POST['catTitle']); } ?>'></p>
+
+ <p><input type='submit' name='submit' class="searchsubmit formbutton" value='Ajouter la catégorie'></p>
+
+</form>
+
+</div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/add-licence.php b/Html/admin/add-licence.php
new file mode 100644
index 0000000..900f331
--- /dev/null
+++ b/Html/admin/add-licence.php
@@ -0,0 +1,134 @@
+<?php
+require('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle= 'Admin : ajouter une licence';
+require('../includes/header.php');
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+<?php
+// fil d'ariane
+$def = "index";
+$dPath = $_SERVER['REQUEST_URI'];
+$dChunks = explode("/", $dPath);
+
+echo('<a class="dynNav" href="/">Accueil</a><span class="dynNav"> > </span>');
+for($i=1; $i<count($dChunks); $i++ ){
+ echo('<a class="dynNav" href="/');
+ for($j=1; $j<=$i; $j++ ){
+ echo($dChunks[$j]);
+ if($j!=count($dChunks)-1){ echo("/");}
+ }
+
+ if($i==count($dChunks)-1){
+ $prChunks = explode(".", $dChunks[$i]);
+ if ($prChunks[0] == $def) $prChunks[0] = "";
+ $prChunks[0] = $prChunks[0] . "</a>";
+ }
+ else $prChunks[0]=$dChunks[$i] . '</a><span class="dynNav"> > </span>';
+ echo('">');
+ echo(str_replace("_" , " " , $prChunks[0]));
+}
+?>
+<br /><br />
+
+
+ <?php include('menu.php');?>
+ <p><a href="licences.php">Licences Index</a></p>
+
+ <h2>Ajouter une licence</h2>
+
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ $_POST = array_map( 'stripslashes', $_POST );
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($licenceTitle ==''){
+ $error[] = 'Veuillez entrer un titre de licence.';
+ }
+
+ if(!isset($error)){
+
+ try {
+
+ $licenceSlug = slug($licenceTitle);
+
+ //insert into database
+ $stmt = $db->prepare('INSERT INTO blog_licences (licenceTitle,licenceSlug) VALUES (:licenceTitle, :licenceSlug)') ;
+ $stmt->execute(array(
+ ':licenceTitle' => $licenceTitle,
+ ':licenceSlug' => $licenceSlug
+ ));
+
+ //redirect to index page
+ header('Location: licences.php?action=ajoute');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<p class="error">'.$error.'</p>';
+ }
+ }
+ ?>
+
+ <form action='' method='post'>
+
+ <p><label>Titre</label><br />
+ <input type='text' name='licenceTitle' value='<?php if(isset($error)){ echo html($_POST['licenceTitle']); } ?>'></p>
+
+ <p><input type='submit' name='submit' class="searchsubmit formbutton" value='Ajouter la licence'></p>
+
+ </form>
+
+</div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/add-user.php b/Html/admin/add-user.php
new file mode 100644
index 0000000..bd0ea57
--- /dev/null
+++ b/Html/admin/add-user.php
@@ -0,0 +1,156 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle= 'Admin : ajouter un membre';
+require('../includes/header.php');
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+<?php
+// fil d'ariane
+$def = "index";
+$dPath = $_SERVER['REQUEST_URI'];
+$dChunks = explode("/", $dPath);
+
+echo('<a class="dynNav" href="/">Accueil</a><span class="dynNav"> > </span>');
+for($i=1; $i<count($dChunks); $i++ ){
+ echo('<a class="dynNav" href="/');
+ for($j=1; $j<=$i; $j++ ){
+ echo($dChunks[$j]);
+ if($j!=count($dChunks)-1){ echo("/");}
+ }
+
+ if($i==count($dChunks)-1){
+ $prChunks = explode(".", $dChunks[$i]);
+ if ($prChunks[0] == $def) $prChunks[0] = "";
+ $prChunks[0] = $prChunks[0] . "</a>";
+ }
+ else $prChunks[0]=$dChunks[$i] . '</a><span class="dynNav"> > </span>';
+ echo('">');
+ echo(str_replace("_" , " " , $prChunks[0]));
+}
+?>
+<br /><br />
+
+
+ <?php include('menu.php');?>
+ <p><a href="users.php">Membres Admin Index</a></p>
+
+ <h2>Ajouter un membre</h2>
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($username ==''){
+ $error[] = 'Veuillez entrer un pseudo.';
+ }
+
+ if($password ==''){
+ $error[] = 'Veuillez entrer un mot de passe.';
+ }
+
+ if($passwordConfirm ==''){
+ $error[] = 'Veuillez confirmer le mot de passe.';
+ }
+
+ if($password != $passwordConfirm){
+ $error[] = 'Les mots de passe concordent pas.';
+ }
+
+ if($email ==''){
+ $error[] = 'Veuillez entrer une adresse e-mail.';
+ }
+
+ if(!isset($error)){
+
+ $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);
+
+ try {
+
+ //insert into database
+ $stmt = $db->prepare('INSERT INTO blog_members (username,password,email) VALUES (:username, :password, :email)') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':password' => $hashedpassword,
+ ':email' => $email
+ ));
+
+ //redirect to index page
+ header('Location: users.php?action=ajoute');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<p class="error">'.$error.'</p>';
+ }
+ }
+ ?>
+
+ <form action='' method='post'>
+
+ <p><label>Pseudo</label><br />
+ <input type='text' name='username' value='<?php if(isset($error)){ echo html($_POST['username']);}?>'></p>
+
+ <p><label>Mot de passe</label><br />
+ <input type='password' name='password' value='<?php if(isset($error)){ echo html($_POST['password']);}?>'></p>
+
+ <p><label>Confirmation mot de passe</label><br />
+ <input type='password' name='passwordConfirm' value='<?php if(isset($error)){ echo html($_POST['passwordConfirm']);}?>'></p>
+
+ <p><label>E-mail</label><br />
+ <input type='text' name='email' value='<?php if(isset($error)){ echo html($_POST['email']);}?>'></p>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Ajouter un membre'></p>
+
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/categories.php b/Html/admin/categories.php
new file mode 100644
index 0000000..66c911a
--- /dev/null
+++ b/Html/admin/categories.php
@@ -0,0 +1,112 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+//show message from add / edit page
+if(isset($_GET['delcat'])){
+
+ $stmt = $db->prepare('DELETE FROM blog_cats WHERE catID = :catID') ;
+ $stmt->execute(array(':catID' => html($_GET['delcat'])));
+
+ header('Location: categories.php?action=supprime');
+ exit;
+}
+
+// titre de la page
+$pagetitle= 'Admin : gestion des catégories';
+require('../includes/header.php');
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+
+ <div id="body">
+ <div id="content">
+
+
+ <?php include('menu.php');?>
+
+ <?php
+ //show message from add / edit page
+ if(isset($_GET['action']) && $_GET['action'] == 'supprime'){
+ echo '<h3>La catégorie a été supprimée avec succès.</h3>';
+ }
+ if(isset($_GET['action']) && $_GET['action'] == 'ajoute'){
+ echo '<h3>La catégorie a été ajoutée avec succès.</h3>';
+ }
+
+ ?>
+
+ <table>
+ <tr>
+ <th>Titre</th>
+ <th>Action</th>
+ </tr>
+ <?php
+ try {
+ $pages = new Paginator('10','p');
+ $stmt = $db->query('SELECT catID FROM blog_cats');
+ //pass number of records to
+ $pages->set_total($stmt->rowCount());
+
+ $stmt = $db->query('SELECT catID, catTitle, catSlug FROM blog_cats ORDER BY catTitle ASC '.$pages->get_limit());
+
+ while($row = $stmt->fetch()){
+
+ echo '<tr>';
+ echo '<td style="width: 80%;">'.html($row['catTitle']).'</td>';
+ ?>
+
+ <td>
+ <a style="text-decoration: none;" href="edit-category.php?id=<?php echo html($row['catID']);?>"><input type="button" class="button" value="Edit."></a> |
+ <a style="text-decoration: none;" href="javascript:delcat('<?php echo html($row['catID']);?>','<?php echo html($row['catSlug']);?>')"><input type="button" class="button" value="Suppr."</a>
+ </td>
+
+ <?php
+ echo '</tr>';
+ }
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+ </table>
+
+ <br />
+ <p style="text-align: right;"><a href="add-category.php" style="text-decoration: none;"><input type="button" class="button" value="Ajouter une catégorie" /></a></p>
+
+ <?php
+ echo $pages->page_links();
+ ?>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/download.php b/Html/admin/download.php
new file mode 100644
index 0000000..136cc35
--- /dev/null
+++ b/Html/admin/download.php
@@ -0,0 +1,90 @@
+<?php
+require_once('../includes/config.php');
+
+//Pas d'accès direct
+if(!isset($_GET['id']) || $_GET['id'] == '') {
+ header('Location: '.SITEURL.'/torrents.php?action=nodirect');
+ exit;
+}
+
+
+//on détermine l'id du fichier
+$fid = html($_GET['id']);
+
+// Si une session membre est lancée, on détermine l'id du membre
+if(isset($_SESSION['username'])) {
+ $stmt = $db->prepare('SELECT * FROM blog_members WHERE username = :username');
+ $stmt->execute(array(':username' => html($_SESSION['username'])));
+ $row = $stmt->fetch();
+ $uid = $row['memberID'];
+}
+else {
+ // s'il n'y a pas de session, c'est donc un visiteur avec l'id 32
+ $uid = 32;
+}
+
+/*
+//on recherche le hash dans la base xbt_files
+$stmt1 = $db->prepare('SELECT * FROM xbt_files WHERE fid = :fid');
+$stmt1->execute(array(':fid' => $fid));
+$row1 = $stmt1->fetch();
+*/
+
+//on recherche le torrent dans la base blog_posts_seo
+$stmt2 = $db->prepare('SELECT * FROM blog_posts_seo WHERE postID = :postID');
+$stmt2->execute(array(':postID' => $fid));
+$row2 = $stmt2->fetch();
+
+if($row2['postID'] == '') {
+ header('Location: '.SITEURL.'/torrents.php?action=noexist');
+}
+
+
+$torrent = $row2['postTorrent'];
+
+$torrentfile = $REP_TORRENTS.'/'.$torrent;
+
+// On décode le fichier torrent
+$fd = fopen($torrentfile, "rb");
+$alltorrent = fread($fd, filesize($torrentfile));
+$array = BDecode($alltorrent);
+fclose($fd);
+
+//On cherche le pid
+$stmt3 = $db->prepare('SELECT * FROM blog_members WHERE memberID = :uid');
+$stmt3->execute(array(':uid' => $uid));
+$row3 = $stmt3->fetch();
+
+// Il n'y a que les membres + les visiteurs qui peuvent télécharger
+// pas de userid = 0
+if ($row3['pid'] == '') {
+ header('Location: '.SITEURL);
+}
+
+if ($row3['pid'] == '00000000000000000000000000000000') {
+ $pid = '00000000000000000000000000000000';
+}
+else {
+ $pid = $row3['pid'];
+}
+
+$tracker_announce_urls = SITEURL.':'.ANNOUNCEPORT.'/announce';
+
+// On construit la nouvelle announce avec le pid (passkey ...)
+$array["announce"] = SITEURL.":".ANNOUNCEPORT."/".$pid."/announce";
+
+$alltorrent=BEncode($array);
+
+// On construit le header
+header("Content-Type: application/x-bittorrent");
+header('Content-Disposition: attachment; filename="['.SITENAMELONG.']'.$torrent.'"');
+print($alltorrent);
+
+if(isset($_SESSION['username'])) {
+ write_log('<span style="color:blue; font-weight:bold;">Download torrent :</span> '.html($row2['postTitle']).' par '.html($_SESSION['username']), $db);
+}
+else {
+ write_log('<span style="color:blue; font-weight:bold;">Download torrent :</span> '.html($row2['postTitle']).' par Visiteur', $db);
+}
+
+?>
diff --git a/Html/admin/edit-category.php b/Html/admin/edit-category.php
new file mode 100644
index 0000000..82d2249
--- /dev/null
+++ b/Html/admin/edit-category.php
@@ -0,0 +1,125 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle= 'Admin : Edition des catégories';
+require('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php include('menu.php');?>
+ <p><a href="categories.php">Catégories Index</a></p>
+
+ <h2>Edition de la catégorie</h2>
+
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ $_POST = array_map( 'stripslashes', $_POST );
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($catID ==''){
+ $error[] = 'Ce post possède un ID invalide !.';
+ }
+
+ if($catTitle ==''){
+ $error[] = 'Veuillez entrer un titre.';
+ }
+
+ if(!isset($error)){
+
+ try {
+
+ $catSlug = slug($catTitle);
+
+ //insert into database
+ $stmt = $db->prepare('UPDATE blog_cats SET catTitle = :catTitle, catSlug = :catSlug WHERE catID = :catID') ;
+ $stmt->execute(array(
+ ':catTitle' => $catTitle,
+ ':catSlug' => $catSlug,
+ ':catID' => $catID
+ ));
+
+ //redirect to index page
+ header('Location: categories.php?action=updated');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+ ?>
+
+ <?php
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo $error.'<br />';
+ }
+ }
+
+ try {
+
+ $stmt = $db->prepare('SELECT catID, catTitle FROM blog_cats WHERE catID = :catID') ;
+ $stmt->execute(array(':catID' => $_GET['id']));
+ $row = $stmt->fetch();
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ ?>
+
+ <form action='' method='post'>
+ <input type='hidden' name='catID' value='<?php echo $row['catID'];?>'>
+
+ <p><label>Titre</label><br />
+ <input type='text' name='catTitle' value='<?php echo $row['catTitle'];?>'></p>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Mettre à jour'></p>
+
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/edit-licence.php b/Html/admin/edit-licence.php
new file mode 100644
index 0000000..bbdb466
--- /dev/null
+++ b/Html/admin/edit-licence.php
@@ -0,0 +1,125 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle= 'Admin : Edition des licences';
+require('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php include('menu.php');?>
+ <p><a href="licences.php">Licences Index</a></p>
+
+ <h2>Edition de la licence</h2>
+
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ $_POST = array_map( 'stripslashes', $_POST );
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($licenceID ==''){
+ $error[] = 'Ce post possède un ID invalide !.';
+ }
+
+ if($licenceTitle ==''){
+ $error[] = 'Veuillez entrer un titre.';
+ }
+
+ if(!isset($error)){
+
+ try {
+
+ $licenceSlug = slug($licenceTitle);
+
+ //insert into database
+ $stmt = $db->prepare('UPDATE blog_licences SET licenceTitle = :licenceTitle, licenceSlug = :licenceSlug WHERE licenceID = :licenceID') ;
+ $stmt->execute(array(
+ ':licenceTitle' => $licenceTitle,
+ ':licenceSlug' => $licenceSlug,
+ ':licenceID' => $licenceID
+ ));
+
+ //redirect to index page
+ header('Location: licences.php?action=updated');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+ ?>
+
+ <?php
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo $error.'<br />';
+ }
+ }
+
+ try {
+
+ $stmt = $db->prepare('SELECT licenceID, licenceTitle FROM blog_licences WHERE licenceID = :licenceID') ;
+ $stmt->execute(array(':licenceID' => $_GET['id']));
+ $row = $stmt->fetch();
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ ?>
+
+ <form action='' method='post'>
+ <input type='hidden' name='licenceID' value='<?php echo $row['licenceID'];?>'>
+
+ <p><label>Titre</label><br />
+ <input type='text' name='licenceTitle' value='<?php echo $row['licenceTitle'];?>'></p>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Mettre à jour'></p>
+
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/edit-post.php b/Html/admin/edit-post.php
new file mode 100644
index 0000000..32e7634
--- /dev/null
+++ b/Html/admin/edit-post.php
@@ -0,0 +1,398 @@
+<?php
+require('../includes/config.php');
+
+try {
+ $stmt = $db->prepare('SELECT * FROM blog_posts_seo WHERE postID = :postID');
+ $stmt->execute(array(':postID' => $_GET['id']));
+ $rowpost = $stmt->fetch();
+}
+
+catch(PDOException $e) {
+ echo $e->getMessage();
+}
+
+//Si pas connecté : on renvoie sur page principale
+if(!$user->is_logged_in()) {
+ header('Location: '.SITEURL.'/login.php');
+}
+
+//Si pas l'auteur du post : on renvoie sur page principale
+//if($rowpost['postAuthor'] != $_SESSION['username']) {
+// header('Location: '.SITEURL);
+//}
+
+
+// -----------------------------------------------------------------------------------------------
+// si c'est l'auteur du post ou si c'est l'admin, on donne les droits d'édition
+if(isset($_SESSION['username']) && isset($_SESSION['userid'])) {
+ if(($rowpost['postAuthor'] == $_SESSION['username']) || ($_SESSION['userid'] == 1)) {
+
+
+
+//Si on supprime l'icone de présentation
+if(isset($_GET['delimage'])) {
+
+ $delimage = $_GET['delimage'];
+
+ //on supprime le fichier image
+ $stmt = $db->prepare('SELECT postImage FROM blog_posts_seo WHERE postID = :postID');
+ $stmt->execute(array(
+ ':postID' => $delimage
+ ));
+ $sup = $stmt->fetch();
+ $file = $REP_IMAGES_TORRENTS.$sup['postImage'];
+ if (file_exists($file)) {
+ unlink($file);
+ }
+
+ //puis on supprime l'image dans la base
+ $stmt = $db->prepare('UPDATE blog_posts_seo SET postImage = NULL WHERE postID = :postID');
+ $stmt->execute(array(
+ ':postID' => $delimage
+ ));
+
+ header('Location: edit-post.php?id='.$delimage);
+}
+
+// titre de la page
+$pagetitle = 'Admin : édition du torrent : '.$rowpost['postTitle'];
+require('../includes/header.php');
+
+?>
+
+
+<body>
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php //include('menu.php');?>
+ <!-- <p><a href="./">Blog Admin Index</a></p> -->
+
+ <h2>Edition du post : <?php echo $rowpost['postTitle']; ?></h2>
+
+
+<?php
+
+$id = $_GET['id'];
+
+//if form has been submitted process it
+if(isset($_POST['submit'])) {
+
+ //collect form data
+ //extract($_POST);
+
+ if(isset($_FILES['icontorr']['name']) && !empty($_FILES['icontorr']['name'])) {
+ //if(isset($_POST['icontorr']) && !empty($_POST['icontorr'])) {
+
+ // *****************************************
+ // upload icone de présentation du torrent
+ // *****************************************
+
+ $target_dir = $REP_IMAGES_TORRENTS;
+ $target_file = $target_dir . basename($_FILES["icontorr"]["name"]);
+ $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
+
+ //L'erreur N°4 indique qu'il n'y a pas de fichier. On l'exclut car l'icone de présentation du torrent n'est pas obligatoire.
+ if ($_FILES['icontorr']['error'] > 0 && $_FILES['icontorr']['error'] != 4) {
+ //if ($_FILES['icontorr']['error'] > 0) {
+ $error[] = 'Erreur lors du transfert de l\'icone de présentation du torrent.';
+ }
+
+ // On cherche si l'image n'existe pas déjà sous ce même nom
+ if (file_exists($target_file)) {
+ $error[] = 'Désolé, cette image existe déjà. Veillez en choisir une autre ou tout simplement changer son nom.';
+ }
+
+ // taille de l'image
+ if ($_FILES['icontorr']['size'] > $MAX_SIZE_ICON) {
+ $error[] = 'Image trop grosse. Taille maxi : '.makesize($MAX_SIZE_ICON);
+ }
+
+ // format de l'image
+ if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") {
+ $error[] = 'Désolé : seuls les fichiers .jpg, .png, .jpeg sont autorisés !';
+ }
+
+ // poids de l'image
+ $image_sizes = getimagesize($_FILES['icontorr']['tmp_name']);
+ if ($image_sizes[0] > $WIDTH_MAX_ICON OR $image_sizes[1] > $HEIGHT_MAX_ICON) {
+ $error[] = 'Image trop grande : '.$WIDTH_MAX_ICON.' x '.$HEIGHT_MAX_ICON.' maxi !';
+ }
+
+ // on vérifie que c'est bien une image
+ if($image_sizes == false) {
+ $error[] = 'L\'image envoyée n\'est pas une image !';
+ }
+
+ // on upload l'image s'il n'y a pas d'erreur
+ if(!isset($error)) {
+ if(!move_uploaded_file($_FILES['icontorr']['tmp_name'], $REP_IMAGES_TORRENTS.$_FILES['icontorr']['name'])) {
+ $error[] = 'Problème de téléchargement de l\'icone de présentation du torrent.';
+ }
+ }
+
+ }//fin de if(isset($_FILES['icontorr']['name']))
+
+ // ***************************************
+ // fin upload icone de présentation du torrent
+ // ***************************************
+
+
+
+ extract($_POST);
+
+ //very basic validation
+ if($postID == ''){
+ $error[] = 'Ce post possède un ID invalide !';
+ }
+
+ if($postTitle == ''){
+ $error[] = 'Veuillez entrer un titre.';
+ }
+
+ if($postLink == ''){
+ $error[] = 'Veuillez entrer une URL pour le média.';
+ }
+
+ if($postDesc == ''){
+ $error[] = 'Veuillez entrer une courte description.';
+ }
+
+ if($postCont == ''){
+ $error[] = 'Veuillez entrer un contenu.';
+ }
+
+ if($catID == '') {
+ $error[] = 'Veuillez sélectionner au moins une catégorie.';
+ }
+
+ if($licenceID == '') {
+ $error[] = 'Veuillez sélectionner au moins une licence.';
+ }
+
+
+ if(!isset($error)){
+ try {
+
+ $postSlug = slug($postTitle);
+
+ // Si on a une nouvelle image, on met tout à jour, même l'image de présentation
+ if(isset($_FILES['icontorr']['name']) && !empty($_FILES['icontorr']['name'])) {
+
+ //insert into database
+ $stmt = $db->prepare('UPDATE blog_posts_seo SET postTitle = :postTitle, postSlug = :postSlug, postLink = :postLink, postDesc = :postDesc, postCont = :postCont, postImage = :postImage WHERE postID = :postID') ;
+ $stmt->execute(array(
+ ':postTitle' => $postTitle,
+ ':postSlug' => $postSlug,
+ ':postLink' => $postLink,
+ ':postDesc' => $postDesc,
+ ':postCont' => $postCont,
+ ':postImage' => $_FILES['icontorr']['name'],
+ ':postID' => $_GET['id']
+ ));
+
+ }
+
+ else { // sinon on met tout à jour SAUF l'icone de présentation
+
+ //insert into database
+ $stmt = $db->prepare('UPDATE blog_posts_seo SET postTitle = :postTitle, postSlug = :postSlug, postLink = :postLink, postDesc = :postDesc, postCont = :postCont WHERE postID = :postID') ;
+ $stmt->execute(array(
+ ':postTitle' => $postTitle,
+ ':postSlug' => $postSlug,
+ ':postLink' => $postLink,
+ ':postDesc' => $postDesc,
+ ':postCont' => $postCont,
+ ':postID' => $_GET['id']
+ ));
+
+ }
+
+
+ //delete all items with the current postID in categories
+ $stmt = $db->prepare('DELETE FROM blog_post_cats WHERE postID = :postID');
+ $stmt->execute(array(':postID' => $postID));
+
+ if(is_array($catID)){
+ foreach($_POST['catID'] as $catID){
+ $stmt = $db->prepare('INSERT INTO blog_post_cats (postID,catID)VALUES(:postID,:catID)');
+ $stmt->execute(array(
+ ':postID' => $postID,
+ ':catID' => $catID
+ ));
+ }
+ }
+
+ //delete all items with the current postID in licences
+ $stmt = $db->prepare('DELETE FROM blog_post_licences WHERE postID_BPL = :postID_BPL');
+ $stmt->execute(array(':postID_BPL' => $postID));
+
+ if(is_array($licenceID)){
+ foreach($_POST['licenceID'] as $licenceID){
+ $stmt = $db->prepare('INSERT INTO blog_post_licences (postID_BPL,licenceID_BPL) VALUES (:postID_BPL,:licenceID_BPL)');
+ $stmt->execute(array(
+ ':postID_BPL' => $postID,
+ ':licenceID_BPL' => $licenceID
+ ));
+ }
+ }
+
+ //redirect to index page
+ header('Location: '.SITEURL.'/torrents.php');
+ exit;
+
+ } // fin de try
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ } // fin de if(!isset($error))
+
+ } // fin if(isset($_POST['submit']))
+
+
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<p class="error">'.$error.'</p>';
+ }
+ }
+
+ try {
+
+ $stmt = $db->prepare('SELECT postID, postTitle, postLink, postDesc, postCont, postImage FROM blog_posts_seo WHERE postID = :postID') ;
+ $stmt->execute(array(
+ ':postID' => $id
+ ));
+
+ $row = $stmt->fetch();
+
+ }
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+
+ <form action='' method='post' enctype='multipart/form-data'>
+ <input type='hidden' name='postID' value='<?php echo html($row['postID']);?>'>
+
+ <p><label>Titre</label><br />
+ <input type='text' name='postTitle' value='<?php echo html($row['postTitle']);?>'></p>
+
+ <p><label>URL : lien web du média</label><br />
+ <input type='text' name='postLink' value='<?php echo html($row['postLink']);?>'></p>
+
+ <p><label>Description</label><br />
+ <textarea name='postDesc' style="height:150px;width:900px;"><?php echo html($row['postDesc']);?></textarea></p>
+
+ <p><label>Contenu</label><br />
+ <textarea name='postCont' style="height:300px;width:900px;"><?php echo html($row['postCont']);?></textarea></p>
+
+ <p><label>Icone de présentation (JPG ou PNG, <?php echo $WIDTH_MAX_ICON; ?> x <?php echo $HEIGHT_MAX_ICON; ?>, <?php echo makesize($MAX_SIZE_ICON); ?> max.)</label><br />
+ <input type='file' name='icontorr'>
+
+ <br /><br />Icone de présentation :
+ <?php
+ if(!empty($row['postImage']) && file_exists($REP_IMAGES_TORRENTS.$row['postImage'])) {
+ echo '<img style="max-width: 150px; max-height: 150px;" src="/images/imgtorrents/'.html($row['postImage']).'" alt="Icone de présentation de '.html($row['postTitle']).'" />';
+ ?>
+
+ <a href="javascript:delimage('<?php echo html($row['postID']);?>','<?php echo html($row['postImage']);?>')">Supprimer</a>
+
+ <?php
+ }
+
+ else {
+ echo '<img style="max-width: 150px; max-height: 150px;" src="/images/noimage.png" alt="Pas d\'icone de présentation pour '.html($row['postTitle']).'" />';
+ }
+ ?>
+
+
+ </p><br />
+
+ <fieldset>
+ <legend>Catégories</legend>
+
+ <?php
+ $stmt2 = $db->query('SELECT catID, catTitle FROM blog_cats ORDER BY catTitle');
+ while($row2 = $stmt2->fetch()){
+
+ $stmt3 = $db->prepare('SELECT catID FROM blog_post_cats WHERE catID = :catID AND postID = :postID') ;
+ $stmt3->execute(array(':catID' => $row2['catID'], ':postID' => $row['postID']));
+ $row3 = $stmt3->fetch();
+
+ if($row3['catID'] == $row2['catID']){
+ $checked = 'checked=checked';
+ } else {
+ $checked = null;
+ }
+
+ echo "<input type='checkbox' name='catID[]' value='".$row2['catID']."' $checked> ".$row2['catTitle']."<br />";
+ }
+
+ $stmt2->closeCursor();
+
+ ?>
+ </fieldset>
+
+
+ <fieldset>
+ <legend>Licences</legend>
+
+ <?php
+ $stmt2 = $db->query('SELECT licenceID, licenceTitle FROM blog_licences ORDER BY licenceTitle');
+ while($row2 = $stmt2->fetch()) {
+
+ $stmt3 = $db->prepare('SELECT licenceID_BPL FROM blog_post_licences WHERE licenceID_BPL = :licenceID_BPL AND postID_BPL = :postID_BPL') ;
+ $stmt3->execute(array(
+ ':licenceID_BPL' => $row2['licenceID'],
+ ':postID_BPL' => $row['postID']));
+ $row3 = $stmt3->fetch();
+
+ if($row3['licenceID_BPL'] == $row2['licenceID']){
+ $checked = 'checked=checked';
+ } else {
+ $checked = null;
+ }
+
+ echo "<input type='checkbox' name='licenceID[]' value='".$row2['licenceID']."' $checked> ".$row2['licenceTitle']."<br />";
+ }
+ ?>
+ </fieldset>
+
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Mettre à jour'></p>
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
+
+
+<?php
+}
+}
+else {
+ header('Location: '.SITEURL);
+
+}
+?>
diff --git a/Html/admin/edit-profil.php b/Html/admin/edit-profil.php
new file mode 100644
index 0000000..009c2e0
--- /dev/null
+++ b/Html/admin/edit-profil.php
@@ -0,0 +1,281 @@
+<?php
+require_once('../includes/config.php');
+
+//Si pas connecté pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: '.SITEURL.'/admin/login.php');
+}
+
+if(isset($_SESSION['username']) && $_SESSION['username'] != $_GET['membre']) {
+ header('Location: ./');
+}
+
+
+
+//Si on supprime l'avatar...
+if(isset($_GET['delavatar'])) {
+
+ $delavatar = html($_GET['delavatar']);
+
+ // on supprime le fichier image
+ $stmt = $db->prepare('SELECT avatar FROM blog_members WHERE memberID = :memberID');
+ $stmt->execute(array(
+ ':memberID' => $delavatar
+ ));
+ $sup = $stmt->fetch();
+
+ $file = $REP_IMAGES_AVATARS.$sup['avatar'];
+ if (file_exists($file)) {
+ unlink($file);
+ }
+
+ //puis on supprime l'avatar dans la base
+ $stmt = $db->prepare('UPDATE blog_members SET avatar = NULL WHERE memberID = :memberID');
+ $stmt->execute(array(
+ ':memberID' => $delavatar
+ ));
+
+ header('Location: '.SITEURL.'/admin/profil.php?action=ok&membre='.html($_SESSION['username']));
+
+}
+
+// titre de la page
+$pagetitle = 'Edition du profil de '.html($_SESSION['username']);
+require_once '../includes/header.php';
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ include_once '../includes/header-logo.php';
+ include_once '../includes/nav.php';
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <h2>Edition du profil membre de <?php echo html($_GET['membre']); ?></h2>
+
+ <?php
+ $username = html($_GET['membre']);
+
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])) {
+
+ //collect form data
+ extract($_POST);
+
+ if(isset($_FILES['avatar']['name']) && !empty($_FILES['avatar']['name'])) {
+ //if(isset($_POST['avatar']) && !empty($_POST['avatar'])) {
+
+ $target_dir = $REP_IMAGES_AVATARS;
+ $target_file = $target_dir . basename($_FILES["avatar"]["name"]);
+ $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
+
+ if ($_FILES['avatar']['error'] > 0) {
+ //if ($_FILES['avatar']['error'] > 0) {
+ $error[] = 'Erreur lors du transfert de l\'avatar membre.';
+ }
+
+ // On cherche si l'image n'existe pas déjà sous ce même nom
+ if (file_exists($target_file)) {
+ $error[] = 'Désolé, cet avatar membre existe déjà. Veillez en choisir un autre ou tout simplement changer son nom.';
+ }
+
+ // Poids de l'image
+ if ($_FILES['avatar']['size'] > $MAX_SIZE_AVATAR) {
+ $error[] = 'Avatar membre trop gros. Taille maxi : '.makesize($MAX_SIZE_AVATAR);
+ }
+
+ // format de l'image
+ if($imageFileType != "jpg" && $imageFileType != "png") {
+ $error[] = 'Désolé : seuls les fichiers jpg et png sont autorisés !';
+ }
+
+ // Dimensions de l'image
+ $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
+ if ($image_sizes[0] > $WIDTH_MAX_AVATAR OR $image_sizes[1] > $HEIGHT_MAX_AVATAR) {
+ $error[] = 'Avatar trop grand : '.$WIDTH_MAX_AVATAR.' x '.$HEIGHT_MAX_AVATAR.' maxi !';
+ }
+
+ // on vérifie que c'est bien une image
+ if($image_sizes == false) {
+ $error[] = 'L\'image envoyée n\'est pas une image !';
+ }
+
+ // on upload l'image s'il n'y a pas d'erreur
+ if(!isset($error)) {
+ if(!move_uploaded_file($_FILES['avatar']['tmp_name'], $REP_IMAGES_AVATARS.$_FILES['avatar']['name'])) {
+ $error[] = 'Problème de téléchargement de l\'avatar membre.';
+ }
+ }
+
+ }//fin de if(isset($_FILES['avatar']['name']))
+
+
+ //very basic validation
+ if($username ==''){
+ $error[] = 'Veuillez entrer un pseudo.';
+ }
+
+ // On cherche si le pseudo fait moins de 4 caractères et s'il est déjà dans la base
+ if (strlen($_POST['username']) < 4) {
+ $error[] = 'Le pseudo est trop court ! (4 caractères minimum)';
+ }
+
+ // Le username ne peut pas contenir de caractères spéciaux, balises, etc.
+ if (!preg_match("/^[a-zA-Z0-9]+$/",$username)) {
+ $error[] = 'Le pseudo ne peut contenir que des lettres et des chiffres !';
+ }
+
+ /*
+ if($password ==''){
+ $error[] = 'Veuillez entrer un mot de passe.';
+ }
+ */
+
+ if(!empty($password)) {
+
+ if(strlen($password) < 6) {
+ $error[] = 'Le mot de passe est trop court ! (6 caractères minimum)';
+ }
+
+ if($passwordConfirm ==''){
+ $error[] = 'Veuillez confirmer le mot de passe.';
+ }
+
+ if($password != $passwordConfirm){
+ $error[] = 'Les mots de passe ne concordent pas.';
+ }
+ }
+
+ if($email =='') {
+ $error[] = 'Veuillez entrer une adresse e-mail.';
+ }
+
+ if(!isset($error)) {
+
+ try {
+ if(isset($password) && !empty($password)){
+
+ $hashedpassword = $user->password_hash($password, PASSWORD_BCRYPT);
+
+ //Mise à jour de la base avec le nouveau mot de passe
+ $stmt = $db->prepare('UPDATE blog_members SET password = :password, email = :email WHERE username = :username') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':password' => $hashedpassword,
+ ':email' => $email
+ ));
+ }
+
+ elseif(isset($_FILES['avatar']['name']) && !empty($_FILES['avatar']['name'])) {
+ //Mise à jour de la base avec le nouvel avatar
+ $stmt = $db->prepare('UPDATE blog_members SET email = :email, avatar = :avatar WHERE username = :username') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':avatar' => $_FILES['avatar']['name'],
+ ':email' => $email
+ ));
+ }
+
+ else {
+ //Mise à jour de la base avec adresse e-mail seulement. Aucun nouveau mot de passe n'a été soumis ni aucun avatar
+ $stmt = $db->prepare('UPDATE blog_members SET email = :email WHERE username = :username') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':email' => $email
+ ));
+ }
+
+ write_log('<span style="color:orange; font-weight:bold;">Edition profil utilisateur :</span> '.$username, $db);
+
+ //redirect to page
+ header('Location: '.SITEURL.'/admin/profil.php?action=ok&membre='.$username);
+ exit;
+
+ $stmt->closeCursor();
+
+ }
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ //check for any errors
+ if(isset($error)) {
+ foreach($error as $error) {
+ echo '<p class="error">'.$error.'</p>';
+ }
+ }
+
+ try {
+
+ $stmt = $db->prepare('SELECT memberID,username,email,avatar FROM blog_members WHERE username = :username') ;
+ $stmt->execute(array(':username' => $username));
+ $row = $stmt->fetch();
+
+ }
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ ?>
+
+ <form action='' method='post' enctype='multipart/form-data'>
+
+ <p><label>Pseudo</label><br />
+ <input type='text' name='username' value='<?php echo html($row['username']); ?>'></p>
+
+ <p><label>Mot de passe (seulement en cas de changement)</label><br />
+ <input type='password' name='password' value=''></p>
+
+ <p><label>Confirmez le mot de passe</label><br />
+ <input type='password' name='passwordConfirm' value=''></p>
+
+ <p><label>E-mail</label><br />
+ <input type='text' name='email' value='<?php echo html($row['email']);?>'></p>
+
+ <p><label>Avatar (PNG ou JPG | max. <?php echo makesize($MAX_SIZE_AVATAR); ?> | max. <?php echo $WIDTH_MAX_AVATAR; ?> x <?php echo $HEIGHT_MAX_AVATAR; ?> pix.)</label><br />
+ <input type='file' name='avatar'>
+
+ <br /><br />Avatar actuel :
+ <?php
+ if(!empty($row['avatar']) && file_exists($REP_IMAGES_AVATARS.$row['avatar'])) {
+ echo '<img style="max-width: 125px; max-height: 125px;" src="/images/avatars/'.html($row['avatar']).'" alt="Avatar de '.html($row['username']).'" />';
+ ?>
+ <a href="javascript:delavatar('<?php echo html($row['memberID']);?>','<?php echo html($row['avatar']);?>')">Supprimer</a>
+ <?php
+ }
+
+ else {
+ echo '<img style="width: 100px; height: 100px;" src="/images/noimage.png" alt="Pas d\'avatar pour '.html($row['username']).'" />';
+ }
+ ?>
+ </p>
+
+ <br />
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Mettre à jour'> <input type="reset" value="Annuler" /></p>
+
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php include_once '../includes/footer.php'; ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/edit-user.php b/Html/admin/edit-user.php
new file mode 100644
index 0000000..cc4dab9
--- /dev/null
+++ b/Html/admin/edit-user.php
@@ -0,0 +1,166 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+// titre de la page
+$pagetitle = 'Admin : édition du profil de '.$_SESSION['username'];
+require('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php include('menu.php');?>
+ <p><a href="users.php">Liste des membres</a></p>
+
+ <h2>Edition du profil membre</h2>
+
+
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($username ==''){
+ $error[] = 'Veuillez entrer un pseudo.';
+ }
+
+ if( strlen($password) > 0){
+
+ if($password ==''){
+ $error[] = 'Veuillez entrer un mot de passe.';
+ }
+
+ if($passwordConfirm ==''){
+ $error[] = 'Veuillez confirmer le mot de passe.';
+ }
+
+ if($password != $passwordConfirm){
+ $error[] = 'Les mots de passe ne concordent pas.';
+ }
+
+ }
+
+
+ if($email ==''){
+ $error[] = 'Veuillez entrer une adresse e-mail.';
+ }
+ if(!isset($error)){
+
+ try {
+
+ if(isset($password)){
+
+ $hashedpassword = $user->password_hash($password, PASSWORD_BCRYPT);
+
+ //update into database
+ $stmt = $db->prepare('UPDATE blog_members SET username = :username, password = :password, email = :email WHERE memberID = :memberID') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':password' => $hashedpassword,
+ ':email' => $email,
+ ':memberID' => $memberID
+ ));
+
+
+ } else {
+
+ //update database
+ $stmt = $db->prepare('UPDATE blog_members SET username = :username, email = :email WHERE memberID = :memberID') ;
+ $stmt->execute(array(
+ ':username' => $username,
+ ':email' => $email,
+ ':memberID' => $memberID
+ ));
+
+ }
+
+
+ //redirect to index page
+ header('Location: users.php?action=updated');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ ?>
+ <?php
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo $error.'<br />';
+ }
+ }
+
+ try {
+
+ $stmt = $db->prepare('SELECT memberID, username, email FROM blog_members WHERE memberID = :memberID') ;
+ $stmt->execute(array(':memberID' => $_GET['id']));
+ $row = $stmt->fetch();
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ ?>
+
+ <form action='' method='post'>
+ <input type='hidden' name='memberID' value='<?php echo $row['memberID'];?>'>
+
+ <p><label>Pseudo</label><br />
+ <input type='text' name='username' value='<?php echo $row['username'];?>'></p>
+
+ <p><label>Mot de passe (seulement en cas de changement)</label><br />
+ <input type='password' name='password' value=''></p>
+
+ <p><label>Confirmez le mot de passe</label><br />
+ <input type='password' name='passwordConfirm' value=''></p>
+
+ <p><label>E-mail</label><br />
+ <input type='text' name='email' value='<?php echo $row['email'];?>'></p>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Mise à jour du profil membre'></p>
+
+ </form>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/index.php b/Html/admin/index.php
new file mode 100644
index 0000000..d47b017
--- /dev/null
+++ b/Html/admin/index.php
@@ -0,0 +1,185 @@
+<?php
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php?action=connecte');
+ exit();
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: login.php?action=pasledroit');
+ exit();
+ }
+}
+
+//Si le torrent est à supprimer ...
+if(isset($_GET['delpost'])) {
+
+ // 1 - on supprime le fichier .torrent dans le répertoire /torrents ...
+ $stmt4 = $db->prepare('SELECT postID, postTorrent, postImage FROM blog_posts_seo WHERE postID = :postID') ;
+ $stmt4->execute(array(
+ ':postID' => $_GET['delpost']
+ ));
+ $efface = $stmt4->fetch();
+
+ $file = $REP_TORRENTS.$efface['postTorrent'];
+ if (file_exists($file)) {
+ unlink($file);
+ }
+
+ // 2 - ... on supprime aussi l'image de présentation du torrent
+ $postimage = $REP_IMAGES_TORRENTS.$efface['postImage'];
+ if (file_exists($postimage)) {
+ unlink($postimage);
+ }
+
+
+ // 3 - on supprime le torrent dans la base
+ $stmt = $db->prepare('DELETE FROM blog_posts_seo WHERE postID = :postID') ;
+ $stmt->execute(array(
+ ':postID' => $_GET['delpost']
+ ));
+
+ // 4 - on supprime sa référence de catégorie
+ $stmt1 = $db->prepare('DELETE FROM blog_post_cats WHERE postID = :postID');
+ $stmt1->execute(array(
+ ':postID' => $_GET['delpost']
+ ));
+
+ // 5 - on supprime sa référence de licence
+ $stmt2 = $db->prepare('DELETE FROM blog_post_licences WHERE postID_BPL = :postID_BPL');
+ $stmt2->execute(array(
+ ':postID_BPL' => $_GET['delpost']
+ ));
+
+ // 6 - on supprime ses commentaires s'ils existent
+ /*
+ $stmt22 = $db->prepare('SELECT cid_torrent FROM blog_posts_comments WHERE cid_torrent = :cid_torrent');
+ $stmt22->execute(array(
+ ':cid_torrent' => $_GET['delpost']
+ ));
+ $commentaire = $stmt22->fetch();
+
+ if(!empty($commentaire)) {
+ $stmtsupcomm = $db->prepare('DELETE FROM blog_posts_comments WHERE cid_torrent = :cid_torrent');
+ $stmtsupcomm->execute(array(
+ ':cid_torrent' => $_GET['delpost']
+ ));
+ }
+ */
+
+ // 7 - enfin, on met le flag à "1" pour supprimer le fichier dans la tables xbt_files
+ $stmt3 = $db->prepare('UPDATE xbt_files SET flags = :flags WHERE fid = :fid') ;
+ $stmt3->execute(array(
+ ':flags' => '1',
+ ':fid' => $_GET['delpost']
+ ));
+
+
+ header('Location: index.php?action=supprime');
+ exit;
+
+}//fin de if isset $_GET['delpost']
+
+
+// titre de la page
+$pagetitle = 'Admin : gestion des torrents';
+
+include_once('../includes/header.php');
+
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php'); ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php
+ include_once('menu.php');
+ ?>
+
+ <?php
+ //show message from add / edit page
+ if(isset($_GET['action']) && $_GET['action'] == 'supprime'){
+ echo '<div class="alert-msg rnd8 success">Le torrent a été supprimé avec succès.</div><br />';
+ }
+
+ if(isset($_GET['action']) && $_GET['action'] == 'ajoute'){
+ echo '<div class="alert-msg rnd8 success">Le torrent a été ajouté avec succès.</div><br />';
+ }
+
+ if(isset($_GET['message']) && $_GET['message'] == 'envoye') {
+ echo '<div class="alert-msg rnd8 success">Message envoyé à tous les membres.</div><br />';
+ }
+ ?>
+
+ <table>
+ <tr>
+ <th>Titre</th>
+ <th style="text-align: center;">Date</th>
+ <th style="text-align: center;">Uploader</th>
+ <th style="text-align: center;">Action</th>
+ </tr>
+ <?php
+ try {
+
+ $pages = new Paginator('10','p');
+
+ $stmt = $db->query('SELECT postID FROM blog_posts_seo');
+
+ //pass number of records to
+ $pages->set_total($stmt->rowCount());
+
+ $stmt = $db->query('SELECT postID, postTitle, postAuthor, postDate FROM blog_posts_seo ORDER BY postID DESC '.$pages->get_limit());
+ while($row = $stmt->fetch()){
+
+ echo '<tr>';
+ echo '<td style="width:55%;">'.$row['postTitle'].'</td>';
+ sscanf($row['postDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td style="text-align: center;">'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ echo '<td style="text-align: center;"><a href="profil.php?membre='.$row['postAuthor'].'">'.$row['postAuthor'].'</a></td>';
+ ?>
+
+ <td style="text-align: center;">
+ <a style="text-decoration: none;" href="edit-post.php?id=<?php echo $row['postID'];?>"><input type="button" class="button" value="Edit." /></a>&nbsp;
+ <a style="text-decoration: none;" href="javascript:delpost('<?php echo $row['postID'];?>','<?php echo $row['postTitle'];?>')"><input type="button" class="button" value="Supp." /></a>
+ </td>
+
+ <?php
+ echo '</tr>';
+
+ }
+
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+ </table>
+
+ <p>
+ <?php echo $pages->page_links(); ?>
+ </p>
+
+ </div>
+
+ <?php include_once('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php include_once('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/licences.php b/Html/admin/licences.php
new file mode 100644
index 0000000..73cab4e
--- /dev/null
+++ b/Html/admin/licences.php
@@ -0,0 +1,110 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+//show message from add / edit page
+if(isset($_GET['dellicence'])){
+
+ $stmt = $db->prepare('DELETE FROM blog_licences WHERE licenceID = :licenceID') ;
+ $stmt->execute(array(':licenceID' => $_GET['dellicence']));
+
+ header('Location: licences.php?action=supprime');
+ exit;
+}
+
+// titre de la page
+$pagetitle= 'Admin : gestion des licences';
+require('../includes/header.php');
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+
+ <div id="body">
+ <div id="content">
+
+ <?php include('menu.php');?>
+
+ <?php
+ //show message from add / edit page
+ if(isset($_GET['action']) && $_GET['action'] == 'supprime'){
+ echo '<h3>La licence a été supprimée avec succès.</h3>';
+ }
+ if(isset($_GET['action']) && $_GET['action'] == 'ajoute'){
+ echo '<h3>La licence a été ajoutée avec succès.</h3>';
+ }
+ ?>
+
+ <table>
+ <tr>
+ <th>Titre</th>
+ <th>Action</th>
+ </tr>
+ <?php
+ try {
+ $pages = new Paginator('10','p');
+ $stmt = $db->query('SELECT licenceID FROM blog_licences');
+ //pass number of records to
+ $pages->set_total($stmt->rowCount());
+
+ $stmt = $db->query('SELECT licenceID, licenceTitle, licenceSlug FROM blog_licences ORDER BY licenceTitle ASC '.$pages->get_limit());
+
+ while($row = $stmt->fetch()){
+
+ echo '<tr>';
+ echo '<td style="width: 80%;">'.html($row['licenceTitle']).'</td>';
+ ?>
+
+ <td>
+ <a style="text-decoration: none;" href="edit-licence.php?id=<?php echo html($row['licenceID']);?>"><input type="button" class="button" value="Edit."</a> |
+ <a style="text-decoration: none;" href="javascript:dellicence('<?php echo html($row['licenceID']);?>','<?php echo html($row['licenceSlug']);?>')"><input type="button" class="button" value="Suppr."</a>
+ </td>
+
+ <?php
+ echo '</tr>';
+ }
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+ </table>
+
+ <br />
+ <p style="text-align: right;"><a href="add-licence.php" style="text-decoration: none;"><input type="button" class="button" value="Ajouter une licence" /></a></p>
+
+ <?php
+ echo $pages->page_links();
+ ?>
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/login.php b/Html/admin/login.php
new file mode 100644
index 0000000..1276d2a
--- /dev/null
+++ b/Html/admin/login.php
@@ -0,0 +1,92 @@
+<?php
+require_once '../includes/config.php';
+
+//Si l'utilisateur est déjà logger, on le renvoie sur l'index
+if($user->is_logged_in()) {
+ header('Location: ../index.php');
+}
+
+$pagetitle= 'Connexion membre';
+include_once '../includes/header.php';
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ include_once '../includes/header-logo.php';
+ include_once '../includes/nav.php';
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <?php
+ if(isset($_GET['action'])){
+ //check the action
+ switch ($_GET['action']) {
+ case 'active':
+ $message = '<span class="alert-msg rnd8 success">Votre compte est maintenant actif. Vous pouvez vous connecter.</span>';
+ break;
+ case 'echec':
+ $message = '<span class="alert-msg rnd8 error">Erreur : votre compte n\'a pas pu être activé :/<br />Merci de vérifier le lien d\'activation.<br />
+ En cas de problème persistant, merci d\'informer le webmaster en utilisant <a href="'.SITEURL.'/contact.php">la page contact du site</a> en indiquant votre pseudo et votre adresse e-mail.</span>';
+ break;
+ case 'connecte':
+ $message = '<span class="alert-msg rnd8 error">Vous devez être connecté(e) pour accéder à cette page.</span>';
+ break;
+ case 'pasledroit':
+ $message = '<span class="alert-msg rnd8 error">Vous n\'avez pas le droit d\'accéder à cette page.</span>';
+ break;
+ }
+ }
+
+
+ //process login form if submitted
+ if(isset($_POST['submit'])){
+
+ $username = html(trim($_POST['username']));
+ $password = html(trim($_POST['password']));
+
+ if($user->login($username,$password)) {
+ //Une fois connecté, on retourne sur la page index
+ write_log('<span style="color:green; font-weight:bold;">Connexion utilisateur :</span> '.$username, $db);
+ header('Location: ../index.php');
+ exit;
+ }
+
+ else {
+ $message = '<div class="alert-msg rnd8 error">Mauvais identifiants ou compte non activé.</div>';
+ }
+
+ }//end if submit
+
+ if(isset($message)) {
+ echo $message;
+ }
+
+ ?>
+
+ <form action="" method="post">
+ <p><label>Pseudo</label> : <input type="text" name="username" value="" /></p>
+ <p><label>Mot de passe</label> : <input type="password" name="password" value="" /></p>
+ <p><label></label><input type="submit" class="searchsubmit formbutton" name="submit" value="Connexion" /></p>
+ </form>
+
+ <div style="text-align: right;"><a href="recup_pass.php">Mot de passe oublié ?</a></div>
+
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/logout.php b/Html/admin/logout.php
new file mode 100644
index 0000000..dbd5586
--- /dev/null
+++ b/Html/admin/logout.php
@@ -0,0 +1,17 @@
+<?php
+//include config
+require_once('../includes/config.php');
+
+//log user out
+$user->logout();
+
+//on supprime le user de la base SQL connectes
+$stmt = $db->prepare('DELETE FROM connectes WHERE pseudo = :pseudo') ;
+$stmt->execute(array(
+ ':pseudo' => $_SESSION['username']
+));
+
+
+header('Location: login.php');
+
+?>
diff --git a/Html/admin/logs.php b/Html/admin/logs.php
new file mode 100644
index 0000000..0bd7652
--- /dev/null
+++ b/Html/admin/logs.php
@@ -0,0 +1,95 @@
+<?php
+require_once('../includes/config.php');
+
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+//Il n'y a que l'admin qui accède à cette page
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+$pagetitle = 'Page de logs du site';
+
+include_once('../includes/header.php');
+
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+ ?>
+
+ <div id="body">
+
+ <div id="content">
+
+ <?php
+ include_once('menu.php');
+ ?>
+
+
+ <table style="width:100%;">
+ <th>Id</th>
+ <th>Remote adresse</th>
+ <th>Resquest uri</th>
+ <th>Message</th>
+ <th>Date log</th>
+
+ <?php
+ try {
+ //Pagination
+ $pages = new Paginator('10','p');
+
+ $query = $db->query('SELECT * FROM blog_logs');
+ $pages->set_total($query->rowCount());
+
+ //On cherche tous les logs
+ $query = $db->query('SELECT * FROM blog_logs ORDER BY log_id DESC '.$pages->get_limit());
+
+ while($logs = $query->fetch()) {
+
+ echo '<tr style="font-size:11px;">';
+ echo '<td>'.$logs['log_id'].'</td>';
+ echo '<td>'.$logs['remote_addr'].'</td>';
+ echo '<td>'.$logs['request_uri'].'</td>';
+ echo '<td>'.$logs['message'].'</td>';
+ sscanf($logs['log_date'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.'<br />à '.$heure.':'.$minute.':'.$seconde.'</td>';
+ echo '</tr>';
+
+ } //while
+
+ echo '</table><br />';
+ echo $pages->page_links();
+
+ }
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+
+ </div> <!-- content -->
+
+ <?php include_once('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+
+ </div> <!-- body -->
+
+</div> <!-- container -->
+
+<div id="footer">
+ <?php include_once('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/menu.php b/Html/admin/menu.php
new file mode 100644
index 0000000..e921b70
--- /dev/null
+++ b/Html/admin/menu.php
@@ -0,0 +1,11 @@
+<h2>Administration</h2><br />
+ <ul id="menu">
+ <li><a href="index.php">Liste torrents</a></li>
+ <li><a href="categories.php">Cat&eacute;gories</a></li>
+ <li><a href="licences.php">Licences</a></li>
+ <li><a href="users.php">Membres</a></li>
+ <li><a href="messages_envoyer_tous.php">Message à tous</a></li>
+ <li><a href="logs.php">Logs</a></li>
+ </ul>
+
+<br /><br /><br />
diff --git a/Html/admin/messagerie.php b/Html/admin/messagerie.php
new file mode 100644
index 0000000..075c6b2
--- /dev/null
+++ b/Html/admin/messagerie.php
@@ -0,0 +1,111 @@
+<?php
+require_once('../includes/config.php');
+
+// titre de la page
+$pagetitle = 'Messagerie interne';
+
+include_once('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+<?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+?>
+
+<div id="body">
+ <div id="content">
+
+<?php
+//On affiche le résultat de l'envoi de message interne
+if(isset($_GET['message'])) {
+ echo '<div class="alert-msg rnd8 success">Le message a été envoyé avec succès.</div>';
+}
+
+if(isset($_GET['action']) && $_GET['action'] == 'messupprime'){
+ echo '<div class="alert-msg rnd8 success">Le message a été supprimé de votre messagerie.</div>';
+}
+?>
+
+<?php
+try {
+ $stmt = $db->prepare('SELECT * FROM blog_members,xbt_users WHERE blog_members.memberID = xbt_users.uid AND username = :username');
+ $stmt->bindvalue('username', $_GET['membre'], PDO::PARAM_STR);
+ $stmt->execute();
+ $row = $stmt->fetch();
+}
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+?>
+
+<?php
+$pages = new Paginator('8','m');
+$stmt = $db->prepare('SELECT messages_id FROM blog_messages WHERE messages_id_destinataire = :destinataire');
+$stmt->execute(array(
+ ':destinataire' => $row['memberID']
+));
+$pages->set_total($stmt->rowCount());
+
+// on prépare une requete SQL cherchant le titre, la date, l'expéditeur des messages pour le membre connecté
+$stmt = $db->prepare('SELECT blog_messages.messages_titre, blog_messages.messages_date, blog_members.username as expediteur, blog_messages.messages_id as id_message, blog_messages.messages_lu FROM blog_messages, blog_members WHERE blog_messages.messages_id_destinataire = :id_destinataire AND blog_messages.messages_id_expediteur = blog_members.memberID ORDER BY blog_messages.messages_date DESC '.$pages->get_limit());
+$stmt->bindValue(':id_destinataire', $row['memberID'], PDO::PARAM_INT);
+$stmt->execute();
+?>
+
+<table>
+ <tr>
+ <td colspan="5">
+ <span style="font-size: 15pt; font-weight: bold;">Messagerie interne :
+ <a style="text-decoration: none; float:right;" href="<?php echo SITEURL; ?>/messages_envoyer.php"><input type="button" class="button" value="Envoyer un message à un membre" /></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <th style="width: 180px;">Date</th>
+ <th>Titre</th>
+ <th style="width: 120px;">Expéditeur</th>
+ </tr>
+
+ <?php
+ while($data = $stmt->fetch()){
+ echo '<tr>';
+ sscanf($data['messages_date'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td style="font-size: 9pt;">le '.$jour.'-'.$mois.'-'.$annee.' à '.$heure.':'.$minute.':'.$seconde.'</td>';
+ echo '<td>';
+ if($data['messages_lu'] == 0) {
+ echo '<img style="vertical-align: text-bottom; width: 16px; height: 16px;" src="'.SITEURL.'/images/envelope-newmail.gif" />&nbsp;';
+ }
+ echo '<a style="text-decoration: none;" href="'.SITEURL.'/messages_lire.php?id_message='.$data['id_message'].'">'.html(trim($data['messages_titre'])).'</a>';
+ echo '</td>';
+ echo '<td>'.html(trim($data['expediteur'])).'</td>';
+ echo '</tr>';
+ }
+ ?>
+</table>
+
+<?php
+ echo '<div style="text-align: center;">';
+ echo $pages->page_links('?membre='.html($row['username']).'&');
+ echo '</div>';
+?>
+
+ <br /><br />
+
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/messages_envoyer_tous.php b/Html/admin/messages_envoyer_tous.php
new file mode 100644
index 0000000..daaec2e
--- /dev/null
+++ b/Html/admin/messages_envoyer_tous.php
@@ -0,0 +1,114 @@
+<?php
+require_once('../includes/config.php');
+
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+//Il n'y a que l'admin qui accède à cette page
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+$pagetitle = 'Message groupé à tous les membres';
+
+include_once('../includes/header.php');
+
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+ ?>
+
+ <div id="body">
+
+ <div id="content">
+
+<?php
+// on teste si le formulaire a bien été soumis
+if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
+
+ if (empty($_POST['titre'])) {
+ $error[] = 'Veuillez entrer un titre pour votre message.';
+ }
+
+ if (empty($_POST['message'])) {
+ $error[] = 'Votre message est vide ??!';
+ }
+
+ try {
+
+ //On cherche tous les membres sauf l'admin (1) et le Visiteur (32)
+ $getusers = $db->query('SELECT * FROM blog_members WHERE memberID != 1 AND memberID != 32 AND active = "yes"');
+
+ while($result = $getusers->fetch(PDO::FETCH_ASSOC)) {
+
+ $stmt = $db->prepare('INSERT INTO blog_messages (messages_id_expediteur,messages_id_destinataire,messages_date,messages_titre,messages_message) VALUES (:messages_id_expediteur,:messages_id_destinataire,:messages_date,:messages_titre,:messages_message)');
+ $stmt->execute(array(
+ ':messages_id_expediteur' => 1,
+ ':messages_id_destinataire' => $result['memberID'],
+ ':messages_date' => date("Y-m-d H:i:s"),
+ ':messages_titre' => html($_POST['titre']),
+ ':messages_message' => html($_POST['message'])
+ ));
+
+ } //while
+
+ header('Location: index.php?&message=envoye');
+ $stmt->closeCursor();
+ exit();
+ }
+
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+}
+?>
+
+<form action="messages_envoyer_tous.php" method="post">
+Message à tous les membres :
+
+<br />
+
+<?php
+//S'il y a des erreurs, on les affiche
+if(isset($error)){
+ foreach($error as $error){
+ echo '<div class="alert-msg rnd8 error">ERREUR : '.$error.'</div>';
+ }
+}
+?>
+
+<br />
+<br />
+
+Titre du message :<br />
+<input type="text" name="titre" size="50" value="<?php if (isset($_POST['titre'])) echo html(trim($_POST['titre'])); ?>">
+<br /><br />
+Message : <textarea style="height:200px;width:900px;" name="message"><?php if (isset($_POST['message'])) echo trim($_POST['message']); ?></textarea>
+<br /><br />
+<input type="submit" class="searchsubmit formbutton" name="go" value="Envoyer"> <input type="reset" value="Annuler" />
+</form>
+
+
+ </div>
+
+ <?php include_once('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php include_once('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/profil.php b/Html/admin/profil.php
new file mode 100644
index 0000000..97d7fbb
--- /dev/null
+++ b/Html/admin/profil.php
@@ -0,0 +1,619 @@
+<?php
+require_once('../includes/config.php');
+
+//Si pas connecté OU si le profil n'appartient pas au membre = pas d'accès
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(!isset($_GET['membre'])) {
+ header('Location: ./');
+}
+
+$stmt = $db->prepare('SELECT * FROM blog_members WHERE username = :username');
+$stmt->bindValue(':username', $_GET['membre'], PDO::PARAM_STR);
+$stmt->execute();
+$row = $stmt->fetch();
+
+if($row['username'] == '') {
+ header('Location: '.SITEURL.'/membres.php?action=noexistmember');
+}
+
+// Il n'y a pas de page profil pour le compte Visiteur
+if($_GET['membre'] == 'Visiteur') {
+ header('Location: ./');
+}
+
+
+// C'est parti !!!
+else {
+
+// titre de la page
+$pagetitle = 'Page Profil de '.html($_GET['membre']);
+
+include_once('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+ ?>
+
+
+ <div id="body">
+ <div id="content">
+
+ <?php
+ //On affiche le résultat de l'édition du profil
+ if(isset($_GET['action'])){
+ echo '<div class="alert-msg rnd8 success">Votre profil a été mis à jour !</div>';
+ }
+
+ //On affiche le résultat de l'envoi de message interne
+ if(isset($_GET['message'])){
+ echo '<div class="alert-msg rnd8 success">Le message a été envoyé !</div>';
+ }
+
+
+ try {
+ $stmt = $db->prepare('SELECT * FROM blog_members,xbt_users WHERE blog_members.memberID = xbt_users.uid AND username = :username');
+ $stmt->bindValue(':username', $_GET['membre'], PDO::PARAM_STR);
+ $stmt->execute();
+ $row = $stmt->fetch();
+ }
+ catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+
+
+ <?php
+ if(isset($_SESSION['username']) && $_SESSION['username'] != $_GET['membre']) {
+ ?>
+
+ <table>
+ <tr>
+ <td>ID de membre : </td><td><?php echo html($row['memberID']); ?></td>
+ <?php
+ if(empty($row['avatar'])) {
+ ?>
+ <td rowspan="6" style="text-align: center;"><img style="width:125px; height:125px;" src="<?php echo SITEURL; ?>/images/avatars/avatar-profil.png" alt="Pas d'avatar pour <?php echo html($row['username']); ?>" /></td>
+ <?php }
+ else {
+ ?>
+ <td rowspan="7" style="text-align: center;"><img style="width:125px; height:125px;" src="<?php echo SITEURL; ?>/images/avatars/<?php echo html($row['avatar']); ?>" alt="Avatar de <?php echo html($row['username']); ?>" /></td>
+ <?php } ?>
+ </tr>
+ <tr><td>Pseudo :</td><td style="font-weight: bold;"><?php echo html($row['username']); ?> <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/messages_envoyer.php?destid=<?php echo html($row['memberID']); ?>&destuser=<?php echo html($row['username']); ?>"> <img style="vertical-align: text-bottom;" src="<?php echo SITEURL; ?>/images/Email-icon.png"></a>
+ <?php
+ if($row['memberID'] == 1) {
+ //echo '<span style="font-weight: bold; color: green;"> [ Webmaster ]</span> | Jabber : mumbly_58 AT jabber.fr';
+ echo '<span style="color: green; font-size: 9pt;"> [ Webmaster ] </span><span style="font-size: 9pt;"> [ <a href="mailto:mumbly_58@jabber.fr">Jabber</a> ]</span>';
+ }
+ ?>
+ </td></tr>
+
+ <tr><td>Date d'inscription : </td><td>
+
+ <?php
+ sscanf($row['memberDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo 'Le '.$jour.'-'.$mois.'-'.$annee.' à '.$heure.':'.$minute.':'.$seconde;
+ ?>
+
+ </td></tr>
+
+ <tr><td>Envoyé :</td><td><?php echo makesize($row['uploaded']); ?></td></tr>
+ <tr><td>Téléchargé :</td><td><?php echo makesize($row['downloaded']); ?></td></tr>
+
+ <?php
+ //Peer Ratio
+ if (intval($row["downloaded"])>0) {
+ $ratio=number_format($row["uploaded"]/$row["downloaded"],2);
+ }
+ else {
+ $ratio='&#8734;';
+ }
+ ?>
+
+ <tr><td>Ratio de partage :</td><td><?php echo $ratio; ?></td></tr>
+ </table>
+
+
+ <!-- Historique téléchargements -->
+<table>
+ <tr><td colspan="6"><h3 id="historique">Ses Téléchargements :</h3></td></tr>
+ <?php
+ $pages = new Paginator('5','d');
+ $stmt = $db->prepare('SELECT fid FROM xbt_files_users WHERE uid = :uid');
+ $stmt->bindValue(':uid', $row['memberID'], PDO::PARAM_INT);
+ $stmt->execute();
+
+ $pages->set_total($stmt->rowCount());
+
+
+ // Tri de colonnes
+ $tri = 'postTitle';
+ $ordre = 'DESC';
+
+ if(isset($_GET['tri'])) {
+ // Les valeurs authorisee
+ $columns = array('postTitle','postDate','postTaille','seeders','leechers','xf.completed');
+ $direction = array('ASC','DESC','asc','desc');
+ if(in_array($_GET['tri'],$columns)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $tri = htmlentities($_GET['tri']);
+ }
+ if(isset($_GET['ordre']) and in_array($_GET['ordre'],$direction)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ }
+
+ $stmtorr1 = $db->prepare('
+ SELECT * FROM xbt_files_users xfu
+ LEFT JOIN blog_posts_seo bps ON bps.postID = xfu.fid
+ LEFT JOIN xbt_files xf ON xf.fid = bps.postID
+ WHERE xfu.uid = :uid
+ ORDER BY '.$tri.' '.$ordre.' '.$pages->get_limit()
+ );
+ $stmtorr1->execute(array(
+ ':uid' => $row['memberID']
+ ));
+ ?>
+ <tr>
+ <th style="width: 420px;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=desc">&#x2191;</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">&#x2191;</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">&#x2191;</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=desc">&#x2191;</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=desc">&#x2191;</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=desc">&#x2191;</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">&#x2193;</a></th>
+ </tr>
+
+ <?php
+ while($rowtorr = $stmtorr1->fetch()) {
+ ?>
+ <tr>
+ <td style="font-weight: bold;">
+ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/<?php echo $rowtorr['postSlug']; ?>"><?php echo $rowtorr['postTitle'];?></a>
+ </td>
+ <?php
+ sscanf($rowtorr['postDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ ?>
+ <td><?php echo makesize($rowtorr['postTaille']); ?></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr['postHash']; ?>"><?php echo $rowtorr['seeders']; ?></a></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr['postHash']; ?>"><?php echo $rowtorr['leechers']; ?></a></td>
+ <td style="text-align: center;"><?php echo $rowtorr['completed']; ?></td>
+ </tr>
+ <?php } ?>
+
+</table>
+<!-- //historique téléchargements -->
+
+<?php
+ echo '<div style="text-align: center;">';
+ //echo $pages->page_links('?membre='.$row['username'].'&');
+ echo $pages->page_links('?membre='.$row['username'].'&tri='.$tri.'&ordre='.$ordre.'&');
+ echo '</div>';
+?>
+
+<br />
+
+
+<!-- Historique uploads -->
+<table>
+ <tr><td colspan="6"><h3 id="historique">Ses Uploads :</h3></td></tr>
+ <?php
+ $pages = new Paginator('5','u');
+ $stmt = $db->prepare('SELECT postID FROM blog_posts_seo WHERE postAuthor = :postAuthor');
+ //$stmt = $db->prepare('SELECT fid FROM xbt_files_users WHERE uid = :uid');
+ $stmt->execute(array(
+ ':postAuthor' => $row['username']
+ ));
+ $pages->set_total($stmt->rowCount());
+
+ /*
+ // TRI
+ if(isset($_GET['tri'])) {
+ $tri = htmlentities($_GET['tri']);
+ }
+ else {
+ $tri = 'postID';
+ }
+ if(isset($_GET['ordre'])) {
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ else {
+ $ordre = 'DESC';
+ }
+ */
+
+ if(isset($_GET['tri'])) {
+ // Les valeurs authorisee
+ $columns = array('postTitle','postDate','postTaille','seeders','leechers','xf.completed');
+ $direction = array('ASC','DESC','asc','desc');
+ if(in_array($_GET['tri'],$columns)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $tri = htmlentities($_GET['tri']);
+ }
+ if(isset($_GET['ordre']) and in_array($_GET['ordre'],$direction)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ }
+
+ $stmtorr2 = $db->prepare('
+ SELECT * FROM blog_posts_seo
+ LEFT JOIN xbt_files xf ON xf.fid = blog_posts_seo.postID
+ WHERE blog_posts_seo.postAuthor = :postAuthor
+ ORDER BY '.$tri.' '.$ordre.' '.$pages->get_limit()
+ );
+ $stmtorr2->execute(array(
+ ':postAuthor' => $row['username']
+ ));
+ ?>
+ <tr>
+ <th style="width: 420px;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=desc">&#x2191;</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">&#x2191;</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">&#x2191;</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=desc">&#x2191;</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=desc">&#x2191;</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=desc">&#x2191;</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">&#x2193;</a></th>
+ </tr>
+
+ <?php
+ while($rowtorr2 = $stmtorr2->fetch()) {
+ ?>
+ <tr>
+ <td style="font-weight: bold;">
+ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/<?php echo $rowtorr2['postSlug']; ?>"><?php echo $rowtorr2['postTitle'];?></a>
+ </td>
+ <?php
+ sscanf($rowtorr2['postDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ ?>
+ <td><?php echo makesize($rowtorr2['postTaille']); ?></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr2['postHash']; ?>"><?php echo $rowtorr2['seeders']; ?></a></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr2['postHash']; ?>"><?php echo $rowtorr2['leechers']; ?></a></td>
+ <td style="text-align: center;"><?php echo $rowtorr2['completed']; ?></td>
+ </tr>
+ <?php } ?>
+
+</table>
+<!-- //historique téléchargements -->
+
+<?php
+ echo '<div style="text-align: center;">';
+ echo $pages->page_links('?membre='.$row['username'].'&tri='.$tri.'&ordre='.$ordre.'&');
+ echo '</div>';
+?>
+
+<br />
+
+
+ <?php
+ }// fin if($_SESSION)
+
+
+ else {
+ ?>
+
+ <span style="font-size: 15pt; font-weight: bold;">
+ Profil membre de : <?php echo $row['username']; ?>&nbsp;
+ </span>
+
+ <span style="font-size: 9pt;">[ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/admin/edit-profil.php?membre=<?php echo $row['username']; ?>"><img style="vertical-align: text-bottom;" src="<?php echo SITEURL; ?>/images/user.png" />&nbsp;Editer votre profil</a></span>
+ &nbsp;|&nbsp;
+ <span style="font-size: 9pt;"><a style="text-decoration: none;" href="<?php echo SITEURL; ?>/admin/messagerie.php?membre=<?php echo $row['username']; ?>"><img style="vertical-align: text-bottom;" src="<?php echo SITEURL; ?>/images/Email-icon.png" />&nbsp;Messagerie interne</a> ]</span>
+
+ <br /><br />
+
+ <table>
+ <tr>
+ <td>ID de membre : </td><td><?php echo $row['memberID']; ?></td>
+
+ <?php
+ if(empty($row['avatar'])) {
+ ?>
+ <td rowspan="7" stule="text-align: center;"><img style="width: 125px; height: 125px;" src="<?php echo SITEURL; ?>/images/avatars/avatar-profil.png" alt="Pas d'avatar pour <?php echo $row['username']; ?>" /></td>
+ <?php }
+ else {
+ ?>
+ <td rowspan="7" style="text-align: center;"><img style="width: 125px; height: 125px;" src="<?php echo SITEURL; ?>/images/avatars/<?php echo $row['avatar']; ?>" alt="Avatar de <?php echo $row['username']; ?>" /></td>
+ <?php } ?>
+ </tr>
+ <tr><td>E-mail : </td><td><?php echo $row['email']; ?></td></tr>
+ <tr><td>Pid : </td><td><?php echo $row['pid']; ?></td></tr>
+ <tr><td>Date d'inscription : </td><td>
+
+ <?php
+ sscanf($row['memberDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo 'Le '.$jour.'-'.$mois.'-'.$annee.' à '.$heure.':'.$minute.':'.$seconde;
+ ?>
+
+ </td></tr>
+ <tr><td>Envoyé :</td><td><?php echo makesize($row['uploaded']); ?></td></tr>
+ <tr><td>Téléchargé :</td><td><?php echo makesize($row['downloaded']); ?></td></tr>
+
+ <?php
+ //$ratio = $row['uploaded'] / $row['downloaded'];
+ //$ratio = number_format($ratio, 2);
+ if (intval($row["downloaded"])>0) {
+ $ratio=number_format($row["uploaded"]/$row["downloaded"],2);
+ }
+ else {
+ $ratio='&#8734;';
+ }
+ ?>
+
+ <tr><td>Ratio de partage :</td><td><?php echo $ratio; ?></td></tr>
+
+ </table>
+
+<br />
+
+
+
+<!-- Historique téléchargements -->
+<table>
+ <tr><td colspan="6"><h3 id="historique">Mes Téléchargements :</h3></td></tr>
+ <?php
+ $pages = new Paginator('5','d');
+ $stmt = $db->prepare('SELECT fid FROM xbt_files_users WHERE uid = :uid');
+ $stmt->execute(array(
+ ':uid' => $row['memberID']
+ ));
+
+ $pages->set_total($stmt->rowCount());
+
+ /*
+ // TRI
+ if(isset($_GET['tri'])) {
+ $tri = htmlentities($_GET['tri']);
+ }
+ else {
+ $tri = 'postID';
+ }
+ if(isset($_GET['ordre'])) {
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ else {
+ $ordre = 'DESC';
+ }
+ */
+
+ // Tri de colonnes
+ $tri = 'postDate';
+ $ordre = 'DESC';
+ if(isset($_GET['tri'])) {
+ // Les valeurs authorisee
+ $columns = array('postTitle','postDate','postTaille','seeders','leechers','xf.completed');
+ $direction = array('ASC','DESC','asc','desc');
+ if(in_array($_GET['tri'],$columns)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $tri = htmlentities($_GET['tri']);
+ }
+ if(isset($_GET['ordre']) and in_array($_GET['ordre'],$direction)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ }
+
+ $stmtorr1 = $db->prepare('
+ SELECT * FROM xbt_files_users xfu
+ LEFT JOIN blog_posts_seo bps ON bps.postID = xfu.fid
+ LEFT JOIN xbt_files xf ON xf.fid = bps.postID
+ WHERE xfu.uid = :uid
+ ORDER BY '.$tri.' '.$ordre.' '.$pages->get_limit()
+ );
+ $stmtorr1->execute(array(
+ ':uid' => $row['memberID']
+ ));
+ ?>
+ <tr>
+ <th style="width: 420px;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=desc">&#x2191;</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">&#x2191;</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">&#x2191;</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=desc">&#x2191;</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=desc">&#x2191;</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=desc">&#x2191;</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">&#x2193;</a></th>
+ </tr>
+
+ <?php
+ while($rowtorr = $stmtorr1->fetch()) {
+ ?>
+ <tr>
+ <td style="font-weight: bold;">
+ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/<?php echo $rowtorr['postSlug']; ?>"><?php echo $rowtorr['postTitle'];?></a>
+ </td>
+ <?php
+ sscanf($rowtorr['postDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ ?>
+ <td><?php echo makesize($rowtorr['postTaille']); ?></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr['postHash']; ?>"><?php echo $rowtorr['seeders']; ?></a></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr['postHash']; ?>"><?php echo $rowtorr['leechers']; ?></a></td>
+ <td style="text-align: center;"><?php echo $rowtorr['completed']; ?></td>
+ </tr>
+ <?php } ?>
+
+</table>
+<!-- //historique téléchargements -->
+
+<?php
+ echo '<div style="text-align: center;">';
+ echo $pages->page_links('?membre='.$row['username'].'&tri='.$tri.'&ordre='.$ordre.'&');
+ echo '</div>';
+?>
+
+
+
+<!-- Historique uploads -->
+<table>
+ <tr><td colspan="6"><h3 id="historique">Mes Uploads :</h3></td></tr>
+ <?php
+ $pages = new Paginator('5','u');
+
+ // On initialise la variable
+ $sessionuser = isset($_SESSION['username']) ? $_SESSION['username'] : NULL;
+
+ $stmt = $db->prepare('SELECT postID FROM blog_posts_seo WHERE postAuthor = :postAuthor');
+ $stmt->bindValue(':postAuthor',$sessionuser,PDO::PARAM_STR);
+ $stmt->execute();
+ $pages->set_total($stmt->rowCount());
+
+
+ // Tri de colonnes
+ $tri = 'postDate';
+ $ordre = 'DESC';
+
+ if(isset($_GET['tri'])) {
+ // Les valeurs authorisee
+ $columns = array('postTitle','postDate','postTaille','seeders','leechers','xf.completed');
+ $direction = array('ASC','DESC','asc','desc');
+ if(in_array($_GET['tri'],$columns)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $tri = htmlentities($_GET['tri']);
+ }
+ if(isset($_GET['ordre']) and in_array($_GET['ordre'],$direction)){ //Une des valeurs authorisee, on la set. Sinon ca sera la veleurs par defaut fixee au dessus
+ $ordre = htmlentities($_GET['ordre']);
+ }
+ }
+
+ $stmtorr2 = $db->prepare('
+ SELECT * FROM blog_posts_seo
+ LEFT JOIN xbt_files xf ON xf.fid = blog_posts_seo.postID
+ WHERE blog_posts_seo.postAuthor = :postAuthor
+ ORDER BY '.$tri.' '.$ordre.' '.$pages->get_limit()
+ );
+ $stmtorr2->execute(array(
+ ':postAuthor' => $row['username']
+ ));
+ ?>
+ <tr>
+ <th style="width: 420px;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=desc">&#x2191;</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">&#x2191;</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">&#x2193;</a></th>
+ <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">&#x2191;</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=desc">&#x2191;</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=desc">&#x2191;</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">&#x2193;</a></th>
+ <th style="text-align: center;"><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=desc">&#x2191;</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">&#x2193;</a></th>
+ </tr>
+
+ <?php
+ while($rowtorr2 = $stmtorr2->fetch()) {
+ ?>
+ <tr>
+ <td style="font-weight: bold;">
+ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/<?php echo $rowtorr2['postSlug']; ?>"><?php echo $rowtorr2['postTitle'];?></a>
+ </td>
+ <?php
+ sscanf($rowtorr2['postDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ ?>
+ <td><?php echo makesize($rowtorr2['postTaille']); ?></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr2['postHash']; ?>"><?php echo $rowtorr2['seeders']; ?></a></td>
+ <td style="text-align: center; font-weight: bold;"><a style="text-decoration: none;" href="../peers.php?hash=<?php echo $rowtorr2['postHash']; ?>"><?php echo $rowtorr2['leechers']; ?></a></td>
+ <td style="text-align: center;"><?php echo $rowtorr2['completed']; ?></td>
+ </tr>
+ <?php } ?>
+
+</table>
+<!-- //historique téléchargements -->
+
+<?php
+ echo '<div style="text-align: center;">';
+ //echo $pages->page_links('?membre='.$row['username'].'&');
+ echo $pages->page_links('?membre='.$row['username'].'&tri='.$tri.'&ordre='.$ordre.'&');
+ echo '</div>';
+?>
+
+<br />
+
+
+
+
+
+
+
+<?php /* ?>
+
+<!-- Messages internes -->
+<?php
+$pages = new Paginator('10','m');
+$stmt = $db->prepare('SELECT messages_id FROM blog_messages WHERE messages_id_destinataire = :destinataire');
+$stmt->execute(array(
+ ':destinataire' => $row['memberID']
+ ));
+$pages->set_total($stmt->rowCount());
+
+// on prépare une requete SQL cherchant le titre, la date, l'expéditeur des messages pour le membre connecté
+$stmt = $db->prepare('SELECT blog_messages.messages_titre, blog_messages.messages_date, blog_members.username as expediteur, blog_messages.messages_id as id_message, blog_messages.messages_lu FROM blog_messages, blog_members WHERE blog_messages.messages_id_destinataire = :id_destinataire AND blog_messages.messages_id_expediteur = blog_members.memberID ORDER BY blog_messages.messages_date DESC '.$pages->get_limit());
+$stmt->execute(array(
+ ':id_destinataire' => $row['memberID']
+ ));
+?>
+
+<table>
+ <tr>
+ <td colspan="5">
+ <h3 id="messages">Mes Messages :
+ <a style="text-decoration: none;" href="<?php echo SITEURL; ?>/messages_envoyer.php"><input type="button" class="button" value="Envoyer un message à un membre" /></a>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <th style="width: 150px;">Date</th>
+ <th>Titre</th>
+ <th style="width: 120px;">Expéditeur</th>
+ </tr>
+
+ <?php
+ while($data = $stmt->fetch()){
+ echo '<tr>';
+ sscanf($data['messages_date'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td>'.$jour.'-'.$mois.'-'.$annee.' à '.$heure.':'.$minute.':'.$seconde.'</td>';
+ echo '<td>';
+ if($data['messages_lu'] == 0) {
+ echo '<img style="vertical-align: text-bottom; width: 16px; height: 16px;" src="'.SITEURL.'/images/envelope-newmail.gif" />&nbsp;';
+ }
+ echo '<a style="text-decoration: none;" href="'.SITEURL.'/messages_lire.php?id_message='.$data['id_message'].'">'.stripslashes(htmlentities(trim($data['messages_titre']), ENT_QUOTES, "UTF-8")).'</a>';
+ echo '</td>';
+ echo '<td>'.stripslashes(htmlentities(trim($data['expediteur']), ENT_QUOTES, "UTF-8")).'</td>';
+ echo '</tr>';
+ }
+ ?>
+</table>
+
+<?php
+ echo '<div style="text-align: center;">';
+ echo $pages->page_links('?membre='.$row['username'].'&');
+ echo '</div>';
+?>
+
+ <br /><br />
+
+
+
+
+
+<?php */ ?>
+
+
+
+
+
+ <?php
+ }// fin else
+ ?>
+
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
+<?php } ?>
diff --git a/Html/admin/recup_pass.php b/Html/admin/recup_pass.php
new file mode 100644
index 0000000..4c36e58
--- /dev/null
+++ b/Html/admin/recup_pass.php
@@ -0,0 +1,124 @@
+<?php
+require('../includes/config.php');
+
+// Une fois le formulaire envoyé
+if(isset($_POST["recuperationpass"]))
+{
+
+ if(!empty($_POST['email'])) {
+ $email = htmlentities($_POST['email']);
+ }
+
+ else {
+ $error[] = 'veuillez renseigner votre adresse email.';
+ }
+
+ $stmt = $db->query("SELECT email FROM blog_members WHERE email = '".$email."' ");
+
+ //si le nombre de lignes retourne par la requete != 1
+ if ($stmt->rowCount() != 1) {
+ $error[] = 'adresse e-mail inconnue.';
+ }
+
+ else {
+ $row1 = $stmt->fetch();
+
+ $retour = $db->query("SELECT password FROM blog_members WHERE email = '".$email."' ");
+ $row2 = $retour->fetch();
+ $new_password = fct_passwd(); //création d'un nouveau mot de passe
+ $hashedpassword = $user->password_hash($new_password, PASSWORD_BCRYPT); // cryptage du password
+
+ //On crée le mail
+ $headers = 'MIME-Version: 1.0' . "\r\n";
+ $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
+ $headers .= 'From: '.SITENAME.' <'.SITEMAIL.'>'."\r\n";
+ //$headers .= '\r\n';
+
+ $objet = 'Votre nouveau mot de passe sur '.SITEURL;
+
+ $message = "Bonjour,<br/>\n";
+ $message .= "Vous avez demandé un nouveau mot de passe pour votre compte sur " . SITEURL . ".<br/>\n";
+ $message .= "Votre nouveau mot de passe est : " . $new_password . "<br/>\n\n";
+ $message .= "Cordialement,<br/>\n\n";
+ $message .= "L'equipe de " . SITENAME;
+
+ if(!mail($row1['email'], $objet, $message, $headers)) {
+ $error[] = "Problème lors de l'envoi du mail.";
+ }
+
+ else {
+ //mise à jour de la base de données de l'utilisateur
+ $stmt = $db->prepare('UPDATE blog_members SET password = :password WHERE email = :email') ;
+ $stmt->execute(array(
+ ':password' => $hashedpassword,
+ ':email' => $email
+ ));
+
+ $cok = "Un mail contenant votre nouveau mot de passe vous a été envoyé.<br/>Veuillez le consulter avant de vous reconnecter sur " . SITEURL.'.';
+ }
+
+ }
+
+}
+
+$pagetitle = 'Demande de nouveau mot de passe';
+require('../includes/header.php');
+?>
+
+<div id="container">
+
+ <?php
+ require('../includes/header-logo.php');
+ require('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+ <h2><span>Vous avez oublié votre mot de passe ?</span></h2>
+
+
+ <!-- formulaire -->
+ <form action='' method='post'>
+ <span class="alert-msg rnd8 warning">
+ Vous allez faire une demande de nouveau mot de passe.<br />
+ Ce nouveau mot de passe vous sera envoyé par e-mail.<br/>
+ Une fois connecté avec vos identifiants, vous pourrez éventuellement redéfinir un mot de passe à partir de votre page profil.<br/>
+ <br />Veuillez donc entrer ci-dessous l'adresse e-mail correspondant à votre compte :
+ </span>
+
+ <p>
+ Entrez l'adresse e-mail de votre compte : <input type="text" name="email" />
+ </p>
+
+ <p>
+ <input type="submit" name="recuperationpass" class="searchsubmit formbutton" value="Envoyer" /> <input type="reset" value="Annuler" />
+ </p>
+ </form>
+
+
+ <?php
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<p class="alert-msg rnd8 error">ERREUR : '.$error.'</p>';
+ }
+ }
+ elseif (isset($cok)) {
+ echo '<h4 style="color: green;">' . $cok . '</h4>';
+ }
+ ?>
+
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/signup.php b/Html/admin/signup.php
new file mode 100644
index 0000000..b25ec12
--- /dev/null
+++ b/Html/admin/signup.php
@@ -0,0 +1,233 @@
+<?php
+require_once('../includes/config.php');
+
+if($user->is_logged_in()) {
+ header('Location: ../index.php');
+}
+
+//titre de la page
+$pagetitle= 'Créer un compte';
+include_once('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+ <h2>Créer un compte</h2>
+
+ <div class="alert-msg rnd8 success">
+ <p style="text-align:justify; font-size:13px;">
+ Vous allez créer un compte sur <?php echo SITENAMELONG; ?>...<br />
+ Le fait de devenir membre vous fera bénéficier de plusieurs avantages :<br />
+ - uploader des torrents,<br />
+ - disposer d'un espace membre,<br />
+ - disposer de statistiques personnelles.<br />
+ Merci de choisir un pseudo, un mot de passe et une adresse e-mail. Vous recevrez un e-mail de notre part avec un lien qui vous permettra d'activer votre nouveau compte.<br />
+ <span style="font-style:italic; font-size:11px;">(Eventuellement, merci de vérifier votre répertoire Spam)</span>
+ </p>
+ </div>
+
+ <?php
+
+ //if form has been submitted process it
+ if(isset($_POST['submit'])){
+
+ //collect form data
+ extract($_POST);
+
+ //very basic validation
+ if($username ==''){
+ $error[] = 'Veuillez entrer un pseudo.';
+ }
+
+ if($password ==''){
+ $error[] = 'Veuillez entrer un mot de passe.';
+ }
+
+ if (strlen($password) < 6) {
+ $error[] = 'Le mot de passe est trop court ! (6 caractères minimum)';
+ }
+
+ if($passwordConfirm ==''){
+ $error[] = 'Veuillez confirmer le mot de passe.';
+ }
+
+ if($password != $passwordConfirm){
+ $error[] = 'Les mots de passe ne concordent pas.';
+ }
+
+ if($email ==''){
+ $error[] = 'Veuillez entrer une adresse e-maili valide.';
+ }
+
+ // On cherche si l'adresse e-mail est déjà dans la base
+ if (isset($_POST['email'])) {
+ $postemail = filter_input(INPUT_POST, $_POST['email'], FILTER_SANITIZE_EMAIL);;
+ $stmt = $db->prepare('SELECT email FROM blog_members WHERE email = :email');
+ $stmt->bindValue(':email',$postemail,PDO::PARAM_STR);
+ $stmt->execute();
+ $res = $stmt->fetch();
+
+ if ($res) {
+ $error[] = 'Cette adresse e-mail est déjà utilisée !';
+ }
+ }
+
+ //Vérification simple de la validité de l'e-mail
+ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $error[] = 'Cette adresse e-mail n\'est pas valide !';
+ }
+
+ // Le username ne peut pas contenir de caractères spéciaux, balises, etc.
+ $postusername = $_POST['username'];
+ if (!preg_match("/^[a-zA-Z0-9]+$/",$postusername)) {
+ $error[] = 'Le pseudo ne peut contenir que des lettres et des chiffres !';
+ }
+
+ // On cherche si le pseudo fait moins de 4 caractères et s'il est déjà dans la base
+ if (strlen($_POST['username']) < 4) {
+ $error[] = 'Le pseudo est trop court ! (4 caractères minimum)';
+ }
+
+ else {
+ $stmt = $db->prepare('SELECT username FROM blog_members WHERE username = :username');
+ $stmt->bindValue(':username',$postusername,PDO::PARAM_STR);
+ $stmt->execute();
+ $row = $stmt->fetch();
+
+ if (!empty($row['username'])) {
+ $error[] = 'Ce pseudo est déjà utilisé ! Merci d\'en choisir un autre.';
+ }
+ }
+
+ $verif_box = $_REQUEST["captcha"];
+
+ // on vérifie le captcha
+ if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']) {
+
+ if(!isset($error)){
+ $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);
+ $pid = md5(uniqid(rand(),true));
+ $activation = md5(uniqid(rand(),true));
+
+ // Remove all illegal characters from an email address
+ $email = filter_var($email, FILTER_SANITIZE_EMAIL);
+
+ try {
+ //On insert les données dans la table blog_members
+ $result1 = $db->prepare('INSERT INTO blog_members (username,password,email,pid,memberDate,active) VALUES (:username,:password,:email,:pid,:memberDate,:active)') ;
+ $result1->execute(array(
+ ':username' => $username,
+ ':password' => $hashedpassword,
+ ':email' => $email,
+ ':pid' => $pid,
+ ':memberDate' => date('Y-m-d H:i:s'),
+ ':active' => $activation
+ ));
+
+ $newuid = $db->lastInsertId();
+
+ //On insert aussi le PID et l'ID du membre dans la table xbt_users
+ $result2 = $db->prepare('INSERT INTO xbt_users (uid, torrent_pass) VALUES (:uid, :torrent_pass)');
+ $result2->execute(array(
+ ':uid' => $newuid,
+ ':torrent_pass' => $pid
+ ));
+
+ if(!$result1 || !$result2)
+ {
+ $error[] = 'Erreur : votre compte utilisateur n\'a pas pu être créé.';
+ }
+
+ else {
+ // si tout OK, on envoie le mail de confirmation de compte
+ $newuid = $db->lastInsertId();
+ $to = $email;
+ $subject = "Confirmation d'enregistrement de compte";
+ $body = "<p>Merci de vous êtes enregistré(e) sur ".SITENAMELONG.".</p>
+ <p>Pour activer votre compte, veuillez cliquer sur le lien suivant: <a href='".SITEURL."/activate.php?x=$newuid&y=$activation'>".SITEURL."/activate.php?x=$newuid&y=$activation</a></p>
+ <p>Cordialement,<br />Le webmaster de ".SITENAMELONG."</p>";
+
+ $mail = new Mail();
+ $mail->setFrom(SITEMAIL);
+ $mail->addAddress($to);
+ $mail->subject($subject);
+ $mail->body($body);
+ $mail->send();
+
+ //redirect to index page
+ header('Location: ../membres.php?action=activation');
+ exit;
+ }
+
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ } // captcha
+
+ else {
+ $error[] = 'Mauvais code anti-spam ! Veuillez recopier le bon code.';
+ }
+
+ }
+
+ //check for any errors
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<div class="alert-msg error"><img src="../images/attention-1.jpg" alt="Erreur !" style="float: left; margin-right: 15px; width: 38px; height: 38px;" />'.$error.'</div>';
+ }
+ }
+ ?>
+
+ <form action='' method='post'>
+
+ <p><label>Pseudo</label><br />
+ <input type='text' name='username' id='username' value='<?php if(isset($error)){ echo $_POST['username'];}?>'></p>
+
+ <p><label>Mot de passe</label> (6 caractères minimum)<br />
+ <input type='password' name='password' id='password' value='<?php if(isset($error)){ echo $_POST['password'];}?>'><br />
+
+ <!-- force du mot de passe -->
+ <span style="font-weight: bold;" id='result'></span>
+
+ </p>
+
+ <p><label>Confirmation mot de passe</label><br />
+ <input type='password' name='passwordConfirm' value='<?php if(isset($error)){ echo $_POST['passwordConfirm'];}?>'></p>
+
+ <p><label>E-mail</label><br />
+ <input type='text' name='email' value='<?php if(isset($error)){ echo $_POST['email'];}?>'></p>
+
+ <p><label>Anti-spam : veuillez recopier le code ci-dessous</label><br />
+ <input type='text' name='captcha'>&nbsp;<img src="../verificationimage.php?<?php echo rand(0,9999);?>" alt="captcha" width="50" height="24" align="absbottom" />
+ </p>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Créer un compte'> <input type="reset" value="Annuler" /></p>
+
+ </form>
+ </div>
+
+ <?php include_once '../sidebar.php'; ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php include_once '../includes/footer.php'; ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/upload.php b/Html/admin/upload.php
new file mode 100644
index 0000000..a967bcc
--- /dev/null
+++ b/Html/admin/upload.php
@@ -0,0 +1,373 @@
+<?php
+require('../includes/config.php');
+
+//Si pas connecté pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php?action=connecte');
+}
+
+// titre de la page
+$pagetitle= 'Ajouter un torrent';
+include_once('../includes/header.php');
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ include_once('../includes/header-logo.php');
+ include_once('../includes/nav.php');
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+<?php
+//Si le formulaire a été soumis = GO !
+if(isset($_POST['submit'])) {
+
+
+ //Collecte des données ...
+ //extract($_POST);
+
+ // *****************************************
+ // upload image torrent
+ // *****************************************
+
+ $image_torrent = $_FILES['imagetorrent']['name'];
+
+ //si erreur de transfert
+ if ($_FILES['imagetorrent']['error'] > 0) {
+ $error[] = "Erreur lors du transfert";
+ }
+
+ // taille de l'image
+ if ($_FILES['imagetorrent']['size'] > MAX_FILE_SIZE) {
+ $error[] = "L'image est trop grosse.";
+ }
+
+ //$extensions_valides = array( 'jpg' , 'png' );
+ //1. strrchr renvoie l'extension avec le point (« . »).
+ //2. substr(chaine,1) ignore le premier caractère de chaine.
+ //3. strtolower met l'extension en minuscules.
+ $extension_upload = strtolower( substr( strrchr($_FILES['imagetorrent']['name'], '.') ,1) );
+
+ if(!in_array($extension_upload,$EXTENSIONS_VALIDES)) {
+ $error[] = "Extension d'image incorrecte (.png ou .jpg seulement !)";
+ }
+
+ $image_sizes = getimagesize($_FILES['imagetorrent']['tmp_name']);
+ if ($image_sizes[0] > $WIDTH_MAX OR $image_sizes[1] > $HEIGHT_MAX) {
+ $error[] = "Image trop grande (dimensions)";
+ }
+
+ // on upload l'image
+ if(!move_uploaded_file($_FILES['imagetorrent']['tmp_name'], $REP_IMAGES_TORRENTS.$_FILES['imagetorrent']['name'])) {
+ $error[] = 'Problème de téléchargement de l\'image.';
+ }
+
+ // ***************************************
+ // fin image torrent upload
+ // ***************************************
+
+
+ // ***************************************
+ // upload fichier torrent
+ // ***************************************
+
+ // si il y a bien un fichier .torrent, on poursuit ...
+ if (!isset($_FILES["torrent"]) && empty($torrent)) {
+ $error[] = 'Veuillez choisir un fichier .torrent';
+ }
+
+ else {
+ //Collecte des données ...
+ extract($_POST);
+
+ $type_file = $_FILES['torrent']['type'];
+ $tmp_file = $_FILES['torrent']['tmp_name'];
+ $name_file = $_FILES['torrent']['name'];
+
+
+ $fd = fopen($_FILES["torrent"]["tmp_name"], "rb");
+
+ $length=filesize($_FILES["torrent"]["tmp_name"]);
+ if ($length) {
+ $alltorrent = fread($fd, $length);
+ }
+
+ $array = BDecode($alltorrent);
+
+ $hash = sha1(BEncode($array["info"]));
+
+ fclose($fd);
+
+ if (isset($array["info"]) && $array["info"]) {
+ $upfile=$array["info"];
+ }
+ else {
+ $upfile = 0;
+ }
+
+ if (isset($upfile["length"])) {
+ $size = (float)($upfile["length"]);
+ }
+ else if (isset($upfile["files"])) {
+ // multifiles torrent
+ $size=0;
+ foreach ($upfile["files"] as $file) {
+ $size+=(float)($file["length"]);
+ }
+ }
+ else {
+ $size = "0";
+ }
+
+ $announce=trim($array["announce"]);
+
+
+ // on vérifie si le torrent existe dja : on compare les champs info_hash
+ //$stmt = $db->query("SELECT * FROM xbt_files WHERE LOWER(hex('info_hash')) = '".$hash."'");
+ $stmt = $db->query("SELECT * FROM xbt_files WHERE info_hash = 0x$hash");
+ $exists = $stmt->fetch();
+ if(!empty($exists)) {
+ $error[] = "Ce torrent existe dans la base.";
+ }
+
+ // On vérifie que l'url d'announce n'est pas vide
+ //if(empty($array['announce'])) {
+ // $error[] = 'L\'url d\'announce est vide !';
+ //}
+
+
+ // on vérifie l'url d'announce
+ if($array['announce'] != $ANNOUNCEURL) {
+ $error[] = 'Vous n\'avez pas fournit la bonne adresse d\'announce dans votre torrent : l\'url d\'announce doit etre '.$ANNOUNCEURL;
+ }
+
+ // si le nom du torrent n'a pas été fournit (facultatif), on récupère le nom public du fichier
+ if (empty($_POST['postTitle']))
+ {
+ // on calcule le nom du fichier SANS .torrent a la fin
+ $file = $_FILES['torrent']['name'];
+ $var = explode(".",$file);
+ $nb = count($var)-1;
+ $postTitle = substr($file, 0, strlen($file)-strlen($var[$nb])-1);
+ }
+ else
+ {
+ // sinon on prend le nom fournit dans le formulaire d'upload
+ $postTitle = $_POST['postTitle'];
+ }
+
+ // on vérifie la taille du fichier .torrent
+ if ($_FILES['torrent']['size'] > $MAX_FILE_SIZE){
+ $error[] = 'Le fichier .torrent est trop gros. Etes-vous certain qu\'il s\'agisse d\'un fichier .torrent ?';
+ }
+
+ /*
+ if(!strstr($type_file, 'torrent')){
+ $error[] = 'Le fichier n\'est pas un fichier .torrent !';
+ }
+ */
+
+ /*
+ if($postTitle ==''){
+ $error[] = 'Veuillez entrer un titre.';
+ }
+ */
+
+ if($postLink ==''){
+ $error[] = 'Veuillez entrer un lien web pour le média proposé.';
+ }
+
+ if($postDesc ==''){
+ $error[] = 'Veuillez entrer une courte description.';
+ }
+
+ if($postCont ==''){
+ $error[] = 'Veuillez entrer un contenu.';
+ }
+
+ if($catID ==''){
+ $error[] = 'Veuillez choisir une catégorie.';
+ }
+
+ if($licenceID ==''){
+ $error[] = 'Veuillez choisir une licence.';
+ }
+
+ }// fin if (isset($_FILES["torrent"]))
+
+
+
+ // s'il n'y a pas d'erreur on y va !!!
+ if(!isset($error)) {
+
+ // on upload le fichier .torrent
+ if(!move_uploaded_file($_FILES['torrent']['tmp_name'], $REP_TORRENTS.$_FILES['torrent']['name'])) {
+ $error[] = 'Problème lors de l\'upload du fichier .torrent';
+ }
+
+// ***************************************
+// fin upload fichier torrent
+// ***************************************
+ try {
+
+ $postSlug = slug($postTitle);
+ $postAuthor = html($_SESSION['username']);
+
+ //On insert les données dans la table blog_posts_seo
+ $stmt = $db->prepare('INSERT INTO blog_posts_seo (postHash,postTitle,postAuthor,postSlug,postLink,postDesc,postCont,postTaille,postDate,postTorrent,postImage) VALUES (:postHash, :postTitle, :postAuthor, :postSlug, :postLink, :postDesc, :postCont, :postTaille, :postDate, :postTorrent, :postImage)') ;
+ $stmt->execute(array(
+ ':postHash' => $hash,
+ ':postTitle' => $postTitle,
+ ':postAuthor' => $postAuthor,
+ ':postSlug' => $postSlug,
+ ':postLink' => $postLink,
+ ':postDesc' => $postDesc,
+ ':postCont' => $postCont,
+ ':postTaille' => $size,
+ ':postDate' => date('Y-m-d H:i:s'),
+ ':postTorrent' => $name_file,
+ ':postImage' => $image_torrent
+ ));
+
+ $postID = $db->lastInsertId();
+
+ write_log('<span style="color:#994d00; font-weight:bold;">Upload torrent : '.$postTitle.' par '.$postAuthor, $db);
+
+ //On insert les données dans la table xbt_files également
+ $stmt2 = $db->query("INSERT INTO xbt_files SET info_hash=0x$hash, ctime=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE flags=0");
+
+ //On ajoute les données dans la table categories
+ if(is_array($catID)){
+ foreach($_POST['catID'] as $catID){
+ $stmt = $db->prepare('INSERT INTO blog_post_cats (postID,catID)VALUES(:postID,:catID)');
+ $stmt->execute(array(
+ ':postID' => $postID,
+ ':catID' => $catID
+ ));
+ }
+ }
+
+ //On ajoute les données dans la table licences
+ if(is_array($licenceID)){
+ foreach($_POST['licenceID'] as $licenceID){
+ $stmt = $db->prepare('INSERT INTO blog_post_licences (postID_BPL,licenceID_BPL)VALUES(:postID_BPL,:licenceID_BPL)');
+ $stmt->execute(array(
+ ':postID_BPL' => $postID,
+ ':licenceID_BPL' => $licenceID
+ ));
+ }
+ }
+
+ //On redirige vers la page torrents pour tout ajout de torrent
+ header('Location: '.SITEURL.'/torrents.php?action=ajoute');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ //S'il y a des erreurs, on les affiche
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<div class="alert-msg rnd8 error">ERREUR : '.$error.'</div>';
+ }
+ }
+ ?>
+
+ <!-- DEBUT du formulaire -->
+
+ <h2>Ajouter un torrent</h2>
+ <h4 class="edito">URL d'annonce : <?php echo $ANNOUNCEURL; ?></h4>
+
+ <br />
+
+ <form action='' method='post' enctype='multipart/form-data'>
+
+ <fieldset>
+ <legend>Fichier .torrent</legend>
+ <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
+ <input type='file' name='torrent'>
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Titre (facultatif)</legend>
+ <input type="text" size="50" name="postTitle" value="<?php if(isset($error)) { echo html($_POST['postTitle']); } ?>">
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Lien web du projet, de l'oeuvre, ...</legend>
+ <input type="text" size="50" name="postLink" value="<?php if(isset($error)) { echo html($_POST['postLink']); } ?>">
+ </fieldset>
+
+ <p><label style="font-weight: bold;">Courte description (Résumé de quelques lignes, sans image)</label><br />
+ <textarea name="postDesc" style="height:150px;width:900px;"><?php if(isset($error)) { echo html($_POST['postDesc']); } ?></textarea></p>
+
+ <p><label style="font-weight: bold;">Contenu (Détails, images, URL, etc.)</label><br />
+ <textarea name="postCont" style="height:300px;width:900px;"><?php if(isset($error)) { echo html($_POST['postCont']); } ?></textarea></p>
+
+ <fieldset>
+ <legend>Icone d'illustration (page accueil et article)</legend>
+ <span style="font-size: 9pt; font-style: italic;">PNG ou JPG seulement | max. <?php echo makesize($MAX_SIZE_ICON); ?> | max. <?php echo $WIDTH_MAX_ICON; ?>px X <?php echo $HEIGHT_MAX_ICON; ?>px</span></label><br />
+ <input type="file" name="imagetorrent">
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Catégories</legend>
+
+ <?php
+ $stmt2 = $db->query('SELECT catID, catTitle FROM blog_cats ORDER BY catTitle');
+ while($row2 = $stmt2->fetch()){
+ echo '<input type="checkbox" name="catID[]" value="'.$row2['catID'].'"> '.$row2['catTitle'].'<br />';
+ }
+ ?>
+
+ </fieldset>
+
+ <br />
+ <fieldset>
+ <legend>Licences</legend>
+
+ <?php
+ $stmt3 = $db->query('SELECT licenceID, licenceTitle FROM blog_licences ORDER BY licenceTitle');
+ while($row3 = $stmt3->fetch()){
+ echo '<input type="checkbox" name="licenceID[]" value="'.$row3['licenceID'].'"> '.$row3['licenceTitle'].'<br />';
+ }
+
+ ?>
+
+ </fieldset>
+
+ <p><input type="submit" class="searchsubmit formbutton" name="submit" value="Ajouter"> <input type="reset" value="Annuler" /></p>
+
+ </form>
+
+ <!-- FIN du formulaire -->
+
+ </div>
+
+ <?php include_once '../sidebar.php'; ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php include_once '../includes/footer.php'; ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/upload.php.DIST b/Html/admin/upload.php.DIST
new file mode 100644
index 0000000..5c02983
--- /dev/null
+++ b/Html/admin/upload.php.DIST
@@ -0,0 +1,372 @@
+<?php
+require '../includes/config.php';
+
+//Si pas connecté pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+// titre de la page
+$pagetitle= 'Ajouter un torrent';
+include_once '../includes/header.php';
+?>
+
+<body>
+<div id="container">
+
+ <?php
+ include_once '../includes/header-logo.php';
+ include_once '../includes/nav.php';
+ ?>
+
+ <div id="body">
+ <div id="content">
+
+<?php
+//Si le formulaire a été soumis = GO !
+if(isset($_POST['submit'])) {
+
+
+ //Collecte des données ...
+ //extract($_POST);
+
+ // *****************************************
+ // upload image torrent
+ // *****************************************
+
+ $image_torrent = $_FILES['imagetorrent']['name'];
+
+ //si erreur de transfert
+ if ($_FILES['imagetorrent']['error'] > 0) {
+ $error[] = "Erreur lors du transfert";
+ }
+
+ // taille de l'image
+ if ($_FILES['imagetorrent']['size'] > MAX_SIZE) {
+ $error = "L'image est trop grosse.";
+ }
+
+ $extensions_valides = array( 'jpg' , 'png' );
+ //1. strrchr renvoie l'extension avec le point (« . »).
+ //2. substr(chaine,1) ignore le premier caractère de chaine.
+ //3. strtolower met l'extension en minuscules.
+ $extension_upload = strtolower( substr( strrchr($_FILES['imagetorrent']['name'], '.') ,1) );
+
+ if(!in_array($extension_upload,$extensions_valides)) {
+ $error[] = "Extension d'image incorrecte (.png ou .jpg seulement !)";
+ }
+
+ $image_sizes = getimagesize($_FILES['imagetorrent']['tmp_name']);
+ if ($image_sizes[0] > WIDTH_MAX OR $image_sizes[1] > HEIGHT_MAX) {
+ $error = "Image trop grande (dimensions)";
+ }
+
+ // on upload l'image
+ if(!move_uploaded_file($_FILES['imagetorrent']['tmp_name'], $REP_IMAGES_TORRENTS.$_FILES['imagetorrent']['name'])) {
+ $error[] = 'Problème de téléchargement de l\'image.';
+ }
+
+ // ***************************************
+ // fin image torrent upload
+ // ***************************************
+
+
+ // ***************************************
+ // upload fichier torrent
+ // ***************************************
+
+ // si il y a bien un fichier .torrent, on poursuit ...
+ if (!isset($_FILES["torrent"]) && empty($torrent)) {
+ $error[] = 'Veuillez choisir un fichier .torrent';
+ }
+
+ else {
+ //Collecte des données ...
+ extract($_POST);
+
+ $type_file = $_FILES['torrent']['type'];
+ $tmp_file = $_FILES['torrent']['tmp_name'];
+ $name_file = $_FILES['torrent']['name'];
+
+
+ $fd = fopen($_FILES["torrent"]["tmp_name"], "rb");
+
+ $length=filesize($_FILES["torrent"]["tmp_name"]);
+ if ($length) {
+ $alltorrent = fread($fd, $length);
+ }
+
+ $array = BDecode($alltorrent);
+
+ $hash = sha1(BEncode($array["info"]));
+
+ fclose($fd);
+
+ if (isset($array["info"]) && $array["info"]) {
+ $upfile=$array["info"];
+ }
+ else {
+ $upfile = 0;
+ }
+
+ if (isset($upfile["length"])) {
+ $size = (float)($upfile["length"]);
+ }
+ else if (isset($upfile["files"])) {
+ // multifiles torrent
+ $size=0;
+ foreach ($upfile["files"] as $file) {
+ $size+=(float)($file["length"]);
+ }
+ }
+ else {
+ $size = "0";
+ }
+
+ $announce=trim($array["announce"]);
+
+
+ // on vérifie si le torrent existe dja : on compare les champs info_hash
+ //$stmt = $db->query("SELECT * FROM xbt_files WHERE LOWER(hex('info_hash')) = '".$hash."'");
+ $stmt = $db->query("SELECT * FROM xbt_files WHERE info_hash = 0x$hash");
+ $exists = $stmt->fetch();
+ if(!empty($exists)) {
+ $error[] = "Ce torrent existe dans la base.";
+ }
+
+ // On vérifie que l'url d'announce n'est pas vide
+ //if(empty($array['announce'])) {
+ // $error[] = 'L\'url d\'announce est vide !';
+ //}
+
+
+ // on vérifie l'url d'announce
+ if($array['announce'] != $ANNOUNCEURL) {
+ $error[] = 'Vous n\'avez pas fournit la bonne adresse d\'announce dans votre torrent : l\'url d\'announce doit etre '.$ANNOUNCEURL;
+ }
+
+ // si le nom du torrent n'a pas été fournit (facultatif), on récupère le nom public du fichier
+ if (empty($_POST['postTitle']))
+ {
+ // on calcule le nom du fichier SANS .torrent a la fin
+ $file = $_FILES['torrent']['name'];
+ $var = explode(".",$file);
+ $nb = count($var)-1;
+ $postTitle = substr($file, 0, strlen($file)-strlen($var[$nb])-1);
+ }
+ else
+ {
+ // sinon on prend le nom fournit dans le formulaire d'upload
+ $postTitle = $_POST['postTitle'];
+ }
+
+ // on vérifie la taille du fichier .torrent
+ if ($_FILES['torrent']['size'] > $MAX_FILE_SIZE){
+ $error[] = 'Le fichier .torrent est trop gros. Etes-vous certain qu\'il s\'agisse d\'un fichier .torrent ?';
+ }
+
+ /*
+ if(!strstr($type_file, 'torrent')){
+ $error[] = 'Le fichier n\'est pas un fichier .torrent !';
+ }
+ */
+
+ /*
+ if($postTitle ==''){
+ $error[] = 'Veuillez entrer un titre.';
+ }
+ */
+
+ if($postLink ==''){
+ $error[] = 'Veuillez entrer un lien web pour le média proposé.';
+ }
+
+ if($postDesc ==''){
+ $error[] = 'Veuillez entrer une courte description.';
+ }
+
+ if($postCont ==''){
+ $error[] = 'Veuillez entrer un contenu.';
+ }
+
+ if($catID ==''){
+ $error[] = 'Veuillez choisir une catégorie.';
+ }
+
+ if($licenceID ==''){
+ $error[] = 'Veuillez choisir une licence.';
+ }
+
+ }// fin if (isset($_FILES["torrent"]))
+
+
+
+ // s'il n'y a pas d'erreur on y va !!!
+ if(!isset($error)) {
+
+ // on upload le fichier .torrent
+ if(!move_uploaded_file($_FILES['torrent']['tmp_name'], $REP_TORRENTS.$_FILES['torrent']['name'])) {
+ $error[] = 'Problème lors de l\'upload du fichier .torrent';
+ }
+
+// ***************************************
+// fin upload fichier torrent
+// ***************************************
+ try {
+
+ $postSlug = slug($postTitle);
+ $postAuthor = $_SESSION['username'];
+
+ //On insert les données dans la table blog_posts_seo
+ $stmt = $db->prepare('INSERT INTO blog_posts_seo (postTitle,postAuthor,postSlug,postLink,postDesc,postCont,postTaille,postDate,postTorrent,postImage) VALUES (:postTitle, :postAuthor, :postSlug, :postLink, :postDesc, :postCont, :postTaille, :postDate, :postTorrent, :postImage)') ;
+ $stmt->execute(array(
+ ':postTitle' => $postTitle,
+ ':postAuthor' => $postAuthor,
+ ':postSlug' => $postSlug,
+ ':postLink' => $postLink,
+ ':postDesc' => $postDesc,
+ ':postCont' => $postCont,
+ ':postTaille' => $size,
+ ':postDate' => date('Y-m-d H:i:s'),
+ ':postTorrent' => $name_file,
+ ':postImage' => $image_torrent
+ ));
+
+ $postID = $db->lastInsertId();
+
+ //On insert les données dans la table xbt_files également
+ $stmt2 = $db->query("INSERT INTO xbt_files SET info_hash=0x$hash, ctime=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE flags=0");
+ //$stmt2 = $db->query("INSERT INTO xbt_files (info_hash,mtime,ctime) VALUES(X'".$info['info_hash']."',UNIX_TIMESTAMP(),UNIX_TIMESTAMP())");
+
+ //On ajoute les données dans la table categories
+ if(is_array($catID)){
+ foreach($_POST['catID'] as $catID){
+ $stmt = $db->prepare('INSERT INTO blog_post_cats (postID,catID)VALUES(:postID,:catID)');
+ $stmt->execute(array(
+ ':postID' => $postID,
+ ':catID' => $catID
+ ));
+ }
+ }
+
+
+ //On ajoute les données dans la table licences
+ if(is_array($licenceID)){
+ foreach($_POST['licenceID'] as $licenceID){
+ $stmt = $db->prepare('INSERT INTO blog_post_licences (postID_BPL,licenceID_BPL)VALUES(:postID_BPL,:licenceID_BPL)');
+ $stmt->execute(array(
+ ':postID_BPL' => $postID,
+ ':licenceID_BPL' => $licenceID
+ ));
+ }
+ }
+
+ //On redirige vers la page torrents = action = ok
+ header('Location: '.SITEURL.'/torrents.php?action=ok');
+ exit;
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+
+ }
+
+ }
+
+ //S'il y a des erreurs, on les affiche
+ if(isset($error)){
+ foreach($error as $error){
+ echo '<div class="alert-msg rnd8 error">ERREUR : '.$error.'</div>';
+ }
+ }
+ ?>
+
+ <!-- DEBUT du formulaire -->
+
+ <h2>Ajouter un torrent</h2>
+ <h4 class="edito">URL d'annonce : <?php echo $ANNOUNCEURL; ?></h4>
+
+ <br />
+
+ <form action='' method='post' enctype='multipart/form-data'>
+
+ <fieldset>
+ <legend>Fichier .torrent</legend>
+ <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
+ <input type='file' name='torrent'>
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Titre (facultatif)</legend>
+ <input type='text' size="50" name='postTitle' value='<?php if(isset($error)){ echo html($_POST['postTitle']);}?>'>
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Lien web du projet, de l'oeuvre, ...</legend>
+ <input type='text' size="50" name='postLink' value='<?php if(isset($error)){ echo html($_POST['postLink']);}?>'>
+ </fieldset>
+
+ <p><label style="font-weight: bold;">Courte description (Résumé de quelques lignes, sans image)</label><br />
+ <textarea name='postDesc' style="height:150px;width:900px;"><?php if(isset($error)){ echo html($_POST['postDesc']);}?></textarea></p>
+
+ <p><label style="font-weight: bold;">Contenu (Détails, images, URL, etc.)</label><br />
+ <textarea name='postCont' style="height:300px;width:900px;"><?php if(isset($error)){ echo html($_POST['postCont']);}?></textarea></p>
+
+ <fieldset>
+ <legend>Icone d'illustration (page accueil et article)</legend>
+ <span style="font-size: 9pt; font-style: italic;">PNG ou JPG seulement | max. <?php echo makesize($MAX_SIZE_ICON); ?> | max. <?php echo $WIDTH_MAX_ICON; ?>px X <?php echo $HEIGHT_MAX_ICON; ?>px</span></label><br />
+ <input type='file' name='imagetorrent'>
+ </fieldset>
+
+ <br />
+
+ <fieldset>
+ <legend>Catégories</legend>
+
+ <?php
+ $stmt2 = $db->query('SELECT catID, catTitle FROM blog_cats ORDER BY catTitle');
+ while($row2 = $stmt2->fetch()){
+ echo "<input type='checkbox' name='catID[]' value='".$row2['catID']."'> ".$row2['catTitle']."<br />";
+ }
+ ?>
+
+ </fieldset>
+
+ <br />
+ <fieldset>
+ <legend>Licences</legend>
+
+ <?php
+ $stmt3 = $db->query('SELECT licenceID, licenceTitle FROM blog_licences ORDER BY licenceTitle');
+ while($row3 = $stmt3->fetch()){
+ echo "<input type='checkbox' name='licenceID[]' value='".$row3['licenceID']."'> ".$row3['licenceTitle']."<br />";
+ }
+
+ ?>
+
+ </fieldset>
+
+ <p><input type='submit' class="searchsubmit formbutton" name='submit' value='Ajouter'> <input type="reset" value="Annuler" /></p>
+
+ </form>
+
+ <!-- FIN du formulaire -->
+
+ </div>
+
+ <?php require('../sidebar.php'); ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php require('../includes/footer.php'); ?>
+</div>
+
+</body>
+</html>
diff --git a/Html/admin/users.php b/Html/admin/users.php
new file mode 100644
index 0000000..9e12cd9
--- /dev/null
+++ b/Html/admin/users.php
@@ -0,0 +1,170 @@
+<?php
+//include config
+require_once '../includes/config.php';
+
+//Si pas connecté OU si le membre n'est pas admin, pas de connexion à l'espace d'admin --> retour sur la page login
+if(!$user->is_logged_in()) {
+ header('Location: login.php');
+}
+
+if(isset($_SESSION['userid'])) {
+ if($_SESSION['userid'] != 1) {
+ header('Location: '.SITEURL);
+ }
+}
+
+//show message from add / edit page
+if(isset($_GET['deluser'])){
+
+ //if user id is 1 ignore
+ if($_GET['deluser'] !='1'){
+
+ // On supprime l'avatar du membre
+ $stmt = $db->prepare('SELECT avatar FROM blog_members WHERE memberID = :memberID');
+ $stmt->execute(array(':memberID' => (int) $_GET['deluser']));
+ $sup = $stmt->fetch();
+ $file = $REP_IMAGES_AVATARS.$sup['avatar'];
+ if (!empty($sup['avatar'])) {
+ unlink($file);
+ }
+
+ // on supprime le membre
+ $stmt = $db->prepare('DELETE FROM blog_members WHERE memberID = :memberID') ;
+ $stmt->execute(array(':memberID' => (int) $_GET['deluser']));
+
+ // on supprime les données torrent du membre
+ $stmt1 = $db->prepare('DELETE FROM xbt_users WHERE uid = :uid') ;
+ $stmt1->execute(array(':uid' => (int) $_GET['deluser']));
+
+ // on supprime les commentaires du membre
+ //$delname = html($_GET['delname']);
+ //$stmt2 = $db->prepare('DELETE FROM blog_posts_comments WHERE cuser = :cuser') ;
+ //$stmt2->execute(array(':cuser' => $delname));
+
+ header('Location: users.php?action=supprime');
+ exit;
+
+ }
+}
+
+// titre de la page
+$pagetitle= 'Admin : gestion des membres';
+include_once '../includes/header.php';
+
+?>
+
+<body>
+
+<div id="container">
+
+ <?php
+ include_once '../includes/header-logo.php';
+ include_once '../includes/nav.php';
+ ?>
+
+
+ <div id="body">
+ <div id="content">
+
+ <?php include('menu.php');?>
+
+ <?php
+ //show message from add / edit user
+ if(isset($_GET['action']) && $_GET['action'] == 'supprime'){
+ echo '<h3>Le membre a été supprimé avec succès.</h3>';
+ }
+ if(isset($_GET['action']) && $_GET['action'] == 'ajoute'){
+ echo '<h3>Le membre a été ajouté avec succès.</h3>';
+ }
+ ?>
+
+ <table>
+ <tr>
+ <th>ID</th>
+ <th>Pseudo</th>
+ <th>PID</th>
+ <th>Email</th>
+ <th style="text-align: center;">Inscription</th>
+ <th>Validé</th>
+ <th style="text-align: center;">Action</th>
+ </tr>
+ <?php
+ try {
+ $pages = new Paginator('10','p');
+
+ $stmt = $db->query('SELECT memberID FROM blog_members');
+
+ //pass number of records to
+ $pages->set_total($stmt->rowCount());
+
+ $stmt = $db->query('SELECT memberID,username,pid,email,memberDate,active FROM blog_members ORDER BY memberID DESC '.$pages->get_limit());
+ while($row = $stmt->fetch()){
+
+ echo '<tr>';
+ echo '<td>'.html($row['memberID']).'</td>';
+ echo '<td>'.html($row['username']).'</td>';
+ echo '<td style="font-size: 10px;">'.html($row['pid']).'</td>';
+ echo '<td style="font-size: 11px;">'.html($row['email']).'</td>';
+
+ sscanf($row['memberDate'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
+ echo '<td style="font-size: 10px; text-align: center;">'.$jour.'-'.$mois.'-'.$annee.'</td>';
+ ?>
+
+ <?php
+ echo '<td style="text-align:center;">';
+ if($row['active'] == 'yes') {
+ echo 'oui';
+ }
+ elseif($row['active'] != 'yes' || $row['active'] == 'no') {
+ echo 'non';
+ }
+ echo '</td>';
+ ?>
+
+ <td style="text-align: center;">
+ <a style="text-decoration: none;" href="edit-user.php?id=<?php echo html($row['memberID']);?>">
+ <input type="button" class="button" value="Edit." /></a>
+ <?php if($row['memberID'] != 1){?>
+ | <a style="text-decoration: none;" href="javascript:deluser('<?php echo html($row['memberID']);?>','<?php echo html($row['username']);?>')">
+ <input type="button" class="button" value="Supp." /></a>
+ <?php } ?>
+ </td>
+
+ <?php
+ echo '</tr>';
+
+ }
+
+ } catch(PDOException $e) {
+ echo $e->getMessage();
+ }
+ ?>
+ </table>
+
+ <br />
+
+ <?php
+ echo $pages->page_links();
+ ?>
+
+ <p style="text-align: right;">
+ <a href="add-user.php" style="text-decoration: none;"><input type="button" class="button" value="Ajouter un membre" /></a>
+ </p>
+ </div>
+
+ <?php
+ include_once '../sidebar.php';
+ ?>
+
+ <div class="clear"></div>
+ </div>
+</div>
+
+<div id="footer">
+ <?php
+ include_once '../includes/footer.php';
+ ?>
+</div>
+
+</body>
+</html>