Changeset 26


Ignore:
Timestamp:
Jul 21, 2003, 9:47:14 PM (17 years ago)
Author:
z0rglub
Message:

* empty log message *

Location:
trunk
Files:
2 added
5 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/admin.php

    r21 r26  
    2222$handle = $vtp->Open( '../template/'.$user['template'].'/admin/admin.vtp' );
    2323// language
    24 $vtp->setGlobalVar( $handle, 'page_title',  $lang['title_default'] );
    25 $vtp->setGlobalVar( $handle, 'menu_title',  $lang['menu_title'] );
     24$tpl = array( 'menu_title', 'title_default', 'charset' );
     25templatize_array( $tpl, 'lang', $handle );
    2626//--------------------------------------- validating page and creation of title
    2727$page_valide = false;
     
    7676   }
    7777   break;
    78  case 'historique':
     78 case 'stats':
    7979   $title = $lang['title_history'];       $page_valide = true; break;
    8080 case 'update':
     
    8282 case 'configuration':
    8383   $title = $lang['title_configuration']; $page_valide = true; break;
    84  case 'manuel':
     84 case 'help':
    8585   $title = $lang['title_instructions'];  $page_valide = true; break;
    8686 case 'cat_perm':
     
    125125   $page_valide = true;
    126126   break;
     127 case 'comments' :
     128   $title = $lang['title_comments'];
     129   $page_valide = true;
     130   break;
    127131 default:
    128132   $title = $lang['title_default']; break;
     
    178182$vtp->setVar( $handle, 'summary.link',
    179183              add_session_id( $link_start.'waiting' ) );
    180 $query = 'select id from '.PREFIX_TABLE.'waiting;';
     184$query = 'SELECT id';
     185$query.= ' FROM '.PREFIX_TABLE.'waiting';
     186$query.= " WHERE validated='false'";
     187$query.= ';';
    181188$result = mysql_query( $query );
    182189$nb_waiting = '';
     
    187194$vtp->setVar( $handle, 'summary.name', $lang['menu_waiting'].$nb_waiting );
    188195$vtp->closeSession( $handle, 'summary' );
     196// comments
     197$vtp->addSession( $handle, 'summary' );
     198$vtp->setVar( $handle, 'summary.indent', '' );
     199$vtp->setVar( $handle, 'summary.link',
     200              add_session_id( $link_start.'comments' ) );
     201$query = 'SELECT id';
     202$query.= ' FROM '.PREFIX_TABLE.'comments';
     203$query.= " WHERE validated='false'";
     204$query.= ';';
     205$result = mysql_query( $query );
     206$nb_waiting = '';
     207if ( mysql_num_rows( $result ) > 0 )
     208{
     209  $nb_waiting =  ' [ '.mysql_num_rows( $result ).' ]';
     210}
     211$vtp->setVar( $handle, 'summary.name', $lang['menu_comments'].$nb_waiting );
     212$vtp->closeSession( $handle, 'summary' );
    189213// update
    190214$vtp->addSession( $handle, 'summary' );
     
    205229$vtp->setVar( $handle, 'summary.indent', '' );
    206230$vtp->setVar( $handle, 'summary.link',
    207               add_session_id( $link_start.'historique' ) );
     231              add_session_id( $link_start.'stats' ) );
    208232$vtp->setVar( $handle, 'summary.name', $lang['menu_history'] );
    209233$vtp->closeSession( $handle, 'summary' );
     
    212236$vtp->setVar( $handle, 'summary.indent', '' );
    213237$vtp->setVar( $handle, 'summary.link',
    214               add_session_id( $link_start.'manuel' ) );
     238              add_session_id( $link_start.'help' ) );
    215239$vtp->setVar( $handle, 'summary.name', $lang['menu_instructions'] );
    216240$vtp->closeSession( $handle, 'summary' );
  • trunk/admin/configuration.php

    r21 r26  
    4141       'show_comments','nb_comment_page','upload_available',
    4242       'upload_maxfilesize', 'upload_maxwidth','upload_maxheight',
    43        'upload_maxwidth_thumbnail','upload_maxheight_thumbnail' );
     43       'upload_maxwidth_thumbnail','upload_maxheight_thumbnail','log',
     44       'comments_validation' );
    4445$default_user_infos =
    45 array( 'nb_image_line','nb_line_page','theme','language','maxwidth',
     46array( 'nb_image_line','nb_line_page','language','maxwidth',
    4647       'maxheight','expand','show_nb_comments','short_period','long_period',
    4748       'template' );
     
    7475    array_push( $error, $lang['conf_err_prefixe'] );
    7576  }
    76   // mail mail must be formatted as follows : name@server.com
     77  // mail must be formatted as follows : name@server.com
    7778  $pattern = '/^[\w-]+(\.[\w-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/';
    7879  if ( !preg_match( $pattern, $_POST['mail_webmaster'] ) )
     
    195196    mysql_query( $query );
    196197
    197     $tab_theme = explode( ' - ', $_POST['theme'] );
    198     $_POST['theme'] = $tab_theme[0].'/'.$tab_theme[1];
    199 
    200198    $query = 'UPDATE '.PREFIX_TABLE.'users';
    201199    $query.= ' SET';
     
    372370$vtp->closeSession( $sub, 'param_line' );
    373371$vtp->closeSession( $sub, 'line' );
     372// activate log
     373$vtp->addSession( $sub, 'line' );
     374$vtp->addSession( $sub, 'param_line' );
     375$vtp->setVar( $sub, 'param_line.name', $lang['conf_general_log'] );
     376$vtp->addSession( $sub, 'group' );
     377$vtp->addSession( $sub, 'radio' );
     378$vtp->setVar( $sub, 'radio.name', 'log' );
     379$vtp->setVar( $sub, 'radio.value', 'true' );
     380$vtp->setVar( $sub, 'radio.option', $lang['yes'] );
     381$checked = '';
     382if ( $log == 'true' )
     383{
     384  $checked = ' checked="checked"';
     385}
     386$vtp->setVar( $sub, 'radio.checked', $checked );
     387$vtp->closeSession( $sub, 'radio' );
     388$vtp->addSession( $sub, 'radio' );
     389$vtp->setVar( $sub, 'radio.name', 'log' );
     390$vtp->setVar( $sub, 'radio.value', 'false' );
     391$vtp->setVar( $sub, 'radio.option', $lang['no'] );
     392$checked = '';
     393if ( $log == 'false' )
     394{
     395  $checked = ' checked="checked"';
     396}
     397$vtp->setVar( $sub, 'radio.checked', $checked );
     398$vtp->closeSession( $sub, 'radio' );
     399$vtp->closeSession( $sub, 'group' );
     400$vtp->setVar( $sub, 'param_line.def',
     401              $lang['conf_general_log_info'] );
     402$vtp->closeSession( $sub, 'param_line' );
     403$vtp->closeSession( $sub, 'line' );
    374404
    375405$vtp->addSession( $sub, 'line' );
     
    431461$vtp->setVar( $sub, 'param_line.def',
    432462              $lang['conf_comments_comments_number_info'] );
     463$vtp->closeSession( $sub, 'param_line' );
     464$vtp->closeSession( $sub, 'line' );
     465// coments validation
     466$vtp->addSession( $sub, 'line' );
     467$vtp->addSession( $sub, 'param_line' );
     468$vtp->setVar( $sub, 'param_line.name', $lang['conf_comments_validation'] );
     469$vtp->addSession( $sub, 'group' );
     470$vtp->addSession( $sub, 'radio' );
     471$vtp->setVar( $sub, 'radio.name', 'comments_validation' );
     472$vtp->setVar( $sub, 'radio.value', 'true' );
     473$vtp->setVar( $sub, 'radio.option', $lang['yes'] );
     474$checked = '';
     475if ( $comments_validation == 'true' )
     476{
     477  $checked = ' checked="checked"';
     478}
     479$vtp->setVar( $sub, 'radio.checked', $checked );
     480$vtp->closeSession( $sub, 'radio' );
     481$vtp->addSession( $sub, 'radio' );
     482$vtp->setVar( $sub, 'radio.name', 'comments_validation' );
     483$vtp->setVar( $sub, 'radio.value', 'false' );
     484$vtp->setVar( $sub, 'radio.option', $lang['no'] );
     485$checked = '';
     486if ( $comments_validation == 'false' )
     487{
     488  $checked = ' checked="checked"';
     489}
     490$vtp->setVar( $sub, 'radio.checked', $checked );
     491$vtp->closeSession( $sub, 'radio' );
     492$vtp->closeSession( $sub, 'group' );
     493$vtp->setVar( $sub, 'param_line.def',
     494              $lang['conf_comments_validation_info'] );
    433495$vtp->closeSession( $sub, 'param_line' );
    434496$vtp->closeSession( $sub, 'line' );
     
    515577$vtp->addSession( $sub, 'line' );
    516578$vtp->addSession( $sub, 'param_line' );
    517 $vtp->setVar( $sub, 'param_line.name', $lang['customize_template'] );
     579$vtp->setVar( $sub, 'param_line.name', $lang['customize_theme'] );
    518580$vtp->addSession( $sub, 'select' );
    519581$vtp->setVar( $sub, 'select.name', 'template' );
     
    524586  $vtp->setVar( $sub, 'option.option', $option[$i] );
    525587  if ( $option[$i] == $template )
    526   {
    527     $vtp->setVar( $sub, 'option.selected', ' selected="selected"' );
    528   }
    529   $vtp->closeSession( $sub, 'option' );
    530 }
    531 $vtp->closeSession( $sub, 'select' );
    532 $vtp->setVar( $sub, 'param_line.def', $lang['conf_default_template_info'] );
    533 $vtp->closeSession( $sub, 'param_line' );
    534 $vtp->closeSession( $sub, 'line' );
    535 // theme
    536 $vtp->addSession( $sub, 'line' );
    537 $vtp->addSession( $sub, 'param_line' );
    538 $vtp->setVar( $sub, 'param_line.name', $lang['customize_theme'] );
    539 $vtp->addSession( $sub, 'select' );
    540 $vtp->setVar( $sub, 'select.name', 'theme' );
    541 $option = get_themes( '../theme/' );
    542 for ( $i = 0; $i < sizeof( $option ); $i++ )
    543 {
    544   $vtp->addSession( $sub, 'option' );
    545   $vtp->setVar( $sub, 'option.option', $option[$i] );
    546   if ( $option[$i] == str_replace( "/", " - ", $theme ) )
    547588  {
    548589    $vtp->setVar( $sub, 'option.selected', ' selected="selected"' );
  • trunk/admin/include/functions.php

    r21 r26  
    1818$tab_ext_create_TN = array ( 'jpg', 'png', 'JPG', 'PNG' );
    1919
     20// is_image returns true if the given $filename (including the path) is a
     21// picture according to its format and its extension.
     22// As GD library can only generate pictures from jpeg and png files, if you
     23// ask if the filename is an image for thumbnail creation (second parameter
     24// set to true), the only authorized formats are jpeg and png.
    2025function is_image( $filename, $create_thumbnail = false )
    2126{
    2227  global $conf, $tab_ext_create_TN;
    2328
    24   if ( is_file ( $filename ) )
     29  if ( is_file( $filename ) )
    2530  {
    2631    $size = getimagesize( $filename );
  • trunk/admin/infos_images.php

    r19 r26  
    1919include_once( '../template/'.$user['template'].'/htmlfunctions.inc.php' );
    2020//------------------------------------------------------------------- functions
    21 function check_date_format ( $date )
     21function check_date_format( $date )
    2222{
    2323  // date arrives at this format : DD/MM/YYYY
     
    145145    else
    146146    {
    147       echo $lang['infoimage_err_date'];
     147      echo $lang['err_date'];
    148148    }
    149149  }
     
    222222    $thumbnail_url.= $conf['prefix_thumbnail'].$file.".".$row['tn_ext'];
    223223    $vtp->setVar( $sub, 'picture.thumbnail_url', $thumbnail_url );
     224    $url = '../picture.php?cat='.$_GET['cat_id'].'&amp;image_id='.$row['id'];
     225    $vtp->setVar( $sub, 'picture.url', add_session_id( $url ) );
    224226    $vtp->closeSession( $sub, 'picture' );
    225227  }
  • trunk/admin/thumbnail.php

    r19 r26  
    11<?php
    22/***************************************************************************
    3  *                 thumbnail.php is a part of PhpWebGallery                *
     3 *                              thumbnail.php                              *
    44 *                            -------------------                          *
    5  *   last update          : Thursday, July 25, 2002                        *
    6  *   email                : pierrick@z0rglub.com                           *
     5 *   application          : PhpWebGallery 1.3                              *
     6 *   author               : Pierrick LE GALL <pierrick@z0rglub.com>        *
    77 *                                                                         *
    88 ***************************************************************************/
     
    1515 *                                                                         *
    1616 ***************************************************************************/
    17 include_once( "./include/isadmin.inc.php" );
    18        
    19 function get_subdirs( $rep )
    20 {
    21   $sub_rep = array();
    22   $i = 0;
    23   if ( $opendir = opendir ( $rep ) )
     17include_once( './include/isadmin.inc.php' );
     18//------------------------------------------------------------------- functions
     19// get_subdirs returns an array containing all sub directory names,
     20// excepting : '.', '..' and 'thumbnail'.
     21function get_subdirs( $dir )
     22{
     23  $sub_dirs = array();
     24  if ( $opendir = opendir( $dir ) )
     25  {
     26    while ( $file = readdir( $opendir ) )
     27    {
     28      if ( $file != 'thumbnail' and $file != '.'
     29           and $file != '..' and is_dir( $dir.'/'.$file ) )
     30      {
     31        array_push( $sub_dirs, $file );
     32      }
     33    }
     34  }
     35  return $sub_dirs;
     36}
     37
     38// get_images_without_thumbnail returns an array with all the picture names
     39// that don't have associated thumbnail in the directory. Each picture name
     40// is associated with the width, heigh and filesize of the picture.
     41function get_images_without_thumbnail( $dir )
     42{
     43  $images = array();
     44  if ( $opendir = opendir( $dir ) )
     45  {
     46    while ( $file = readdir( $opendir ) )
     47    {
     48      $path = $dir.'/'.$file;
     49      if ( is_image( $path, true ) )
     50      {
     51        if ( !TN_exists( $dir, $file ) )
     52        {
     53          $image_infos = getimagesize( $path );
     54          $size = floor( filesize( $path ) / 1024 ). ' KB';
     55          array_push( $images, array( 'name' => $file,
     56                                      'width' => $image_infos[0],
     57                                      'height' => $image_infos[1],
     58                                      'size' => $size ) );
     59        }
     60      }
     61    }
     62  }
     63  return $images;
     64}
     65
     66// scandir scans a dir to find pictures without thumbnails. Once found,
     67// creation of the thumbnails (RatioResizeImg). Only the first $_POST['n']
     68// pictures without thumbnails are treated.
     69// scandir returns an array with the generation time of each thumbnail (for
     70// statistics purpose)
     71function scandir( $dir, $width, $height )
     72{
     73  global $conf;
     74  $stats = array();
     75  if ( $opendir = opendir( $dir ) )
    2476  {
    2577    while ( $file = readdir ( $opendir ) )
    2678    {
    27       if ( $file != "thumbnail" && $file != "."
    28            && $file != ".." && is_dir ( $rep.$file ) )
     79      $path = $dir.'/'.$file;
     80      if ( is_image( $path, true ) )
    2981      {
    30         $sub_rep[$i++] = $file;
    31       }
    32     }
    33   }
    34   return $sub_rep;
    35 }
    36 
    37 /*
    38         $tab_ext = array ( 'jpg', 'JPG','png','PNG' );
    39         $tab_tn_ext = array ( 'jpg', 'JPG','png','PNG', 'gif', 'GIF' );
    40 */
    41 function get_images_without_thumbnail( $dir )
    42 {
    43   $i = 0;
    44   if ( $opendir = opendir ( $dir ) )
    45   {
    46     while ( $file = readdir ( $opendir ) )
    47     {
    48       $lien_image = $dir."/".$file;
    49       if ( is_image( $lien_image, true ) )
    50       {
    51         if ( !TN_exist( $dir, $file ) )
     82        if ( count( $stats ) < $_POST['n'] and !TN_exists( $dir, $file ) )
    5283        {
    53           $taille_image = getimagesize( $lien_image );
    54           $size = floor ( filesize( $lien_image ) / 1024 ). " KB";
    55           $images[$i++] = array(        'name' => $file,
    56                                         'width' => $taille_image[0],
    57                                         'height' => $taille_image[1],
    58                                         'size' => $size
    59             );
     84          $starttime = get_moment();
     85          $info = RatioResizeImg( $file, $width, $height, $dir.'/', 'jpg' );
     86          $endtime = get_moment();
     87          $info['time'] = ( $endtime - $starttime ) * 1000;
     88          array_push( $stats, $info );
    6089        }
    6190      }
    6291    }
    6392  }
    64   return $images;
    65 }
    66        
    67 function scandir( $DIR, $width, $height )
    68 {
    69   global $HTTP_POST_VARS, $conf, $output;
    70   $compteur = 0;
    71   $temps = array();
    72   if ( $ODIR = opendir( $DIR ) )
    73   {
    74     while ( $FILE = readdir ( $ODIR ) )
    75     {
    76       $TMP = $DIR."/".$FILE;
    77       if ( is_image ( $TMP, true ) )
    78       {
    79         if ( $compteur < $HTTP_POST_VARS['n'] && !TN_exist( $DIR, $FILE ) )
    80         {
    81           $t1 = explode( " ", microtime() );
    82           $t2 = explode( ".", $t1[0] );
    83           $t2 = $t1[1].".".$t2[1];
    84           $info = RatioResizeImg( $FILE, $width, $height, $DIR."/", "jpg" );
    85           $t3 = explode( " ", microtime() );
    86           $t4 = explode( ".", $t3[0] );
    87           $t4 = $t3[1].".".$t4[1];
    88           $info['temps'] = ( $t4 - $t2 ) * 1000;
    89           $temps[$compteur++] = $info;
    90           //$output.= " (".number_format( $temps[$compteur-1], 2, '.', ' ')." ms)<br />";;
    91         }
    92       }
    93     }
    94   }
    95   return $temps;
    96 }
    97        
    98 function RatioResizeImg( $image, $newWidth, $newHeight, $path, $extension)
    99 {
    100   global $conf, $HTTP_POST_VARS;
    101   // chemin complet de l'image :
    102   $chemin = $path.$image;
    103   // détéction du type de l'image
    104   eregi( "(...)$", $chemin, $regs);
    105   $type = $regs[1];
    106   switch( $type )
    107   {
    108   case "jpg": $srcImage = @imagecreatefromjpeg( $chemin ); break;
    109   case "JPG": $srcImage = @imagecreatefromjpeg( $chemin ); break;
    110   case "png": $srcImage = @imagecreatefrompng( $chemin ); break;
    111   case "PNG": $srcImage = @imagecreatefrompng( $chemin ); break;
    112   default : unset( $type ); break;
     93  return $stats;
     94}
     95
     96// RatioResizeImg creates a new picture (a thumbnail since it is supposed to
     97// be smaller than original picture !) in the sub directory named
     98// "thumbnail".
     99function RatioResizeImg( $filename, $newWidth, $newHeight, $path, $tn_ext )
     100{
     101  global $conf, $lang;
     102  // full path to picture
     103  $filepath = $path.$filename;
     104  // extension of the picture filename
     105  $extension = get_extension( $filepath );
     106  switch( $extension )
     107  {
     108  case 'jpg': $srcImage = @imagecreatefromjpeg( $filepath ); break;
     109  case 'JPG': $srcImage = @imagecreatefromjpeg( $filepath ); break;
     110  case 'png': $srcImage = @imagecreatefrompng(  $filepath ); break;
     111  case 'PNG': $srcImage = @imagecreatefrompng(  $filepath ); break;
     112  default : unset( $extension ); break;
    113113  }
    114114               
    115   if( $srcImage )
    116   {
    117     // hauteurs/largeurs
    118     $srcWidth = imagesx( $srcImage );
    119     $srcHeight = imagesy( $srcImage );
    120     $ratioWidth = $srcWidth/$newWidth;
     115  if ( isset( $srcImage ) )
     116  {
     117    // width/height
     118    $srcWidth    = imagesx( $srcImage );
     119    $srcHeight   = imagesy( $srcImage );
     120    $ratioWidth  = $srcWidth/$newWidth;
    121121    $ratioHeight = $srcHeight/$newHeight;
    122                        
    123     // taille maximale dépassée ?
    124     if (($ratioWidth > 1) || ($ratioHeight > 1))
    125     {
    126       if( $ratioWidth < $ratioHeight)
     122
     123    // maximal size exceeded ?
     124    if ( ( $ratioWidth > 1 ) or ( $ratioHeight > 1 ) )
     125    {
     126      if ( $ratioWidth < $ratioHeight)
    127127      {
    128128        $destWidth = $srcWidth/$ratioHeight;
     
    140140      $destHeight = $srcHeight;
    141141    }
    142     // selon votre version de GD installée sur le serveur hébergeur
    143     if ( $HTTP_POST_VARS['gd'] == 2 )
    144     {
    145       // Partie 1 : GD 2.0 ou supérieur, résultat très bons
     142    // according to the GD version installed on the server
     143    if ( $_POST['gd'] == 2 )
     144    {
     145      // GD 2.0 or more recent -> good results (but slower)
    146146      $destImage = imagecreatetruecolor( $destWidth, $destHeight);
    147       imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0, $destWidth,$destHeight,$srcWidth,$srcHeight );
    148     }
    149     else
    150     {
    151       // Partie 2 : GD inférieur à 2, résultat très moyens
     147      imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0,
     148                          $destWidth,$destHeight,$srcWidth,$srcHeight );
     149    }
     150    else
     151    {
     152      // GD prior to version  2 -> pretty bad results :-/ (but fast)
    152153      $destImage = imagecreate( $destWidth, $destHeight);
    153       imagecopyresized( $destImage, $srcImage, 0, 0, 0, 0, $destWidth,$destHeight,$srcWidth,$srcHeight );
     154      imagecopyresized( $destImage, $srcImage, 0, 0, 0, 0,
     155                        $destWidth,$destHeight,$srcWidth,$srcHeight );
    154156    }
    155157                       
    156158                       
    157     if( !is_dir( $path."thumbnail" ) )
    158     {
    159       umask(0000);
    160       mkdir( $path."thumbnail", 0777 );
    161     }
    162     $dest_file  = $path."thumbnail/".$conf['prefix_thumbnail'].substr ( $image, 0, strrpos ( $image, ".") ).".".$extension;
     159    if( !is_dir( $path.'thumbnail' ) )
     160    {
     161      umask( 0000 );
     162      mkdir( $path.'thumbnail', 0777 );
     163    }
     164    $dest_file = $path.'thumbnail/'.$conf['prefix_thumbnail'];
     165    $dest_file.= get_filename_wo_extension( $filename );
     166    $dest_file.= '.'.$tn_ext;
    163167                       
    164     // création et sauvegarde de l'image finale
    165     imagejpeg($destImage, $dest_file);
    166     // libère la mémoire
     168    // creation and backup of final picture
     169    imagejpeg( $destImage, $dest_file );
     170    // freeing memory ressources
    167171    imagedestroy( $srcImage );
    168172    imagedestroy( $destImage );
    169173                       
    170     // renvoit l'URL de l'image
    171     //return $dest_file;
    172     $taille_image = getimagesize( $chemin );
    173     $size = number_format( floor ( filesize( $chemin ) / 1024 ), 0, '', ' ')." KB";
    174     $tn_taille_image = getimagesize( $dest_file );
    175     $tn_size = number_format( floor ( filesize( $dest_file ) ), 0, '', ' ')." octets";
    176     $info = array(      'name' => $image,
    177                         'width' => $taille_image[0],
    178                         'height' => $taille_image[1],
    179                         'size' => $size,
    180                         'tn_name' => $conf['prefix_thumbnail'].substr ( $image, 0, strrpos ( $image, ".") ).".".$extension,
    181                         'tn_width' => $tn_taille_image[0],
    182                         'tn_height' => $tn_taille_image[1],
    183                         'tn_size' => $tn_size
    184       );
     174    list( $width,$height ) = getimagesize( $filepath );
     175    $size = floor( filesize( $filepath ) / 1024 ).' KB';
     176    list( $tn_width,$tn_height ) = getimagesize( $dest_file );
     177    $tn_size = floor( filesize( $dest_file ) / 1024 ).' KB';
     178    $info = array( 'file'      => $filename,
     179                   'width'     => $width,
     180                   'height'    => $height,
     181                   'size'      => $size,
     182                   'tn_file'   => $dest_file,
     183                   'tn_width'  => $tn_width,
     184                   'tn_height' => $tn_height,
     185                   'tn_size'   => $tn_size );
    185186    return $info;
    186187  }
    187   // erreur
     188  // error
    188189  else
    189190  {
    190191    echo $lang['tn_no_support']." ";
    191     if ($type)
    192     {
    193       echo $lang['tn_format']." $type";
     192    if ( isset( $extenstion ) )
     193    {
     194      echo $lang['tn_format'].' '.$extension;
    194195    }
    195196    else
     
    200201  }
    201202}
     203
     204// array_max returns the highest value of the given array
     205function array_max( $array )
     206{
     207  sort( $array, SORT_NUMERIC );
     208  return array_pop( $array );
     209}
     210
     211// array_min returns the lowest value of the given array
     212function array_min( $array )
     213{
     214  sort( $array, SORT_NUMERIC );
     215  return array_shift( $array );
     216}
     217
     218// array_avg returns the average value of the array
     219function array_avg( $array )
     220{
     221  return array_sum( $array ) / sizeof( $array );
     222}
    202223       
    203 function array_max( $array )
    204 {
    205   $max = 0;
    206   for ( $i = 0; $i < sizeof( $array ); $i++ )
    207   {
    208     if ( $array[$i] > $max )
    209     {
    210       $max = $array[$i];
    211     }
    212   }
    213   return $max;
    214 }
    215        
    216 function array_min( $array )
    217 {
    218   $min = 99999999999999;
    219   for ( $i = 0; $i < sizeof( $array ); $i++ )
    220   {
    221     if ( $array[$i] < $min )
    222     {
    223       $min = $array[$i];
    224     }
    225   }
    226   return $min;
    227 }
    228        
    229 function array_moy( $array )
    230 {
    231   return array_sum( $array ) / sizeof( $array );
    232 }
    233        
    234 // get_dirs retourne un tableau contenant tous les sous-répertoires d'un répertoire
    235 function get_displayed_dirs( $rep, $indent )
    236 {
    237   global $conf,$lang;
     224// get_displayed_dirs builds the tree of dirs under "galleries". If a
     225// directory contains pictures without thumbnails, the become linked to the
     226// page of thumbnails creation.
     227function get_displayed_dirs( $dir, $indent )
     228{
     229  global $conf,$lang,$vtp,$sub;
    238230               
    239   $sub_rep = array();
    240   $i = 0;
    241   $dirs = "";
    242   if ( $opendir = opendir ( $rep ) )
    243   {
    244     while ( $file = readdir ( $opendir ) )
    245     {
    246       if ( $file != "." && $file != ".." && is_dir ( $rep."/".$file ) && $file != "thumbnail" )
     231  $sub_dirs = get_subdirs( $dir );
     232  // write of the dirs
     233  foreach ( $sub_dirs as $sub_dir ) {
     234    $pictures = get_images_without_thumbnail( $dir.'/'.$sub_dir );
     235    $vtp->addSession( $sub, 'dir' );
     236    $vtp->setVar( $sub, 'dir.indent', $indent );
     237    if ( count( $pictures ) > 0 )
     238    {
     239      $vtp->addSession( $sub, 'linked' );
     240      $url = './admin.php?page=thumbnail&amp;dir='.$dir."/".$sub_dir;
     241      $vtp->setVar( $sub, 'linked.url', add_session_id( $url ) );
     242      $vtp->setVar( $sub, 'linked.name', $sub_dir );
     243      $vtp->setVar( $sub, 'linked.nb_pic', count( $pictures ) );
     244      $vtp->closeSession( $sub, 'linked' );
     245    }
     246    else
     247    {
     248      $vtp->addSession( $sub, 'unlinked' );
     249      $vtp->setVar( $sub, 'unlinked.name', $sub_dir );
     250      $vtp->closeSession( $sub, 'unlinked' );
     251    }
     252    $vtp->closeSession( $sub, 'dir' );
     253    // recursive call
     254    $dirs.= get_displayed_dirs( $dir.'/'.$sub_dir,
     255                                $indent+30 );
     256   
     257  }
     258}
     259//----------------------------------------------------- template initialization
     260$sub = $vtp->Open( '../template/'.$user['template'].'/admin/thumbnail.vtp' );
     261$tpl = array(
     262  'tn_dirs_title','tn_dirs_alone','tn_params_title','tn_params_GD',
     263  'tn_params_GD_info','tn_width','tn_params_width_info','tn_height',
     264  'tn_params_height_info','tn_params_create','tn_params_create_info',
     265  'tn_params_format','tn_params_format_info','submit','tn_alone_title',
     266  'filesize','tn_picture','tn_results_title','thumbnail',
     267  'tn_results_gen_time','tn_stats','tn_stats_nb','tn_stats_total',
     268  'tn_stats_max','tn_stats_min','tn_stats_mean' );
     269templatize_array( $tpl, 'lang', $sub );
     270//----------------------------------------------------- miniaturization results
     271if ( isset( $_GET['dir'] ) )
     272{
     273  $pictures = get_images_without_thumbnail( $_GET['dir'] );
     274  if ( count( $pictures ) == 0 )
     275  {
     276    $vtp->addSession( $sub, 'warning' );
     277    $vtp->closeSession( $sub, 'warning' );
     278  }
     279  elseif ( isset( $_POST['submit'] ) )
     280  {
     281    // checking criteria
     282    $errors = array();
     283    if ( !ereg( "^[0-9]{2,3}$", $_POST['width'] ) or $_POST['width'] < 10 )
     284    {
     285      array_push( $errors, $lang['tn_err_width'].' 10' );
     286    }
     287    if ( !ereg( "^[0-9]{2,3}$", $_POST['height'] ) or $_POST['height'] < 10 )
     288    {
     289      array_push( $errors, $lang['tn_err_height'].' 10' );
     290    }
     291    // picture miniaturization
     292    if ( count( $errors ) == 0 )
     293    {
     294      $vtp->addSession( $sub, 'results' );
     295      $stats = scandir( $_GET['dir'], $_POST['width'], $_POST['height'] );
     296      $times = array();
     297      foreach ( $stats as $stat ) {
     298        array_push( $times, $stat['time'] );
     299      }
     300      $max = array_max( $times );
     301      $min = array_min( $times );
     302      foreach ( $stats as $i => $stat ) {
     303        $vtp->addSession( $sub, 'picture' );
     304        if ( $i % 2 == 1 )
     305        {
     306          $vtp->setVar( $sub, 'picture.class', 'row2' );
     307        }
     308        $vtp->setVar( $sub, 'picture.num',            ($i+1) );
     309        $vtp->setVar( $sub, 'picture.file',           $stat['file'] );
     310        $vtp->setVar( $sub, 'picture.filesize',       $stat['size'] );
     311        $vtp->setVar( $sub, 'picture.width',          $stat['width'] );
     312        $vtp->setVar( $sub, 'picture.height',         $stat['height'] );
     313        $vtp->setVar( $sub, 'picture.thumb_file',     $stat['tn_file'] );
     314        $vtp->setVar( $sub, 'picture.thumb_filesize', $stat['tn_size'] );
     315        $vtp->setVar( $sub, 'picture.thumb_width',    $stat['tn_width'] );
     316        $vtp->setVar( $sub, 'picture.thumb_height',   $stat['tn_height'] );
     317        $vtp->setVar( $sub, 'picture.time',
     318                      number_format( $stat['time'], 2, '.', ' ').' ms' );
     319        if ( $stat['time'] == $max )
     320        {
     321          $vtp->setVar( $sub, 'picture.color', 'red' );
     322        }
     323        else if ( $stat['time'] == $min )
     324        {
     325          $vtp->setVar( $sub, 'picture.color', 'green' );
     326        }
     327        $vtp->closeSession( $sub, 'picture' );
     328      }
     329      // general statistics
     330      $vtp->setVar( $sub, 'results.stats_nb', count( $stats ) );
     331      $vtp->setVar( $sub, 'results.stats_total',
     332                    number_format( array_sum( $times ), 2, '.', ' ').' ms' );
     333      $vtp->setVar( $sub, 'results.stats_max',
     334                    number_format( $max, 2, '.', ' ').' ms' );
     335      $vtp->setVar( $sub, 'results.stats_min',
     336                    number_format( $min, 2, '.', ' ').' ms' );
     337      $vtp->setVar( $sub, 'results.stats_mean',
     338                    number_format( array_avg( $times ), 2, '.', ' ').' ms' );
     339      $vtp->closeSession( $sub, 'results' );
     340    }
     341    else
     342    {
     343      $vtp->addSession( $sub, 'errors' );
     344      foreach ( $errors as $error ) {
     345        $vtp->addSession( $sub, 'li' );
     346        $vtp->setVar( $sub, 'li.li', $error );
     347        $vtp->closeSession( $sub, 'li' );
     348      }
     349      $vtp->closeSession( $sub, 'errors' );
     350    }
     351  }
     352//-------------------------------------------------- miniaturization parameters
     353  if ( sizeof( $pictures ) != 0 )
     354  {
     355    $vtp->addSession( $sub, 'params' );
     356    $url = './admin.php?page=thumbnail&amp;dir='.$_GET['dir'];
     357    $vtp->setVar( $sub, 'params.action', add_session_id( $url ) );
     358    // GD version selected...
     359    if ( $_POST['gd'] == 1 )
     360    {
     361      $vtp->setVar( $sub, 'params.gd1_checked', ' checked="checked"' );
     362    }
     363    else
     364    {
     365      $vtp->setVar( $sub, 'params.gd2_checked', ' checked="checked"' );
     366    }
     367    // width values
     368    if ( isset( $_POST['width'] ) )
     369    {
     370      $vtp->setVar( $sub, 'params.width_value', $_POST['width'] );
     371    }
     372    else
     373    {
     374      $vtp->setVar( $sub, 'params.width_value', '128' );
     375    }
     376    // height value
     377    if ( isset( $_POST['height'] ) )
     378    {
     379      $vtp->setVar( $sub, 'params.height_value', $_POST['height'] );
     380    }
     381    else
     382    {
     383      $vtp->setVar( $sub, 'params.height_value', '96' );
     384    }
     385    // options for the number of picture to miniaturize : "n"
     386    $options = array( 5,10,20,40 );
     387    foreach ( $options as $option ) {
     388      $vtp->addSession( $sub, 'n_option' );
     389      $vtp->setVar( $sub, 'n_option.option', $option );
     390      if ( $option == $_POST['n'] )
    247391      {
    248         $sub_rep[$i++] = $file;
    249       }
    250     }
    251   }
    252   // write of the dirs
    253   for ( $i = 0; $i < sizeof( $sub_rep ); $i++ )
    254   {
    255     $images = get_images_without_thumbnail( $rep."/".$sub_rep[$i] );
    256     $nb_picture_without_TN = sizeof( $images );
    257     $dirs.= $indent;
    258     if ( $nb_picture_without_TN > 0 )
    259     {
    260       $dirs.= "<a href=\"".add_session_id_to_url( "./admin.php?page=thumbnail&amp;dir=".$rep."/".$sub_rep[$i] )."\">";
    261     }
    262     $dirs.= "<img src=\"".$conf['lien_puce']."\" style=\"border:none;\" alt=\"&gt;\"/>".$sub_rep[$i];
    263     if ( $nb_picture_without_TN > 0 )
    264     {
    265       $dirs.= "</a>";
    266     }
    267     if ( $nb_picture_without_TN > 0 )
    268     {
    269       $dirs.= " [ $nb_picture_without_TN ".$lang['tn_dirs_alone']." ]";
    270     }
    271     $dirs.= "<br />";
    272     $dirs.= get_displayed_dirs( $rep."/".$sub_rep[$i], $indent."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" );
    273   }
    274   return $dirs;         
    275 }
    276 
    277 $output = "";
    278        
    279 if ( isset( $HTTP_GET_VARS['dir'] ) )
    280 {
    281   //---------------vérification de la présence d'images sans thumbnail
    282   $images = get_images_without_thumbnail( $HTTP_GET_VARS['dir'] );
    283   if ( sizeof( $images ) == 0 )
    284   {
    285     $output.= "<div style=\"text-align:center;font-weight:bold;margin:10px;\"> [ 0 ".$lang['tn_dirs_alone']." ]</div>";
    286   }
    287   else if ( isset( $HTTP_POST_VARS['submit'] ) )
    288   {
    289     //----------------------------------------vérification des variables
    290     $nb_erreur = 0;
    291     $erreur = "";
    292     if ( !ereg( "^[0-9]{2,3}$", $HTTP_POST_VARS['width'] ) || $HTTP_POST_VARS['width'] < 10 )
    293     {
    294       $nb_erreur++;
    295       $erreur.= "<li>".$lang['tn_err_width']." 10</li>";
    296     }
    297     if ( !ereg( "^[0-9]{2,3}$", $HTTP_POST_VARS['height'] ) || $HTTP_POST_VARS['height'] < 10 )
    298     {
    299       $nb_erreur++;
    300       $erreur.= "<li>".$lang['tn_err_height']." 10</li>";
    301     }
    302     if ( !isset( $HTTP_POST_VARS['gd'] ) )
    303     {
    304       $nb_erreur++;
    305       $erreur.= "<li>".$lang['tn_err_GD']."</li>";
    306     }
    307                        
    308     //---------------------------------------------listing des résultats
    309     if ( $nb_erreur == 0 )
    310     {
    311       $style = "class=\"row2\" style=\"text-align:center;font-weight:bold;";
    312       $output.= "
    313         <table style=\"width:100%;\">
    314                 <tr>
    315                         <th colspan=\"10\">".$lang['tn_results_title']."</th>
    316                 </tr>
    317                 <tr>
    318                         <td ".$style."\">&nbsp;</td>
    319                         <td ".$style."\">".$lang['tn_picture']."</td>
    320                         <td ".$style."\">".$lang['tn_filesize']."</td>
    321                         <td ".$style."\">".$lang['tn_width']."</td>
    322                         <td ".$style."\">".$lang['tn_height']."</td>
    323                         <td ".$style."background-color:#D3DCE3;\">".$lang['tn_results_gen_time']."</td>
    324                         <td ".$style."\">".$lang['thumbnail']."</td>
    325                         <td ".$style."\">".$lang['tn_filesize']."</td>
    326                         <td ".$style."\">".$lang['tn_width']."</td>
    327                         <td ".$style."\">".$lang['tn_height']."</td>
    328                 </tr>";
    329       $tab_infos = scandir( $HTTP_GET_VARS['dir'], $HTTP_POST_VARS['width'], $HTTP_POST_VARS['height'] );
    330       for ( $i = 0; $i < sizeof ( $tab_infos ); $i++ )
     392        $vtp->setVar( $sub, 'n_option.selected', ' selected="selected"' );
     393      }
     394      $vtp->closeSession( $sub, 'n_option' );
     395    }
     396    $vtp->closeSession( $sub, 'params' );
     397//---------------------------------------------------------- remaining pictures
     398    $vtp->addSession( $sub, 'remainings' );
     399    $pictures = get_images_without_thumbnail( $_GET['dir'] );
     400    $vtp->setVar( $sub, 'remainings.total', count( $pictures ) );
     401    foreach ( $pictures as $i => $picture ) {
     402      $vtp->addSession( $sub, 'remaining' );
     403      if ( $i % 2 == 1 )
    331404      {
    332         $temps[$i] = $tab_infos[$i]['temps'];
    333       }
    334       $max = array_max( $temps );
    335       $min = array_min( $temps );
    336       for ( $i = 0; $i < sizeof ( $tab_infos ); $i++ )
    337       {
    338         $temps[$i] = $tab_infos[$i]['temps'];
    339         $num = $i + 1;
    340         $class = "";
    341         if ( $i%2 == 1 )
    342         {
    343           $class = "class=\"row2\"";
    344         }
    345         $output.= "
    346                 <tr>
    347                         <td class=\"row2\">$num</td>
    348                         <td $class>".$tab_infos[$i]['name']."</td>
    349                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['size']."</td>
    350                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['width']."</td>
    351                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['height']."</td>
    352                         <th><div style=\"text-align:right;margin-right:5px;";
    353         if ( $tab_infos[$i]['temps'] == $max )
    354         {
    355           $output.= "color:red;";
    356         }
    357         if ( $tab_infos[$i]['temps'] == $min )
    358         {
    359           $output.= "color:green;";
    360         }
    361         $output.= "\">".number_format( $tab_infos[$i]['temps'], 2, '.', ' ')." ms</div></th>
    362                         <td $class>".$tab_infos[$i]['tn_name']."</td>
    363                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['tn_size']."</td>
    364                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['tn_width']."</td>
    365                         <td $class style=\"text-align:right;\">".$tab_infos[$i]['tn_height']."</td>
    366                 </tr>";
    367       }
    368       $output.= "
    369                 <tr>
    370                         <td colspan=\"10\">&nbsp;</td>
    371                 </tr>
    372         </table>
    373         <table style=\"margin:auto;border:1px solid black;\">
    374                 <tr>
    375                         <td colspan=\"2\" style=\"text-align:center;font-weight:bold;\" class=\"row2\">".$lang['tn_stats']."</td>
    376                 </tr>
    377                 <tr>
    378                         <td>".$lang['tn_stats_nb']." : </td>
    379                         <td style=\"text-align:center;\">".sizeof( $temps )."</td>
    380                 </tr>
    381                 <tr>
    382                         <td>".$lang['tn_stats_total']." : </td>
    383                         <td style=\"text-align:right;\">".number_format( array_sum( $temps ), 2, '.', ' ')." ms</td>
    384                 </tr>
    385                 <tr>
    386                         <td>".$lang['tn_stats_max']." : </td>
    387                         <td style=\"text-align:right;\">".number_format( $max, 2, '.', ' ')." ms</td>
    388                 </tr>
    389                 <tr>
    390                         <td>".$lang['tn_stats_min']." : </td>
    391                         <td style=\"text-align:right;\">".number_format( $min, 2, '.', ' ')." ms</td>
    392                 </tr>
    393                 <tr>
    394                         <td>".$lang['tn_stats_mean']." : </td>
    395                         <td style=\"text-align:right;\">".number_format( array_moy( $temps ), 2, '.', ' ')." ms</td>
    396                 </tr>
    397         </table>
    398         <table>
    399                 <tr>
    400                         <td>&nbsp;</td>
    401                 </tr>
    402         </table>";
    403     }
    404     else
    405     {
    406       $output.= "
    407         <div class=\"erreur\" style=\"margin-top:10px;\">".$lang['tn_err']."</div>
    408         <div class=\"erreur\" style=\"text-align:left;margin-left:20px;\">
    409                 <ul>
    410                         $erreur
    411                 </ul>
    412         </div>";
    413     }
    414   }
    415   //-------------------------------------paramètres de miniaturisation
    416   if ( sizeof( $images ) != 0 )
    417   {
    418     $output.= "
    419         <style>
    420                 div.key
    421                 {
    422                         margin-left : 10px;
    423                 }
    424                 td.choice
    425                 {
    426                         text-align : center;
    427                 }
    428         </style>";
    429     $output.= "
    430         <form method=\"post\" action=\"".add_session_id_to_url( "./admin.php?page=thumbnail&amp;dir=".$HTTP_GET_VARS['dir'] )."\">
    431         <table style=\"width:100%;\">
    432                 <tr>
    433                         <th colspan=\"3\">".$lang['tn_params_title']."</th>
    434                 </tr>";
    435     $output.= "
    436                 <tr>
    437                         <td colspan=\"3\">&nbsp;</td>
    438                 </tr>";
    439     $output.= "
    440                 <tr>
    441                         <td><div class=\"key\">".$lang['tn_params_GD']."</div></td>
    442                         <td class=\"choice\">
    443                                 <input type=\"radio\" name=\"gd\" value=\"2\"/ checked=\"checked\">2.x
    444                                 <input type=\"radio\" name=\"gd\" value=\"1\"";
    445     if ( $HTTP_POST_VARS['gd'] == 1 )
    446     {
    447       $output.= " checked=\"checked\"";
    448     }
    449     $output.= "/>1.x
    450                         </td>
    451                         <td style=\"width:50%;\" class=\"row2\">".$lang['tn_params_GD_info']."</td>
    452                 </tr>
    453                 <tr>
    454                         <td><div class=\"key\">".$lang['tn_width']."</div></td>
    455                         <td class=\"choice\"><input type=\"text\" name=\"width\" value=\"";
    456     if ( isset( $HTTP_POST_VARS['width'] ) )
    457     {
    458       $output.= $HTTP_POST_VARS['width'];
    459     }
    460     else
    461     {
    462       $output.= "128";
    463     }
    464     $output.="\"/></td>
    465                         <td class=\"row2\">".$lang['tn_params_width_info']."</td>
    466                 </tr>
    467                 <tr>
    468                         <td><div class=\"key\">".$lang['tn_height']."</div></td>
    469                         <td class=\"choice\"><input type=\"text\" name=\"height\" value=\"";
    470     if ( isset( $HTTP_POST_VARS['height'] ) )
    471     {
    472       $output.= $HTTP_POST_VARS['height'];
    473     }
    474     else
    475     {
    476       $output.= "96";
    477     }
    478     $output.="\"/></td>
    479                         <td class=\"row2\">".$lang['tn_params_height_info']."</td>
    480                 </tr>
    481                 <tr>
    482                         <td><div class=\"key\">".$lang['tn_params_create']."</div></td>
    483                         <td class=\"choice\">
    484                                 <select name=\"n\">
    485                                         <option>5</option>
    486                                         <option>10</option>
    487                                         <option>20</option>
    488                                         <option>40</option>
    489                                 </select>
    490                         </td>
    491                         <td class=\"row2\">".$lang['tn_params_create_info']."</td>
    492                 </tr>
    493                 <tr>
    494                         <td><div class=\"key\">".$lang['tn_params_format']."</div></td>
    495                         <td class=\"choice\"><span style=\"font-weight:bold;\">jpeg</span></td>
    496                         <td class=\"row2\">".$lang['tn_params_format_info']."</td>
    497                 </tr>
    498                 <tr>
    499                         <td colspan=\"3\">&nbsp;</td>
    500                 </tr>
    501                 <tr>
    502                         <td colspan=\"3\" style=\"text-align:center;\">
    503                                 <input type=\"submit\" name=\"submit\" value=\"".$lang['submit']."\"/>
    504                         </td>
    505                 </tr>";
    506     $output.= "
    507         </table>
    508         </form>";
    509     //-----------------------------------liste des images sans miniature
    510     $images = get_images_without_thumbnail( $HTTP_GET_VARS['dir'] );
    511     $style = "class=\"row2\" style=\"text-align:center;font-weight:bold;";
    512     $output.= "
    513         <table style=\"width:100%;\">
    514                 <tr>
    515                         <th colspan=\"5\"><span style=\"color:#006699;\">".sizeof( $images )."</span> ".$lang['tn_alone_title']."</th>
    516                 </tr>
    517                 <tr>
    518                         <td ".$style."\">&nbsp;</td>
    519                         <td ".$style."width:50%;\">".$lang['tn_picture']."</td>
    520                         <td ".$style."width:17%;\">".$lang['tn_filesize']."</td>
    521                         <td ".$style."width:17%;\">".$lang['tn_width']."</td>
    522                         <td ".$style."width:16%;\">".$lang['tn_height']."</td>
    523                 </tr>";
    524     for ( $i = 0; $i < sizeof( $images ); $i++ )
    525     {
    526       $num = $i + 1;
    527       $class = "";
    528       if ( $i%2 == 1 )
    529       {
    530         $class = " class=\"row2\"";
    531       }
    532       $output.= "
    533                 <tr>
    534                         <td class=\"row2\">".$num."</td>
    535                         <td $class><div style=\"margin-left:10px;\">".$images[$i]['name']."</div></td>
    536                         <td $class><div style=\"margin-left:10px;\">".$images[$i]['size']."</div></td>
    537                         <td $class><div style=\"margin-left:10px;\">".$images[$i]['width']."</div></td>
    538                         <td $class><div style=\"margin-left:10px;\">".$images[$i]['height']."</div></td>
    539                 </tr>";
    540     }
    541     $output.= "
    542         </table>";
    543   }
    544 }
    545 //-----------------------------------liste des répertoires
    546 //-------------------------si aucun répertoire selectionné
     405        $vtp->setVar( $sub, 'remaining.class', 'row2' );
     406      }
     407      $vtp->setVar( $sub, 'remaining.num',      ($i+1) );
     408      $vtp->setVar( $sub, 'remaining.file',     $picture['name'] );
     409      $vtp->setVar( $sub, 'remaining.filesize', $picture['size'] );
     410      $vtp->setVar( $sub, 'remaining.width',    $picture['width'] );
     411      $vtp->setVar( $sub, 'remaining.height',   $picture['height'] );
     412      $vtp->closeSession( $sub, 'remaining' );
     413    }
     414    $vtp->closeSession( $sub, 'remainings' );
     415  }
     416}
     417//-------------------------------------------------------------- directory list
    547418else
    548419{
    549   $output = "
    550                 <table style=\"width:100%;\">
    551                         <tr>
    552                                 <th>".$lang['tn_dirs_title']."</th>
    553                         </tr>";
    554   $output.= "
    555                         <tr>
    556                                 <td>
    557                                         <div class=\"retrait\">
    558                                                 <img src=\"".$conf['lien_puce']."\" alt=\"\"/>galleries";
    559   $output.= "<br />";
    560   $output.= get_displayed_dirs( "../galleries", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" );
    561   $output.= "
    562                                         </div>
    563                                 </td>
    564                         </tr>
    565                 </table>";
    566 }
    567 echo $output;
     420  $vtp->addSession( $sub, 'directory_list' );
     421  get_displayed_dirs( '../galleries', 60 );
     422  $vtp->closeSession( $sub, 'directory_list' );
     423}
     424//----------------------------------------------------------- sending html code
     425$vtp->Parse( $handle , 'sub', $sub );
    568426?>
  • trunk/admin/update.php

    r19 r26  
    188188  $pictures = array();         
    189189  $tn_ext = '';
    190   if ( $opendir = opendir ( $rep ) )
    191   {
    192     while ( $file = readdir ( $opendir ) )
     190  if ( $opendir = opendir( $rep ) )
     191  {
     192    while ( $file = readdir( $opendir ) )
    193193    {
    194194      if ( is_file( $rep.'/'.$file ) and is_image( $rep.'/'.$file ) )
    195195      {
    196196        // is the picture waiting for validation by an administrator ?
    197         $query = 'SELECT id';
     197        $query = 'SELECT id,validated,infos';
    198198        $query.= ' FROM '.PREFIX_TABLE.'waiting';
    199199        $query.= ' WHERE cat_id = '.$category_id;
     
    201201        $query.= ';';
    202202        $result = mysql_query( $query );
    203         if ( mysql_num_rows( $result ) == 0 )
     203        $waiting = mysql_fetch_array( $result );
     204        if (mysql_num_rows( $result ) == 0 or $waiting['validated'] == 'true')
    204205        {
    205206          if ( $tn_ext = TN_exists( $rep, $file ) )
     
    215216            {
    216217              $picture = array();
    217               $picture['file'] = $file;
    218               $picture['tn_ext'] = $tn_ext;
     218              $picture['file']     = $file;
     219              $picture['tn_ext']   = $tn_ext;
    219220              $picture['date'] = date( 'Y-m-d', filemtime ( $rep.'/'.$file ) );
    220221              $picture['filesize'] = floor( filesize( $rep.'/'.$file ) / 1024);
    221222              $image_size = @getimagesize( $rep.'/'.$file );
    222               $picture['width'] = $image_size[0];
    223               $picture['height'] = $image_size[1];
     223              $picture['width']    = $image_size[0];
     224              $picture['height']   = $image_size[1];
     225              if ( $waiting['validated'] == 'true' )
     226              {
     227                // retrieving infos from the XML description of
     228                // $waiting['infos']
     229                $infos = nl2br( $waiting['infos'] );
     230                $picture['author']        = getAttribute( $infos, 'author' );
     231                $picture['comment']       = getAttribute( $infos, 'comment' );
     232                $unixtime = getAttribute( $infos, 'date_creation' );
     233                $picture['date_creation'] = '';
     234                if ( $unixtime != '' )
     235                {
     236                  $picture['date_creation'] = date( 'Y-m-d', $unixtime );
     237                }
     238                $picture['name']          = getAttribute( $infos, 'name' );
     239                // deleting the waiting element
     240                $query = 'DELETE FROM '.PREFIX_TABLE.'waiting';
     241                $query.= ' WHERE id = '.$waiting['id'];
     242                $query.= ';';
     243                mysql_query( $query );
     244              }
    224245              array_push( $pictures, $picture );
    225246            }
     
    243264  foreach ( $pictures as $picture ) {
    244265    $query = 'INSERT INTO '.PREFIX_TABLE.'images';
    245     $query.= ' (file,cat_id,date_available,tn_ext,filesize,width,height)';
     266    $query.= ' (file,cat_id,date_available,tn_ext,filesize,width,height';
     267    $query.= ',name,author,comment,date_creation)';
    246268    $query.= ' VALUES ';
    247269    $query.= "('".$picture['file']."','".$category_id."'";
    248270    $query.= ",'".$picture['date']."','".$picture['tn_ext']."'";
    249271    $query.= ",'".$picture['filesize']."','".$picture['width']."'";
    250     $query.= ",'".$picture['height']."')";
    251     $query.= ';';
     272    $query.= ",'".$picture['height']."','".$picture['name']."'";
     273    $query.= ",'".$picture['author']."','".$picture['comment']."'";
     274    if ( $picture['date_creation'] != '' )
     275    {
     276      $query.= ",'".$picture['date_creation']."'";
     277    }
     278    else
     279    {
     280      $query.= ',NULL';
     281    }
     282    $query.= ');';
    252283    mysql_query( $query );
    253284    $count_new++;
     
    284315               
    285316  $query = 'UPDATE '.PREFIX_TABLE.'categories';
    286   $query.= " SET date_dernier = '".$date_last."'";
     317  $query.= " SET date_last = '".$date_last."'";
    287318  $query.= ', nb_images = '.$nb_images;
    288319  $query.= ' where id = '.$category_id;
  • trunk/admin/waiting.php

    r19 r26  
    11<?php
    22/***************************************************************************
    3  *                     waiting.php is a part of PhpWebGallery              *
     3 *                                waiting.php                              *
    44 *                            -------------------                          *
    5  *   last update          : Monday, October 28, 2002                         *
    6  *   email                : pierrick@z0rglub.com                           *
     5 *   application          : PhpWebGallery 1.3                              *
     6 *   author               : Pierrick LE GALL <pierrick@z0rglub.com>        *
    77 *                                                                         *
    88 ***************************************************************************/
     
    1515 *                                                                         *
    1616 ***************************************************************************/
    17         include_once( "./include/isadmin.inc.php" );
    18         //-------------------------------------------------------------- mise à jour
    19         if ( isset( $HTTP_POST_VARS['submit'] ) )
    20         {
    21                 $query = "select id,cat_id,file,tn_ext";
    22                 $query.= " from PREFIX_TABLE"."waiting";
    23                 $query.= ";";
    24                 $result = mysql_query( $query );
    25                 while ( $row = mysql_fetch_array( $result ) )
    26                 {
    27                         $key = "validate-".$row['id'];
    28                         if ( isset( $HTTP_POST_VARS[$key] ) )
    29                         {
    30                                 $query = "delete from PREFIX_TABLE"."waiting";
    31                                 $query.= " where id = ".$row['id'];
    32                                 $query.= ";";
    33                                 mysql_query( $query );
    34                                 if ( $HTTP_POST_VARS[$key] == "false" )
    35                                 {
    36                                         // we have to delete the picture and the thumbnail if it exists
    37                                         $cat = get_cat_info( $row['cat_id'] );
    38                                         unlink( ".".$cat['dir'].$row['file'] );
    39                                         if ( $row['tn_ext'] != "" )
    40                                         {
    41                                                 $file = substr ( $row['file'], 0, strrpos ( $row['file'], ".") );
    42                                                 unlink( ".".$cat['dir']."thumbnail/".$conf['prefix_thumbnail'].$file.".".$row['tn_ext'] );
    43                                         }
    44                                 }
    45                         }
    46                 }
    47         }
    48         //--------------------------------------------------------------- formulaire
    49         $cat_names = array();
    50         echo "
    51                 <form action=\"".add_session_id_to_url( "./admin.php?page=waiting" )."\" method=\"post\">
    52                         <table style=\"width:100%;\">
    53                                 <tr>
    54                                         <th style=\"width:20%;\">".$lang['category']."</th>
    55                                         <th style=\"width:20%;\">".$lang['date']."</th>
    56                                         <th style=\"width:20%;\">".$lang['file']."</th>
    57                                         <th style=\"width:20%;\">".$lang['thumbnail']."</th>
    58                                         <th style=\"width:20%;\">".$lang['author']."</th>
    59                                         <th style=\"width:1px;\">&nbsp;</th>
    60                                 </tr>";
    61         $query = "select id,cat_id,file,username,mail_address,date,tn_ext";
    62         $query.= " from PREFIX_TABLE"."waiting";
    63         $query.= " order by cat_id";
    64         $query.= ";";
    65         $result = mysql_query( $query );
    66         $i = 0;
    67         while ( $row = mysql_fetch_array( $result ) )
    68         {
    69                 $style = "";
    70                 if ( $i%2 == 0 )
    71                 {
    72                         $style = "class=\"row2\"";
    73                 }
    74                 if ( !isset( $cat_names[$row['cat_id']] ) )
    75                 {
    76                         $cat = get_cat_info( $row['cat_id'] );
    77                         $cat_names[$row['cat_id']] = array();
    78                         $cat_names[$row['cat_id']]['dir'] = ".".$cat['dir'];
    79                         $cat_names[$row['cat_id']]['display_name'] = get_cat_display_name( $cat['name'], " - ", "font-style:italic;" );
    80                 }
    81                 echo "
    82                                 <tr>
    83                                         <td $style style=\"white-space:nowrap;\">".$cat_names[$row['cat_id']]['display_name']."</td>
    84                                         <td $style style=\"white-space:nowrap;\">".$lang['day'][date( "w", $row['date'] )].date( " j ", $row['date'] ).$lang['month'][date( "n", $row['date'] )].date( " Y G:i", $row['date'] )."</td>
    85                                         <td $style style=\"white-space:nowrap;\">
    86                                                 <a target=\"_blank\" href=\"".$cat_names[$row['cat_id']]['dir'].$row['file']."\">".$row['file']."</td>
    87                                         </td>
    88                                         <td $style style=\"white-space:nowrap;\">";
    89                 if ( $row['tn_ext'] != "" )
    90                 {
    91                         $file = substr ( $row['file'], 0, strrpos ( $row['file'], ".") );
    92                         echo "<a target=\"_blank\" href=\"".$cat_names[$row['cat_id']]['dir']."thumbnail/".$conf['prefix_thumbnail'].$file.".".$row['tn_ext']."\">".$conf['prefix_thumbnail'].$file.".".$row['tn_ext'];
    93                 }
    94                 else
    95                 {
    96                         echo "&nbsp;";
    97                 }
    98                 echo "
    99                                         </td>
    100                                         <td $style style=\"white-space:nowrap;\">
    101                                                 <a href=\"mailto:".$row['mail_address']."\">".$row['username']."</a>
    102                                         </td>
    103                                         <td $style style=\"white-space:nowrap;\">
    104                                                 <input type=\"radio\" name=\"validate-".$row['id']."\" value=\"true\" />".$lang['submit']."
    105                                                 <input type=\"radio\" name=\"validate-".$row['id']."\" value=\"false\" />".$lang['delete']."
    106                                         </td>
    107                                 </tr>";
    108                 $i++;
    109         }
    110         echo "
    111                                 <tr>
    112                                         <td colspan=\"5\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"".$lang['submit']."\" style=\"margin:5px;\" /></td>
    113                                 </tr>";
    114         echo "
    115                         </table>
    116                 </form>";
     17include_once( './include/isadmin.inc.php' );
     18//--------------------------------------------------------------------- updates
     19if ( isset( $_POST['submit'] ) )
     20{
     21  $query = 'SELECT id,cat_id,file,tn_ext';
     22  $query.= ' FROM '.PREFIX_TABLE.'waiting';
     23  $query.= " WHERE validated = 'false'";
     24  $query.= ';';
     25  $result = mysql_query( $query );
     26  while ( $row = mysql_fetch_array( $result ) )
     27  {
     28    $key = 'validate-'.$row['id'];
     29    if ( isset( $_POST[$key] ) )
     30    {
     31      if ( $_POST[$key] == 'true' )
     32      {
     33        // The uploaded element was validated, we have to set the
     34        // "validated" field to "true"
     35        $query = 'UPDATE '.PREFIX_TABLE.'waiting';
     36        $query.= " SET validated = 'true'";
     37        $query.= ' WHERE id = '.$row['id'];
     38        $query.= ';';
     39        mysql_query( $query );
     40      }
     41      else
     42      {
     43        // The uploaded element was refused, we have to delete its reference
     44        // in the database and to delete the element as well.
     45        $query = 'DELETE FROM '.PREFIX_TABLE.'waiting';
     46        $query.= ' WHERE id = '.$row['id'];
     47        $query.= ';';
     48        mysql_query( $query );
     49        // deletion of the associated files
     50        $cat = get_cat_info( $row['cat_id'] );
     51        unlink( '.'.$cat['dir'].$row['file'] );
     52        if ( $row['tn_ext'] != '' )
     53        {
     54          $thumbnail = $conf['prefix_thumbnail'];
     55          $thumbnail.= get_filename_wo_extension( $row['file'] );
     56          $thumbnail.= '.'.$row['tn_ext'];
     57          $url = '.'.$cat['dir'].'thumbnail/'.$thumbnail;
     58          unlink( $url );
     59        }
     60      }
     61    }
     62  }
     63}
     64//----------------------------------------------------- template initialization
     65$sub = $vtp->Open( '../template/'.$user['template'].'/admin/waiting.vtp' );
     66$tpl = array( 'category','date','author','thumbnail','file','delete',
     67              'submit' );
     68templatize_array( $tpl, 'lang', $sub );
     69//---------------------------------------------------------------- form display
     70$cat_names = array();
     71$query = 'SELECT id,cat_id,file,username,mail_address,date,tn_ext';
     72$query.= ' FROM '.PREFIX_TABLE.'waiting';
     73$query.= " WHERE validated = 'false'";
     74$query.= ' ORDER BY cat_id';
     75$query.= ';';
     76$result = mysql_query( $query );
     77$i = 0;
     78while ( $row = mysql_fetch_array( $result ) )
     79{
     80  $vtp->addSession( $sub, 'picture' );
     81  $vtp->setVar( $sub, 'picture.id', $row['id'] );
     82  if ( $i++ % 2 == 0 )
     83  {
     84    $vtp->setVar( $sub, 'picture.class', 'row2' );
     85  }
     86  if ( !isset( $cat_names[$row['cat_id']] ) )
     87  {
     88    $cat = get_cat_info( $row['cat_id'] );
     89    $cat_names[$row['cat_id']] = array();
     90    $cat_names[$row['cat_id']]['dir'] = '.'.$cat['dir'];
     91    $cat_names[$row['cat_id']]['display_name'] =
     92      get_cat_display_name( $cat['name'], ' &gt; ', 'font-weight:bold;' );
     93  }
     94  // category name
     95  $vtp->setVar( $sub, 'picture.cat_name',
     96                $cat_names[$row['cat_id']]['display_name'] );
     97  // date displayed like this (in English ) :
     98  //                     Sunday 15 June 2003 21:29
     99  $date = $lang['day'][date( 'w', $row['date'] )];   // Sunday
     100  $date.= date( ' j ', $row['date'] );               // 15
     101  $date.= $lang['month'][date( 'n', $row['date'] )]; // June
     102  $date.= date( ' Y G:i', $row['date'] );            // 2003 21:29
     103  $vtp->setVar( $sub, 'picture.date', $date );
     104  // file preview link
     105  $url = $cat_names[$row['cat_id']]['dir'].$row['file'];
     106  $vtp->setVar( $sub, 'picture.preview_url', $url );
     107  // file name
     108  $vtp->setVar( $sub, 'picture.file', $row['file'] );
     109  // is there an existing associated thumnail ?
     110  if ( $row['tn_ext'] != '' )
     111  {
     112    $vtp->addSession( $sub, 'thumbnail' );
     113    $thumbnail = $conf['prefix_thumbnail'];
     114    $thumbnail.= get_filename_wo_extension( $row['file'] );
     115    $thumbnail.= '.'.$row['tn_ext'];
     116    $url = $cat_names[$row['cat_id']]['dir'].'thumbnail/'.$thumbnail;
     117    $vtp->setVar( $sub, 'thumbnail.preview_url', $url );
     118    $vtp->setVar( $sub, 'thumbnail.file', $thumbnail );
     119    $vtp->closeSession( $sub, 'thumbnail' );
     120  }
     121  else
     122  {
     123    $vtp->addSession( $sub, 'no_thumbnail' );
     124    $vtp->closeSession( $sub, 'no_thumbnail' );
     125  }
     126  // username and associated mail address
     127  $vtp->setVar( $sub, 'picture.mail_address', $row['mail_address'] );
     128  $vtp->setVar( $sub, 'picture.username', $row['username'] );
     129
     130  $vtp->closeSession( $sub, 'picture' );
     131}
     132//----------------------------------------------------------- sending html code
     133$vtp->Parse( $handle , 'sub', $sub );
    117134?>
  • trunk/category.php

    r20 r26  
    2121//----------------------------------------------------------- personnal include
    2222include_once( './include/init.inc.php' );
     23$output.= 'after init.inc.php : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    2324//-------------------------------------------------- access authorization check
     25// creating the plain structure : array of all the available categories and
     26// their relative informations, see the definition of the function
     27// get_plain_structure for further details.
     28$page['plain_structure'] = get_plain_structure();
     29
    2430check_cat_id( $_GET['cat'] );
    2531check_login_authorization();
     
    3541if ( isset ( $_GET['expand'] ) and $_GET['expand'] != 'all' )
    3642{
    37   $j = 0;
    38   $tab_expand = explode( ",", $_GET['expand'] );
    39   $size = sizeof( $tab_expand );
    40   for ( $i = 0; $i < $size; $i++ )
    41   {
    42     if ( is_numeric( $tab_expand[$i] ) )
    43     {
    44       $page['tab_expand'][$j++] = $tab_expand[$i];
    45     }
     43  $tab_expand = explode( ',', $_GET['expand'] );
     44  foreach ( $tab_expand as $id ) {
     45    if ( is_numeric( $id ) ) array_push( $page['tab_expand'], $id );
    4646  }
    4747  $page['expand'] = implode( ',', $page['tab_expand'] );
     
    5050// The $page['expand'] equals 'all' and
    5151// $page['tab_expand'] contains all the authorized cat ids
    52 if ( $user['expand'] == 'true' or $_GET['expand'] == 'all' )
     52if ( $user['expand'] or $_GET['expand'] == 'all' )
    5353{
    5454  $page['tab_expand'] = array();
    55   $query = 'SELECT id';
    56   $query.= ' FROM '.PREFIX_TABLE.'categories';
    57   $query.= ' WHERE id_uppercat IS NULL;';
    58   $result = mysql_query( $query );
    59   $i = 0;
    60   while ( $row = mysql_fetch_array( $result ) )
    61   {
    62     $page['tab_expand'][$i++] = $row['id'];
    63   }
    6455  $page['expand'] = 'all';
    6556}
     
    8475  $page['start']*= $user['nb_image_page'];
    8576}
     77// creating the structure of the categories (useful for displaying the menu)
     78$page['structure'] = create_structure( '', $user['restrictions'] );
     79$page['structure'] = update_structure( $page['structure'] );
    8680initialize_category();
     81$output.= 'before template init : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    8782//----------------------------------------------------- template initialization
    8883$vtp = new VTemplate;
    8984$handle = $vtp->Open( './template/'.$user['template'].'/category.vtp' );
    9085initialize_template();
    91 
    92 $tpl = array( 'categories','hint_category','sub-cat','images_available',
    93               'total','title_menu','nb_image_category','send_mail',
    94               'title_send_mail','generation_time','upload_name',
    95               'connected_user','recent_image','days','generation_time',
    96               'favorite_cat_hint','favorite_cat','stats',
    97               'most_visited_cat_hint','most_visited_cat','recent_cat',
    98               'recent_cat_hint' );
     86$output.= 'before lang array : '.get_elapsed_time( $t2, get_moment() ).'<br />';
     87$tpl = array(
     88  'categories','hint_category','sub-cat','images_available','total',
     89  'title_menu','nb_image_category','send_mail','title_send_mail',
     90  'generation_time','connected_user','recent_image','days','generation_time',
     91  'favorite_cat_hint','favorite_cat','stats','most_visited_cat_hint',
     92  'most_visited_cat','recent_cat','recent_cat_hint','upload_picture' );
    9993templatize_array( $tpl, 'lang', $handle );
     94$output.= 'after lang array : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    10095
    10196$tpl = array( 'mail_webmaster','webmaster','top_number','version','site_url' );
    10297templatize_array( $tpl, 'conf', $handle );
     98$output.= 'after conf array : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    10399
    104100$tpl = array( 'short_period','long_period','lien_collapsed', 'username' );
     
    112108$icon_long = get_icon( time() - ( $user['short_period'] * 24 * 60 * 60 + 1 ) );
    113109$vtp->setGlobalVar( $handle, 'icon_long', $icon_long );
    114 $nb_total_pictures = get_total_image( "", $user['restrictions'] );
     110$nb_total_pictures = count_images( $page['structure'] );
    115111$vtp->setGlobalVar( $handle, 'nb_total_pictures',$nb_total_pictures );
    116112//------------------------------------------------------------- categories menu
     113$output.= 'before menu : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    117114// normal categories
    118 display_cat( '', '&nbsp;', $user['restrictions'], $page['tab_expand'] );
     115foreach ( $page['structure'] as $category ) {
     116  // display category is a function relative to the template
     117  display_category( $category, '&nbsp;', $handle );
     118}
     119$output.= 'after menu : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    119120// favorites cat
    120121if ( !$user['is_the_guest'] )
    121122{
    122123  $vtp->addSession( $handle, 'favorites' );
    123   $url = add_session_id('./category.php?cat=fav&amp;expand='.$page['expand'] );
    124   $vtp->setVar( $handle, 'favorites.url', $url );
     124  $url = './category.php?cat=fav&amp;expand='.$page['expand'];
     125  $vtp->setVar( $handle, 'favorites.url', add_session_id( $url ) );
    125126  // searching the number of favorite picture
    126127  $query = 'SELECT COUNT(*) AS count';
     
    133134}
    134135// most visited pictures category
    135 $url = add_session_id( './category.php?cat=most_visited'.
    136                        '&amp;expand='.$page['expand'] );
    137 $vtp->setGlobalVar( $handle, 'most_visited_url', $url );
     136$url = './category.php?cat=most_visited&amp;expand='.$page['expand'];
     137$vtp->setGlobalVar( $handle, 'most_visited_url', add_session_id( $url ) );
    138138// recent pictures
    139 $url = add_session_id( './category.php?cat=recent'.
    140                        '&amp;expand='.$page['expand'] );
    141 $vtp->setGlobalVar( $handle, 'recent_url', $url );
     139$url = './category.php?cat=recent&amp;expand='.$page['expand'];
     140$vtp->setGlobalVar( $handle, 'recent_url', add_session_id( $url ) );
    142141//--------------------------------------------------------------------- summary
    143142$vtp->addSession( $handle, 'summary' );
     
    146145{
    147146  $vtp->setVar( $handle, 'summary.title', '' );
    148   $vtp->setVar( $handle, 'summary.name',
    149                 replace_space( $lang['change_login'] ) );
     147  $vtp->setVar( $handle, 'summary.name',replace_space($lang['change_login']));
    150148}
    151149else
    152150{
    153151  $vtp->setVar( $handle, 'summary.title', $lang['hint_login'] );
    154   $vtp->setVar( $handle, 'summary.name',
    155                 replace_space( $lang['login'] ) );
     152  $vtp->setVar( $handle, 'summary.name',  replace_space( $lang['login'] ) );
    156153}
    157154$vtp->closeSession( $handle, 'summary' );
     
    186183// about link
    187184$vtp->addSession( $handle, 'summary' );
    188 $vtp->setVar( $handle, 'summary.url',
    189               add_session_id( './about.php?'.$_SERVER['QUERY_STRING'] ) );
     185$vtp->setVar( $handle, 'summary.url', './about.php?'.
     186              str_replace( '&', '&amp;', $_SERVER['QUERY_STRING'] ) );
    190187$vtp->setVar( $handle, 'summary.title', $lang['hint_about'] );
    191188$vtp->setVar( $handle, 'summary.name', replace_space( $lang['about'] ) );
     
    227224}
    228225//------------------------------------------------------------------ thumbnails
     226$output.= 'before thumbs : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    229227if ( isset( $page['cat'] ) and $page['cat_nb_images'] != 0 )
    230228{
     
    318316      $query.= ' FROM '.PREFIX_TABLE.'comments';
    319317      $query.= ' WHERE image_id = '.$row['id'];
     318      $query.= " AND validated = 'true'";
    320319      $query.= ';';
    321320      $row = mysql_fetch_array( mysql_query( $query ) );
     
    342341  $vtp->closeSession( $handle, 'thumbnails' );
    343342}
    344 elseif ( isset( $page['cat'] )
    345          and is_numeric( $page['cat'] )
    346          and $page['cat_nb_images'] == 0 )
     343//-------------------------------------------------------------- empty category
     344elseif ( ( isset( $page['cat'] )
     345           and is_numeric( $page['cat'] )
     346           and $page['cat_nb_images'] == 0 )
     347         or $_GET['cat'] == '' )
    347348{
    348349  $vtp->addSession( $handle, 'thumbnails' );
    349350  $vtp->addSession( $handle, 'line' );
    350351
    351   $subcats = get_non_empty_sub_cat_ids( $page['cat'] );
     352  $subcats = get_non_empty_subcat_ids( $page['cat'] );
    352353  $cell_number = 1;
    353   foreach ( $subcats as $id => $subcat ) {
    354     $result = get_cat_info( $subcat['non_empty_cat'] );
    355     $cat_directory = $result['dir'];
    356 
    357     $name = '[ <span style="font-weight:bold;">';
    358     if ( $subcat['name'] != '' )
    359     {
    360       $name.= $subcat['name'];
    361     }
    362     else
    363     {
    364       $name.= $subcat['dir'];
    365     }
     354  $i = 0;
     355  foreach ( $subcats as $subcat_id => $non_empty_id ) {
     356    $subcat_infos    = get_cat_info( $subcat_id );
     357    $non_empty_infos = get_cat_info( $non_empty_id );
     358
     359    $name ='[ <span style="font-weight:bold;">';
     360    $name.= $subcat_infos['name'][0];
    366361    $name.= '</span> ]';
    367     $name = replace_space( $name );
    368362   
    369363    $query = 'SELECT file,tn_ext';
    370364    $query.= ' FROM '.PREFIX_TABLE.'images';
    371     $query.= ' WHERE cat_id = '.$subcat['non_empty_cat'];
     365    $query.= ' WHERE cat_id = '.$non_empty_id;
    372366    $query.= ' ORDER BY RAND()';
    373367    $query.= ' LIMIT 0,1';
    374368    $query.= ';';
    375369    $image_result = mysql_query( $query );
    376     $image_row = mysql_fetch_array( $image_result );
     370    $image_row    = mysql_fetch_array( $image_result );
    377371
    378372    $file = get_filename_wo_extension( $image_row['file'] );
    379373
    380374    // creating links for thumbnail and associated category
    381     $lien_image = $cat_directory;
    382     $lien_thumbnail = $lien_image;
    383     $lien_thumbnail.= 'thumbnail/'.$conf['prefix_thumbnail'];
    384     $lien_thumbnail.= $file.'.'.$image_row['tn_ext'];
    385     $lien_image.= $image_row['file'];
     375    $thumbnail_link = $non_empty_infos['dir'];
     376    $thumbnail_link.= 'thumbnail/'.$conf['prefix_thumbnail'];
     377    $thumbnail_link.= $file.'.'.$image_row['tn_ext'];
    386378
    387379    $thumbnail_title = $lang['hint_category'];
    388380
    389     $url_link = './category.php?cat='.$subcat['id'];
     381    $url_link = './category.php?cat='.$subcat_id;
    390382    if ( !in_array( $page['cat'], $page['tab_expand'] ) )
    391383    {
     
    394386    }
    395387    $url_link.= '&amp;expand='.$page['expand'];
    396     list( $year,$month,$day ) = explode( '-', $subcat['date_dernier'] );
     388    list( $year,$month,$day ) = explode( '-', $subcat_infos['date_last'] );
    397389    $date = mktime( 0, 0, 0, $month, $day, $year );
    398390
     
    400392    $vtp->addSession( $handle, 'thumbnail' );
    401393    $vtp->setVar( $handle, 'thumbnail.url', add_session_id( $url_link ) );
    402     $vtp->setVar( $handle, 'thumbnail.src', $lien_thumbnail );
     394    $vtp->setVar( $handle, 'thumbnail.src', $thumbnail_link );
    403395    $vtp->setVar( $handle, 'thumbnail.alt', $image_row['file'] );
    404396    $vtp->setVar( $handle, 'thumbnail.title', $thumbnail_title );
     
    412404      $cell_number = 1;
    413405      // we open a new line if the subcat was not the last one
    414       if ( $id < count( $subcats ) - 1 )
     406      if ( $i++ < count( $subcats ) - 1 )
    415407      {
    416408        $vtp->addSession( $handle, 'line' );
     
    418410    }
    419411  }
    420   if ( $id < count( $subcats ) - 1 )
     412  if ( $i < count( $subcats ) - 1 )
    421413  {
    422414    $vtp->closeSession( $handle, 'line' );
     
    424416  $vtp->closeSession( $handle, 'thumbnails' );
    425417}
     418$output.= 'after thumbs : '.get_elapsed_time( $t2, get_moment() ).'<br />';
    426419//------------------------------------------------------- category informations
    427420if ( isset ( $page['cat'] ) )
     
    470463//----------------------------------------------------------- html code display
    471464$code = $vtp->Display( $handle, 0 );
     465echo $output;
    472466echo $code;
    473467?>
  • trunk/identification.php

    r10 r26  
    5858$vtp->setGlobalVar( $handle, 'mail_webmaster',   $conf['mail_webmaster'] );
    5959// user
    60 $vtp->setGlobalVar( $handle, 'page_style',       $user['style'] );
    61 $vtp->setGlobalVar( $handle, 'user_theme',       $user['theme'] );
    62 // structure
    63 $vtp->setGlobalVar( $handle, 'frame_start',      get_frame_start() );
    64 $vtp->setGlobalVar( $handle, 'frame_begin',      get_frame_begin() );
    65 $vtp->setGlobalVar( $handle, 'frame_end',        get_frame_end() );
     60$vtp->setGlobalVar( $handle, 'user_template',    $user['template'] );
     61initialize_template();
    6662//-------------------------------------------------------------- errors display
    6763if ( sizeof( $error ) != 0 )
  • trunk/include/config.inc.php

    r21 r26  
    2323include_once( PREFIX_INCLUDE.'./include/functions.inc.php' );
    2424include_once( PREFIX_INCLUDE.'./include/vtemplate.class.php' );
    25 
    2625// How to change the order of display for images in a category ?
    2726//
     
    4039$conf['order_by'] = ' ORDER BY date_available DESC, file ASC';
    4140
    42 $conf['nb_image_row']       = array('4','5','6','7','8');
    43 $conf['nb_row_page']        = array('2','3','4','5','6','7','10','20','1000');
     41$conf['nb_image_row']       = array(4,5,6,7,8);
     42$conf['nb_row_page']        = array(2,3,4,5,6,7,10,20,1000);
     43$conf['slideshow_period']   = array(2,5,10);
     44$conf['last_days']          = array(1,2,3,10,30,365);
    4445$conf['version']            = '1.3';
    4546$conf['site_url']           = 'http://www.phpwebgallery.net';
     
    5960                'upload_available', 'upload_maxfilesize', 'upload_maxwidth',
    6061                'upload_maxheight', 'upload_maxwidth_thumbnail',
    61                 'upload_maxheight_thumbnail' );
     62                'upload_maxheight_thumbnail','log','comments_validation' );
    6263
    63 $query  = 'SELECT';
     64$query  = 'SELECT ';
    6465foreach ( $infos as $i => $info ) {
    6566  if ( $i > 0 ) $query.= ',';
    66   else          $query.= ' ';
    6767  $query.= $info;
    6868}
     
    8282  }
    8383}
    84 $conf['log']        = false;
    8584$conf['top_number'] = 20;
    8685?>
  • trunk/include/functions.inc.php

    r21 r26  
    6767function array_remove( $array, $value )
    6868{
    69   $i = 0;
    7069  $output = array();
    71   foreach ( $array as $v )
    72     {
    73       if ( $v != $value )
    74       {
    75         $output[$i++] = $v;
    76       }
    77     }
    78   return implode( ',', $output );
     70  foreach ( $array as $v ) {
     71    if ( $v != $value )
     72    {
     73      array_push( $output, $v );
     74    }
     75  }
     76  return $output;
    7977}
    8078
     
    321319function database_connection()
    322320{
    323 //   $xml_content = getXmlCode( PREFIXE_INCLUDE.'./include/database_config.xml' );
    324 //   $mysql_conf = getChild( $xml_content, 'mysql' );
    325 
    326 //   $cfgHote     = getAttribute( $mysql_conf, 'host' );
    327 //   $cfgUser     = getAttribute( $mysql_conf, 'user' );
    328 //   $cfgPassword = getAttribute( $mysql_conf, 'password' );
    329 //   $cfgBase     = getAttribute( $mysql_conf, 'base' );
    330 //   define( PREFIX_TABLE, getAttribute( $mysql_conf, 'tablePrefix' ) );
    331 
    332321  include( PREFIX_INCLUDE.'./include/mysql.inc.php' );
    333322  define( PREFIX_TABLE, $prefix_table );
     
    347336    $query = 'insert into '.PREFIX_TABLE.'history';
    348337    $query.= ' (date,login,IP,file,category,picture) values';
    349     $query.= " (".time().", '".$user['pseudo']."'";
     338    $query.= " (".time().", '".$user['username']."'";
    350339    $query.= ",'".$_SERVER['REMOTE_ADDR']."'";
    351340    $query.= ",'".$file."','".$category."','".$picture."');";
     
    358347  global $vtp, $lang, $page, $user, $conf;
    359348
    360   for( $i = 0; $i < sizeof( $array ); $i++ )
    361   {
    362     $vtp->setGlobalVar( $handle, $array[$i],
    363                         ${$global_array_name}[$array[$i]] );
     349  foreach ( $array as $value ) {
     350    $vtp->setGlobalVar( $handle, $value, ${$global_array_name}[$value] );
    364351  }
    365352}
  • trunk/include/functions_category.inc.php

    r21 r26  
    6060  if ( isset( $cat ) )
    6161  {
    62     if ( is_numeric( $cat ) )
    63     {
    64       $query = 'select id';
    65       $query.= ' from '.PREFIX_TABLE.'categories';
    66       $query.= ' where id = '.$cat;
     62    if ( isset( $page['plain_structure'] ) )
     63    {
     64      if ( isset( $page['plain_structure'][$cat] ) )
     65      {
     66        $page['cat'] = $cat;
     67      }
     68    }
     69    else if ( is_numeric( $cat ) )
     70    {
     71      $query = 'SELECT id';
     72      $query.= ' FROM '.PREFIX_TABLE.'categories';
     73      $query.= ' WHERE id = '.$cat;
    6774      $query. ';';
    6875      $result = mysql_query( $query );
     
    7279      }
    7380    }
    74     if ( $cat == 'fav' or $cat == 'search' or $cat == 'most_visited'
    75          or $cat == 'best_rated' or $cat == 'recent' )
     81    if ( $cat == 'fav'
     82         or $cat == 'search'
     83         or $cat == 'most_visited'
     84         or $cat == 'best_rated'
     85         or $cat == 'recent' )
    7686    {
    7787      $page['cat'] = $cat;
     
    8090}
    8191
    82 function display_cat( $id_uppercat, $indent, $restriction, $tab_expand )
    83 {
    84   global $user,$lang,$conf,$page,$vtp,$handle;
     92function get_plain_structure()
     93{
     94  $infos = array( 'name','id','date_last','nb_images','dir','id_uppercat',
     95                  'rank');
    8596 
    86   $query = 'select name,id,date_dernier,nb_images,dir';
    87   $query.= ' from '.PREFIX_TABLE.'categories';
    88   $query.= ' where id_uppercat';
    89   if ( $id_uppercat == "" )
    90   {
    91     $query.= ' is NULL';
    92   }
    93   else
    94   {
    95     $query.= ' = '.$id_uppercat;
    96   }
    97   $query.= ' order by rank asc;';
     97  $query = 'SELECT ';
     98  foreach ( $infos as $i => $info ) {
     99    if ( $i > 0 ) $query.= ',';
     100    $query.= $info;
     101  }
     102  $query.= ' FROM '.PREFIX_TABLE.'categories';
     103  $query.= ' ORDER BY id_uppercat ASC, rank ASC';
     104  $query.= ';';
     105
     106  $plain_structure = array();
    98107  $result = mysql_query( $query );
    99108  while ( $row = mysql_fetch_array( $result ) )
    100109  {
    101     if ( !in_array( $row['id'], $restriction ) )
    102     {
    103       $nb_subcats = get_nb_subcats( $row['id'] );
    104                                
    105       $expand = "";
    106       // si la catégorie n'a pas de sous catégorie
    107       // ou que l'on doit développer toutes les catégories par défaut
    108       // alors on utilise l'expand par défaut
    109       if ( $nb_subcats == 0 or $user['expand'] == "true" )
    110       {
    111         $expand = $page['expand'];
    112       }
    113       // si la catégorie n'est pas dans les catégories à développer
    114       // alors on l'ajoute aux catégories à développer
    115       else if ( !in_array( $row['id'], $tab_expand ) )
    116       {
    117         $expand = implode( ",", $tab_expand );
    118         if ( strlen( $expand ) > 0 )
    119         {
    120           $expand.= ",";
    121         }
    122         $expand.= $row['id'];
    123       }
    124       // si la catégorie est déjà dans les catégories à développer
    125       // alors on la retire des catégories à développer
    126       else
    127       {
    128         $expand = array_remove( $tab_expand, $row['id'] );
    129       }
    130       $url = "./category.php?cat=".$page['cat']."&amp;expand=$expand";
    131       if ( $page['cat'] == 'search' )
    132       {
    133         $url.= "&amp;search=".$_GET['search'].'&amp;mode='.$_GET['mode'];
    134       }
    135       $lien_cat = add_session_id( $url );
    136       if ( $row['name'] == "" )
    137       {
    138         $name = str_replace( "_", " ", $row['dir'] );
    139       }
    140       else
    141       {
    142         $name = $row['name'];
    143       }
    144 
    145       $vtp->addSession( $handle, 'category' );
    146       $vtp->setVar( $handle, 'category.indent', $indent );
    147 
    148       if ( $user['expand'] == "true" or $nb_subcats == 0 )
    149       {
    150         $vtp->addSession( $handle, 'bullet_wo_link' );
    151         $vtp->setVar( $handle, 'bullet_wo_link.bullet_url',
    152                       $user['lien_collapsed'] );
    153         $vtp->setVar( $handle, 'bullet_wo_link.bullet_alt', '&gt;' );
    154         $vtp->closeSession( $handle, 'bullet_wo_link' );
    155       }
    156       else
    157       {
    158         $vtp->addSession( $handle, 'bullet_w_link' );
    159         $vtp->setVar( $handle, 'bullet_w_link.bullet_link', $lien_cat );
    160         $vtp->setVar( $handle, 'bullet_w_link.bullet_alt', '&gt;' );
    161         if ( in_array( $row['id'], $tab_expand ) )
    162         {
    163           $vtp->setVar( $handle, 'bullet_w_link.bullet_url',
    164                         $user['lien_expanded'] );
    165         }
    166         else
    167         {
    168           $vtp->setVar( $handle, 'bullet_w_link.bullet_url',
    169                         $user['lien_collapsed'] );
    170         }
    171         $vtp->closeSession( $handle, 'bullet_w_link' );
    172       }
    173       $vtp->setVar( $handle, 'category.link_url',
    174                     add_session_id( './category.php?cat='.
    175                                     $row['id'].'&amp;expand='.$expand ) );
    176       $vtp->setVar( $handle, 'category.link_name', $name );
    177       if ( $id_uppercat == "" )
    178       {
    179         $vtp->setVar( $handle, 'category.name_style', 'font-weight:bold;' );
    180       }
    181       if ( $nb_subcats > 0 )
    182       {
    183         $vtp->addSession( $handle, 'subcat' );
    184         $vtp->setVar( $handle, 'subcat.nb_subcats', $nb_subcats );
    185         $vtp->closeSession( $handle, 'subcat' );
    186       }
    187       $vtp->setVar( $handle, 'category.total_cat', $row['nb_images'] );
    188       $date_dispo = explode( "-", $row['date_dernier'] );
    189       $date_cat = mktime( 0, 0, 0, $date_dispo[1], $date_dispo[2],
    190                           $date_dispo[0] );
    191       $vtp->setVar( $handle, 'category.cat_icon', get_icon( $date_cat ) );
    192       $vtp->closeSession( $handle, 'category' );
    193 
    194       if ( in_array( $row['id'], $tab_expand ) or $user['expand'] == "true" )
    195       {
    196         display_cat( $row['id'], $indent.'&nbsp;&nbsp;&nbsp;&nbsp;',
    197                      $restriction, $tab_expand );
    198       }
    199     }
    200   }
    201 }
    202        
    203 function get_nb_subcats( $id )
    204 {
    205   global $user;
    206                
    207   $query = 'select count(*) as count';
    208   $query.= ' from '.PREFIX_TABLE.'categories';
    209   $query.= ' where id_uppercat = '.$id;
    210   for ( $i = 0; $i < sizeof( $user['restrictions'] ); $i++ )
    211   {
    212     $query.= " and id != ".$user['restrictions'][$i];
    213   }
    214   $query.= ';';
    215   $result = mysql_query( $query );
    216   $row = mysql_fetch_array( $result );
    217   return $row['count'];
    218 }
    219        
    220 function get_total_image( $id, $restriction )
     110    $category = array();
     111    foreach ( $infos as $info ) {
     112      $category[$info] = $row[$info];
     113      if ( $info == 'date_last' )
     114      {
     115        list($year,$month,$day) = explode( '-', $row[$info] );
     116        $category[$info] = mktime(0,0,0,$month,$day,$year);
     117      }
     118    }
     119    $plain_structure[$row['id']] = $category;
     120  }
     121
     122  return $plain_structure;
     123}
     124
     125function create_structure( $id_uppercat, $restrictions )
     126{
     127  global $page;
     128
     129  $structure = array();
     130  $ids = get_subcat_ids( $id_uppercat );
     131  foreach ( $ids as $id ) {
     132    if ( !in_array( $id, $restrictions ) )
     133    {
     134      $category = $page['plain_structure'][$id];
     135      $category['subcats'] = create_structure( $id, $restrictions );
     136      array_push( $structure, $category );
     137    }
     138  }
     139  return $structure;
     140}
     141
     142function get_subcat_ids( $id_uppercat )
     143{
     144  global $page;
     145
     146  $ids = array();
     147  foreach ( $page['plain_structure'] as $id => $category ) {
     148    if ( $category['id_uppercat'] == $id_uppercat ) array_push( $ids, $id );
     149    else if ( count( $ids ) > 0 )                   return $ids;
     150  }
     151  return $ids;
     152}
     153
     154// update_structure updates or add informations about each node of the
     155// structure : the last date, should the category be expanded in the menu ?,
     156// the associated expand string "48,14,54"
     157//
     158// 1. last date
     159// for each category of the structure, we have to find the most recent
     160// subcat so that the parent cat has the same last_date info.
     161// For example : we have :
     162// > pets       (2003.02.15)
     163//    > dogs    (2003.06.14)
     164//       > rex  (2003.06.18)
     165//       > toby (2003.06.13)
     166//    > kitten  (2003.07.05)
     167// We finally want to have :
     168// > pets       (2003.07.05) <- changed to pets > kitten last date
     169//    > dogs    (2003.06.18) <- changed to pets > dogs > rex last date
     170//       > rex  (2003.06.18)
     171//       > toby (2003.06.13)
     172//    > kitten  (2003.07.05)
     173//
     174// 2. should the category be expanded in the menu ?
     175// If the category has to be expanded (ie its id is in the
     176// $page['tab_expand'] or all the categories must be expanded by default),
     177// $category['expanded'] is set to true.
     178//
     179// 3. associated expand string
     180// in the menu, there is a expand string (used in the URL) to tell which
     181// categories must be expanded in the menu if this category is chosen
     182function update_structure( $categories )
     183{
     184  global $page, $user;
     185
     186  $updated_categories = array();
     187
     188  foreach ( $categories as $category ) {
     189    // update the last date of the category
     190    $last_date = search_last_date( $category );
     191    $category['date_last'] = $last_date;
     192    // update the "expanded" key
     193    if ( $user['expand']
     194         or $page['expand'] == 'all'
     195         or in_array( $category['id'], $page['tab_expand'] ) )
     196    {
     197      $category['expanded'] = true;
     198    }
     199    else
     200    {
     201      $category['expanded'] = false;
     202    }
     203    // update the  "expand_string" key
     204    if ( $page['expand'] == 'all' )
     205    {
     206      $category['expand_string'] = 'all';
     207    }
     208    else
     209    {
     210      $tab_expand = $page['tab_expand'];
     211      if ( in_array( $category['id'], $page['tab_expand'] ) )
     212      {
     213        // the expand string corresponds to the $page['tab_expand'] without
     214        // the $category['id']
     215        $tab_expand = array_diff( $page['tab_expand'],array($category['id']) );
     216      }
     217      else if ( count( $category['subcats'] ) > 0 )
     218      {
     219        // we have this time to add the $category['id']...
     220        $tab_expand = array_merge($page['tab_expand'],array($category['id']));
     221      }
     222      $category['expand_string'] = implode( ',', $tab_expand );
     223    }
     224    // recursive call
     225    $category['subcats'] = update_structure( $category['subcats'] );
     226    // adding the updated category
     227    array_push( $updated_categories, $category );
     228  }
     229
     230  return $updated_categories;
     231}
     232
     233// search_last_date searchs the last date for a given category. If we take
     234// back the example given for update_last_dates, we should have :
     235// search_last_date( pets )        --> 2003.07.05
     236// search_last_date( pets > dogs ) --> 2003.06.18
     237// and so on
     238function search_last_date( $category )
     239{
     240  $date_last = $category['date_last'];
     241  foreach ( $category['subcats'] as $subcat ) {
     242    $subcat_date_last = search_last_date( $subcat );
     243    if ( $subcat_date_last > $date_last )
     244    {
     245      $date_last = $subcat_date_last;
     246    }
     247  }
     248  return $date_last;
     249}
     250
     251// count_images returns the number of pictures contained in the given
     252// category represented by an array, in this array, we have (among other
     253// things) :
     254// $category['nb_images'] -> number of pictures in this category
     255// $category['subcats'] -> array of sub-categories
     256// count_images goes to the deepest sub-category to find the total number of
     257// pictures contained in the given given category
     258function count_images( $categories )
    221259{
    222260  $total = 0;
    223                
    224   $query = 'select id,nb_images';
    225   $query.= ' from '.PREFIX_TABLE.'categories';
    226   $query.= ' where id_uppercat';
    227   if ( !is_numeric( $id ) )
    228   {
    229     $query.= ' is NULL';
    230   }
    231   else
    232   {
    233     $query.= ' = '.$id;
    234   }
    235   $query.= ";";
    236   $result = mysql_query( $query );
    237   while ( $row = mysql_fetch_array( $result ) )
    238   {
    239     if ( !in_array( $row['id'], $restriction ) )
    240     {
    241       $total+= $row['nb_images'];
    242       $total+= get_total_image( $row['id'], $restriction );
    243     }
     261  foreach ( $categories as $category ) {
     262    $total+= $category['nb_images'];
     263    $total+= count_images( $category['subcats'] );
    244264  }
    245265  return $total;
     
    262282  $cat['name'] = array();
    263283               
    264   $query = 'select nb_images,id_uppercat,comment,site_id,galleries_url,dir';
    265   $query.= ' from '.PREFIX_TABLE.'categories as a';
    266   $query.= ', '.PREFIX_TABLE.'sites as b';
    267   $query.= ' where a.id = '.$id;
    268   $query.= ' and a.site_id = b.id;';
     284  $query = 'SELECT nb_images,id_uppercat,comment,site_id,galleries_url,dir';
     285  $query.= ',date_last';
     286  $query.= ' FROM '.PREFIX_TABLE.'categories AS a';
     287  $query.= ', '.PREFIX_TABLE.'sites AS b';
     288  $query.= ' WHERE a.id = '.$id;
     289  $query.= ' AND a.site_id = b.id;';
    269290  $row = mysql_fetch_array( mysql_query( $query ) );
    270291  $cat['site_id']     = $row['site_id'];
     
    273294  $cat['nb_images']   = $row['nb_images'];
    274295  $cat['last_dir']    = $row['dir'];
     296  $cat['date_last']   = $row['date_last'];
    275297  $galleries_url = $row['galleries_url'];
    276298               
     
    281303  while ( !$is_root )
    282304  {
    283     $query = 'select name,dir,id_uppercat';
    284     $query.= ' from '.PREFIX_TABLE.'categories';
    285     $query.= ' where id = '.$row['id_uppercat'].';';
     305    $query = 'SELECT name,dir,id_uppercat';
     306    $query.= ' FROM '.PREFIX_TABLE.'categories';
     307    $query.= ' WHERE id = '.$row['id_uppercat'].';';
    286308    $row = mysql_fetch_array( mysql_query( $query ) );
    287     $cat['dir'] = $row['dir']."/".$cat['dir'];
     309    $cat['dir'] = $row['dir'].'/'.$cat['dir'];
    288310    if ( $row['name'] == "" )
    289311    {
     
    503525}
    504526
    505 // get_non_empty_sub_cat_ids returns an array composing of the infos of the
    506 // direct sub-categories of the given uppercat id. Each of these infos is
    507 // associated to the first found non empty category id. eg :
     527// get_non_empty_subcat_ids returns an array with sub-categories id
     528// associated with their first non empty category id.
     529//
     530//                          example :
    508531//
    509532// - catname [cat_id]
    510533// - cat1 [1] -> given uppercat
    511 //   - cat1.1 [2] (empty)
     534//   - cat1.1 [12] (empty)
    512535//     - cat1.1.1 [5] (empty)
    513536//     - cat1.1.2 [6]
     
    516539//
    517540// get_non_empty_sub_cat_ids will return :
    518 //   $cats[0]['id']            = 2;
    519 //   $cats[0]['name']          = '';
    520 //   $cats[0]['dir']           = 'cat1';
    521 //   $cats[0]['date_dernier']  = '2003-05-17';
    522 //   $cats[0]['non_empty_cat'] = 6;
    523 //
    524 //   $cats[1]['id']            = 3;
    525 //   $cats[1]['non_empty_cat'] = 3;
    526 //
    527 //   $cats[1]['id']            = 4;
    528 //   $cats[1]['non_empty_cat'] = 4;
    529 function get_non_empty_sub_cat_ids( $id_uppercat )
     541//   $ids[12] = 6;
     542//   $ids[3]  = 3;
     543//   $ids[4]  = 4;
     544function get_non_empty_subcat_ids( $id_uppercat )
    530545{
    531546  global $user;
    532547
    533   $cats = array();
    534 
    535   $query = 'SELECT id,name,dir,date_dernier,nb_images';
     548  $ids = array();
     549
     550  $query = 'SELECT id,nb_images';
    536551  $query.= ' FROM '.PREFIX_TABLE.'categories';
    537   $query.= ' WHERE id_uppercat = '.$id_uppercat;
     552  $query.= ' WHERE id_uppercat ';
     553  if ( !is_numeric( $id_uppercat ) ) $query.= 'is NULL';
     554  else                               $query.= '= '.$id_uppercat;
    538555  // we must not show pictures of a forbidden category
    539   $restricted_cats = get_all_restrictions( $user['id'],$user['status'] );
    540   foreach ( $restricted_cats as $restricted_cat ) {
     556  foreach ( $user['restrictions'] as $restricted_cat ) {
    541557    $query.= ' AND id != '.$restricted_cat;
    542558  }
     
    552568         or $non_empty_cat = get_first_non_empty_cat_id( $row['id'] ) )
    553569    {
    554       $temp_cat = array(
    555         'id'            => $row['id'],
    556         'name'          => $row['name'],
    557         'dir'           => $row['dir'],
    558         'date_dernier'  => $row['date_dernier'],
    559         'non_empty_cat' => $non_empty_cat );
    560       array_push( $cats, $temp_cat );
    561     }
    562   }
    563   return $cats;
     570      $ids[$row['id']] = $non_empty_cat;
     571    }
     572  }
     573  return $ids;
    564574}
    565575
     
    575585  $query.= ' WHERE id_uppercat = '.$id_uppercat;
    576586  // we must not show pictures of a forbidden category
    577   $restricted_cats = get_all_restrictions( $user['id'],$user['status'] );
    578   foreach ( $restricted_cats as $restricted_cat ) {
     587  foreach ( $user['restrictions'] as $restricted_cat ) {
    579588    $query.= ' AND id != '.$restricted_cat;
    580589  }
  • trunk/include/functions_user.inc.php

    r21 r26  
    314314{
    315315  $lowest_category_id = $category_id;
    316                
     316
    317317  $is_root = false;
    318318  while ( !$is_root and !in_array( $category_id, $restrictions ) )
     
    323323    $query.= ';';
    324324    $row = mysql_fetch_array( mysql_query( $query ) );
    325     if ( $row['id_uppercat'] == '' )
    326     {
    327       $is_root = true;
    328     }
     325    if ( $row['id_uppercat'] == '' ) $is_root = true;
    329326    $category_id = $row['id_uppercat'];
    330327  }
    331                
    332   if ( in_array( $lowest_category_id, $restrictions ) )
    333   {
    334     return 1;
    335   }
    336   if ( in_array( $category_id, $restrictions ) )
    337   {
    338     return 2;
    339   }
     328
     329  if ( in_array( $lowest_category_id, $restrictions ) ) return 1;
     330  if ( in_array( $category_id,        $restrictions ) ) return 2;
    340331  // this user is allowed to go in this category
    341332  return 0;
  • trunk/include/init.inc.php

    r21 r26  
    1919include_once( './include/config.inc.php' );
    2020include_once( './include/user.inc.php' );
    21        
    22 include( './theme/'.$user['theme'].'/conf.php' );
    23 $user['lien_expanded']  = './theme/'.$user['theme'].'/expanded.gif';
    24 $user['lien_collapsed'] = './theme/'.$user['theme'].'/collapsed.gif';
     21
    2522// calculation of the number of picture to display per page
    2623$user['nb_image_page'] = $user['nb_image_line'] * $user['nb_line_page'];
     
    3633  $user['username'] = $lang['guest'];
    3734}
    38 include_once( './template/'.$user['template'].'/style.inc.php' );
    3935include_once( './template/'.$user['template'].'/htmlfunctions.inc.php' );
    4036?>
  • trunk/include/user.inc.php

    r21 r26  
    2121//            status --> $user['status']
    2222$infos = array( 'id', 'username', 'mail_address', 'nb_image_line',
    23                 'nb_line_page', 'status', 'theme', 'language', 'maxwidth',
     23                'nb_line_page', 'status', 'language', 'maxwidth',
    2424                'maxheight', 'expand', 'show_nb_comments', 'short_period',
    2525                'long_period', 'template' );
    2626
    27 $query_user  = 'SELECT';
    28 for ( $i = 0; $i < sizeof( $infos ); $i++ )
    29 {
    30   if ( $i > 0 )
    31   {
    32     $query_user.= ',';
    33   }
    34   else
    35   {
    36     $query_user.= ' ';
    37   }
    38   $query_user.= $infos[$i];
     27$query_user  = 'SELECT ';
     28foreach ( $infos as $i => $info ) {
     29  if ( $i > 0 ) $query_user.= ',';
     30  $query_user.= $info;
    3931}
    4032$query_user.= ' FROM '.PREFIX_TABLE.'users';
  • trunk/language/francais.php

    r21 r26  
    11<?php
     2// start version 1.3
     3$lang['charset'] = 'Shift_JIS';//'ISO_8859-1';
     4// end version 1.3
    25$lang['only_members'] = 'Seuls les membres du site peuvent accéder à cette page';
    36$lang['invalid_pwd'] = 'le mot de passe rentré n\'est pas valide';
     
    2023$lang['add'] = 'ajouter';
    2124$lang['dissociate'] = 'dissocier';
     25$lang['mandatory'] = 'obligatoire';
     26$lang['err_date'] = 'date erronée';
     27$lang['picture'] = 'image';
     28$lang['IP'] = 'IP';
     29$lang['close'] = 'fermer';
     30$lang['open'] = 'ouvrir';
    2231// end version 1.3
    2332
     
    133142$lang['err_maxwidth'] = 'la largeur maximum des images doit être un entier supérieur à 50';
    134143$lang['err_maxheight'] = 'la hauteur maximum des images doit être un entier supérieur à 50';
    135        
    136 // page photo
     144
     145// picture.php
    137146$lang['previous_image'] = 'Précédent';
    138147$lang['next_image'] = 'Suivant';
     
    167176$lang['del_favorites_alt'] = 'Retirer des favoris';
    168177$lang['del_favorites_hint'] = 'supprimer cette image de vos favoris';
    169        
     178// start version 1.3
     179$lang['slideshow'] = 'diaporama';
     180$lang['period_seconds'] = 'secondes par image';
     181$lang['slideshow_stop'] = 'stopper le diaporama';
     182$lang['comment_added'] = 'Votre commentaire a été enregistré';
     183$lang['comment_to_validate'] = 'Un administrateur doit valider votre commentaire pour qu\'il soit visible';
     184// end version 1.3
     185
    170186// page register
    171187$lang['register_page_title'] = 'Enregistrement';
     
    209225$lang['upload_username'] = 'Nom d\'utilisateur';
    210226$lang['upload_successful'] = 'Image uploadée avec succès, un administrateur validera celle-ci dès que possible.';
     227// start version 1.3
     228$lang['upload_name'] = 'Nom de l\'image';
     229$lang['upload_author'] = 'Auteur (eg "Pierrick LE GALL")';
     230$lang['upload_creation_date'] = 'Date de création (JJ/MM/AAAA)';
     231$lang['upload_comment'] = 'Commentaire';
     232// end version 1.3
    211233
    212234//----------------------------------administration
     
    235257  $lang['title_cat_perm'] = 'Modifier les permissions pour la catégorie';
    236258  $lang['title_group_perm'] = 'Modifier les permissions pour le groupe';
     259  $lang['title_comments'] = 'Commentaires des visiteurs';
    237260// end version 1.3
    238261  $lang['title_categories'] = 'Gestion des catégories';
     
    256279// start version 1.3
    257280  $lang['menu_groups'] = 'Groupes';
     281  $lang['menu_comments'] = 'Commentaires';
    258282// end version 1.3
    259283 
     
    307331//  $lang['conf_general_expand'] = 'développer toutes les catégories';
    308332//  $lang['conf_general_expand_info'] = 'développer toutes les catégories par défaut dans le menu ?';
     333  $lang['conf_general_log'] = 'historique';
     334  $lang['conf_general_log_info'] = 'historiser les visites sur le site ? Les visites seront visibles dans l\'historique de l\'administration';
    309335  // end version 1.3
    310336  $lang['conf_comments'] = 'commentaires utilisateurs';
     
    316342  $lang['conf_err_comment_number'] = 'le nombre de commentaires par page doit être compris entre 5 et 50 inclus.';
    317343// start version 1.3
     344  $lang['conf_comments_validation'] = 'validation';
     345  $lang['conf_comments_validation_info'] = 'L\'administrateur valide les commentaires avant qu\'ils apparaissent sur le site';
    318346  // $lang['conf_remote_site_title'] = 'Site distant';
    319347// end version 1.3
     
    337365  $lang['conf_upload_maxheight_thumbnail_info'] = 'Hauteur maximum autorisée pour les miniatures. Celle-ci doit être un entier supérieur à 10, en pixels.';
    338366  $lang['conf_err_upload_maxheight_thumbnail'] = 'la hauteur maximum des miniatures uploadées doit être un entier supérieur à 10.';
    339                
     367
    340368  $lang['conf_default_title'] = 'Affichage par défaut pour les visiteurs non enregistrés et les nouveaux comptes';
    341369  // start version 1.3
     
    463491// end version 1.3
    464492  // page info images
    465   $lang['infoimage_err_date'] = 'date erronée';
     493// start version 1.3
     494  // $lang['infoimage_err_date'] = 'date erronée';
     495// end version 1.3
    466496  $lang['infoimage_general'] = 'Options générale pour la catégorie';
    467497  $lang['infoimage_useforall'] = 'utiliser pour toutes les images ?';
     
    494524  $lang['tn_err_width'] = 'la largeur doit être un entier supérieur à';
    495525  $lang['tn_err_height'] = 'la hauteur doit être un entier supérieur à';
    496   $lang['tn_err_GD'] = 'il faut choisir une version de GD';
     526// start version 1.3
     527  // $lang['tn_err_GD'] = 'il faut choisir une version de GD';
     528// end version 1.3
    497529               
    498530  $lang['tn_results_title'] = 'Résultats de la miniaturisation';
    499531  $lang['tn_picture'] = 'image';
    500   $lang['tn_filesize'] = 'poids';
     532// start version 1.3
     533  // $lang['tn_filesize'] = 'poids';
     534// end version 1.3
    501535  $lang['tn_results_gen_time'] = 'généré en';
    502536               
     
    524558  $lang['tn_dirs_title'] = 'Liste des répertoires';
    525559  $lang['tn_dirs_alone'] = 'images sans miniatures';
    526                
     560
     561// start version 1.3
     562  $lang['stats_last_days'] = 'derniers jours';
     563  $lang['stats_pages_seen'] = 'pages vues';
     564  $lang['stats_visitors'] = 'visiteurs';
     565  $lang['stats_empty'] = 'vider l\'historique';
     566  $lang['stats_pages_seen_graph_title'] = 'Nombre de pages vues par jour';
     567  $lang['stats_visitors_graph_title'] = 'Nombre de visiteurs par jour';
     568
     569  $lang['comments_last_title'] = 'Derniers commentaires';
     570  $lang['comments_non_validated_title'] = 'Commentaires non validés';
     571// end version 1.3
     572 
    527573  // help page
    528574  $lang['help_images_title'] = 'Ajout d\'images';
     
    545591  $lang['help_database'][0] = 'Une fois les fichiers placés correctement et les miniatures placées ou créées, cliquez sur "MaJ base d\'images" dans le menu de la zone d\'administration.';
    546592
    547 // start version 1.3
    548   // $lang['help_remote_title'] = 'Site distant';
    549 // end version 1.3
     593  $lang['help_remote_title'] = 'Site distant';
    550594  $lang['help_remote'][0] = 'PhpWebGallery offre la possibilité d\'utiliser plusieurs serveurs pour stocker les images qui composeront votre galerie. Cela peut être utile si votre galerie est installée sur une espace limité et que vous avez une grande quantité d\'images à montrer. Suivez la procédure suivante :';
    551595  $lang['help_remote'][1] = '1. éditez le fichier "create_listing_file.php" (vous le trouverez dans le répertoire "admin"), en modifiant la ligne "$prefix_thumbnail = "TN-";" si le préfixe pour vos miniatures n\'est pas "TN-".';
  • trunk/picture.php

    r21 r26  
    1717
    1818// this page shows the image full size
    19 // (or resized to the max size the user has chosen)
    20 // and two thumbnail : previous and next picture of your gallery
    2119//----------------------------------------------------------- personnal include
    2220include_once( './include/init.inc.php' );       
     
    148146
    149147$tpl = array( 'back','submit','comments_title','comments_del','delete',
    150               'comments_add','author' );
     148              'comments_add','author','slideshow','slideshow_stop',
     149              'period_seconds' );
    151150templatize_array( $tpl, 'lang', $handle );
     151$vtp->setGlobalVar( $handle, 'user_template', $user['template'] );
    152152$vtp->setGlobalVar( $handle, 'text_color', $user['couleur_text'] );
     153//-------------------------------------------------------- slideshow management
     154if ( isset( $_GET['slideshow'] ) )
     155{
     156  if ( !is_numeric( $_GET['slideshow'] ) )
     157    $_GET['slideshow'] = $conf['slideshow_period'][0];
     158  $vtp->addSession( $handle, 'stop_slideshow' );
     159  $url = './picture.php';
     160  $url.= '?image_id='.$page['id'];
     161  $url.= '&amp;cat='.$page['cat'];
     162  $url.= '&amp;expand='.$_GET['expand'];
     163  if ( $page['cat'] == 'search' )
     164  {
     165    $url.= '&amp;search='.$_GET['search'];
     166    $url.= '&amp;mode='.$_GET['mode'];
     167  }
     168  $vtp->setVar( $handle, 'stop_slideshow.url', add_session_id( $url ) );
     169  $vtp->closeSession( $handle, 'stop_slideshow' );
     170}
     171else
     172{
     173  $vtp->addSession( $handle, 'start_slideshow' );
     174  foreach ( $conf['slideshow_period'] as $option ) {
     175    $vtp->addSession( $handle, 'second' );
     176    $vtp->setVar( $handle, 'second.option', $option );
     177    $url = './picture.php';
     178    $url.= '?image_id='.$page['id'];
     179    $url.= '&amp;cat='.$page['cat'];
     180    $url.= '&amp;expand='.$_GET['expand'];
     181    if ( $page['cat'] == 'search' )
     182    {
     183      $url.= '&amp;search='.$_GET['search'];
     184      $url.= '&amp;mode='.$_GET['mode'];
     185    }
     186    $url.= '&amp;slideshow='.$option;
     187    $vtp->setVar( $handle, 'second.url', add_session_id( $url ) );
     188    $vtp->closeSession( $handle, 'second' );
     189  }
     190  $vtp->closeSession( $handle, 'start_slideshow' );
     191}
    153192//------------------------------------------------------------------ page title
    154193if ( $page['name'] != '' )
     
    377416  $vtp->setVar( $handle, 'favorite.title', $lang['add_favorites_hint'] );
    378417  $vtp->setVar( $handle, 'favorite.src',
    379                 './theme/'.$user['theme'].'/favorite.gif' );
     418                './template/'.$user['template'].'/theme/favorite.gif' );
    380419  $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['add_favorites_alt'].' ]' );
    381420  $vtp->closeSession( $handle, 'favorite' );
     
    389428  $vtp->setVar( $handle, 'favorite.title', $lang['del_favorites_hint'] );
    390429  $vtp->setVar( $handle, 'favorite.src',
    391                 './theme/'.$user['theme'].'/del_favorite.gif' );
     430                './template/'.$user['template'].'/theme/del_favorite.gif' );
    392431  $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['del_favorites_alt'].' ]' );
    393432  $vtp->closeSession( $handle, 'favorite' );
     
    453492  $vtp->setGlobalVar( $handle, 'next.alt', $alt_thumbnail );
    454493  $vtp->closeSession( $handle, 'next' );
     494  // slideshow
     495  if ( isset( $_GET['slideshow'] ) )
     496  {
     497    $vtp->addSession( $handle, 'refresh' );
     498    $vtp->setVar( $handle, 'refresh.time', 2 );
     499    $url = $url_link.'&amp;slideshow='.$_GET['slideshow'];
     500    $vtp->setVar( $handle, 'refresh.url', add_session_id( $url ) );
     501    $vtp->closeSession( $handle, 'refresh' );
     502  }
    455503}
    456504else
     
    472520    }
    473521    $query = 'INSERT INTO '.PREFIX_TABLE.'comments';
    474     $query.= ' (author,date,image_id,content) VALUES';
     522    $query.= ' (author,date,image_id,content,validated) VALUES';
    475523    $query.= " ('".$author."',".time().",".$page['id'];
    476     $query.= ",'".htmlspecialchars( $_POST['content'], ENT_QUOTES)."');";
     524    $query.= ",'".htmlspecialchars( $_POST['content'], ENT_QUOTES)."'";
     525    if ( !$conf['comments_validation'] or $user['status'] == 'admin' )
     526      $query.= ",'true'";
     527    else
     528      $query.= ",'false'";
     529    $query.= ');';
    477530    mysql_query( $query );
     531    $vtp->addSession( $handle, 'information' );
     532    $message = $lang['comment_added'];
     533    if ( $conf['comments_validation'] and $user['status'] != 'admin' )
     534    {
     535      $message.= '<br />'.$lang['comment_to_validate'];
     536    }
     537    $vtp->setVar( $handle, 'information.content', $message );
     538    $vtp->closeSession( $handle, 'information' );
    478539  }
    479540  // comment deletion
     
    489550  $query = 'SELECT COUNT(*) AS nb_comments';
    490551  $query.= ' FROM '.PREFIX_TABLE.'comments';
    491   $query.= ' WHERE image_id = '.$page['id'].';';
     552  $query.= ' WHERE image_id = '.$page['id'];
     553  $query.= " AND validated = 'true'";
     554  $query.= ';';
    492555  $row = mysql_fetch_array( mysql_query( $query ) );
    493556  $page['nb_comments'] = $row['nb_comments'];
     
    520583  $query.= ' FROM '.PREFIX_TABLE.'comments';
    521584  $query.= ' WHERE image_id = '.$page['id'];
     585  $query.= " AND validated = 'true'";
    522586  $query.= ' ORDER BY date ASC';
    523587  $query.= ' LIMIT '.$page['start'].', '.$conf['nb_comment_page'].';';
     
    531595    $displayed_date.= date( " j ", $row['date'] );
    532596    $displayed_date.= $lang['month'][date( "n", $row['date'] )];
    533     $displayed_date.= date( " Y G:i", $row['date'] );
     597    $displayed_date.= date( ' Y G:i', $row['date'] );
    534598    $vtp->setVar( $handle, 'comment.date', $displayed_date );
    535599    $vtp->setVar( $handle, 'comment.content', nl2br( $row['content'] ) );
  • trunk/profile.php

    r17 r26  
    2929check_cat_id( $_GET['cat'] );
    3030//------------------------------------------------------ update & customization
    31 $infos = array( 'nb_image_line', 'nb_line_page', 'theme', 'language',
     31$infos = array( 'nb_image_line', 'nb_line_page', 'language',
    3232                'maxwidth', 'maxheight', 'expand', 'show_nb_comments',
    3333                'short_period', 'long_period', 'template', 'mail_address' );
     
    3636//    - on teste si chacune des variables est passée en argument à la page
    3737//    - ce qui signifie que l'on doit venir de la page de personnalisation
    38 $error = array();
     38$errors = array();
    3939if ( isset( $_POST['submit'] ) )
    4040{
    41   $i = 0;
    42   if ( $_POST['maxwidth'] != '' )
    43   {
    44     if ( !ereg( "^[0-9]{2,}$", $_POST['maxwidth'] )
    45          || $_POST['maxwidth'] < 50 )
    46     {
    47       $error[$i++] = $lang['err_maxwidth'];
    48     }
    49   }
    50   if ( $_POST['maxheight'] != '' )
    51   {
    52     if ( !ereg( "^[0-9]{2,}$", $_POST['maxheight'] )
    53          || $_POST['maxheight'] < 50 )
    54     {
    55       $error[$i++] = $lang['err_maxheight'];
    56     }
    57   }
    58   // les période doivent être des entiers, il représentent des nombres de jours
    59   if ( !ereg( "^[0-9]*$", $_POST['short_period'] )
    60        || !ereg("^[0-9]*$", $_POST['long_period'] ) )
    61   {
    62     $error[$i++] = $lang['err_periods'];
     41  $int_pattern = '/^\d+$/';
     42  if ( $_POST['maxwidth'] != ''
     43       and ( !preg_match( $int_pattern, $_POST['maxwidth'] )
     44             or $_POST['maxwidth'] < 50 ) )
     45  {
     46    array_push( $errors, $lang['err_maxwidth'] );
     47  }
     48  if ( $_POST['maxheight']
     49       and ( !preg_match( $int_pattern, $_POST['maxheight'] )
     50             or $_POST['maxheight'] < 50 ) )
     51  {
     52    array_push( $errors, $lang['err_maxheight'] );
     53  }
     54  // periods must be integer values, they represents number of days
     55  if ( !preg_match( $int_pattern, $_POST['short_period'] )
     56       or !preg_match( $int_pattern, $_POST['long_period'] ) )
     57  {
     58    array_push( $errors, $lang['err_periods'] );
    6359  }
    6460  else
    6561  {
    66     // la période longue doit être supérieure à la période courte
     62    // long period must be longer than short period
    6763    if ( $_POST['long_period'] <= $_POST['short_period']
    68          || $_POST['short_period'] <= 0 )
    69     {
    70       $error[$i++] = $lang['err_periods_2'];
    71     }
    72   }
    73   // le mail doit être conforme à qqch du type : nom@serveur.com
    74   if( $_POST['mail_address'] != ""
    75       && !ereg( "([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)",
    76                 $_POST['mail_address'] ) )
    77   {
    78     $error[$i++] = $lang['reg_err_mail_address'];
     64         or $_POST['short_period'] <= 0 )
     65    {
     66      array_push( $errors, $lang['err_periods_2'] );
     67    }
     68  }
     69  $mail_error = validate_mail_address( $_POST['mail_address'] );
     70  if ( $mail_error != '' )
     71  {
     72    array_push( $errors, $mail_error );
    7973  }
    8074  if ( $_POST['use_new_pwd'] == 1 )
    8175  {
    82     // on vérifie que le password rentré correspond bien
    83     // à la confirmation faite par l'utilisateur
     76    // password must be the same as its confirmation
    8477    if ( $_POST['password'] != $_POST['passwordConf'] )
    8578    {
    86       $error[$i++] = $lang['reg_err_pass'];
     79      array_push( $errors, $lang['reg_err_pass'] );
    8780    }
    8881  }
    8982
    90   if ( sizeof( $error ) == 0 )
    91   {
    92     $tab_theme = explode( ' - ', $_POST['theme'] );
    93     $_POST['theme'] = $tab_theme[0].'/'.$tab_theme[1];
    94 
    95     $query = 'update '.PREFIX_TABLE.'users';
    96     $query.= ' set';
    97     for ( $i = 0; $i < sizeof( $infos ); $i++ )
    98     {
    99       if ( $i > 0 )
    100       {
    101         $query.= ',';
    102       }
    103       else
    104       {
    105         $query.= ' ';
    106       }
    107       $query.= $infos[$i];
     83  if ( count( $errors ) == 0 )
     84  {
     85    $query = 'UPDATE '.PREFIX_TABLE.'users';
     86    $query.= ' SET ';
     87    foreach ( $infos as $i => $info ) {
     88      if ( $i > 0 ) $query.= ',';
     89      $query.= $info;
    10890      $query.= ' = ';
    109       if ( $_POST[$infos[$i]] == '' )
    110       {
    111         $query.= 'NULL';
    112       }
    113       else
    114       {
    115         $query.= "'".$_POST[$infos[$i]]."'";
    116       }
    117     }
    118     $query.= ' where id = '.$user['id'];
     91      if ( $_POST[$info] == '' ) $query.= 'NULL';
     92      else                       $query.= "'".$_POST[$info]."'";
     93    }
     94    $query.= ' WHERE id = '.$user['id'];
    11995    $query.= ';';
    12096    mysql_query( $query );
     
    12298    if ( $_POST['use_new_pwd'] == 1 )
    12399    {
    124       $query = 'update '.PREFIX_TABLE.'users';
    125       $query.= " set password = '".md5( $_POST['password'] )."'";
    126       $query.= ' where id = '.$user['id'];
     100      $query = 'UPDATE '.PREFIX_TABLE.'users';
     101      $query.= " SET password = '".md5( $_POST['password'] )."'";
     102      $query.= ' WHERE id = '.$user['id'];
    127103      $query.= ';';
    128104      mysql_query( $query );
    129       echo '<br />'.$query;
    130105    }
    131106    // redirection
     
    133108    if ( $page['cat'] == 'search' )
    134109    {
    135       $url.= '&search='.$_GET['search'].'&amp;mode='.$_GET['mode'];
     110      $url.= '&search='.$_GET['search'].'&mode='.$_GET['mode'];
    136111    }
    137112    $url = add_session_id( $url, true );
     
    157132$vtp->setGlobalVar( $handle, 'form_action', add_session_id( $url ) );
    158133//-------------------------------------------------------------- errors display
    159 if ( sizeof( $error ) != 0 )
     134if ( count( $errors ) != 0 )
    160135{
    161136  $vtp->addSession( $handle, 'errors' );
    162   for ( $i = 0; $i < sizeof( $error ); $i++ )
    163   {
     137  foreach ( $errors as $error ) {
    164138    $vtp->addSession( $handle, 'li' );
    165     $vtp->setVar( $handle, 'li.li', $error[$i] );
     139    $vtp->setVar( $handle, 'li.li', $error );
    166140    $vtp->closeSession( $handle, 'li' );
    167141  }
     
    221195    $vtp->setVar( $handle, 'option.option', $option[$i] );
    222196    if ( $option[$i] == $user['template'] )
    223     {
    224       $vtp->setVar( $handle, 'option.selected', ' selected="selected"' );
    225     }
    226     $vtp->closeSession( $handle, 'option' );
    227   }
    228   $vtp->closeSession( $handle, 'select' );
    229   $vtp->closeSession( $handle, 'line' );
    230 }
    231 //----------------------------------------------------------------------- theme
    232 if ( in_array( 'theme', $infos ) )
    233 {
    234   $vtp->addSession( $handle, 'line' );
    235   $vtp->setVar( $handle, 'line.name', $lang['customize_theme'] );
    236   $vtp->addSession( $handle, 'select' );
    237   $vtp->setVar( $handle, 'select.name', 'theme' );
    238   $option = get_themes( './theme/' );
    239   for ( $i = 0; $i < sizeof( $option ); $i++ )
    240   {
    241     $vtp->addSession( $handle, 'option' );
    242     $vtp->setVar( $handle, 'option.option', $option[$i] );
    243     if ( $option[$i] == str_replace( '/', ' - ', $user['theme'] ) )
    244197    {
    245198      $vtp->setVar( $handle, 'option.selected', ' selected="selected"' );
  • trunk/upload.php

    r20 r26  
    1717
    1818//------------------------------------------------------------------- functions
    19 
    2019// The validate_upload function checks if the image of the given path is valid.
    2120// A picture is valid when :
     
    115114if ( $access_forbidden == true
    116115     or $page['cat_site_id'] != 1
    117      or $conf['upload_available'] == 'false' )
     116     or !$conf['upload_available'] )
    118117{
    119118  echo '<div style="text-align:center;">'.$lang['upload_forbidden'].'<br />';
    120   echo '<a href="'.add_session_id_to_url( './category.php' ).'">';
     119  echo '<a href="'.add_session_id( './category.php' ).'">';
    121120  echo $lang['thumbnails'].'</a></div>';
    122121  exit();
     
    128127
    129128$tpl = array( 'upload_title', 'upload_username', 'mail_address', 'submit',
    130               'upload_successful', 'search_return_main_page' );
    131 templatize_array( $tpl, 'lang', $sub );
    132 // user
    133 $vtp->setGlobalVar( $handle, 'style',            $user['style'] );
    134 $vtp->setGlobalVar( $handle, 'user_login',       $user['username'] );
    135 $vtp->setGlobalVar( $handle, 'user_mail_address',$user['mail_address'] );
     129              'upload_successful', 'search_return_main_page','upload_author',
     130              'upload_name','upload_creation_date','upload_comment',
     131              'mandatory' );
     132templatize_array( $tpl, 'lang', $handle );
    136133
    137134$error = array();
    138 $i = 0;
    139135$page['upload_successful'] = false;
    140136if ( isset( $_GET['waiting_id'] ) )
     
    143139}
    144140//-------------------------------------------------------------- picture upload
    145 // vérification de la présence et de la validité des champs.
     141// verfying fields
    146142if ( isset( $_POST['submit'] ) and !isset( $_GET['waiting_id'] ) )
    147143{
     
    149145  if ( @is_file( $path ) )
    150146  {
    151     $error[$i++] = $lang['upload_file_exists'];
     147    array_push( $error, $lang['upload_file_exists'] );
    152148  }
    153149  // test de la présence des champs obligatoires
    154   if ( $_FILES['picture']['name'] == "" )
    155   {
    156     $error[$i++] = $lang['upload_filenotfound'];
     150  if ( $_FILES['picture']['name'] == '' )
     151  {
     152    array_push( $error, $lang['upload_filenotfound'] );
    157153  }
    158154  if ( !ereg( "([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)",
    159155             $_POST['mail_address'] ) )
    160156  {
    161     $error[$i++] = $lang['reg_err_mail_address'];
     157    array_push( $error, $lang['reg_err_mail_address'] );
    162158  }
    163159  if ( $_POST['username'] == '' )
    164160  {
    165     $error[$i++] = $lang['upload_err_username'];
    166   }
    167 
     161    array_push( $error, $lang['upload_err_username'] );
     162  }
     163
     164  if ( $_POST['date_creation'] != '' )
     165  {
     166    list( $day,$month,$year ) = explode( '/', $_POST['date_creation'] );
     167    // int checkdate ( int month, int day, int year)
     168    if ( checkdate( $month, $day, $year ) )
     169    {
     170      // int mktime ( int hour, int minute, int second,
     171      //              int month, int day, int year [, int is_dst])
     172      $date_creation = mktime( 0, 0, 0, $month, $day, $year );
     173    }
     174    else
     175    {
     176      array_push( $error, $lang['err_date'] );
     177    }
     178  }
     179  // creation of the "infos" field :
     180  // <infos author="Pierrick LE GALL" comment="my comment"
     181  //        date_creation="1056891767" name="" />
     182  $xml_infos = '<infos';
     183  $xml_infos.= ' author="'.htmlspecialchars($_POST['author'],ENT_QUOTES).'"';
     184  $xml_infos.= ' comment="'.htmlspecialchars($_POST['comment'],ENT_QUOTES).'"';
     185  $xml_infos.= ' date_creation="'.$date_creation.'"';
     186  $xml_infos.= ' name="'.htmlspecialchars( $_POST['name'], ENT_QUOTES).'"';
     187  $xml_infos.= ' />';
     188 
    168189  if ( sizeof( $error ) == 0 )
    169190  {
     
    174195    for ( $j = 0; $j < sizeof( $result['error'] ); $j++ )
    175196    {
    176       $error[$i++] = $result['error'][$j];
     197      array_push( $error, $result['error'][$j] );
    177198    }
    178199  }
     
    181202  {
    182203    $query = 'insert into '.PREFIX_TABLE.'waiting';
    183     $query.= ' (cat_id,file,username,mail_address,date) values';
     204    $query.= ' (cat_id,file,username,mail_address,date,infos) values';
    184205    $query.= " (".$page['cat'].",'".$_FILES['picture']['name']."'";
    185206    $query.= ",'".htmlspecialchars( $_POST['username'], ENT_QUOTES)."'";
    186     $query.= ",'".$_POST['mail_address']."',".time().")";
     207    $query.= ",'".$_POST['mail_address']."',".time().",'".$xml_infos."')";
    187208    $query.= ';';
    188209    mysql_query( $query );
     
    210231  for ( $j = 0; $j < sizeof( $result['error'] ); $j++ )
    211232  {
    212     $error[$i++] = $result['error'][$j];
     233    array_push( $error, $result['error'][$j] );
    213234  }
    214235  if ( sizeof( $error ) == 0 )
     
    244265    $url.= '&amp;waiting_id='.$page['waiting_id'];
    245266  }
    246   $vtp->setGlobalVar( $handle, 'form_action', $url );
     267  $vtp->setGlobalVar( $handle, 'form_action', add_session_id( $url ) );
    247268//--------------------------------------------------------------------- advises
    248269  if ( $conf['upload_maxfilesize'] != '' )
     
    308329  {
    309330    $vtp->addSession( $handle, 'fields' );
     331    // username
     332    if ( isset( $_POST['username'] ) ) $username = $_POST['username'];
     333    else                               $username = $user['username'];
     334    $vtp->setVar( $handle, 'fields.username',  $username );
     335    // mail address
     336    if ( isset( $_POST['mail_address'] ) )$mail_address=$_POST['mail_address'];
     337    else                                  $mail_address=$user['mail_address'];
     338    $vtp->setGlobalVar( $handle, 'user_mail_address',$user['mail_address'] );
     339    // name of the picture
     340    $vtp->setVar( $handle, 'fields.name', $_POST['name'] );
     341    // author
     342    $vtp->setVar( $handle, 'fields.author', $_POST['author'] );
     343    // date of creation
     344    $vtp->setVar( $handle, 'fields.date_creation', $_POST['date_creation'] );
     345    // comment
     346    $vtp->setVar( $handle, 'fields.comment', $_POST['comment'] );
     347
    310348    $vtp->closeSession( $handle, 'fields' );
     349
     350    $vtp->addSession( $handle, 'note' );
     351    $vtp->closeSession( $handle, 'note' );
    311352  }
    312353  $vtp->closeSession( $handle, 'upload_not_successful' );
Note: See TracChangeset for help on using the changeset viewer.