*/ namespace ImageHeberg; use PDO; use ArrayObject; use Imagick; /** * Bibliothèque d'outils pour la gestion du site en tant qu'admin */ abstract class HelperAdmin { /** * Liste des images n'ayant jamais été affichées et présentes sur le serveur depuis xx temps * @return ArrayObject */ public static function getNeverUsedFiles(): ArrayObject { // Toutes les images jamais affichées & envoyées il y a plus de xx jours $req = 'SELECT im.new_name FROM images im WHERE im.last_view IS NULL AND im.date_envoi < DATE_SUB(CURRENT_DATE(), INTERVAL ' . _DELAI_EFFACEMENT_IMAGES_JAMAIS_AFFICHEES_ . ' DAY) /* Préservation des fichiers des membres */ AND 0 = ( SELECT COUNT(*) FROM possede po WHERE po.images_id = im.id ) /* Préservation si miniature affichée */ AND 0 = ( SELECT COUNT(*) FROM thumbnails th WHERE th.images_id = im.id AND th.last_view IS NOT NULL ) '; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->new_name); } return $monRetour; } /** * Liste des images plus utilisées depuis au moins xx jours * @return ArrayObject */ public static function getUnusedFiles(): ArrayObject { // Toutes les images non affichées depuis xx jours $req = 'SELECT im.new_name FROM images im WHERE im.last_view < DATE_SUB(CURRENT_DATE(), INTERVAL ' . _DELAI_INACTIVITE_AVANT_EFFACEMENT_IMAGES_ . ' DAY) /* Non prise en compte des images jamais affichées */ AND im.last_view IS NOT NULL /* Préservation des images membres */ AND 0 = ( SELECT COUNT(*) FROM possede po WHERE po.images_id = im.id ) /* Préservation si miniature affichée */ AND 0 = ( SELECT COUNT(*) FROM thumbnails th WHERE th.images_id = im.id AND th.last_view > DATE_SUB(CURRENT_DATE(), INTERVAL ' . _DELAI_INACTIVITE_AVANT_EFFACEMENT_IMAGES_ . ' DAY) )'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->new_name); } return $monRetour; } /** * Liste des comptes sans images et créés depuis au moins xx jours * @return ArrayObject */ public static function getNeverUsedAccounts(): ArrayObject { // Toutes les comptes créés et jamais utilisés depuis xx jours $req = 'SELECT m.id FROM membres m WHERE m.date_inscription < DATE_SUB(CURRENT_DATE(), INTERVAL ' . _DELAI_EFFACEMENT_COMPTES_JAMAIS_UTILISES_ . ' DAY) /* Préservation des comptes possédant des images */ AND 0 = ( SELECT COUNT(*) FROM possede po WHERE po.membres_id = m.id )'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute l'ID du compte $monRetour->append($value->id); } return $monRetour; } /** * Liste de l'ensemble des images en BDD * @return ArrayObject */ public static function getAllImagesNameBDD(): ArrayObject { // Toutes les images (sauf 404 & banned) $req = 'SELECT md5 FROM images WHERE id > 2'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->md5); } return $monRetour; } /** * Liste de l'ensemble des images en HDD * @param string $path path à analyser * @return ArrayObject */ public static function getAllImagesNameHDD(string $path): ArrayObject { $monRetour = new ArrayObject(); // Scanne le répertoire des images $scan_rep = scandir($path); // Pour chaque item foreach ($scan_rep as $item) { if (!in_array($item, ['.', '..', '_dummy', 'z_cache'])) { if (is_dir($path . $item)) { // Appel récursif if ($path . $item . '/' !== _PATH_MINIATURES_) { $monRetourTmp = self::getAllImagesNameHDD($path . $item . '/'); // Parsage et récupération des sous fichiers... foreach ($monRetourTmp as $fichier) { $monRetour->append($fichier); } } } elseif ($item !== _IMAGE_404_ && $item !== _IMAGE_BAN_) { $monRetour->append($item); } } } return $monRetour; } /** * Liste de l'ensemble des miniatures en BDD */ public static function getAllMiniaturesNameBDD(): ArrayObject { // Toutes les images $req = 'SELECT md5 FROM thumbnails'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->md5); } return $monRetour; } /** * Toutes les images avec un même MD5 * @param string $unMd5 * @return ArrayObject */ public static function getImageByMd5(string $unMd5): ArrayObject { // Images avec le même MD5 $req = MaBDD::getInstance()->prepare('SELECT new_name FROM images WHERE md5 = :md5'); $req->bindValue(':md5', $unMd5); $req->execute(); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($req->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->new_name); } return $monRetour; } /** * Toutes les images signalées * @return ArrayObject */ public static function getImagesSignalees(): ArrayObject { // Images signalées $req = 'SELECT new_name FROM images WHERE isSignalee = 1 and isBloquee = 0'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->new_name); } return $monRetour; } /** * Images dont les statistiques d'affichage sont incohérentes * @param int $nbMax Nb affichage / jour à partir duquel on veut les images * @return ArrayObject */ public static function getImagesTropAffichees(int $nbMax): ArrayObject { // Images avec trop d'affichages $req = 'SELECT new_name, (nb_view_v4 + nb_view_v6) / DATEDIFF(NOW(), date_envoi) as nbViewPerDay FROM images WHERE isBloquee = 0 and isApprouvee = 0 HAVING nbViewPerDay > ' . $nbMax . ' ORDER BY nbViewPerDay DESC'; // Exécution de la requête $resultat = MaBDD::getInstance()->query($req); $monRetour = new ArrayObject(); // Pour chaque résultat retourné foreach ($resultat->fetchAll() as $value) { // J'ajoute le nom de l'image $monRetour->append($value->new_name); } return $monRetour; } }