wadvise
06 Aout 2007, 16:28
06 Aout 2007, 16:28
Comme convenue ci-joint le copier coller de la page fonction.php
Merci pour ton aide
Advise
PHP (Sélectionner le code)
<?php /******************************************************************************* * * [ ./includes/functions/fonctions.php (français) ] * * -------------------------------------------------------------------------- * Commencé le : 25 juillet 2004 * Copyright : Groupe Fire Soft Board * Site Web : [url=http://www.fire-soft-board.com/]http://www.fire-soft-board.com[/url] * E-mail : [mail=support@fire-soft-board.com]support@fire-soft-board.com[/mail] * -------------------------------------------------------------------------- * Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les * termes de la Licence Publique Générale GNU publiée par la Free Software Foundation * (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails. * Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps * que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. * -------------------------------------------------------------------------- * * Dernière modification le 28 mai 2006 par Genova * Templates : 0 * *******************************************************************************/ /************************************ * Cette fonction ajoute à l'url donnée la variable SID * - Fonction inspirée de append_sid() de phpBB ************************************/ function ajout_sid($url, $html = TRUE) { global $membre, $config; if((defined('PAGE_CONNEXION') || $membre['membre_id'] != INVITE) && !strpos($url, 'sid=') && $config['session_url'] && !defined('COOKIE_SID')) { $url = ( strpos($url, '?') == FALSE ) ? $url . '?sid=' . $membre['session_sid'] : $url . (($html) ? '&' : '&') . 'sid=' . $membre['session_sid']; } return $url; } /************************************ * Cette fonction liste les dossiers et / ou les fichiers d un repertoire * $chemin :: chemin du dossier * $nom_select :: Nom du select * $valeur :: Valeur de la sélection * $type :: TRUE pour lister des fichiers, FALSE pour les dossiers ************************************/ function liste_fichier($chemin, $nom_select, $valeur, $type = FALSE) { if ($dossier = opendir($chemin)) { $fichiers .= '<select name="' . $nom_select . '" class="listing">'; while ($fichier = readdir($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'index.htm') { if (($type && is_file($chemin . $fichier)) || (!$type && is_dir($chemin . $fichier))) { $filename = ($type) ? $fichier : $fichier . '/'; $selection = ($filename == $valeur) ? 'selected="selected"' : ''; $fichiers .= '<option value="' . $filename . '" ' . $selection . '>' . $fichier . '</option>'; } } } $fichiers .= '</select>'; closedir($dossier); } return $fichiers; } /************************************ * $membre :: Données du membre * $forum_m :: Forum concerné * $moderation :: Tableau contenant les données des modérateurs des forums * $droit_forum :: Tableau contenant les différents droits possibles * $select :: Tableau contenant les autorisations souhaitées (afin d'optimiser l'algorithme) ************************************/ function droits($membre, $forum_m, $moderation, $droit_forum, $select = NULL) { global $bdd, $categorie_personne; // // On récupère le niveau de droit du membre, donné par les clés du tableau: // $categorie_personne = array('invite', 'membre', 'modo_forum', 'modo', 'modosup', 'admin'); // $droits = array(); $droits['est_modo'] = FALSE; if ( $membre['membre_aut'] == MODO ) { for ( $m = 0; $m < count($moderation); $m++ ) { if ( $moderation[$m]['membre_id'] == $membre['membre_id'] && $moderation[$m]['forum_id'] == $forum_m['forum_id'] ) { $droits['est_modo'] = TRUE; break; } } } else if ( $membre['membre_aut'] > MODO ) { $droits['est_modo'] = TRUE; } // // En fonction des permissions du forum on renvoie ce que le membre a le droit et n'a pas le droit de faire. // Dans les cas des droits d'édition et de suppresion, si le niveau est réglé sur membre // ou invité, on lui donne le droit de toucher à ses propres messages. // - Dark_Genova - // for ( $d = 0; $d < count($droit_forum); $d++ ) { if (is_array($select) && !in_array($droit_forum[$d], $select)) { continue; } if ( $membre['membre_aut'] == ADMIN ) { $droits[$droit_forum[$d]] = TRUE; } else { if (($droit_forum[$d] == 'droit_editer' || $droit_forum[$d] == 'droit_supprimer') && ($categorie_personne[$forum_m[$droit_forum[$d]]] == 'invite' || $categorie_personne[$forum_m[$droit_forum[$d]]] == 'membre') && $membre['membre_aut'] <= MODO && !$droits['est_modo']) { $droits[$droit_forum[$d]] = 0; if ( $forum_m[$droit_forum[$d]] > $membre['membre_aut'] + 1 ) { $droits['membre_' . substr($droit_forum[$d], 6)] = FALSE; } else { $droits['membre_' . substr($droit_forum[$d], 6)] = TRUE; } } else { if ( ( $forum_m[$droit_forum[$d]] == 2 && ( $droits['est_modo'] || $membre['membre_aut'] > MODO ) ) || ( $forum_m[$droit_forum[$d]] == 3 && $membre['membre_aut'] > MEMBRE ) ) { $droits[$droit_forum[$d]] = TRUE; } else if ( $forum_m[$droit_forum[$d]] == 0 || ( $forum_m[$droit_forum[$d]] == 1 && $membre['membre_aut'] >= MEMBRE && $membre['membre_id'] != INVITE ) || ( $forum_m[$droit_forum[$d]] == 4 && $membre['membre_aut'] >= MODOSUP ) ) { $droits[$droit_forum[$d]] = TRUE; } else { $droits[$droit_forum[$d]] = FALSE; } } } } return $droits; } /************************************ * Cette fonction créé une liste des pages pour certaines données. * $url :: URL de la page vers laquelle les liens redirigeront * $nb_page :: Nombre de pages totales * $get_page :: Page actuelle * $suiv_prec :: Si TRUE, affiche les liens 'suivants' et 'précédent' * $liste :: Si TRUE, affiche une liste des pages ************************************/ function pagination($url, $nb_page, $get_page, $suiv_prec = TRUE, $liste = TRUE) { global $langue; $ppage = $url . ( strstr($url, '?') ? '&' : '?' ) . 'page='; $pagination = ''; $boucle_ok = TRUE; for ( $i = 1; $i <= $nb_page; $i++ ) { if ( $nb_page < 10 ) { $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' ); } else { if ( $i <= 3 ) { $pagination .= ( $i != $get_page ) ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>, ' : '<span style="text-decoration: underline">' . $i . '</span>, '; } else if ( $i > 3 && $i < ( $nb_page - 2 ) && $boucle_ok ) { if ( $get_page > 2 && $get_page < 6 ) { $pagination .= ( $get_page == 5 ) ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, ' : ''; $pagination .= ( $get_page > 3 ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : ''; $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, '; $pagination .= '..., '; } else if ( $get_page >= 6 && $get_page <= ( $nb_page - 5 ) ) { $pagination .= '..., '; for ( $a = -1 ; $a <= 1 ; $a ++ ) { $pagination .= ( $a != 0 ) ? '<a href="' . ajout_sid($ppage . ( $get_page + $a )) . '" class="pagination">' . ( $get_page + $a ) . '</a>, ' : '<span style="text-decoration: underline">' . $get_page . '</span>, '; } $pagination .= '..., '; } else if ( $get_page > ( $nb_page - 5 ) && $get_page < ( $nb_page - 1 ) ) { $pagination .= '..., '; $pagination .= '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '" class="pagination">' . ( $get_page - 1 ) . '</a>, '; $pagination .= ( $get_page < ( $nb_page - 2 ) ) ? '<span style="text-decoration: underline">' . $get_page . '</span>, ' : ''; $pagination .= ( $get_page == ( $nb_page - 4 ) ) ? '<a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '" class="pagination">' . ( $get_page + 1 ) . '</a>, ' : ''; } else { $pagination .= '..., '; } $boucle_ok = FALSE; } else if ( $i >= ( $nb_page - 2 ) ) { $pagination .= ( $i != $get_page ? '<a href="' . ajout_sid($ppage . $i) . '" class="pagination">' . $i . '</a>' : '<span style="text-decoration: underline">' . $i . '</span>' ) . ( $i < $nb_page ? ', ' : '' ); } } } if ( $liste ) { $code_js = '<script language="javascript" type="text/javascript">function liste_pagination(value) { location.href="' . ajout_sid(str_replace('&', '&', $url)) . ( strstr($url, '?') ? '&' : '?' ) . 'page=" + value; }</script>'; $page_liste = '<select name="page" onchange="liste_pagination(this.value);" class="listing">'; for ( $i = 1; $i <= $nb_page; $i++ ) { $selection = ( $i == $get_page ) ? 'selected="selected"' : ''; $page_liste .= '<option value="' . $i . '" ' . $selection . '>' . $i . '</option>'; } $page_liste .= '</select>'; } $pagine .= ( $suiv_prec && $get_page > 1 ? '<a href="' . ajout_sid($ppage . ( $get_page - 1 )) . '"><<</a> ' : '' ); $pagine .= $langue['page'] . ': ' . $pagination; $pagine .= ( $liste ? ' ' . $page_liste : '' ); $pagine .= ( $suiv_prec && $get_page < $nb_page ? ' <a href="' . ajout_sid($ppage . ( $get_page + 1 )) . '">>></a>' : '' ); $tableau = array(); $tableau['pagination'] = '<b>' . $pagine . '</b>'; $tableau['code'] = $code_js; return $tableau; } /************************************ * Cette fonction va récupérer le tableau d'un forum à partir de son id * $forum_id :: Id du forum concerné ************************************/ function forum_tableau($forum_id) { global $compte_forum, $forum; $frm = array(); for( $a = 0; $a < $compte_forum; $a++ ) { if( $forum_id == $forum[$a]['forum_id'] ) { $frm = $forum[$a]; $frm['cle_forum'] = $a; return ($frm); } } return array(); } /************************************ * Cette fonction retourne une date à partir d'un timestamp et d'un format de date * $timestamp :: Timestamp pour la date. S'il n'est pas fourni, le timestamp actuel sera utilisé. * $format :: Format de la date. S'il n'est pas fourni, la fonction choisira automatiquement le format du * membre ou le format par défaut. ************************************/ function aff_date($timestamp, $format = '') { global $config, $langue, $membre; if( $format == '' ) { $format = ($membre['membre_date_format'] != '') ? $membre['membre_date_format'] : $config['date_format']; } $timestamp = intval($timestamp) != '' ? intval($timestamp) : time(); $date = date($format, $timestamp); $date = strtr($date, $langue['date']); return $date; } /************************************ * Cette fonction redirige vers une url * $url :: Url vers vers où rediriger ************************************/ function redir($url) { header('Location: ' . ajout_sid($url, FALSE)); exit; } /************************************ * Envoie un mail avec entête HTML en Bcc ************************************/ function envoyer_mail($titre, $message, $from, $to) { $titre = ( trim($titre) == '' ) ? 'Aucun sujet' : $titre; $message = ( trim($message) == '' ) ? 'Aucun message' : $message; $headers = 'From: ' . $from . "\r\n"; return ( ! @mail($to, stripslashes($titre), stripslashes($message), $headers) ) ? FALSE : TRUE; } /************************************ * Renvoie le niveau d'autorisation du membre sous forme de langue. ************************************/ function niveau_autorisation($membre) { global $langue; switch($membre['membre_aut']) { case MEMBRE: return ($langue['membre']); case MODO: return ($langue['modo']); case MODOSUP: return ($langue['modosup']); case ADMIN: return ($langue['admin']); default: return ($langue['invite']); } } /************************************ * Rajoute des antislashes aux \ et ' uniquement ************************************/ function simpleslashes($text) { $text = str_replace('\\', '\\\\', $text); $text = str_replace("'", "\'", $text); return ($text); } /* ** Un print_r() mieux présenté et coloré, avec respect de l'indentation. ** Utilisé pour le débugage. */ function printr($array) { static $indentation = ''; static $array_key = ''; $cst_indentation = ' '; echo $indentation . $array_key . '<b>array(</b><br />'; reset($array); while (list($k, $v) = each($array)) { if (is_array($v)) { $indentation .= $cst_indentation; $array_key = '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => '; printr($v); $indentation = substr($indentation, 0, strlen($indentation) - strlen($cst_indentation)); } else { echo $indentation . $cst_indentation . '\'<i style="color: #334499 ;">' . addslashes(htmlspecialchars($k)) . '</i>\' => \'' . addslashes(htmlspecialchars($v)) . '\',<br />'; } } echo $indentation . '<b>)</b>' . (($indentation === '') ? ';' : ',') . '<br />'; } /* ** Renvoie la structure du tableau passé en paramètre sous ** forme de chaîne de caractère (qui peut ainsi être écrite ** dans un fichier cache par exemple). L'indentation et la mise ** en forme du code via des espaces et des \n est prise en ** compte. ** ----- ** $array :: Tableau dont la structure sera récupérée. ** $array_name :: Nom du tableau. */ if (!function_exists('var_export')) { function var_export($array, $end) { $str = "array(\n"; while (list($k, $v) = each($array)) { if (is_array($v)) { $str .= "'$k' => " . var_export($v, FALSE); } else { $str .= "'$k' => '" . simpleslashes($v) . "',\n"; } } $str .= ")" . (($end) ? '' : ',') . "\n"; return ($str); } } function get_array_code($array, $array_name) { $str = '$' . $array_name . ' = ' . var_export($array, TRUE) . ';'; return ($str); } /* ** Vérifie si une chaîne match une seconde ** ----- ** $mask :: Premièere expression qui forme le masque ** $str :: Chaîne de caractère matchant ou non la premièere expression */ function is_matching($mask, $str) { return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE); } /* ** Encode une chaîne de caractère en caractères héxadécimaux visibles par ** le navigateur, afin d'offrir une protection contre la lecture de données dans ** la source de la page (anti spam) ** ---- ** $str :: Chaîne de caractère à encoder */ function hide_str($str) { $new = ''; $len = strlen($str); for ($i = 0; $i < $len; $i++) { $new .= '&#x' . bin2hex($str{$i}) . ';'; } return ($new); } ?>
Merci pour ton aide
Advise
