Darathor
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