Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Logo aléatoires (1.3)

Poster un nouveau sujet Répondre au sujet

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

Inscrit le : 02 Nov 2003
Messages : 1101
Localisation : Strasbourg
MessagePosté le : 21 Juil 2005 16:24
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és lors d'un remplacement peuvent être fixées individuellement.

Auteur : Darathor (darathor@free.fr)
Version : 1.3 (21/07/2005)
Compatibilité phpBB : 2.0.17

Changements :
1.1 (16/05/2005) : Correction d'une erreur dans la liste des répertoires où uploader les fichiers.
1.2 (14/07/2005) :
- Correction de la première requête (créant la table phpbb_logos) qui n'était pas propre. Néanmoins si vous avez déjà installé le mod sur une version précédente et qu'il fonctionne, inutile de remplacer cette table.
- Correction d'une erreur dans le fichier subsilver/admin/board_config_body.tpl qui fait que les changements de l'intervalle de renouvellement des logos n'était pas pris en compte et restait toujours à 120 minutes.
- Refonte de la grosse portion de code ajoutée dans include/page_header.php, pour optimiser le code.
1.3 (21/07/2005) : Correction d'un bug apparu depuis la version précédente qui causait une erreur dans le cas à aucun logo n'était défini (y compris à l'installation, ce qui est assez gênant).


Requêtes SQL :
Code :
CREATE TABLE `phpbb_logos` (
  `logo_id` int(10) unsigned NOT NULL auto_increment,
  `adresse` varchar(100) default NULL,
  `proba` float unsigned default '0',
  `selected` tinyint(3) unsigned NOT NULL default '0',
  `date_select` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`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
$intervalle = intval($board_config['LoAl_Intervalle_logos']) * 60;

// Récupération du logo actuel.
$sql = "SELECT * 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, on le conserve.
$timeNow = time();
if(($logoCaracs = $db->sql_fetchrow($result)) && (($logoCaracs['date_select'] + $intervalle) > $timeNow))
{
   $logoIMG = $logoCaracs['adresse'];
}
// Sinon, on cherch un remplaçant.
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, 'Tous les logos on une probabilité nulle', '', __LINE__, __FILE__, $sql);
   }
      
   // Récuération des caracs des logos.
   $sql = "SELECT * 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);
   }
   
   // Recherche du bon logo.
   $cur = 1;
   $logoId = 0;
   $logoSelect = rand(1,$rowProba['total']); // Calcul au hasard entre 1 et le total des probas.
   while(($cur <= $logoSelect) && ($rowLogo = $db->sql_fetchrow($result)))
   {
      $cur += $rowLogo['proba'];
      $logoIMG = $rowLogo['adresse'];
      $logoId = $rowLogo['logo_id'];
   }   
   
   // On ne met à jour le logo selectionné que si l'intervalle est positif.
   if($intervalle > 0)
   {      
      // 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 logos information', '', __LINE__, __FILE__, $sql);
      }
            
      // Marquage du nouveau logo dans la base.
      $sql = "UPDATE " . LOGOS_TABLE . "
         SET selected = 1, date_select = $timeNow
         WHERE logo_id = $logoId";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, 'Could not update logos information', '', __LINE__, __FILE__, $sql);
      }
   }
}
// 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="LoAl_Intervalle_logos" 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
  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