[MOD/HACK] Gérer les titres, pour les uploaders [MOD/HACK] Gérer les titres, pour les uploaders
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

[MOD/HACK] Gérer les titres, pour les uploaders

Started by Totoro, January 14, 2005, 03:44:00 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Totoro

Bonjour à tous !

Je poste ici mon 1er mod de Coppermine car je ne peux pas créer de topic dans la section "mods" ... Donc les frenchies en auront la primeur.
Si vous jugez le script interessant vous pouvez le diffuser dans la section "mods".

Ce minimod ajoute la fonctionalité de gestion de titres pour les utilisateurs qui peuvent uploader des images dans leur galerie perso. Ce mod est basé sur les Admin Tools disponibles aux admins (tuil.php). La gestion des titres consiste en la possibilité de renommer les titres en fonction des noms de fichiers, ou d'effacer les titres, le tout sur ses propres albums preso, bien entendu.

Voilà ce qu'il y a à faire (5 minutes, pas plus):

Dans Themes\YourTheme\theme.php (ici thème : basic)

On va d'abord ajouter un lien vers notre nouvel utilitaire.
Trouver
// HTML template for user admin menu
$template_user_admin_menu = <<<EOT

               <div align="center">
               <table cellpadding="0" cellspacing="1">
                       <tr>
                               <td class="admin_menu"><a href="albmgr.php" title="">{ALBMGR_LNK}</a></td>
                               <td class="admin_menu"><a href="modifyalb.php" title="">{MODIFYALB_LNK}</a></td>
                               <td class="admin_menu"><a href="profile.php?op=edit_profile" title="">{MY_PROF_LNK}</a></td>
                       </tr>
               </table>
               </div>

EOT;


et Remplacer par :
// HTML template for user admin menu
$template_user_admin_menu = <<<EOT

               <div align="center">
               <table cellpadding="0" cellspacing="1">
                       <tr>
                               <td class="admin_menu"><a href="albmgr.php" title="">{ALBMGR_LNK}</a></td>
                               <td class="admin_menu"><a href="modifyalb.php" title="">{MODIFYALB_LNK}</a></td>
                               <td class="admin_menu"><a href="profile.php?op=edit_profile" title="">{MY_PROF_LNK}</a></td>
                               <td class="admin_menu"><a href="util2.php" title="">{UTIL2_LNK}</a></td>
                       </tr>
               </table>
               </div>

EOT;


ensuite, on va définir l'emplacement de la traduction de ce lien

