208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
+
+
-
-
+
+
-
+
-
-
|
{
$db = DB::getInstance();
$db->exec('BEGIN;');
$db->simpleExec('DELETE FROM fichiers_compta_journal WHERE fichier = ?;', (int)$this->id);
$db->simpleExec('DELETE FROM fichiers_wiki_pages WHERE fichier = ?;', (int)$this->id);
$db->simpleExec('DELETE FROM fichiers_membres WHERE fichier = ?;', (int)$this->id);
$db->simpleExec('DELETE FROM fichiers WHERE id = ?;', (int)$this->id);
// Suppression du contenu s'il n'est pas utilisé par un autre fichier
if (!($id_contenu = $db->simpleQuerySingle('SELECT f1.id_contenu FROM fichiers AS f1 INNER JOIN fichiers AS f2
ON f1.id_contenu = f2.id_contenu AND f1.id != f2.id WHERE f2.id = ?;', false, (int)$this->id)))
if (!$db->simpleQuerySingle('SELECT 1 FROM fichiers WHERE id_contenu = ? AND id != ? LIMIT 1;',
false, (int)$this->id_contenu, (int)$this->id))
{
$db->simpleExec('DELETE FROM fichiers_contenu WHERE id = ?;', (int)$id_contenu);
$db->simpleExec('DELETE FROM fichiers_contenu WHERE id = ?;', (int)$this->id_contenu);
}
$db->simpleExec('DELETE FROM fichiers WHERE id = ?;', (int)$this->id);
$cache_id = 'fichiers.' . $this->id_contenu;
Static_Cache::remove($cache_id);
foreach (self::$allowed_thumb_sizes as $size)
{
Static_Cache::remove($cache_id . '.thumb.' . (int)$size);
|
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
|
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
|
-
-
+
+
|
}
if (!is_uploaded_file($file['tmp_name']))
{
throw new \RuntimeException('Le fichier n\'a pas été envoyé de manière conventionnelle.');
}
$name = preg_replace('/[ ]/', '_', $file['name']);
$name = preg_replace('/[^\d\w._-]/ui', '', $file['name']);
$name = preg_replace('/\s+/', '_', $file['name']);
$name = preg_replace('/[^\d\w._-]/ui', '', $name);
$bytes = file_get_contents($file['tmp_name'], false, null, -1, 1024);
$type = \KD2\FileInfo::guessMimeType($bytes);
if (!$type)
{
$ext = substr($name, strrpos($name, '.')+1);
|
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
|
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
|
+
-
+
|
* Renvoie une liste d'ID de fichiers mentionnées dans un texte wiki
* @param string $text Texte wiki
* @return array Liste des IDs de fichiers mentionnés
*/
static public function listFilesUsedInText($text)
{
preg_match_all('/<<?(?:fichier|image)\s*(?:\|\s*)?(\d+)/', $text, $match, PREG_PATTERN_ORDER);
preg_match_all('/(?:fichier|image):\/\/(\d+)/', $text, $match2, PREG_PATTERN_ORDER);
return $match[1];
return array_merge($match[1], $match2[1]);
}
/**
* Callback utilisé pour l'extension <<fichier>> dans le wiki-texte
* @param array $args Arguments passés à l'extension
* @param string $content Contenu éventuel (en mode bloc)
* @param object $skriv Objet SkrivLite
|