diff options
author | citizenz7 <citizenz7@protonmail.com> | 2017-04-20 18:50:55 +0200 |
---|---|---|
committer | citizenz7 <citizenz7@protonmail.com> | 2017-04-20 18:50:55 +0200 |
commit | 5fd9fa480f302902328b81f912dd67ce378284f8 (patch) | |
tree | 66234843ae2857fda12442e4f7577c527d48977c /Html/admin | |
parent | ebe731862c7c741171138b1083906f391fc35aff (diff) | |
download | freetorrent-5fd9fa480f302902328b81f912dd67ce378284f8.tar.xz freetorrent-5fd9fa480f302902328b81f912dd67ce378284f8.zip |
V.1.4.6
Diffstat (limited to 'Html/admin')
-rw-r--r-- | Html/admin/.htaccess | 1 | ||||
-rw-r--r-- | Html/admin/add-category.php | 134 | ||||
-rw-r--r-- | Html/admin/add-licence.php | 134 | ||||
-rw-r--r-- | Html/admin/add-user.php | 156 | ||||
-rw-r--r-- | Html/admin/categories.php | 112 | ||||
-rw-r--r-- | Html/admin/download.php | 90 | ||||
-rw-r--r-- | Html/admin/edit-category.php | 125 | ||||
-rw-r--r-- | Html/admin/edit-licence.php | 125 | ||||
-rw-r--r-- | Html/admin/edit-post.php | 398 | ||||
-rw-r--r-- | Html/admin/edit-profil.php | 281 | ||||
-rw-r--r-- | Html/admin/edit-user.php | 166 | ||||
-rw-r--r-- | Html/admin/index.php | 185 | ||||
-rw-r--r-- | Html/admin/licences.php | 110 | ||||
-rw-r--r-- | Html/admin/login.php | 92 | ||||
-rw-r--r-- | Html/admin/logout.php | 17 | ||||
-rw-r--r-- | Html/admin/logs.php | 95 | ||||
-rw-r--r-- | Html/admin/menu.php | 11 | ||||
-rw-r--r-- | Html/admin/messagerie.php | 111 | ||||
-rw-r--r-- | Html/admin/messages_envoyer_tous.php | 114 | ||||
-rw-r--r-- | Html/admin/profil.php | 619 | ||||
-rw-r--r-- | Html/admin/recup_pass.php | 124 | ||||
-rw-r--r-- | Html/admin/signup.php | 233 | ||||
-rw-r--r-- | Html/admin/upload.php | 373 | ||||
-rw-r--r-- | Html/admin/upload.php.DIST | 372 | ||||
-rw-r--r-- | Html/admin/users.php | 170 |
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> + <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é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" /> '; + } + 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='∞'; + } + ?> + + <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">↑</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">↑</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">↑</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">↓</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">↑</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">↓</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">↑</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">↓</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">↑</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">↓</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">↑</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">↑</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">↑</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">↓</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">↑</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">↓</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">↑</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">↓</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">↑</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">↓</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']; ?> + </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" /> Editer votre profil</a></span> + | + <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" /> 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='∞'; + } + ?> + + <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">↑</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">↑</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">↑</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">↓</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">↑</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">↓</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">↑</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">↓</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">↑</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">↓</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">↑</a>Nom<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTitle&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=desc">↑</a>Ajouté<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postDate&ordre=asc">↓</a></th> + <th><a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=desc">↑</a>Taille<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=postTaille&ordre=asc">↓</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">↑</a>S<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=seeders&ordre=asc">↓</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">↑</a>L<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=leechers&ordre=asc">↓</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">↑</a>T<a style="color: #fff; text-decoration: none;" href="profil.php?membre=<?php echo $row['username']; ?>&tri=xf.completed&ordre=asc">↓</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" /> '; + } + 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'> <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> |