image-heberg/admin/cleanErrors.php

163 lines
No EOL
5.6 KiB
PHP

<?php
/*
* Copyright 2008-2019 Anael Mobilia
*
* This file is part of image-heberg.fr.
*
* image-heberg.fr is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* image-heberg.fr is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with image-heberg.fr. If not, see <http://www.gnu.org/licenses/>
*/
require '../config/config.php';
// Vérification des droits d'accès
metaObject::checkUserAccess(utilisateurObject::levelAdmin);
require _TPL_TOP_;
?>
<h1><small>Nettoyage des incohérences</small></h1>
<?php
$message = '';
// Je récupère la liste des images en BDD
$listeImagesBDD = metaObject::getAllImagesNameBDD();
// Je récupère la liste des images sur le HDD
$listeImagesHDD = metaObject::getAllImagesNameHDD(_PATH_IMAGES_);
// Je recherche les erreurs sur les images
// Pour chaque images en BDD
$listeErreursImagesBDD = new ArrayObject(array_diff((array) $listeImagesBDD, (array) $listeImagesHDD));
// Pour chaque images en HDD
$listeErreursImagesHDD = new ArrayObject(array_diff((array) $listeImagesHDD, (array) $listeImagesBDD));
// Je récupère la liste des miniatures en BDD
$listeMiniaturesBDD = metaObject::getAllMiniaturesNameBDD();
// Je récupère la liste des miniatures en HDD
$listeMiniaturesHDD = metaObject::getAllImagesNameHDD(_PATH_MINIATURES_);
// Je recherche les erreurs sur les miniatures
// Pour chaque miniatures en BDD
$listeErreursMiniaturesBDD = new ArrayObject(array_diff((array) $listeMiniaturesBDD, (array) $listeMiniaturesHDD));
// Pour chaque miniatures en HDD
$listeErreursMiniaturesHDD = new ArrayObject(array_diff((array) $listeMiniaturesHDD, (array) $listeMiniaturesBDD));
// Si l'effacement est demandé
if (isset($_POST['effacer'])) :
// Images uniquement en BDD
foreach ((array) $listeErreursImagesBDD as $value) {
$message .= '<br />Suppression de la BDD de l\'image ' . $value;
// Je crée mon objet et lance la suppression
$monImage = new imageObject($value);
$monImage->supprimer();
}
// Images uniquement en HDD
foreach ((array) $listeErreursImagesHDD as $value) {
$message .= '<br />Suppression du disque de l\'image ' . $value;
// Suppression du fichier
$rep = substr($value, 0, 1) . '/';
$pathFinal = _PATH_IMAGES_ . $rep . $value;
unlink($pathFinal);
}
// Miniatures uniquement en BDD
foreach ((array) $listeErreursMiniaturesBDD as $value) {
$message .= '<br />Suppression de la BDD de la miniature ' . $value;
// Je crée mon objet et lance la suppression
$maMiniature = new miniatureObject($value);
$maMiniature->supprimer();
}
// Miniatures uniquement en HDD
foreach ((array) $listeErreursMiniaturesHDD as $value) {
$message .= '<br />Suppression du disque de la miniature ' . $value;
// Suppression du fichier
$rep = substr($value, 0, 1) . '/';
$pathFinal = _PATH_MINIATURES_ . $rep . $value;
unlink($pathFinal);
}
$message .= '<br />Effacement terminé !';
?>
<div class="alert alert-success">
<?= $message ?>
</div>
<?php else: ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
<?= $listeErreursImagesBDD->count() ?> image(s) présente(s) uniquement en BDD
</h2>
</div>
<div class="panel-body">
<ul>
<?php foreach ((array) $listeErreursImagesBDD as $value): ?>
<li><?= $value ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
<?= $listeErreursImagesHDD->count() ?> image(s) présente(s) uniquement sur HDD
</h2>
</div>
<div class="panel-body">
<ul>
<?php foreach ((array) $listeErreursImagesHDD as $value): ?>
<li><?= $value ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
<?= $listeErreursMiniaturesBDD->count() ?> miniature(s) présente(s) uniquement en BDD
</h2>
</div>
<div class="panel-body">
<ul>
<?php foreach ((array) $listeErreursMiniaturesBDD as $value): ?>
<li><?= $value ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
<?= $listeErreursMiniaturesHDD->count() ?> miniature(s) présente(s) uniquement sur HDD
</h2>
</div>
<div class="panel-body">
<ul>
<?php foreach ((array) $listeErreursMiniaturesHDD as $value): ?>
<li><?= $value ?> (<strong>A effacer manuellement</strong>)</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<form method="post">
<button class="btn btn-danger" type="submit" name="effacer">
<span class="glyphicon glyphicon-trash"></span>
&nbsp;
Effacer ces fichiers
</button>
</form>
<?php
endif;
require _TPL_BOTTOM_;
?>