Topic: Quelques modifications

Bonjour,
J'ai fait quelques modifications que voici.

- Compteur du nombre de downloads
- Afficher une image différente à chaque type de fichiers pour le download

Voilà les modifs à faire

0 - Sauvegardez les fichiers index.php et inc_functions.php ainsi que les fichiers de langue éventuellement.

1 - Creer un repertoire compteur sous la racine de votre downloader (Au même niveau que images, css, lang...) et lui donner les droits 777
2 - Dans le fichier de langue fr_FR.php, rajouter la ligne     'new_count' => 'Créer les compteurs', et si possible dans les autres langues pour aider les copains
3 - Dans le fichier inc_functions.php après les lignes


header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename="' . basename($path) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($path));

rajouter


$tempo_tab1 = split('/', $path);
$tempo_tab2 = array_reverse($tempo_tab1);
$fichier = $tempo_tab2[0];

        $fp = fopen ("./compteur/$fichier.txt", "r+");          // Compteur de downloads rajouté le 07/08/2008
        $nb_downloads = fgets ($fp, 11);
        if ($nb_downloads == ''){
                fseek ($fp, 0);
                fputs ($fp, 0);
            }
        $nb_downloads = $nb_downloads + 1;
        fseek ($fp, 0);
        fputs ($fp, $nb_downloads);
        fclose ($fp);

4 - Dans le fichier index.php, après
$nav .= ' <a href="?act=upload&amp;p='.urlencode($p).'" title="'.$lang['upload_folder'].'">'.$lang['upload'].'</a>';

rajouter la ligne

$nav .= ', <a href="?act=new_count&amp;p='.urlencode($p).'" title="'.$lang['new_count'].'">'.$lang['new_count'].'</a>';

5 - Toujours dans index.php aux environ de la ligne 270 (apres break;), rajouter le paragraphe

case 'new_count':
    require_once ('include/inc_header.php');
    $nav = '<p>'.$lang['location'].' '.display_nav($p, $UploadDir).' > '.$lang['new_count']."</p><br />\n";
    echo ($nav);
    echo "<p class='title'>$lang[new_count]</p>";
    echo "<div class='main_download'>";
    if ($warning)
    echo('<p class="warning">'.$warning.'</p><br />');
    $html = $lang['access_denied'];
    if (isset($_SESSION['session_key'])) {
        $hash_key = $_SESSION['session_key'];
        // Make sure user is admin.
        $q0 = $db->query('SELECT dir, is_admin FROM cgd_access WHERE hash = \'' . addslashes($hash_key) . '\'');
        if ($db->num_rows($q0) == 1) {
            $var = $db->assoc($q0);
            if ($var['is_admin'] == 1 || $var['is_admin'] == 2 || $var['is_admin'] == 6) {
                $p = check_root_dir($var['dir'], $p);

    $dir = opendir($UploadDir);
    $i=0;
    while ($fichier = readdir($dir)) {
           if(is_file($UploadDir.$fichier)) {

            if(!file_exists("compteur/$fichier.txt")) {
            echo "<p class='fieldheader'>Fichier $fichier.txt manquant. => ";
            touch("./compteur/$fichier.txt");
            echo "Fichier $fichier.txt créé</p>";
            $i = $i+1;
            }
           }
    }
                    if ($i == '0'){
                    echo "<p class='fieldheader' align='center'>Tous les compteurs existent déjà</p>";
                }
            }
        }
    }
    echo "</div>";
    require_once ('include/inc_footer.php');
    exit();
    break;

6 - Toujours dans ce meme fichier, apres le paragraphe

    // ... and finally the files.
    while ($file = array_pop ($theArray['file']['name'])) {
        $filesize = array_pop ($theArray['file']['size']);
        $filedate = array_pop ($theArray['file']['date']);

        if ($filedate) {

rajouter

    // Modification de l'icone du fichier à telecharger
                $extension=strrchr($file,'.');
                $extension = str_replace('.','',$extension);
                if(!file_exists("images/$extension.gif")) {
                $extension = 'inconnu';
                }

7 - Apres la ligne
$modif_date = $lang['modification_date'].strftime("{$lang['date_format']} {$lang['at']} %H:%M:%S", $filedate);

Remplacer la ligne

$html .= '<a class="nb" href="?p='.urlencode($p.$file).'"><img alt="[DOWNLOAD]" src="images/dl_icon.gif" /></a>';
par
$html .= '<a class="nb" href="?p='.urlencode($p.$file).'"><img alt="[DOWNLOAD]" src="images/'.$extension.'.gif" /></a>';

8 - Apres le paragraphe
            // Display file size
            $html .= '<span class="pad">['.round($filesize, 1).$units[$i].']</span>';

rajouter


                        // Display downloads
                        $fp = fopen ("./compteur/$file.txt", "r");
                        $nb = fgets ($fp, 255);
                        fclose ($fp);
                        if ($nb < '2'){
                        $tel="download";
                        }else{
                        $tel="downloads";
                        }
                        $html .= "<span class='pad'>&nbsp;[$nb $tel]</span>";

Dans le répertoire images existant, vous n'avez plus qu'a y mettre des petites images doc.gif, pdf.gif, zip.gif etc etc... sans oublier inconnu.gif au cas ou vous n'auriez pas l'icone correspondant au type de fichier.

Connectez vous en tant qu'Administrateur et cliquez sur le lien Créer les compteurs. Il sera créé un fichier .txt correspondant à chaque fichier que vous aurez en téléchargement.
Mettez tous ces fichiers avec les droits 666 s'ils ne le sont pas deja et faites un test..
Je n'ai pas trouvé de problème en ce qui me concerne.