Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Logos aléatoires (1.1 | 16/05/2005)

Ce forum est verrouillé, vous ne pouvez pas poster, ni répondre, ni éditer les sujets. Ce sujet est verrouillé, vous ne pouvez pas éditer les messages ou faire de réponses.

Rechercher dans ce sujet :
Messages
Darathor Sexe : Masculin
Site Admin
Membre

Inscrit le : 02 Nov 2003
Messages : 1101
Localisation : Strasbourg
MessagePosté le : 08 Mai 2005 14:47
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Citation :
But : Permet d'établir un roulement entre plusieurs logos définis dans le panneau d'administration. Le roulement se fait selon un intervalle de temps également défini dans le panneau d'aministation. Les chances qu'ont chaque logo d'être sélectionné lors d'un remplacement peuvent être fixées individuellement.

Auteur : Darathor (darathor@free.fr)
Version : 1.1 (16/05/2005)
Compatibilité phpBB : 2.0.15

Changements :
1.1 (16/05/2005) : Correction d'une erreur dans la liste des répertoires où uploader les fichiers.


Requêtes SQL :
Code :
CREATE TABLE `phpbb_logos` (
`logo_id` INT UNSIGNED DEFAULT '0' AUTO_INCREMENT,
`adresse` VARCHAR(100),
`proba` FLOAT UNSIGNED DEFAULT '0',
`selected` TINYINT UNSIGNED DEFAULT '0' NOT NULL,
`date_select` INT UNSIGNED NOT NULL,
INDEX (`logo_id`),
UNIQUE (`logo_id`)
);

INSERT INTO `phpbb_config` ( `config_name` , `config_value` )
VALUES ( 'LoAl_Intervalle_logos', '120' );


Dans "includes/constants.php" :
Code :
#
# Trouver
#
define('VOTE_USERS_TABLE', $table_prefix.'vote_voters');

#
# Ajouter après
#
// DEBUT MOD Logos aléatoires
define('LOGOS_TABLE', $table_prefix.'logos');
// FIN MOD Logos aléatoires


Dans "include/page_header.php" :
Code :
#
# Trouver
#
// Format Timezone. We are unable to use array_pop here, because of PHP3 compatibility

#
# Ajouter avant
#
// DEBUT MOD Logo aléatoire
// Logo par défaut si auun logo trouvé -> n'arrive normalement pas.
$logoIMG = 'templates/subSilver/images/logo_phpBB.gif';
$intervalleLogo = $board_config['LoAl_Intervalle_logos'] * 60;

// Récupération du logo actuel
$sql = "SELECT date_select, adresse FROM " . LOGOS_TABLE . "
   WHERE selected = 1";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Could not obtain logos information', '', __LINE__, __FILE__, $sql);
}

// Si un logo est sélectionne et s'il est suffisemment récent OK
$timeNow = time();
if( ($logoCaracs = $db->sql_fetchrow($result)) && (($logoCaracs['date_select'] + $intervalleLogo) > $timeNow))
{
   $logoIMG = $logoCaracs['adresse'];
}
// Sinon, le remplacer
else
{
   // Récupération du total des probas
   $sql = "SELECT sum(proba) AS total FROM " . LOGOS_TABLE;
   if( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Could not obtain logos information', '', __LINE__, __FILE__, $sql);
   }
   
   if(!($rowProba = $db->sql_fetchrow($result)))
   {
      message_die(GENERAL_ERROR, 'Aucun logo n\'a de proba', '', __LINE__, __FILE__, $sql);
   }
      
   // Calcul au hasard entre 1 et le total des probas
   $logoSelect = rand(1,$rowProba['total']);
      
   // Récuération des caracs des logos
   $sql = "SELECT logo_id, proba, adresse FROM " . LOGOS_TABLE . " ORDER BY logo_id";
   if( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Could not obtain logos information', '', __LINE__, __FILE__, $sql);
   }
   
   // Rechrche du bon logo
   $cur = 1;
   while( ($rowLogo = $db->sql_fetchrow($result)) && ($cur <= $logoSelect) )
   {
      $cur += $rowLogo['proba'];
      
      // Si on a une somme supérieure, c'est le bon logo
      if($cur > $logoSelect)
      {
         // Affectation de l'adresse
         $logoIMG = $rowLogo['adresse'];
         
         // Déselection du logo prcédent dans la base
         $sql = "UPDATE " . LOGOS_TABLE . "
            SET selected = 0, date_select = 0
            WHERE selected = 1";
         if ( !$db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql);
         }
         
         // Marquage du nouveau logo dans la base
         $newID = $rowLogo['logo_id'];
         $sql = "UPDATE " . LOGOS_TABLE . "
            SET selected = 1, date_select = $timeNow
            WHERE logo_id = $newID";
         if ( !$db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql);
         }
      }
   } // Fin while
} // Fin else
// FIN MOD Logo aléatoire

#
# Trouver
#
   'SITENAME' => $board_config['sitename'],

