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
|
<?php
// controller/ckeditor.php
//
// c'est la partie PHP du ckeditor
// l'autre partie est le fichier view/template-ckeditor.php
// qui est inséré par la vue de la page correspondante
// il y a aussi un fichier CSS parce que le HTML créé par l'éditeur ne suffit pas à lui-même
// avant de placer l'éditeur
function preparationCKeditor($html)
{
// texte initial inséré avec setData() dans l'éditeur
// danger!
// setData() n'insère pas le texte si il ne respecte pas certains critères, l'utilisateur risque de perdre des données en validant un nouveau contenu sans avoir pu modifier l'ancien
if(empty($html))
{
header('Location: index.php?erreur=empty_input');
}
// supprimer espaces, tabulations et sauts de ligne en début et fin de chaine
$html = trim($html);
// supprimer les sauts de ligne
$sautsDeLigne = array("\n", "\r", "\r\n");
$html = str_replace($sautsDeLigne, '', $html);
// échapper tous les ', ", \ et caractère NULL
$html = addslashes($html);
return($html);
}
// réception du HTML créé par l'éditeur
function submitCKeditor()
{
// déjà fait mais on ne sait jamais
if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1)
{
header('Location: index.php?page=' . $_GET['page'] . '&erreur=connexion');
exit();
}
// POST de l'éditeur
if(isset($_POST['contenu'])) // optionnel pour discographie
{
$html = Security::secureString($_POST['contenu']);
// liens sans http:// devant
$html = fixLinks($html);
// récupérer les liens multimedia
//require("media.php");
//$html = mediaSubmit($html);
// ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !!
if($_GET['page'] != 'discographie' && $_GET['page'] != 'album' && $html == '')
{
header('Location: index.php?page=' . $_GET['page'] . '&erreur=contenu_editeur_vide');
exit();
}
}
// page discographie
if($_GET['page'] === 'discographie' || $_GET['page'] === 'album')
{
$Album = new Album($_GET['page'], 'discographie');
// on retrouve les données si nécessaire
if(isset($_SESSION['file_code']) && $_SESSION['file_code'] != '')
{
$Album->fileCode = $_SESSION['file_code'];
$Album->readOne();
}
$nouveauTitre = Security::secureString($_POST['titre']);
$nouvelleAnnee = Security::secureString($_POST['annee']);
// enregistrement de l'image
if(!empty($_FILES['upload']['name']))
{
require('model/Image.php');
$Image = new Image($_GET['page'], 'discographie', false);
$nomFichier = Security::secureFileName($_FILES['upload']['name']);
$Image->setFileName($nomFichier);
$Image->setThumbnailWidth(201);
$nouvellePochette = $nomFichier;
/*$nouvellePochetteMini = pathinfo($_FILES['upload']['name'], PATHINFO_FILENAME) . '-mini.' . pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION);*/
$nouvellePochetteMini = pathinfo($nomFichier, PATHINFO_FILENAME) . '-mini.' . pathinfo($nomFichier, PATHINFO_EXTENSION);
$Image->upload();
$Image->makeThumbnail();
$erreur = $Image->erreur;
if(!empty($erreur))
{
// remettre pochette précédente si il y a
}
}
else
{
$nouvellePochette = '';
$nouvellePochetteMini = '';
}
//var_dump($nouvellePochetteMini); die();
// enregistrement du texte JSON
if(!isset($_SESSION['file_code']) || $_SESSION['file_code'] == '')
{
// page disco
$Album->createVignetteJSON($nouveauTitre, $nouvelleAnnee, $nouvellePochette, $nouvellePochetteMini);
// page de l'album
if(!empty($_POST['contenu']))
{
$Album->format = 'html';
$Album->create($html);
}
}
// modification
else
{
$Album->albumCode = $_SESSION['file_code'];
// page disco
$Album->format = 'json';
$Album->updateVignetteJSON($nouveauTitre, $nouvelleAnnee, $nouvellePochette, $nouvellePochetteMini);
// page de l'album
// si $html est vide, le fichier est supprimé
$Album->format = 'html';
$Album->update($html);
}
}
// pages avec des articles simples (melaine...)
//if($_GET['page'] != 'discographie')
else
{
$Article = new Article($_GET['page'], $_GET['page']);
if(!isset($_SESSION['file_code']) || $_SESSION['file_code'] === '')
{
$Article->create($html);
// create html-mini
}
else
{
$Article->fileCode = $_SESSION['file_code']; // erreur ici?
$Article->update($html);
// update html-mini
}
}
// nettoyage
unset($_SESSION['file_code']);
if($_GET['page'] === 'discographie' || $_GET['page'] === 'album')
{
if($html === '')
{
$redirection = 'index.php?page=discographie';
}
else
{
$redirection = 'index.php?page=album&file_code=' . $Album->fileCode;
}
}
else
{
$redirection = 'index.php?page=' . $_GET['page'];
}
header('Location: ' . $redirection);
exit();
}
|