aboutsummaryrefslogtreecommitdiff
path: root/Html/admin/edit-profil.php
blob: 009c2e0a214d18bcb91943a9eea76c3c5a9657f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<?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>