#
# Ajouter avant
#
   // DEBUT MOD Logo aléatoire
   'LOGO_IMG' => $logoIMG,
   // FIN MOD Logo aléatoire


Dans "overall_header.tpl" :
Code :
#
# Dans une ligne, trouver
#
<img src="templates/subSilver/images/logo_phpBB.gif" border="0" alt="{L_INDEX}" vspace="1" />

#
# Remplacer par
#
<img src="{LOGO_IMG}" border="0" alt="{L_INDEX}" vspace="1" />


Dans "language/lang_french/lang_admin.php" :
Code :
#
# Trouver
#
$lang['Restore_DB'] = 'Restaurer la base de données';

#
# Ajouter après
#
$lang['Logos'] = 'Gérer les logos';

#
# Trouver
#
//
// That's all Folks!
// -------------------------------------------------

#
# Ajouter avant
#
// FIN MOD Logo aléatoire
$lang['LoAl_title'] = 'Utilitaire d\'Edition des logos';
$lang['LoAl_desc'] = 'Depuis cette page vous pouvez ajouter, retirer et éditer des logos de la liste des logos qui pourront êtres choisis aléatoirement. Le champ proba détermine par rapport aux autres logos, leur chance d\'être choisis.';
$lang['LoAl_Intervalle_logos'] = 'Intervalle de renouvellement du logo [ minutes ]';
$lang['LoAl_Intervalle_logos_explain'] = 'Entrez ici le nombre de minutes au bout duquel un nouveau logo doit être tiré aléatoirement. Il est préférable de ne pas prendre un intervalle trop petit car le choix d\'un nouveau logo génère quatre requêtes SQL supplémentaires et impose au visiteur de recharger un nouveau logo (ce qui augmente votre consommation de bande passante et, dans le cas d\'une connexion lente, peut être désagrable pour le visiteur).';

$lang['LoAl_config'] = 'Configuration des logos';
$lang['LoAl_adresse'] = 'Adresse du logo';
$lang['LoAl_proba'] = 'Proba';
$lang['LoAl_proba_edit'] = 'Coefficient d\'apparition';
$lang['LoAl_proba_explain'] = 'Plus ce coefficient est grand, plus le logo a de chances d\'être choisi.';
$lang['LoAl_image'] = 'Image';
$lang['LoAl_add'] = 'Ajouter un nouveau logo';

$lang['LoAl_add_success'] = 'Le logo a été ajouté avec succès';
$lang['LoAl_edit_success'] = 'Le logo a été mis à jour avec succès';
$lang['LoAl_del_success'] = 'Le logo a été retiré avec succès';
$lang['LoAl_click_return_LOGOAdmin'] = 'Cliquez %sici%s pour revenir à l\'Administration des logos';
// FIN MOD Logo aléatoire


Dans "admin/admin_board.php" :
Code :
#
# Trouver
#
   "L_RESET" => $lang['Reset'],

#
# Ajouter après
#
   // DEBUT MOD Logo aléatoire
   "L_INTERVALLE_LOGOS" => $lang['LoAl_Intervalle_logos'],
   "L_INTERVALLE_LOGOS_EXPLAIN" => $lang['LoAl_Intervalle_logos_explain'],
   // FIN MOD Logo aléatoire

#
# Trouver
#
   "COPPA_MAIL" => $new['coppa_mail'],

#
# Ajouter après
#
   // DEBUT MOD Logo aléatoire
   "INTERVALLE_LOGOS" => $new['LoAl_Intervalle_logos'],
   // FIN MOD Logo aléatoire


Dans "subsilver/admin/board_config_body.tpl" :
Code :
#
# Trouver
#
   <tr>
      <td class="row1">{L_FLOOD_INTERVAL} <br /><span class="gensmall">{L_FLOOD_INTERVAL_EXPLAIN}</span></td>
      <td class="row2"><input class="post" type="text" size="3" maxlength="4" name="flood_interval" value="{FLOOD_INTERVAL}" /></td>
   </tr>

#
# Ajouter avant
#
   <!-- DEBUT MOD Logo aléatoire -->
   <tr>
      <td class="row1">{L_INTERVALLE_LOGOS} <br /><span class="gensmall">{L_INTERVALLE_LOGOS_EXPLAIN}</span></td>
      <td class="row2"><input class="post" type="text" size="5" maxlength="5" name="flood_interval" value="{INTERVALLE_LOGOS}" /></td>
   </tr>
   <!-- FIN MOD Logo aléatoire -->


Uploader aux emplacement suivants les fichiers contenus dans ce zip :
- admin/admin_logos.php
- template/subsilver/admin/logo_edit_body.tpl
- template/subsilver/admin/logo_list_body.tpl
Revenir en haut Aller en bas
Hors ligne | Profil | MP | E-mail | Site web
Dernière édition par Darathor le 16 Mai 2005 12:09; édité 2 fois
  Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum