/iGal/galerie.php
PHP | 8809 lines | 7143 code | 992 blank | 674 comment | 1841 complexity | 93962c4e8ff61ffaefb372980b6b391d MD5 | raw file
Possible License(s): GPL-2.0
Large files files are truncated, but you can click here to view the full file
- <?php
- /********************************************************************
- iGalerie - script de galerie d'images
- Copyright (C) 2006-2007 - http://www.igalerie.org/
- 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.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- ********************************************************************/
- error_reporting(E_ALL);
- if (@extension_loaded('zlib')
- && !@ini_get('zlib.output_compression')) {
- @ob_start('ob_gzhandler');
- }
- ignore_user_abort(TRUE);
- if (function_exists('set_time_limit')) {
- @set_time_limit(30);
- }
- // On mémorise l'heure exacte du début du script.
- global $_TIMESTART;
- $_TIMESTART = explode(' ', microtime());
- // Debug : requętes SQL.
- global $_MYSQL;
- $_MYSQL = array();
- $_MYSQL['debug'] = 0;
- $_MYSQL['mysql_requetes'] = 0;
- $_MYSQL['nb_requetes'] = 0;
- // Paramčtres de langue.
- setlocale(LC_ALL, 'fr');
- setlocale(LC_ALL, 'fr_FR');
- setlocale(LC_ALL, 'french');
- setlocale(LC_ALL, 'fr_FR.ISO8859-1');
- setlocale(LC_NUMERIC, 'en');
- setlocale(LC_NUMERIC, 'en_US');
- setlocale(LC_NUMERIC, 'english');
- setlocale(LC_NUMERIC, 'en_US.ISO8859-1');
- // On annule la fonction magic_quotes_gpc.
- function strip_magic_quotes(&$valeur) {
- if (is_array($valeur)) {
- array_walk($valeur, 'strip_magic_quotes');
- } else {
- $valeur = stripslashes($valeur);
- }
- }
- if (get_magic_quotes_gpc()) {
- array_walk($_GET, 'strip_magic_quotes');
- array_walk($_POST, 'strip_magic_quotes');
- array_walk($_COOKIE, 'strip_magic_quotes');
- array_walk($_REQUEST, 'strip_magic_quotes');
- }
- // On désactive la fonction magic_quotes_runtime
- if (get_magic_quotes_runtime() &&
- function_exists('set_magic_quotes_runtime')) {
- set_magic_quotes_runtime(0);
- }
- // On supprime tout paramčtre POST et COOKIE non existant.
- $R = array('auteur', 'courriel', 'message', 'note', 'preview', 'siteweb', 'decode_courriel',
- 'molpac', 'password', 'contact_mail', 'contact_sujet', 'contact_message', 'contact_nom', 'upload_categorie',
- 'upload_images', 's_query', 's_mode', 's_nom', 's_path', 's_desc', 's_mc', 's_com', 's_make', 's_model',
- 's_alb', 's_casse', 's_accents', 's_date', 's_date_type', 's_date_start_jour', 's_date_start_mois',
- 's_date_start_an', 's_date_end_jour', 's_date_end_mois', 's_date_end_an', 's_taille', 's_width_start',
- 's_width_end', 's_height_start', 's_height_end', 's_poids', 's_poids_start', 's_poids_end', 'sid',
- 'new_login', 'new_pass', 'new_pass_confirm', 'new_mail', 'new_mail_public', 'new_web', 'new_lieu', 'new_newsletter',
- 'ident_login', 'ident_pass', 'ident_souvenir', 'modif_profil', 'supp_avatar', 'oubli_mail', 'oubli_user',
- 'obj_type', 'obj_name', 'obj_desc');
- foreach ($_POST as $name => $value) {
- if (!in_array($name, $R)) {
- unset($_POST[$name]);
- }
- }
- $R = array('galerie_perso', 'galerie_pass', 'galerie_vote', 'galerie_membre');
- foreach ($_COOKIE as $name => $value) {
- if (!in_array($name, $R)) {
- unset($_COOKIE[$name]);
- }
- }
- // Chargement de la config.
- if (file_exists(dirname(__FILE__) . '/config/conf.php')) {
- require_once(dirname(__FILE__) . '/config/conf.php');
- }
- // La galerie est-elle installée ?
- if (!defined('GALERIE_INSTALL') || !GALERIE_INSTALL) {
- header('Location: install/');
- exit;
- }
- // Fichier d'accčs ŕ la galerie.
- $gf = basename(GALERIE_URL);
- $gf = (GALERIE_URL_TYPE == 'normal' && $gf == 'index.php') ? '' : $gf;
- define('GALERIE_FILE', $gf);
- require_once(dirname(__FILE__) . '/includes/classes/class.mysql.php');
- require_once(dirname(__FILE__) . '/includes/classes/class.cookie.php');
- require_once(dirname(__FILE__) . '/includes/classes/class.outils.php');
- // ================================================== <TYPE URL> ==================================================
- // Type d'URL 'query_string' ou 'url_rewrite'.
- if (GALERIE_URL_TYPE == 'query_string' || GALERIE_URL_TYPE == 'url_rewrite') {
- if (empty($_GET['u']) && isset($_GET['search'])) {
- $sadv = '';
- if (isset($_GET['sadv'])) {
- $sadv = '/sadv/' . $_GET['sadv'];
- }
- if (isset($_GET['img'])) {
- $sadv .= '/image/' . $_GET['img'];
- }
- if (isset($_GET['addfav'])) {
- $sadv .= '/addfav/' . $_GET['addfav'];
- }
- $qs = (GALERIE_URL_TYPE == 'query_string') ? GALERIE_FILE . '?/' : '';
- $s = preg_replace('`[\x5c#]`', '', $_GET['search']);
- if (empty($s)) {
- header('Location: ' . outils::genLink('?cat=1', '', '', 0, '&'));
- } else {
- header('Location:' . GALERIE_PATH . '/' . $qs . 'search/' . urlencode($s) . $sadv);
- }
- exit;
- }
- if (!empty($_SERVER['QUERY_STRING'])) {
- $qs = preg_replace('`(?:^|[\&\?])(..|u|mod|deconnect)=`', '/$1/', $_SERVER['QUERY_STRING']);
- convert_string_to_gets($qs);
- }
- // Type d'URL 'path_info'.
- } elseif (GALERIE_URL_TYPE == 'path_info') {
- if (empty($_GET['u']) && isset($_GET['search'])) {
- $sadv = '';
- if (isset($_GET['sadv'])) {
- $sadv = '/sadv/' . $_GET['sadv'];
- }
- if (isset($_GET['img'])) {
- $sadv .= '/image/' . $_GET['img'];
- }
- if (isset($_GET['addfav'])) {
- $sadv .= '/addfav/' . $_GET['addfav'];
- }
- $s = preg_replace('`[\x5c#]`', '', $_GET['search']);
- if (empty($s)) {
- header('Location: ' . outils::genLink('?cat=1', '', '', 0, '&'));
- } else {
- header('Location:' . GALERIE_PATH . '/' . GALERIE_FILE . '/search/' . urlencode($s) . $sadv);
- }
- exit;
- }
- if (!empty($_SERVER['PATH_INFO'])) {
- $qs = preg_replace('`(?:^|[\&\?])(..|u|mod|deconnect)=`', '/$1/', $_SERVER['PATH_INFO']);
- convert_string_to_gets($qs);
- }
- unset($_SERVER['QUERY_STRING']);
- }
- // On supprime tout paramčtre GET non existant.
- $R = array('alb', 'cat', 'commentaires', 'hits', 'ih', 'il', 'img',
- 'io', 'is', 'it', 'ra', 'rj', 'recentes', 'search',
- 'section', 'sa', 'sc', 'sd', 'sh', 'si', 'sn', 'sp',
- 'st', 'sv', 'sy', 'startnum', 'vl', 'vn', 'votes', 'u',
- 'mod', 'images', 'deconnect', 'sadv', 'date_creation',
- 'date_ajout', 'tag', 'comments', 'membres', 'mcom',
- 'mfav', 'mimg', 'addfav', 'profil', 'key', 'diapo');
- foreach ($_GET as $name => $value) {
- if (!in_array($name, $R)) {
- unset($_GET[$name]);
- }
- }
- function convert_string_to_gets($p) {
- $params = array();
- $p = preg_split('`/`', $p, -1, PREG_SPLIT_NO_EMPTY);
- for ($i = 0; $i < count($p); $i += 2) {
- if (isset($p[$i+1])) {
- $params[$p[$i]] = preg_replace('`&(?=[^/]+=).*$`', '', $p[$i+1]);
- }
- }
- $ok = false;
- foreach ($params as $type => $value) {
- switch ($type) {
- case 'images' :
- case 'recentes' :
- case 'hits' :
- case 'commentaires' :
- case 'comments' :
- case 'votes' :
- if (preg_match('`^(\d+)-.+`', $value, $m)) { $_GET[$type] = $m[1]; }
- $ok = true;
- break;
- case 'categorie' :
- if (preg_match('`^(\d+)-.+`', $value, $m)) { $_GET['cat'] = $m[1]; }
- $ok = true;
- break;
- case 'album' :
- if (preg_match('`^(\d+)-.+`', $value, $m)) { $_GET['alb'] = $m[1]; }
- $ok = true;
- break;
- case 'image' :
- if (preg_match('`^(\d+)-.+`', $value, $m)) { $_GET['img'] = $m[1]; }
- $ok = true;
- break;
- case 'startnum' :
- if (preg_match('`^(\d+)$`', $value, $m)) { $_GET['startnum'] = $m[1]; }
- break;
- case 'date_creation' :
- if (preg_match('`^\d{2}-\d{2}-\d{4}$`', $value, $m)) { $_GET['date_creation'] = $m[0]; }
- $ok = true;
- break;
- case 'date_ajout' :
- if (preg_match('`^\d{2}-\d{2}-\d{4}$`', $value, $m)) { $_GET['date_ajout'] = $m[0]; }
- $ok = true;
- break;
- case 'tag' :
- case 'search' :
- case 'section' :
- case 'membres' :
- case 'profil' :
- case 'mcom' :
- case 'mimg' :
- case 'mfav' :
- case 'addfav' :
- case 'diapo' :
- $ok = true;
- case 'sadv' :
- case 'type' :
- case 'deconnect' :
- case 'mod' :
- $_GET[$type] = urldecode($value);
- if ($type == 'tag') {
- $_GET[$type] = str_replace('_', ' ', $_GET[$type]);
- }
- break;
- default :
- unset($params[$type]);
- }
- }
- }
- // ================================================== </TYPE URL> ==================================================
- // Filtrage des paramčtres GET.
- $gets = array('img', 'alb', 'cat', 'images', 'hits', 'comments',
- 'votes', 'commentaires', 'vn', 'vl', 'it', 'il',
- 'ih', 'rj', 'u', 'startnum', 'recentes', 'mod',
- 'deconnect', 'addfav');
- for ($i = 0; $i < count($gets); $i++) {
- verif_gets($gets[$i], '`^\d{1,12}$`');
- }
- $gets = array('section', 'is', 'io', 'sa', 'sc', 'sd',
- 'sh', 'si', 'sn', 'sp', 'sv', 'sy', 'ra');
- for ($i = 0; $i < count($gets); $i++) {
- verif_gets($gets[$i], '`^[a-z\d]{1,20}$`');
- }
- $gets = array('st', 'sadv', 'mimg', 'mcom', 'mfav', 'date_ajout',
- 'date_creation', 'membres', 'profil');
- for ($i = 0; $i < count($gets); $i++) {
- verif_gets($gets[$i], '`^[a-z\d_\.-]{1,120}$`i');
- }
- function verif_gets($p, $re) {
- if (isset($_GET[$p]) && !preg_match($re, $_GET[$p])) {
- unset($_GET[$p]);
- }
- }
- // Sections : plan, aide, contact, password, historique.
- if (isset($_GET['section'])) {
- if ($_GET['section'] == 'recherche') {
- require_once(dirname(__FILE__) . '/includes/classes/class.recherche.php');
- }
- $galerie = new galerie('section');
- $galerie->section();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/section.php');
- // Images.
- } elseif (isset($_GET['img'])) {
- if (isset($_GET['search'])) {
- require_once(dirname(__FILE__) . '/includes/classes/class.recherche.php');
- }
- $galerie = new galerie('img');
- $galerie->image();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/image.php');
- // Tags.
- } elseif (isset($_GET['tag'])) {
- $galerie = new galerie('tag');
- $galerie->page_tags();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Commentaires.
- } elseif (isset($_GET['comments'])) {
- $galerie = new galerie('comments');
- $galerie->page_commentaires();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/commentaires.php');
- // Membres.
- } elseif (isset($_GET['membres'])) {
- require_once(dirname(__FILE__) . '/includes/classes/class.files.php');
- $galerie = new galerie('membres');
- $galerie->membres();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/membres.php');
- // Images membres.
- } elseif (isset($_GET['mimg'])) {
- $galerie = new galerie('mimg');
- $galerie->membres_images();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Favoris membres.
- } elseif (isset($_GET['mfav'])) {
- $galerie = new galerie('mfav');
- $galerie->membres_favoris();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Commentaires membres.
- } elseif (isset($_GET['mcom'])) {
- $galerie = new galerie('mcom');
- $galerie->membres_commentaires();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/commentaires.php');
- // Profil membres.
- } elseif (isset($_GET['profil'])) {
- $galerie = new galerie('profil');
- $galerie->membres_profil();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/membres.php');
- // Pages spéciales.
- } elseif (isset($_GET['commentaires']) ||
- isset($_GET['votes']) ||
- isset($_GET['hits']) ||
- isset($_GET['recentes']) ||
- isset($_GET['images']) ||
- isset($_GET['date_creation']) ||
- isset($_GET['date_ajout'])) {
- if (isset($_GET['commentaires'])) {
- $type = 'commentaires';
- } elseif (isset($_GET['votes'])) {
- $type = 'votes';
- } elseif (isset($_GET['hits'])) {
- $type = 'hits';
- } elseif (isset($_GET['recentes'])) {
- $type = 'recentes';
- } elseif (isset($_GET['date_creation'])) {
- $type = 'date_creation';
- } elseif (isset($_GET['date_ajout'])) {
- $type = 'date_ajout';
- } else {
- $type = 'images';
- }
- $galerie = new galerie($type);
- $galerie->speciales();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Recherche.
- } elseif (isset($_GET['search'])) {
- require_once(dirname(__FILE__) . '/includes/classes/class.recherche.php');
- $galerie = new galerie('search');
- $galerie->search();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Albums.
- } elseif (isset($_GET['alb'])) {
- $galerie = new galerie('alb');
- $galerie->album();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/album.php');
- // Categories.
- } else {
- $galerie = new galerie('cat');
- $galerie->categorie();
- require_once(dirname(__FILE__) . '/includes/prefs_template.php');
- define('IGAL_TEMPLATE', 'template/' . $galerie->config['galerie_template'] . '/categorie.php');
- }
- if (GALERIE_INTEGRATED) {
- echo "<!-- GALERIE MODE INTEGRATED -->\n";
- } else {
- echo "<!-- GALERIE MODE NORMAL -->\n";
- require_once(dirname(__FILE__) . '/' . IGAL_TEMPLATE);
- }
- /*
- * ========== class.galerie
- */
- class galerie {
- var $config; // Configuration de la galerie.
- var $params; // Paramčtres internes.
- var $choix; // Détermination des préférences selon choix admin et choix utilisateur.
- // Objets.
- var $prefs; // Préférences utilisateur.
- var $passwords; // Mots de passe.
- var $mysql; // Base de données.
- var $membre; // Identification membres.
- // Informations brutes ŕ destination des fonctions de template.
- var $template;
- /*
- * Constructeur.
- */
- function galerie($type) {
- global $_MYSQL;
- $this->params['objet_type'] = $type;
- $this->template['infos']['type'] = $type;
- switch ($type) {
- case 'alb' :
- case 'cat' :
- case 'img' :
- case 'hits' :
- case 'votes' :
- case 'commentaires' :
- case 'recentes' :
- case 'images' :
- case 'comments' :
- // Identifiant de l'objet.
- if (!empty($_GET[$type]) && preg_match('`^[1-9]\d{0,9}$`', $_GET[$type])) {
- $this->params['objet_id'] = $_GET[$type];
- } else {
- $this->params['objet_id'] = 1;
- }
- case 'search' :
- case 'date_creation' :
- case 'date_ajout' :
- case 'tag' :
- case 'mcom' :
- case 'mimg' :
- case 'mfav' :
- // Page ŕ afficher.
- if (isset($_GET['startnum']) && preg_match('`^[1-9]\d{0,9}$`', $_GET['startnum'])) {
- $this->params['startnum'] = $_GET['startnum'];
- } else {
- $this->params['startnum'] = 0;
- }
- $this->template['infos']['startnum'] = $this->params['startnum'];
- break;
- case 'section' :
- switch ($_GET['section']) {
- case 'plan' :
- case 'contact' :
- case 'tags' :
- case 'recherche' :
- case 'pass' :
- case 'historique' :
- $this->params['section'] = $_GET['section'];
- $this->template['infos']['objet'] = $_GET['section'];
- break;
- default :
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- break;
- }
- // Préférences utilisateur.
- $this->prefs = new cookie(31536000, 'galerie_perso', GALERIE_PATH);
- // Mots de passe.
- $this->passwords = new cookie(31536000, 'galerie_pass', GALERIE_PATH);
- // Connexion ŕ la base de données.
- $this->mysql = new connexion(MYSQL_SERV, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
- // Récupération des paramčtres de configuration.
- $mysql_requete = 'SELECT parametre,valeur FROM ' . MYSQL_PREF . 'config';
- $this->config = $this->mysql->select($mysql_requete, 3);
- if (empty($this->config)) {
- die ('[' . __LINE__ . '] La base de données est vide.<br />' . mysql_error());
- }
- $this->template['debug']['mysql'] = $_MYSQL['mysql_requetes'];
- $this->template['infos']['add_votes'] = true;
- $this->template['infos']['add_comments'] = true;
- $this->template['infos']['h1'] = $this->config['galerie_titre'];
- $this->template['infos']['galerie_nom'] = $this->config['galerie_titre_court'];
- $this->template['infos']['footer'] = $this->config['galerie_footer'];
- $this->template['infos']['footer_message'] = $this->config['galerie_message_footer'];
- $this->template['infos']['tb_date_format'] = $this->config['galerie_tb_date_format'];
- $this->template['infos']['im_date_format'] = $this->config['galerie_im_date_format'];
- $this->template['infos']['images_window'] = $this->config['galerie_images_window'];
- $this->template['infos']['active_commentaires'] = $this->config['active_commentaires'];
- $this->template['infos']['active_votes'] = $this->config['active_votes'];
- $this->template['infos']['prefixe_vignettes'] = THUMB_PREF;
- $this->template['infos']['image_mode_resize'] = $this->config['galerie_images_resize'];
- $this->template['infos']['advsearch'] = $this->config['active_advsearch'];
- $this->template['infos']['historique'] = $this->config['active_historique'];
- $this->template['infos']['diaporama'] = $this->config['active_diaporama'];
- $this->template['infos']['rss'] = $this->config['active_rss'];
- $this->template['infos']['tags'] = $this->config['active_tags'];
- $this->template['infos']['liens'] = $this->config['active_liens'];
- $this->template['infos']['active_exif'] = $this->config['active_exif'];
- $this->template['infos']['active_iptc'] = $this->config['active_iptc'];
- $this->template['infos']['active_page_comments'] = $this->config['galerie_page_comments'];
- $this->template['infos']['users_upload_maxsize'] = $this->config['users_upload_maxsize'];
- $this->template['infos']['users_upload_maxwidth'] = $this->config['users_upload_maxwidth'];
- $this->template['infos']['users_upload_maxheight'] = $this->config['users_upload_maxheight'];
- $this->template['display']['s_hits'] = '';
- $this->template['display']['s_comments'] = '';
- $this->template['display']['s_votes'] = '';
- $this->template['display']['s_recentes'] = '';
- $this->template['contact']['text'] = $this->config['galerie_contact_text'];
- $this->template['contact']['active'] = $this->config['galerie_contact'];
- $this->template['contact']['admin_mail'] = $this->config['admin_mail'];
- $this->config['galerie_template'] = GALERIE_THEME;
- $this->config['galerie_style'] = GALERIE_STYLE;
- $this->template['galerie_liens'] = $this->config['galerie_liens'];
- $this->template['add_style'] = $this->config['galerie_add_style'];
- $this->template['infos']['parent_nom'] = '';
- // Paramčtres template.
- include_once(dirname(__FILE__) . '/template/' . $this->config['galerie_template'] . '/_params.php');
- $this->template['infos']['membres_active'] = $this->config['users_membres_active'];
- $this->template['infos']['membres_avatar'] = $this->config['users_membres_avatars'];
- // Si les images ne sont pas affichées dans une page dédiée,
- // on procčde ŕ quelques changements.
- if ($this->config['galerie_images_window']) {
- $this->config['active_commentaires'] = 0;
- $this->config['active_votes'] = 0;
- $this->config['display_hits'] = 0;
- $this->config['user_hits'] = 0;
- if ($type == 'img') {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- }
- // La galerie est-elle désactivée ?
- if (!$this->config['active_galerie']) {
- die(nl2br(htmlentities($this->config['galerie_message_fermeture'])));
- exit;
- }
- $this->membres_connexion();
- $this->image_hasard();
- // Choix utilisateurs : style.
- $this->choix['style'] = $this->config['galerie_style'];
- if ($this->config['user_perso'] && $this->config['user_style']) {
- $valeur_st = $this->prefs->lire('st');
- if ($valeur_st !== FALSE) {
- $this->choix['style'] = $valeur_st;
- }
- if (!empty($_GET['st']) && preg_match('`^[a-z\d_-]{1,40}$`', $_GET['st'])) {
- $this->prefs->ajouter('st', $_GET['st']);
- $this->choix['style'] = $_GET['st'];
- }
- // Récupération des styles du template.
- $i = 0;
- $style_rep = './template/' . $this->config['galerie_template'] . '/style/';
- if ($rep = opendir($style_rep)) {
- while ($ent = readdir($rep)) {
- if (is_dir($style_rep . $ent) && !preg_match('`^\.{1,2}$`', $ent)) {
- if (preg_match('`^[-a-z0-9_]+$`', $ent)) {
- $this->template['user']['styles'][$i] = $ent;
- $i++;
- }
- }
- }
- closedir($rep);
- }
- if ($i === 1) {
- $this->config['user_style'] = 0;
- }
- }
- $this->template['infos']['style_relative'] = 'template/' . $this->config['galerie_template'] . '/style/' . $this->choix['style'] . '/';
- $this->template['infos']['style'] = GALERIE_PATH . '/template/' . $this->config['galerie_template'] . '/style/' . $this->choix['style'] . '/' . $this->choix['style'] . '.css';
- $this->template['display']['style'] = $this->choix['style'];
- // Filtrage IP.
- if ((function_exists('filter_var') && !filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP))
- || !preg_match('`^' . outils::http_url('IP') . '$`', $_SERVER['REMOTE_ADDR'])) {
- $_SERVER['REMOTE_ADDR'] = 'inconnu';
- }
- }
- /*
- * Membres : connexion/deconnexion/identification.
- */
- function membres_connexion() {
- $this->template['infos']['membres_connexion'] = true;
- if (!$this->config['users_membres_active']) {
- if (isset($_GET['membres'])) {
- unset($_GET['membres']);
- }
- return;
- }
- // Droits au minium par défaut.
- $this->template['infos']['add_votes'] = false;
- $this->template['infos']['add_comments'] = false;
- $this->template['infos']['advsearch'] = false;
- $this->config['active_advsearch'] = false;
- $this->config['user_perso'] = false;
- $this->membre = new cookie(31536000, 'galerie_membre', GALERIE_PATH);
- $session_ok = false;
- // Déconnexion.
- if (isset($_GET['membres']) && $_GET['membres'] == 'deconnect') {
- $this->membre->expire = time();
- $this->membre->ajouter('sid', -1);
- $this->membre->ecrire();
- header('Location:' . outils::genLink('?cat=1'));
- exit;
- }
- // Connexion.
- $this->template['membre_user'] = array();
- if (!empty($_POST['ident_login']) && !empty($_POST['ident_pass'])) {
- sleep(1);
- $this->template['membres']['erreur_identification'] = 1;
- if (preg_match('`^[@éčëęŕäâáĺăďîěíöôňóőůűüú˙ýçńa-z\s\d&,;/%.:_#\(\)Ťť<>!?-]{6,250}$`i', $_POST['ident_pass'])) {
- if (preg_match('`^[-_a-z\d]{3,30}$`i', $_POST['ident_login'])) {
- $mysql_requete = 'SELECT ' . MYSQL_PREF . 'users.user_id,
- ' . MYSQL_PREF . 'users.user_login,
- ' . MYSQL_PREF . 'users.user_oubli,
- ' . MYSQL_PREF . 'users.user_lieu,
- ' . MYSQL_PREF . 'users.user_avatar,
- ' . MYSQL_PREF . 'users.user_date_derniere_visite,
- ' . MYSQL_PREF . 'users.user_date_dernier_upload,
- ' . MYSQL_PREF . 'groupes.*
- FROM ' . MYSQL_PREF . 'users JOIN ' . MYSQL_PREF . 'groupes USING (groupe_id)
- WHERE ' . MYSQL_PREF . 'users.user_pass = "' . outils::protege_mysql(md5($_POST['ident_pass']), $this->mysql->lien) . '"
- AND ' . MYSQL_PREF . 'users.user_login = "' . outils::protege_mysql($_POST['ident_login'], $this->mysql->lien) . '"
- LIMIT 1';
- $this->template['membre_user'] = $this->mysql->select($mysql_requete);
- if (is_array($this->template['membre_user'])) {
- $this->template['membres']['erreur_identification'] = 0;
- $session_id = outils::gen_key();
- $this->template['membre_user'][0]['user_session_id'] = $session_id;
- $mysql_requete = 'UPDATE ' . MYSQL_PREF . 'users
- SET user_session_id = "' . $session_id . '"
- WHERE user_id = "' . $this->template['membre_user'][0]['user_id'] . '"';
- $this->mysql->requete($mysql_requete);
- $this->membre->expire = (isset($_POST['ident_souvenir'])) ? time() + (31536000*5) : 0;
- $this->membre->ajouter('sid', $session_id);
- $this->membre->ecrire();
- $session_ok = true;
- }
- }
- }
- }
- // Identification.
- if (!$session_ok && ($sid = $this->membre->lire('sid')) !== false) {
- if (preg_match('`^[a-z\d]{20}$`i', $sid)) {
- $mysql_requete = 'SELECT ' . MYSQL_PREF . 'users.user_id,
- ' . MYSQL_PREF . 'users.user_login,
- ' . MYSQL_PREF . 'users.user_mail,
- ' . MYSQL_PREF . 'users.user_oubli,
- ' . MYSQL_PREF . 'users.user_web,
- ' . MYSQL_PREF . 'users.user_lieu,
- ' . MYSQL_PREF . 'users.user_avatar,
- ' . MYSQL_PREF . 'users.user_date_creation,
- ' . MYSQL_PREF . 'users.user_date_derniere_visite,
- ' . MYSQL_PREF . 'users.user_date_dernier_upload,
- ' . MYSQL_PREF . 'users.user_session_id,
- ' . MYSQL_PREF . 'groupes.*
- FROM ' . MYSQL_PREF . 'users JOIN ' . MYSQL_PREF . 'groupes USING (groupe_id)
- WHERE ' . MYSQL_PREF . 'users.user_session_id = "' . outils::protege_mysql($sid, $this->mysql->lien) . '"';
- $this->template['membre_user'] = $this->mysql->select($mysql_requete);
- if (is_array($this->template['membre_user'])) {
- $session_ok = true;
- }
- }
- }
- if ($session_ok) {
- $this->template['infos']['membres_connexion'] = false;
- $update = '';
- // Date de derničre visite.
- if (date('zy') != date('zy', $this->template['membre_user'][0]['user_date_derniere_visite'])) {
- $update = ', user_date_derniere_visite = "' . time() . '",
- user_ip_derniere_visite = "' . $_SERVER['REMOTE_ADDR'] . '"';
- }
- // Champ oubli de mot de passe.
- if (!empty($this->template['membre_user'][0]['user_oubli'])) {
- $update = ', user_oubli = NULL';
- }
- if ($update) {
- $mysql_requete = 'UPDATE ' . MYSQL_PREF . 'users
- SET ' . substr($update, 1) . '
- WHERE user_id = "' . $this->template['membre_user'][0]['user_id'] . '"';
- $this->mysql->requete($mysql_requete);
- }
- } else {
- $this->template['infos']['membres_connexion'] = true;
- // Droits 'invité'.
- $mysql_requete = 'SELECT *
- FROM ' . MYSQL_PREF . 'groupes
- WHERE groupe_id = "2"';
- $this->template['membre_user'] = $this->mysql->select($mysql_requete);
- }
- if (isset($this->template['membre_user'][0]['user_login'])) {
- $this->template['membre_user'][0]['user_nom'] = str_replace('_', ' ', $this->template['membre_user'][0]['user_login']);
- }
- // Droits.
- if (!empty($this->template['membre_user'][0]['groupe_votes'])) {
- $this->template['infos']['add_votes'] = true;
- }
- if (!empty($this->template['membre_user'][0]['groupe_commentaires'])) {
- $this->template['infos']['add_comments'] = true;
- }
- if (!empty($this->template['membre_user'][0]['groupe_recherche_avance'])) {
- $this->template['infos']['advsearch'] = true;
- $this->config['active_advsearch'] = true;
- }
- if (!empty($this->template['membre_user'][0]['groupe_perso'])) {
- $this->config['user_perso'] = true;
- }
- if (!empty($this->template['membre_user'][0]['groupe_newsletter'])) {
- $this->template['infos']['user_newsletter'] = true;
- }
- // Admin.
- if (!empty($this->template['membre_user'][0]['user_id'])
- && $this->template['membre_user'][0]['user_id'] == 1) {
- $this->template['infos']['user_newsletter'] = false;
- $this->template['infos']['membres_noadmin'] = false;
- } else {
- $this->template['infos']['membres_noadmin'] = true;
- }
- }
- /*
- * Une image prise au hasard.
- */
- function image_hasard() {
- if ($this->config['galerie_image_hasard']) {
- // On récupčre les informations de l'image aléatoire ŕ afficher.
- $mysql_requete = 'SELECT ' . MYSQL_PREF . 'images.image_id,
- ' . MYSQL_PREF . 'images.image_nom,
- ' . MYSQL_PREF . 'images.image_chemin,
- ' . MYSQL_PREF . 'images.image_largeur,
- ' . MYSQL_PREF . 'images.image_hauteur,
- ' . MYSQL_PREF . 'categories.categorie_id AS album_id,
- ' . MYSQL_PREF . 'categories.categorie_nom AS album_nom
- FROM ' . MYSQL_PREF . 'images,
- ' . MYSQL_PREF . 'categories
- WHERE ' . MYSQL_PREF . 'images.image_visible = "1"
- AND ' . MYSQL_PREF . 'images.categorie_parent_id = ' . MYSQL_PREF . 'categories.categorie_id'
- . $this->images_protect(MYSQL_PREF . 'images.image') . '
- ORDER BY RAND()
- LIMIT 1';
- $image_hasard = $this->mysql->select($mysql_requete);
- if (!is_array($image_hasard)) {
- return;
- }
- $file = $image_hasard[0]['image_chemin'];
- $thumb = GALERIE_PATH . '/getimg.php?img=' . $file;
- $this->template['image_hasard']['thumb'] = $thumb;
- $this->template['image_hasard']['nom'] = $image_hasard[0]['image_nom'];
- $this->template['image_hasard']['album_nom'] = $image_hasard[0]['album_nom'];
- $this->template['image_hasard']['album_id'] = $image_hasard[0]['album_id'];
- // Méthode d'affichage de l'image.
- $image_text = (IMG_TEXTE) ? 'getitext.php?i=' : GALERIE_ALBUMS . '/';
- switch ($this->config['galerie_images_window']) {
- case 0 :
- $this->template['image_hasard']['lien'] = outils::genLink('?img=' . $image_hasard[0]['image_id'], $image_hasard[0]['image_nom']);
- break;
- case 1 :
- $this->template['image_hasard']['lien'] = GALERIE_PATH . '/' . $image_text . $image_hasard[0]['image_chemin'];
- break;
- case 2 :
- $largeur = $image_hasard[0]['image_largeur'] + 40;
- $hauteur = $image_hasard[0]['image_hauteur'] + 30;
- $this->template['image_hasard']['lien'] = "javascript:window.open('"
- . GALERIE_PATH . '/' . $image_text . $image_hasard[0]['image_chemin']
- . "','','scrollbars=yes,status=no,resizable=yes,width="
- . $largeur
- . ",height="
- . $hauteur
- . ",top=0,left=0');void(0);";
- break;
- }
- }
- }
- /*
- * Categories.
- */
- function categorie() {
- // Nombre de vignettes par page.
- $this->choix['vn'] = $this->config['vignettes_cat_line'];
- $this->choix['vl'] = $this->config['vignettes_cat_col'];
- $this->params['limit_vignettes'] = $this->choix['vn'] * $this->choix['vl'];
- $this->template['infos']['nb_vignettes'] = $this->params['limit_vignettes'];
- $this->template['infos']['vignettes_col'] = $this->choix['vn'];
- $this->template['infos']['vignettes_line'] = $this->choix['vl'];
- $this->infos_categorie();
- $this->deconnect();
- // La catégorie est-elle protégée par un mot de passe ?
- if (!empty($this->params['objet_actuel']['categorie_pass'])) {
- $this->template['infos']['pass'] = 1;
- // Membres : droits d'accčs.
- if (isset($this->template['membre_user'][0]['groupe_album_pass_mode'])) {
- $verif_pass = false;
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] != 'aucun') {
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] == 'tous') {
- $verif_pass = true;
- } else {
- $passwords = unserialize($this->template['membre_user'][0]['groupe_album_pass']);
- if (in_array($this->params['objet_actuel']['categorie_pass'], $passwords)) {
- $verif_pass = true;
- }
- }
- }
- if (!$verif_pass) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- // L'utilisateur a-t-il entré le bon mot de passe ?
- } else {
- $pass = preg_replace('`^(\d+):.+`', '$1', $this->params['objet_actuel']['categorie_pass']);
- $categorie_pass = $this->passwords->lire($pass);
- if (!$categorie_pass || outils::decrypte($categorie_pass, $this->config['galerie_key']) !== $this->params['objet_actuel']['categorie_pass']) {
- $l = outils::genLink('?section=pass&cat=' . $this->params['objet_actuel']['categorie_id'], '', $this->params['objet_actuel']['categorie_nom'], 0, '&');
- header('Location: ' . $l);
- exit;
- }
- }
- }
- // Récupération des objets contenus dans la catégorie actuelle.
- $actuel = $this->params['objet_actuel']['categorie_chemin'];
- $actuel = ($actuel == '.') ? '' : $actuel;
- if (!empty($this->config['vignettes_cat_type'])) {
- $type = ',(' . MYSQL_PREF . 'categories.categorie_derniere_modif/' . MYSQL_PREF . 'categories.categorie_derniere_modif) AS type';
- } else {
- $type = '';
- }
- $mysql_requete = 'SELECT ' . MYSQL_PREF . 'categories.*,
- ' . MYSQL_PREF . 'images.image_chemin AS representant
- ' . $type . '
- FROM ' . MYSQL_PREF . 'categories,' . MYSQL_PREF . 'images
- WHERE ' . MYSQL_PREF . 'categories.categorie_visible = "1"
- AND ' . MYSQL_PREF . 'categories.categorie_chemin REGEXP "^' . $actuel . '[^/]+/$"
- AND ' . MYSQL_PREF . 'categories.image_representant_id = ' . MYSQL_PREF . 'images.image_id'
- . $this->users_pass('categories.categorie_pass') . '
- ORDER BY ' . $this->config['vignettes_cat_type'] . str_replace('categorie', MYSQL_PREF . 'categories.categorie', $this->config['vignettes_cat_ordre']) . '
- LIMIT ' . $this->params['startnum'] . ',' . $this->params['limit_vignettes'];
- $this->params['objets'] = $this->mysql->select($mysql_requete);
- if (empty($this->params['objets'])) {
- die ('[' . __LINE__ . '] La base de données est vide.<br />' . mysql_error());
- exit;
- }
- // On récupčre le nombre d'albums et de catégories totales
- // contenues dans la catégorie actuelle.
- $mysql_requete = 'SELECT categorie_derniere_modif FROM ' . MYSQL_PREF . 'categories
- WHERE categorie_visible = "1" AND
- categorie_chemin REGEXP "^' . $actuel . '[^/]+/$"'
- . $this->users_pass('categories.categorie_pass');
- $objets = $this->mysql->select($mysql_requete);
- $this->template['stats']['nb_albums'] = 0;
- $this->template['stats']['nb_categories'] = 0;
- $this->params['nb_objets'] = 0;
- if (is_array($objets)) {
- $this->params['nb_objets'] = count($objets);
- for ($i = 0; $i < count($objets); $i++) {
- if (empty($objets[$i][0])) {
- $this->template['stats']['nb_categories']++;
- } else {
- $this->template['stats']['nb_albums']++;
- }
- }
- }
- // La categorie est-elle un album ?
- if ($this->params['objet_actuel']['categorie_derniere_modif'] > 0) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- $this->nouvelles_images();
- $this->stats_categorie();
- $this->hierarchie();
- $this->cat_voisines();
- $this->infos_vignettes();
- // On génčre le tableau contenant toutes les infos catégories,
- // albums, images et vignettes pour le template.
- if (is_array($this->params['objets'])) {
-
- // On ne garde que le nombre de catégories en fonction du nombre de vignettes ŕ afficher par page.
- for ($n = 0; $n < count($this->params['objets']); $n++) {
- // Catégorie ou album ?
- if (empty($this->params['objets'][$n]['categorie_derniere_modif'])) {
- $this->template['vignettes'][$n]['type'] = 'categorie';
- $this->template['vignettes'][$n]['page'] = outils::genLink('?cat=' . $this->params['objets'][$n]['categorie_id'], '', $this->params['objets'][$n]['categorie_nom']);
- } else {
- $this->template['vignettes'][$n]['type'] = 'album';
- $this->template['vignettes'][$n]['page'] = outils::genLink('?alb=' . $this->params['objets'][$n]['categorie_id'], '', $this->params['objets'][$n]['categorie_nom']);
- }
- // On détermine le nombre d'images récentes.
- if ($this->choix['recent']
- && $this->params['objets'][$n]['categorie_dernier_ajout'] > $this->params['time_limit']) {
- if ($this->config['galerie_recent_nb'] && $this->choix['sn']) {
- $mysql_requete = 'SELECT COUNT(*) FROM ' . MYSQL_PREF . 'images WHERE
- image_chemin LIKE "' . $this->params['objets'][$n]['categorie_chemin'] . '%" AND
- image_date > ' . $this->params['time_limit'] . ' AND
- image_visible = "1"' . $this->images_protect();
- $this->template['vignettes'][$n]['recent'] = $this->mysql->select($mysql_requete, 5);
- } else {
- $this->template['vignettes'][$n]['recent'] = -1;
- }
- }
- // Autres informations.
- $this->template['vignettes'][$n]['id'] = $this->params['objets'][$n]['categorie_id'];
- $this->template['vignettes'][$n]['chemin'] = $this->params['objets'][$n]['representant'];
- $this->template['vignettes'][$n]['nom'] = outils::html_specialchars(strip_tags($this->params['objets'][$n]['categorie_nom']));
- $this->template['vignettes'][$n]['description'] = str_replace('&', '&', nl2br($this->params['objets'][$n]['categorie_description']));
- $this->template['vignettes'][$n]['poids'] = $this->params['objets'][$n]['categorie_poids'];
- $this->template['vignettes'][$n]['nb_images'] = $this->params['objets'][$n]['categorie_images'];
- $this->template['vignettes'][$n]['nb_hits'] = $this->params['objets'][$n]['categorie_hits'];
- $this->template['vignettes'][$n]['nb_commentaires'] = $this->params['objets'][$n]['categorie_commentaires'];
- $this->template['vignettes'][$n]['nb_votes'] = $this->params['objets'][$n]['categorie_votes'];
- $this->template['vignettes'][$n]['note'] = $this->params['objets'][$n]['categorie_note'];
- // Vérification mots de passe.
- $cat_pass = $this->params['objets'][$n]['categorie_pass'];
- $pass = preg_replace('`^(\d+):.+`', '$1', $cat_pass);
- $categorie_pass = $this->passwords->lire($pass);
- if (!$categorie_pass || outils::decrypte($categorie_pass, $this->config['galerie_key']) !== $cat_pass) {
- $this->template['vignettes'][$n]['pass'] = $cat_pass;
- // Droits.
- if ($cat_pass && isset($this->template['membre_user'][0]['groupe_album_pass_mode'])) {
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] != 'aucun') {
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] == 'tous') {
- $this->template['vignettes'][$n]['pass'] = '';
- } else {
- $passwords = unserialize($this->template['membre_user'][0]['groupe_album_pass']);
- if (in_array($cat_pass, $passwords)) {
- $this->template['vignettes'][$n]['pass'] = '';
- }
- }
- }
- }
- }
- // On réduit éventuellement les informations des objets.
- if (isset($this->params['categories_pass'][$this->params['objets'][$n]['categorie_chemin']])) {
- $pass_stats = $this->params['categories_pass'][$this->params['objets'][$n]['categorie_chemin']];
- $this->template['vignettes'][$n]['poids'] -= $pass_stats['poids'];
- $this->template['vignettes'][$n]['nb_images'] -= $pass_stats['images'];
- $this->template['vignettes'][$n]['nb_hits'] -= $pass_stats['hits'];
- $this->template['vignettes'][$n]['nb_commentaires'] -= $pass_stats['commentaires'];
- $this->template['vignettes'][$n]['nb_votes'] -= $pass_stats['votes'];
- if ($pass_stats['note'] > 0) {
- if ($this->template['vignettes'][$n]['nb_votes'] > 0) {
- $this->template['vignettes'][$n]['note'] = ($this->template['vignettes'][$n]['note']*2) - $pass_stats['note'];
- } else {
- $this->template['vignettes'][$n]['note'] = 0;
- }
- }
- }
- }
- }
- // Tags.
- $this->tags();
- // On n'a plus besoin de la bdd.
- $this->mysql->fermer();
- $this->liens_pages();
- $this->lien_retour();
- $this->description_categorie();
- $this->affichage_elements();
- $this->template['user']['vignettes'] = 0;
- $this->template['user']['ordre'] = 0;
- $this->user_autorisations();
- $this->template['infos']['nom'] = $this->params['objet_actuel']['categorie_nom'];
- // Message d'accueil.
- if ($this->params['objet_id'] == 1) {
- $this->template['infos']['accueil'] = $this->config['galerie_message_accueil'];
- }
- // Mode d'affichage des vignettes.
- if ($this->config['vignettes_cat_mode'] == 'etendue') {
- unset($this->template['infos']['description']);
- define('THUMB_CAT_COMPACT', FALSE);
- } else {
- define('THUMB_CAT_COMPACT', TRUE);
- }
- if (empty($this->template['infos']['pass'])) {
- $this->template['infos']['rss_objet'] = 1;
- }
- }
- /*
- * Albums.
- */
- function album() {
- $this->nb_vignettes();
- $this->ordre();
- $this->infos_categorie();
- $this->deconnect();
- // L'album est-il protégé par un mot de passe ?
- if (!empty($this->params['objet_actuel']['categorie_pass'])) {
- $this->template['infos']['pass'] = 1;
- // Membres : droits d'accčs.
- if (isset($this->template['membre_user'][0]['groupe_album_pass_mode'])) {
- $verif_pass = false;
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] != 'aucun') {
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] == 'tous') {
- $verif_pass = true;
- } else {
- $passwords = unserialize($this->template['membre_user'][0]['groupe_album_pass']);
- if (in_array($this->params['objet_actuel']['categorie_pass'], $passwords)) {
- $verif_pass = true;
- }
- }
- }
- if (!$verif_pass) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
-
- // L'utilisateur a-t-il entré le bon mot de passe ?
- } else {
- $pass = preg_replace('`^(\d+):.+`', '$1', $this->params['objet_actuel']['categorie_pass']);
- $album_pass = $this->passwords->lire($pass);
- if (!$album_pass || outils::decrypte($album_pass, $this->config['galerie_key']) !== $this->params['objet_actuel']['categorie_pass']) {
- $l = outils::genLink('?section=pass&alb=' . $this->params['objet_actuel']['categorie_id'], '', $this->params['objet_actuel']['categorie_nom'], 0, '&');
- header('Location: ' . $l);
- exit;
- }
- }
- }
- // On récupčre toutes les informations des images correspondant aux vignettes ŕ afficher sur la page.
- $this->params['limit_vignettes'] = $this->choix['vn'] * $this->choix['vl'];
- $mysql_requete = 'SELECT * FROM ' . MYSQL_PREF . 'images
- WHERE image_chemin LIKE "' . $this->params['objet_actuel']['categorie_chemin'] . '%"
- AND image_visible="1" ORDER BY ' . $this->mysql_order() . '
- LIMIT ' . $this->params['startnum'] . ',' . $this->params['limit_vignettes'];
- $this->params['objets'] = $this->mysql->select($mysql_requete);
- if (empty($this->params['objets'])) {
- die ('[' . __LINE__ . '] La base de données est vide.<br />' . mysql_error());
- }
- // L'objet actuel est-il une catégorie ?
- if ($this->params['objet_actuel']['categorie_derniere_modif'] == 0) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- $this->nouvelles_images();
- $this->stats_categorie();
- $this->hierarchie();
- $this->cat_voisines();
- // Tags.
- $this->tags();
- // On n'a plus besoin de la bdd.
- $this->mysql->fermer();
- $this->vignettes_album();
- $this->liens_pages();
- $this->lien_retour();
- $this->description_categorie();
- $this->infos_vignettes();
- $this->affichage_elements();
- $this->user_autorisations();
- $this->template['infos']['nom'] = $this->params['objet_actuel']['categorie_nom'];
- // La description doit-elle ętre affichée ?
- if ($this->config['vignettes_cat_mode'] == 'etendue') {
- unset($this->template['infos']['description']);
- }
- if (empty($this->template['infos']['pass'])) {
- $this->template['infos']['rss_objet'] = 1;
- }
-
- }
- /*
- * Images.
- */
- function image() {
- $this->nb_vignettes();
- $this->ordre();
- // Favori ?
- if (isset($_GET['addfav']) &&
- $this->template['infos']['membres_connexion'] === false) {
- if ($_GET['addfav'] == 0) {
- $mysql_requete = 'DELETE FROM ' . MYSQL_PREF . 'favoris
- WHERE image_id = "' . $this->params['objet_id'] . '"
- AND user_id = "' . $this->template['membre_user'][0]['user_id'] . '"';
- $this->mysql->requete($mysql_requete);
- }
- if ($_GET['addfav'] == 1) {
- $mysql_requete = 'SELECT fav_id
- FROM ' . MYSQL_PREF . 'favoris
- WHERE image_id = "' . $this->params['objet_id'] . '"
- AND user_id = "' . $this->template['membre_user'][0]['user_id'] . '"';
- $test = $this->mysql->select($mysql_requete);
- if (!is_array($test)) {
- $mysql_requete = 'INSERT INTO ' . MYSQL_PREF . 'favoris (image_id, user_id)
- VALUES ("' . $this->params['objet_id'] . '",
- "' . $this->template['membre_user'][0]['user_id'] . '")';
- $this->mysql->requete($mysql_requete);
- }
- }
- }
- // On récupčre toutes les informations de l'image ŕ afficher.
- $user_id = (isset($this->template['membre_user'][0]['user_id'])) ? $this->template['membre_user'][0]['user_id'] : 0;
- $mysql_requete = 'SELECT ' . MYSQL_PREF . 'images.*,
- ' . MYSQL_PREF . 'favoris.user_id,
- ' . MYSQL_PREF . 'users.user_login
- FROM ' . MYSQL_PREF . 'images JOIN ' . MYSQL_PREF . 'users USING (user_id)
- LEFT JOIN ' . MYSQL_PREF . 'favoris
- ON ' . MYSQL_PREF . 'images.image_id = ' . MYSQL_PREF . 'favoris.image_id
- AND ' . MYSQL_PREF . 'favoris.user_id = "' . $user_id . '"
- WHERE ' . MYSQL_PREF . 'images.image_id = "' . $this->params['objet_id'] . '"
- AND ' . MYSQL_PREF . 'images.image_visible = "1"';
- $this->params['objet_actuel'] = $this->mysql->select($mysql_requete, 11);
- $this->template['image'] = $this->params['objet_actuel'];
- $this->template['image']['image_chemin'] = GALERIE_ALBUMS . '/' . $this->template['image']['image_chemin'];
- $this->template['infos']['objet'] = $this->params['objet_id'];
- if (!is_array($this->params['objet_actuel']) || !$this->params['objet_actuel']['image_visible']) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- // Correction hauteur si l'option texte sur image est activée.
- if (IMG_TEXTE) {
- $this->template['image']['image_hauteur'] = $this->template['image']['image_hauteur'] + $this->config['galerie_images_text_correction'];
- } else {
- $this->config['galerie_images_text_correction'] = 0;
- }
- $this->deconnect();
- // L'image est-elle protégée par un mot de passe ?
- if (!empty($this->params['objet_actuel']['image_pass'])) {
- $this->template['infos']['pass'] = 1;
- // Membres : droits d'accčs.
- if (isset($this->template['membre_user'][0]['groupe_album_pass_mode'])) {
- $verif_pass = false;
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] != 'aucun') {
- if ($this->template['membre_user'][0]['groupe_album_pass_mode'] == 'tous') {
- $verif_pass = true;
- } else {
- $passwords = unserialize($this->template['membre_user'][0]['groupe_album_pass']);
- if (in_array($this->params['objet_actuel']['image_pass'], $passwords)) {
- $verif_pass = true;
- }
- }
- }
- if (!$verif_pass) {
- header('Location: ' . outils::genLink('?cat=1'));
- exit;
- }
- // L'utilisateur a-t-il entré le bon mot de passe ?
- } else {
- $pass = preg_replace('`^(\d+):.+`', '$1', $this->params['objet_actuel']['image_pass']);
- $image_pass = $this->passwords->lire($pass);
- if (!$image_pass || outils::decrypte($image_pass, $this->config['galerie_key']) !== $this->params['objet_actuel']['image_pass']) {
- $l = outils::genLink('?section=pass&img=' . $this->params['objet_actuel']['image_id'], $this->params['objet_actuel']['image_nom'], '', 0, '&');
- header('Location: ' . $l);
- exit;
- }
- }
- }
- $this->hierarchie();
- $this->note();
- $this->new_comment();
- $this->get_comments();
- // Visites.
- $this->hits();
- // S'agit-il d'une recherche ?
- if (isset($_GET['search'])) {
- $this->recherche(1);
- $this->template['nav']['voisines'] = $this->params['objets'];
- $this->template['infos']['objet'] = $_GET['img'];
- $this->template['infos']['special'] = 'search';
- // S'agit-il d'un affichage "spécial" ?
- } elseif (isset($_GET['images']) ||
- isset($_GET['recentes']) ||
- isset($_GET['hits']) ||
- isset($_GET['commentaires']) ||
- isset($_GET['votes']) ||
- isset($_GET['tag']) ||
- isset($_GET['mimg']) ||
- isset($_GET['mfav']) ||
- isset($_GET['date_creation']) ||
- isset($_GET['date_ajout'])) {
- $cat = 1;
- if (isset($_GET['images'])) {
- $this->params['objet_type'] = 'images';
- $cat = $_GET['images'];
- } elseif (isset($_GET['recentes'])) {
- $this->nouvelles_images();
- $this->params['objet_type'] = 'recentes';
- $cat = $_GET['recentes'];
- } elseif (isset($_GET['hits'])) {
- $this->params['objet_type'] = 'hits';
- $cat = $_GET['hits'];
- } elseif (isset($_GET['commentaires'])) {
- $this->params['objet_type'] = 'commentaires';
- $cat = $_GET['commentaires'];
- } elseif (isset($_GET['votes'])) {
- $this->params['objet_type'] = 'votes';
- $cat = $_GET['votes'];
- } elseif (isset($_GET['date_creation'])) {
- $this->params['objet_type'] = 'date_creation';
- $cat = (isset($_GET['cat'])) ? $_GET['cat'] : $cat;
- $cat = (isset($_GET['alb'])) ? $_GET['alb'] : $cat;
- } elseif (isset($_GET['date_ajout'])) {
- $this->params['objet_type'] = 'date_ajout';
- $cat = (isset($_GET['cat'])) ? $_GET['cat'] : $cat;
- $cat = (isset($_GET['alb'])) ? $_GET['alb'] : $cat;
- } elseif (isset($_GET['tag'])) {
- $this->params['objet_type'] = 'tag';
- $cat = (isset($_GET['cat'])) ? $_GET['cat'] : $cat;
- $cat = (isset($_GET['alb'])) ? $_GET['alb'] : $cat;
- }
- $this->template['infos']['special'] = $this->params['objet_type'];
- // On récupčre les informations basiques de l'objet.
- if (preg_match('`^\d{1,12}$`', $cat)) {
- $mysql_requete = 'SELECT categorie_id,
- categorie_nom,
- categorie_chemin,
- categorie_derniere_modif
- FROM ' . MYSQL_PREF . 'categories
- WHERE categorie_id = "' . $cat . '"';
- $this->template['infos']['special_cat'] = $this->mysql->select($mysql_requete);
- if ($this->template['infos']['special_cat'] == 'vide') {
- header('Location: ' . outils::genLink('?cat=1'));
- …
Large files files are truncated, but you can click here to view the full file