Modifié AEVA gallerie pour loggué tout

Ayant eut quelques visiteurs indélicats sur ma gallerie, j'ai décidé de mettre en oeuvre une sorte de logs; j'ai aussi écrit un outils qui permet d'avoir une vue sur les x derniers accès, avec géolocalisation; je ferais sans doute un article plus complet sur cet outils plus tard.

AEVA est sans doute l'une des gallerie les plus performantes que j'ai eut a installer; mais elle ne reseigne que le nombre de 'vues' sur une image/video, en aucun cas, la localisation du visiteur; de mon point de vue, plus on en sait; mieux c'est; j'ai donc modifié aeva gallerie pour que celui-ci loggue chaque demande dans une table...

voici le "how-to" (pour une version 1.4c)
commençons par la table qui va contenir le log:

CREATE TABLE IF NOT EXISTS `media_log_visit`(
  `stamp` int(11) NOT NULL,
  `IP` varchar(16) character set latin1 collate latin1_german1_ci NOT NULL,
  `id` int(11) NOT NULL,
  `referer` varchar(1024) collate latin1_general_ci default NULL,
  `useragent` varchar(1024) collate latin1_general_ci default NULL,
  KEY `stamp` (`stamp`),
  KEY `IP` (`IP`),
  KEY `id` (`id`),
  KEY `referer` (`referer`(1000)),
  KEY `useragent` (`useragent`(1000))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Ensuite nous modifions les fichiers:

MGalleryItem.php

ligne 36:

// Get the file's data
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : (int) $_REQUEST['in'];
$type = isset($_REQUEST['thumb']) ? 'thumb' : (isset($_REQUEST['preview']) ? 'preview' : 'main');

Insérez juste avant  if (!aeva_allowedTo('access'))"

// Update item views before this was complete due to a bug in some server
// Fixed by Frater
$amFunc['db_query']('
    UPDATE {db_prefix}aeva_media
    SET views = views + 1
    WHERE id_media = {int:media}',
    array('media' => $id),__FILE__,__LINE__);

/* IP Logs by Frater */  
$ip = "UNKNOWN";
if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"];
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"];

$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];

$log_date = time();

$query_sql    = "INSERT INTO {db_prefix}log_visit
        (stamp,IP,id,referer,useragent)
        VALUES ($log_date,'$ip',$id,'$referer','$useragent')";

$amFunc['db_query']($query_sql,
    array('id' => $id),__FILE__,__LINE__);
// Nothing more to come

en ligne 93; supprimé le block:

// Update item views
$amFunc['db_query']('
    UPDATE {db_prefix}aeva_media
    SET views = views + 1
    WHERE id_media = {int:media}',
    array('media' => $id),__FILE__,__LINE__);

// Nothing more to come

Aeva-Gallery.php
autour de la ligne 2190; rechercher:

    if (!isset($_REQUEST['in']))
        die('Hacking attempt...');

    $type = current(array_intersect(array('thumb', 'thumba', 'preview', 'icon', 'bigicon', 'main'), array_keys($_REQUEST)));
    $type = $type === false ? 'main' : $type;

    // Get the file's data
    $id = (int) $_REQUEST['in'];

Coller, juste après, le code suivant:

/* IP Logs by Frater */
$ip = "UNKNOWN";
if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"];
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"];

$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];

$log_date = time();

$query_sql    = "INSERT INTO {db_prefix}log_visit
        (stamp,IP,id,referer,useragent)
        VALUES ($log_date,'$ip',$id,'$referer','$useragent')";

$amFunc['db_query']($query_sql,
    array('id' => $id),__FILE__,__LINE__);
/* IP Logs by Frater */ 

// Nothing more to come

Voilà c'est fait