trouver

       $html = template_eval($template_gallery_admin_menu, $param);
   } elseif (USER_ADMIN_MODE) {
       $param = array('{ALBMGR_LNK}' => $lang_user_admin_menu['albmgr_lnk'],
           '{MODIFYALB_LNK}' => $lang_user_admin_menu['modifyalb_lnk'],
           '{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
           );


et remplacer par

       $html = template_eval($template_gallery_admin_menu, $param);
   } elseif (USER_ADMIN_MODE) {
       $param = array('{ALBMGR_LNK}' => $lang_user_admin_menu['albmgr_lnk'],
           '{MODIFYALB_LNK}' => $lang_user_admin_menu['modifyalb_lnk'],
           '{MY_PROF_LNK}' => $lang_user_admin_menu['my_prof_lnk'],
           '{UTIL2_LNK}' => $lang_user_admin_menu['util2_lnk'],
           );


Maintenant, nous allons créer la traduction du lien

Dans lang/french.php

trouver :


// ------------------------------------------------------------------------- //
// File util.php
// ------------------------------------------------------------------------- //

if (defined('UTIL_PHP')) $lang_util_php = array(
 'title' => 'Redimensionner les photos',
 'what_it_does' => 'Fonctionnalités',
 'what_update_titles' => 'Met à jour les titres à partir des noms de fichier',
 'what_delete_title' => 'Supprime les titres',
 'what_rebuild' => 'Regénère les vignettes et les photos redimensionnées',
 'what_delete_originals' => 'Supprime les photos originales et les remplace par leur version redimensionnée',
 'file' => 'Fichier',
 'title_set_to' => 'titre changé en',
 'submit_form' => 'valider',
 'updated_succesfully' => 'modifié avec succès',
 'error_create' => 'ERREUR lors de la création',
 'continue' => 'Continuer avec plus d\'images',
 'main_success' => 'Le fichier %s est maintenant utilisé comme image principale',
 'error_rename' => 'Erreur lors du changement du nom de %s à %s',
 'error_not_found' => 'Le fichier %s n\'a pas été trouvé',
 'back' => 'retour à la page principale',
 'thumbs_wait' => 'Mise à jour des vignettes et/ou images redimensionnées, merci de patienter...',
 'thumbs_continue_wait' => 'Continuer la mise à jour des vignettes et/ou des images redimensionnées...',
 'titles_wait' => 'Mise à jour des titres, merci de patienter...',
 'delete_wait' => 'Suppression des titres, merci de patienter...',
 'replace_wait' => 'Suppression des originaux et remplacement de ces derniers par les images redimensionnées, merci de patienter...',
 'instruction' => 'Instructions rapides',
 'instruction_action' => 'Selectionnez une action',
 'instruction_parameter' => 'Définissez les paramètres',
 'instruction_album' => 'Sélectionnez un album',
 'instruction_press' => 'Appuyez sur %s',
 'update' => 'Mettre à jour les vignettes et/ou les photos redimensionnées',
 'update_what' => 'Ce qui doit être mis à jour',
 'update_thumb' => 'Seulement les vignettes',
 'update_pic' => 'Seulement les photos redimensionnées',
 'update_both' => 'Les vignettes et les images redimensionnées',
 'update_number' => 'Nombre d\'images traitées par clic',
 'update_option' => '(essayez de réduire cette valeur si vous avez des problèmes de timeout)',
 'filename_title' => 'Nom du fichier / Titre de l\'image',
 'filename_how' => 'Comment le nom du fichier doit-il être modifié ?',
 'filename_remove' => 'Supprimer la fin .jpg et remplacer _ (underscore) par des espaces',
 'filename_euro' => 'Changer 2003_11_23_13_20_20.jpg en 23/11/2003 13:20',
 'filename_us' => 'Changer 2003_11_23_13_20_20.jpg en 11/23/2003 13:20',
 'filename_time' => 'Changer 2003_11_23_13_20_20.jpg en 13:20',
 'delete' => 'Supprimer le titre des photos ou les photos dans leur taille d\'origine',
 'delete_title' => 'Supprimer le titre des photos',
 'delete_original' => 'Supprimer les photos dans leur taille d\'origine',
 'delete_replace' => 'Supprime les images originales en les remplaçant par les versions redimensionnées',
 'select_album' => 'Selectionner un album',
 'delete_orphans' => 'Supprimer les commentaires orphelins (fonctionne pour tous les albums)', //cpg1.3.0
 'orphan_comment' => 'Pas de commentaire ophelin trouvé', //cpg1.3.0
 'delete' => 'Supprimer', //cpg1.3.0
 'delete_all' => 'Supprimer tout', //cpg1.3.0
 'comment' => 'Commentaire : ', //cpg1.3.0
 'nonexist' => 'Lié au fichier non existant # ', //cpg1.3.0
 'phpinfo' => 'Afficher phpinfo', //cpg1.3.0
 'update_db' => 'Mise à jour de la base de données', //cpg1.3.0
 'update_db_explanation' => 'Si vous avez remplacé des fichiers Coppermine, effectué des modifications ou upgradé à partir de versions précédentes de Coppermine, assurez-vous d\'exécuter la mise à jour de base de données une fois. Cela créera les tables et/ou valeurs de configuration nécessaires dans la base de données.', //cpg1.3.0

);
?>


et remplacer par :


// ------------------------------------------------------------------------- //
// File util.php
// ------------------------------------------------------------------------- //

if (defined('UTIL_PHP')) $lang_util_php = array(
 'title' => 'Redimensionner les photos',
 'title2' => 'Modifier les titres des photos',   //### new - Totoro mod ###
 'what_it_does' => 'Fonctionnalités',
 'what_update_titles' => 'Met à jour les titres à partir des noms de fichier',
 'what_delete_title' => 'Supprime les titres',
 'what_rebuild' => 'Regénère les vignettes et les photos redimensionnées',
 'what_delete_originals' => 'Supprime les photos originales et les remplace par leur version redimensionnée',
 'file' => 'Fichier',
 'title_set_to' => 'titre changé en',
 'title_deleted' => 'titre effacé',           //### new - Totoro mod ###
 'submit_form' => 'valider',
 'updated_succesfully' => 'modifié avec succès',
 'error_create' => 'ERREUR lors de la création',
 'continue' => 'Continuer avec plus d\'images',
 'main_success' => 'Le fichier %s est maintenant utilisé comme image principale',
 'error_rename' => 'Erreur lors du changement du nom de %s à %s',
 'error_not_found' => 'Le fichier %s n\'a pas été trouvé',
 'back' => 'retour à la page principale',
 'thumbs_wait' => 'Mise à jour des vignettes et/ou images redimensionnées, merci de patienter...',
 'thumbs_continue_wait' => 'Continuer la mise à jour des vignettes et/ou des images redimensionnées...',
 'titles_wait' => 'Mise à jour des titres, merci de patienter...',
 'delete_wait' => 'Suppression des titres, merci de patienter...',
 'replace_wait' => 'Suppression des originaux et remplacement de ces derniers par les images redimensionnées, merci de patienter...',
 'instruction' => 'Instructions rapides',
 'instruction_action' => 'Selectionnez une action',
 'instruction_parameter' => 'Définissez les paramètres',
 'instruction_album' => 'Sélectionnez un album',
 'instruction_press' => 'Appuyez sur %s',
 'update' => 'Mettre à jour les vignettes et/ou les photos redimensionnées',
 'update_what' => 'Ce qui doit être mis à jour',
 'update_thumb' => 'Seulement les vignettes',
 'update_pic' => 'Seulement les photos redimensionnées',
 'update_both' => 'Les vignettes et les images redimensionnées',
 'update_number' => 'Nombre d\'images traitées par clic',
 'update_option' => '(essayez de réduire cette valeur si vous avez des problèmes de timeout)',
 'filename_title' => 'Changer le titre de l\'image selon le nom du fichier',
 'filename_how' => 'Comment le titre de l\'image doit-il être modifié ?',
 'filename_remove' => 'Supprimer la fin .jpg et remplacer _ (underscore) par des espaces',
 'filename_euro' => 'Changer 2003_11_23_13_20_20.jpg en 23/11/2003 13:20',
 'filename_us' => 'Changer 2003_11_23_13_20_20.jpg en 11/23/2003 13:20',
 'filename_time' => 'Changer 2003_11_23_13_20_20.jpg en 13:20',
 'delete' => 'Supprimer le titre des photos ou les photos dans leur taille d\'origine',
 'delete_title' => 'Supprimer le titre des photos',
 'delete_original' => 'Supprimer les photos dans leur taille d\'origine',
 'delete_replace' => 'Supprime les images originales en les remplaçant par les versions redimensionnées',
 'select_album' => 'Selectionner un album',
 'delete_orphans' => 'Supprimer les commentaires orphelins (fonctionne pour tous les albums)', //cpg1.3.0
 'orphan_comment' => 'Pas de commentaire ophelin trouvé', //cpg1.3.0
 'delete' => 'Supprimer', //cpg1.3.0
 'delete_all' => 'Supprimer tout', //cpg1.3.0
 'comment' => 'Commentaire : ', //cpg1.3.0
 'nonexist' => 'Lié au fichier non existant # ', //cpg1.3.0
 'phpinfo' => 'Afficher phpinfo', //cpg1.3.0
 'update_db' => 'Mise à jour de la base de données', //cpg1.3.0
 'update_db_explanation' => 'Si vous avez remplacé des fichiers Coppermine, effectué des modifications ou upgradé à partir de versions précédentes de Coppermine, assurez-vous d\'exécuter la mise à jour de base de données une fois. Cela créera les tables et/ou valeurs de configuration nécessaires dans la base de données.', //cpg1.3.0

);
?>




Totoro

(suite)

Maintenant, dernière étape : avec le bloc note, créez un fichier appelé util2.php. Copiez le code ci-dessous. Ensuite copiez le fichier à la racine de votre répertoire coppermine.


<?php
// ------------------------------------------------------------------------- //
// Coppermine Photo Gallery 1.3.2                                            //
// ------------------------------------------------------------------------- //
// Copyright (C) 2002-2004 Gregory DEMAR                                     //
// http://www.chezgreg.net/coppermine/                                       //
// ------------------------------------------------------------------------- //
// Updated by the Coppermine Dev Team                                        //
// (http://coppermine.sf.net/team/)                                          //
// see /docs/credits.html for details                                        //
// ------------------------------------------------------------------------- //
// This program 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 2 of the License, or         //
// (at your option) any later version.                                       //
// ------------------------------------------------------------------------- //
// CVS version: $Id: util.php,v 1.8 2004/08/08 22:11:17 caspershadow Exp $
// ------------------------------------------------------------------------- //

// USER CONFIGURATION
// Default number of pictures to process at a time when rebuilding thumbs or normals:
$defpicnum 45;
// END USER CONFIGURATION

define('IN_COPPERMINE'true);
define('UTIL_PHP'true);

require(
'include/init.inc.php');
require(
'include/picmgmt.inc.php');

pageheader($lang_util_php['title']);

if (!(
GALLERY_ADMIN_MODE || USER_CAN_UPLOAD_PICTURES)) {
    
cpg_die(ERROR$lang_errors['access_denied'], __FILE____LINE__);
}

//if (!(GALLERY_ADMIN_MODE || ($USER_DATA['user_group'] == 5))) {
//    cpg_die(ERROR, $lang_errors['access_denied'], __FILE__, __LINE__);
//}


global $albumtbl$picturetbl$categorytbl$usertbl$lang_util_php;
$albumtbl $CONFIG['TABLE_PREFIX'] . 'albums';
$picturetbl $CONFIG['TABLE_PREFIX'] . 'pictures';
$categorytbl $CONFIG['TABLE_PREFIX'] . 'categories';
$usertbl $CONFIG['TABLE_PREFIX'] . 'users';

// initialize vars
$startpic '';
$action "";
$action $_POST['action'];


MYSQL_CONNECT($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']) or die("can't connect to mysql server");
MYSQL_SELECT_DB($CONFIG['dbname']);

function 
my_flush()
{
    print 
str_repeat(" "4096); // force a flush
}

function 
filenametotitle($delete)
{
    
$albumid $_POST['albumid'];
    
$parsemode $_POST['parsemode'];
    global 
$picturetbl$lang_util_php;

    
$query "SELECT * FROM $picturetbl WHERE aid = '$albumid'";
    
$result MYSQL_QUERY($query);
    
$num mysql_numrows($result);

    
$i 0;
    while (
$i $num) {
        
$filename mysql_result($result$i"filename");
        
$pid mysql_result($result$i"pid");
        
// //////////////////////////////////////////
        // ADD YOUR OWN PARSEMODES HERE //
        // /////////////////////////////////////////
        
$pattern "/(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(.+)/";

        if (
$delete == '0') {
            if (
$parsemode == 0) {
                
// REMOVE .JPG AND REPLACE _ WITH [ ]
                
$filename substr($filename0, -4);
                
$newtitle str_replace("_"" "$filename);
            } else if (
$parsemode == 1) {
                
// CHANGE 2003_11_23_13_20_20.jpg TO 23/11/2003 13:20
                
$newtitle str_replace("%20"" "$filename);
                
$replacement "$5/$3/$1 $7:$9";
                
$newtitle preg_replace($pattern$replacement$filename);
            } else if (
$parsemode == 2) {
                
// CHANGE 2003_11_23_13_20_20.jpg TO 11/23/2003 13:20
                
$newtitle str_replace("%20"" "$filename);
                
$replacement "$3/$5/$1 $7:$9";
                
$newtitle preg_replace($pattern$replacement$filename);
            } else if (
$parsemode == 3) {
                
// CHANGE 2003_11_23_13_20_20.jpg TO 13:20
                
$newtitle str_replace("%20"" "$filename);
                
$replacement "$7:$9";
                
$newtitle preg_replace($pattern$replacement$filename);
            }
        } else {
            
$newtitle '';
        }

        if (
$delete == '0') {
        
print $lang_util_php['file'] . ': '.$filename.' ' $lang_util_php['title_set_to'] . ':'$newtitle.'<br />';
        
my_flush();
        } else {
        
print $lang_util_php['file'] . ': '.$filename.' ' ' - ' $lang_util_php['title_deleted'];
        
my_flush();
        }

        
$query "UPDATE $picturetbl SET title='$newtitle' WHERE pid='$pid' ";
        
MYSQL_QUERY($query);

        ++
$i;
    }
}

function 
filloptions()
{
    global 
$albumtbl$picturetbl$categorytbl$usertbl$lang_util_php;

    echo 
'<select size="1" name="albumid">';

    
$user_albums mysql_query("SELECT aid, title FROM $albumtbl WHERE category='" . (FIRST_USER_CAT USER_ID) . "' ORDER BY title");
    echo 
'<select size="1" name="albumid">';
    while (
$row mysql_fetch_array($user_albums)) {
    print 
"<option value=\"" $row["aid"] . "\">" $row["title"] . "</option>\n";
    }

    print 
'</select> (3)';
    print 
'&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="'.$lang_util_php['submit_form'].'" class="submit" /> (4)';
    print 
'</form>';
}


$phpself $_SERVER['PHP_SELF'];
// start output
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>' 
$lang_util_php['title'] . '</title>
</head>
<style type="text/css">
.labelradio { cursor : hand;}
/*.accesskey {text-decoration:underline}*/
</style>
<body>'
;

if (
$action == 'title') {
    
starttable('100%');
    print 
'<tr><td><br />';
    print 
'<div align="center"><h2>' $lang_util_php['titles_wait'] . '</h2></div><br />';

    
filenametotitle(0);

    echo 
'<br /><div align="center"><a href="' $phpself '">' $lang_util_php['back'] . '</a></div>';

} else if (
$action == 'deltit') {
    
starttable('100%');
    print 
'<tr><td><br />';
    print 
'<div align="center"><h2>' $lang_util_php['delete_wait'] . '</h2></div><br />';

    
filenametotitle(1);

    echo 
'<br /><div align="center"><a href="' $phpself '">' $lang_util_php['back'] . '</a></div>';

} else {
    
starttable('100%');

    print 
'<tr><td>';
    
starttable('100%'$lang_util_php['title2'] , 2);
    print 
'<tr><td class="tablef"><b>';
    print 
$lang_util_php['what_it_does'] . '</b>:
<ul style="margin-top:0px;margin-bottom:0px;list-style-type:square">
<li>' 
$lang_util_php['what_update_titles'] . '</li>
<li>' 
$lang_util_php['what_delete_title'] . '</li>
</ul></td>
<td class="tableb"><b>
$lang_util_php['instruction'] . '</b>:
<br />
(1) ' 
$lang_util_php['instruction_action'] . '<br />
(2) ' 
$lang_util_php['instruction_parameter'] . '<br />
(3) ' 
$lang_util_php['instruction_album'] . '<br />
(4) '
;
    
printf($lang_util_php['instruction_press'], $lang_util_php['submit_form']);
    print 
'
'
;

    print 
'</td></tr>';
    
endtable();
    print 
'<br />
<form action="' 
$phpself '" method="post">
'
;

    print 
'<br />';

    
starttable('100%''<input type="radio" name="action" checked="checked" value="title" id="title" class="nobg" /><label for="title" accesskey="F" class="labelradio">' $lang_util_php['filename_title'] . '</label> (1)');
    print 
'
<tr><td>
$lang_util_php['filename_how'] . ' (2):<br />
<input type="radio" name="parsemode" checked="checked" value="0" id="remove" class="nobg" /><label for="remove" accesskey="s" class="labelradio">' 
$lang_util_php['filename_remove'] . '</label><br />
<input type="radio" name="parsemode" value="1" id="euro" class="nobg" /><label for="euro" accesskey="e" class="labelradio">' 
$lang_util_php['filename_euro'] . '</label><br />
<input type="radio" name="parsemode" value="2" id="us" class="nobg" /><label for="us" accesskey="u" class="labelradio">' 
$lang_util_php['filename_us'] . '</label><br />
<input type="radio" name="parsemode" value="3" id="hour" class="nobg" /><label for="hour" accesskey="h" class="labelradio">' 
$lang_util_php['filename_time'] . '</label><br /><br />
</td></tr>'
;
    
endtable();

    print 
'<br />';

    
starttable('100%''<input type="radio" name="action" value="deltit" id="deltit" class="nobg" /><label for="deltit" accesskey="D" class="labelradio">' $lang_util_php['delete_title'] . '</label> (1)');
    
endtable();
    print 
'<br />';

    print 
'&nbsp;<br />';

    print 
'<h2>'.$lang_util_php['select_album'].'</h2>';

    if (
defined('UDB_INTEGRATION')) {
        
udb_util_filloptions();
    } else {
        
filloptions();
    }

}
print 
'</td></tr>';
endtable();
echo 
'Util.mod 1.4 - Created by David Alberg Holm';
pagefooter();
ob_end_flush();

?>




Et voilà ! ;)

Bon, il faut me pardonner s'il y a des bugs, car je n'y connais pratiquement rien en PHP. :)