Changeset 26
- Timestamp:
- Jul 21, 2003, 9:47:14 PM (21 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/admin/admin.php
r21 r26 22 22 $handle = $vtp->Open( '../template/'.$user['template'].'/admin/admin.vtp' ); 23 23 // 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' ); 25 templatize_array( $tpl, 'lang', $handle ); 26 26 //--------------------------------------- validating page and creation of title 27 27 $page_valide = false; … … 76 76 } 77 77 break; 78 case ' historique':78 case 'stats': 79 79 $title = $lang['title_history']; $page_valide = true; break; 80 80 case 'update': … … 82 82 case 'configuration': 83 83 $title = $lang['title_configuration']; $page_valide = true; break; 84 case ' manuel':84 case 'help': 85 85 $title = $lang['title_instructions']; $page_valide = true; break; 86 86 case 'cat_perm': … … 125 125 $page_valide = true; 126 126 break; 127 case 'comments' : 128 $title = $lang['title_comments']; 129 $page_valide = true; 130 break; 127 131 default: 128 132 $title = $lang['title_default']; break; … … 178 182 $vtp->setVar( $handle, 'summary.link', 179 183 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.= ';'; 181 188 $result = mysql_query( $query ); 182 189 $nb_waiting = ''; … … 187 194 $vtp->setVar( $handle, 'summary.name', $lang['menu_waiting'].$nb_waiting ); 188 195 $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 = ''; 207 if ( 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' ); 189 213 // update 190 214 $vtp->addSession( $handle, 'summary' ); … … 205 229 $vtp->setVar( $handle, 'summary.indent', '' ); 206 230 $vtp->setVar( $handle, 'summary.link', 207 add_session_id( $link_start.' historique' ) );231 add_session_id( $link_start.'stats' ) ); 208 232 $vtp->setVar( $handle, 'summary.name', $lang['menu_history'] ); 209 233 $vtp->closeSession( $handle, 'summary' ); … … 212 236 $vtp->setVar( $handle, 'summary.indent', '' ); 213 237 $vtp->setVar( $handle, 'summary.link', 214 add_session_id( $link_start.' manuel' ) );238 add_session_id( $link_start.'help' ) ); 215 239 $vtp->setVar( $handle, 'summary.name', $lang['menu_instructions'] ); 216 240 $vtp->closeSession( $handle, 'summary' ); -
trunk/admin/configuration.php
r21 r26 41 41 'show_comments','nb_comment_page','upload_available', 42 42 'upload_maxfilesize', 'upload_maxwidth','upload_maxheight', 43 'upload_maxwidth_thumbnail','upload_maxheight_thumbnail' ); 43 'upload_maxwidth_thumbnail','upload_maxheight_thumbnail','log', 44 'comments_validation' ); 44 45 $default_user_infos = 45 array( 'nb_image_line','nb_line_page',' theme','language','maxwidth',46 array( 'nb_image_line','nb_line_page','language','maxwidth', 46 47 'maxheight','expand','show_nb_comments','short_period','long_period', 47 48 'template' ); … … 74 75 array_push( $error, $lang['conf_err_prefixe'] ); 75 76 } 76 // mail m ail must be formatted as follows : name@server.com77 // mail must be formatted as follows : name@server.com 77 78 $pattern = '/^[\w-]+(\.[\w-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/'; 78 79 if ( !preg_match( $pattern, $_POST['mail_webmaster'] ) ) … … 195 196 mysql_query( $query ); 196 197 197 $tab_theme = explode( ' - ', $_POST['theme'] );198 $_POST['theme'] = $tab_theme[0].'/'.$tab_theme[1];199 200 198 $query = 'UPDATE '.PREFIX_TABLE.'users'; 201 199 $query.= ' SET'; … … 372 370 $vtp->closeSession( $sub, 'param_line' ); 373 371 $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 = ''; 382 if ( $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 = ''; 393 if ( $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' ); 374 404 375 405 $vtp->addSession( $sub, 'line' ); … … 431 461 $vtp->setVar( $sub, 'param_line.def', 432 462 $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 = ''; 475 if ( $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 = ''; 486 if ( $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'] ); 433 495 $vtp->closeSession( $sub, 'param_line' ); 434 496 $vtp->closeSession( $sub, 'line' ); … … 515 577 $vtp->addSession( $sub, 'line' ); 516 578 $vtp->addSession( $sub, 'param_line' ); 517 $vtp->setVar( $sub, 'param_line.name', $lang['customize_t emplate'] );579 $vtp->setVar( $sub, 'param_line.name', $lang['customize_theme'] ); 518 580 $vtp->addSession( $sub, 'select' ); 519 581 $vtp->setVar( $sub, 'select.name', 'template' ); … … 524 586 $vtp->setVar( $sub, 'option.option', $option[$i] ); 525 587 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 // theme536 $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 ) )547 588 { 548 589 $vtp->setVar( $sub, 'option.selected', ' selected="selected"' ); -
trunk/admin/include/functions.php
r21 r26 18 18 $tab_ext_create_TN = array ( 'jpg', 'png', 'JPG', 'PNG' ); 19 19 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. 20 25 function is_image( $filename, $create_thumbnail = false ) 21 26 { 22 27 global $conf, $tab_ext_create_TN; 23 28 24 if ( is_file 29 if ( is_file( $filename ) ) 25 30 { 26 31 $size = getimagesize( $filename ); -
trunk/admin/infos_images.php
r19 r26 19 19 include_once( '../template/'.$user['template'].'/htmlfunctions.inc.php' ); 20 20 //------------------------------------------------------------------- functions 21 function check_date_format 21 function check_date_format( $date ) 22 22 { 23 23 // date arrives at this format : DD/MM/YYYY … … 145 145 else 146 146 { 147 echo $lang[' infoimage_err_date'];147 echo $lang['err_date']; 148 148 } 149 149 } … … 222 222 $thumbnail_url.= $conf['prefix_thumbnail'].$file.".".$row['tn_ext']; 223 223 $vtp->setVar( $sub, 'picture.thumbnail_url', $thumbnail_url ); 224 $url = '../picture.php?cat='.$_GET['cat_id'].'&image_id='.$row['id']; 225 $vtp->setVar( $sub, 'picture.url', add_session_id( $url ) ); 224 226 $vtp->closeSession( $sub, 'picture' ); 225 227 } -
trunk/admin/thumbnail.php
r19 r26 1 1 <?php 2 2 /*************************************************************************** 3 * thumbnail.php is a part of PhpWebGallery*3 * thumbnail.php * 4 4 * ------------------- * 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> * 7 7 * * 8 8 ***************************************************************************/ … … 15 15 * * 16 16 ***************************************************************************/ 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 ) ) 17 include_once( './include/isadmin.inc.php' ); 18 //------------------------------------------------------------------- functions 19 // get_subdirs returns an array containing all sub directory names, 20 // excepting : '.', '..' and 'thumbnail'. 21 function 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. 41 function 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) 71 function scandir( $dir, $width, $height ) 72 { 73 global $conf; 74 $stats = array(); 75 if ( $opendir = opendir( $dir ) ) 24 76 { 25 77 while ( $file = readdir ( $opendir ) ) 26 78 { 27 if ( $file != "thumbnail" && $file != "."28 && $file != ".." && is_dir ( $rep.$file ) )79 $path = $dir.'/'.$file; 80 if ( is_image( $path, true ) ) 29 81 { 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 ) ) 52 83 { 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 ); 60 89 } 61 90 } 62 91 } 63 92 } 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". 99 function 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; 113 113 } 114 114 115 if ( $srcImage)116 { 117 // hauteurs/largeurs118 $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; 121 121 $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) 127 127 { 128 128 $destWidth = $srcWidth/$ratioHeight; … … 140 140 $destHeight = $srcHeight; 141 141 } 142 // selon votre version de GD installée sur le serveur hébergeur143 if ( $ HTTP_POST_VARS['gd'] == 2 )144 { 145 // Partie 1 : GD 2.0 ou supérieur, résultat très bons142 // 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) 146 146 $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) 152 153 $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 ); 154 156 } 155 157 156 158 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; 163 167 164 // cr éation et sauvegarde de l'image finale165 imagejpeg( $destImage, $dest_file);166 // libère la mémoire168 // creation and backup of final picture 169 imagejpeg( $destImage, $dest_file ); 170 // freeing memory ressources 167 171 imagedestroy( $srcImage ); 168 172 imagedestroy( $destImage ); 169 173 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 ); 185 186 return $info; 186 187 } 187 // err eur188 // error 188 189 else 189 190 { 190 191 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; 194 195 } 195 196 else … … 200 201 } 201 202 } 203 204 // array_max returns the highest value of the given array 205 function 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 212 function 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 219 function array_avg( $array ) 220 { 221 return array_sum( $array ) / sizeof( $array ); 222 } 202 223 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. 227 function get_displayed_dirs( $dir, $indent ) 228 { 229 global $conf,$lang,$vtp,$sub; 238 230 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&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' ); 269 templatize_array( $tpl, 'lang', $sub ); 270 //----------------------------------------------------- miniaturization results 271 if ( 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&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'] ) 247 391 { 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&dir=".$rep."/".$sub_rep[$i] )."\">"; 261 } 262 $dirs.= "<img src=\"".$conf['lien_puce']."\" style=\"border:none;\" alt=\">\"/>".$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." " ); 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."\"> </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 ) 331 404 { 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\"> </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> </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&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\"> </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\"> </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."\"> </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 547 418 else 548 419 { 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", " " ); 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 ); 568 426 ?> -
trunk/admin/update.php
r19 r26 188 188 $pictures = array(); 189 189 $tn_ext = ''; 190 if ( $opendir = opendir 191 { 192 while ( $file = readdir 190 if ( $opendir = opendir( $rep ) ) 191 { 192 while ( $file = readdir( $opendir ) ) 193 193 { 194 194 if ( is_file( $rep.'/'.$file ) and is_image( $rep.'/'.$file ) ) 195 195 { 196 196 // is the picture waiting for validation by an administrator ? 197 $query = 'SELECT id ';197 $query = 'SELECT id,validated,infos'; 198 198 $query.= ' FROM '.PREFIX_TABLE.'waiting'; 199 199 $query.= ' WHERE cat_id = '.$category_id; … … 201 201 $query.= ';'; 202 202 $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') 204 205 { 205 206 if ( $tn_ext = TN_exists( $rep, $file ) ) … … 215 216 { 216 217 $picture = array(); 217 $picture['file'] = $file;218 $picture['tn_ext'] = $tn_ext;218 $picture['file'] = $file; 219 $picture['tn_ext'] = $tn_ext; 219 220 $picture['date'] = date( 'Y-m-d', filemtime ( $rep.'/'.$file ) ); 220 221 $picture['filesize'] = floor( filesize( $rep.'/'.$file ) / 1024); 221 222 $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 } 224 245 array_push( $pictures, $picture ); 225 246 } … … 243 264 foreach ( $pictures as $picture ) { 244 265 $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)'; 246 268 $query.= ' VALUES '; 247 269 $query.= "('".$picture['file']."','".$category_id."'"; 248 270 $query.= ",'".$picture['date']."','".$picture['tn_ext']."'"; 249 271 $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.= ');'; 252 283 mysql_query( $query ); 253 284 $count_new++; … … 284 315 285 316 $query = 'UPDATE '.PREFIX_TABLE.'categories'; 286 $query.= " SET date_ dernier= '".$date_last."'";317 $query.= " SET date_last = '".$date_last."'"; 287 318 $query.= ', nb_images = '.$nb_images; 288 319 $query.= ' where id = '.$category_id; -
trunk/admin/waiting.php
r19 r26 1 1 <?php 2 2 /*************************************************************************** 3 * waiting.php is a part of PhpWebGallery*3 * waiting.php * 4 4 * ------------------- * 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> * 7 7 * * 8 8 ***************************************************************************/ … … 15 15 * * 16 16 ***************************************************************************/ 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;\"> </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 " "; 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>"; 17 include_once( './include/isadmin.inc.php' ); 18 //--------------------------------------------------------------------- updates 19 if ( 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' ); 68 templatize_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; 78 while ( $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'], ' > ', '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 ); 117 134 ?> -
trunk/category.php
r20 r26 21 21 //----------------------------------------------------------- personnal include 22 22 include_once( './include/init.inc.php' ); 23 $output.= 'after init.inc.php : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 23 24 //-------------------------------------------------- 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 24 30 check_cat_id( $_GET['cat'] ); 25 31 check_login_authorization(); … … 35 41 if ( isset ( $_GET['expand'] ) and $_GET['expand'] != 'all' ) 36 42 { 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 ); 46 46 } 47 47 $page['expand'] = implode( ',', $page['tab_expand'] ); … … 50 50 // The $page['expand'] equals 'all' and 51 51 // $page['tab_expand'] contains all the authorized cat ids 52 if ( $user['expand'] == 'true'or $_GET['expand'] == 'all' )52 if ( $user['expand'] or $_GET['expand'] == 'all' ) 53 53 { 54 54 $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 }64 55 $page['expand'] = 'all'; 65 56 } … … 84 75 $page['start']*= $user['nb_image_page']; 85 76 } 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'] ); 86 80 initialize_category(); 81 $output.= 'before template init : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 87 82 //----------------------------------------------------- template initialization 88 83 $vtp = new VTemplate; 89 84 $handle = $vtp->Open( './template/'.$user['template'].'/category.vtp' ); 90 85 initialize_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' ); 99 93 templatize_array( $tpl, 'lang', $handle ); 94 $output.= 'after lang array : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 100 95 101 96 $tpl = array( 'mail_webmaster','webmaster','top_number','version','site_url' ); 102 97 templatize_array( $tpl, 'conf', $handle ); 98 $output.= 'after conf array : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 103 99 104 100 $tpl = array( 'short_period','long_period','lien_collapsed', 'username' ); … … 112 108 $icon_long = get_icon( time() - ( $user['short_period'] * 24 * 60 * 60 + 1 ) ); 113 109 $vtp->setGlobalVar( $handle, 'icon_long', $icon_long ); 114 $nb_total_pictures = get_total_image( "", $user['restrictions'] );110 $nb_total_pictures = count_images( $page['structure'] ); 115 111 $vtp->setGlobalVar( $handle, 'nb_total_pictures',$nb_total_pictures ); 116 112 //------------------------------------------------------------- categories menu 113 $output.= 'before menu : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 117 114 // normal categories 118 display_cat( '', ' ', $user['restrictions'], $page['tab_expand'] ); 115 foreach ( $page['structure'] as $category ) { 116 // display category is a function relative to the template 117 display_category( $category, ' ', $handle ); 118 } 119 $output.= 'after menu : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 119 120 // favorites cat 120 121 if ( !$user['is_the_guest'] ) 121 122 { 122 123 $vtp->addSession( $handle, 'favorites' ); 123 $url = add_session_id('./category.php?cat=fav&expand='.$page['expand'] );124 $vtp->setVar( $handle, 'favorites.url', $url);124 $url = './category.php?cat=fav&expand='.$page['expand']; 125 $vtp->setVar( $handle, 'favorites.url', add_session_id( $url ) ); 125 126 // searching the number of favorite picture 126 127 $query = 'SELECT COUNT(*) AS count'; … … 133 134 } 134 135 // most visited pictures category 135 $url = add_session_id( './category.php?cat=most_visited'. 136 '&expand='.$page['expand'] ); 137 $vtp->setGlobalVar( $handle, 'most_visited_url', $url ); 136 $url = './category.php?cat=most_visited&expand='.$page['expand']; 137 $vtp->setGlobalVar( $handle, 'most_visited_url', add_session_id( $url ) ); 138 138 // recent pictures 139 $url = add_session_id( './category.php?cat=recent'. 140 '&expand='.$page['expand'] ); 141 $vtp->setGlobalVar( $handle, 'recent_url', $url ); 139 $url = './category.php?cat=recent&expand='.$page['expand']; 140 $vtp->setGlobalVar( $handle, 'recent_url', add_session_id( $url ) ); 142 141 //--------------------------------------------------------------------- summary 143 142 $vtp->addSession( $handle, 'summary' ); … … 146 145 { 147 146 $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'])); 150 148 } 151 149 else 152 150 { 153 151 $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'] ) ); 156 153 } 157 154 $vtp->closeSession( $handle, 'summary' ); … … 186 183 // about link 187 184 $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( '&', '&', $_SERVER['QUERY_STRING'] ) ); 190 187 $vtp->setVar( $handle, 'summary.title', $lang['hint_about'] ); 191 188 $vtp->setVar( $handle, 'summary.name', replace_space( $lang['about'] ) ); … … 227 224 } 228 225 //------------------------------------------------------------------ thumbnails 226 $output.= 'before thumbs : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 229 227 if ( isset( $page['cat'] ) and $page['cat_nb_images'] != 0 ) 230 228 { … … 318 316 $query.= ' FROM '.PREFIX_TABLE.'comments'; 319 317 $query.= ' WHERE image_id = '.$row['id']; 318 $query.= " AND validated = 'true'"; 320 319 $query.= ';'; 321 320 $row = mysql_fetch_array( mysql_query( $query ) ); … … 342 341 $vtp->closeSession( $handle, 'thumbnails' ); 343 342 } 344 elseif ( isset( $page['cat'] ) 345 and is_numeric( $page['cat'] ) 346 and $page['cat_nb_images'] == 0 ) 343 //-------------------------------------------------------------- empty category 344 elseif ( ( isset( $page['cat'] ) 345 and is_numeric( $page['cat'] ) 346 and $page['cat_nb_images'] == 0 ) 347 or $_GET['cat'] == '' ) 347 348 { 348 349 $vtp->addSession( $handle, 'thumbnails' ); 349 350 $vtp->addSession( $handle, 'line' ); 350 351 351 $subcats = get_non_empty_sub _cat_ids( $page['cat'] );352 $subcats = get_non_empty_subcat_ids( $page['cat'] ); 352 353 $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]; 366 361 $name.= '</span> ]'; 367 $name = replace_space( $name );368 362 369 363 $query = 'SELECT file,tn_ext'; 370 364 $query.= ' FROM '.PREFIX_TABLE.'images'; 371 $query.= ' WHERE cat_id = '.$ subcat['non_empty_cat'];365 $query.= ' WHERE cat_id = '.$non_empty_id; 372 366 $query.= ' ORDER BY RAND()'; 373 367 $query.= ' LIMIT 0,1'; 374 368 $query.= ';'; 375 369 $image_result = mysql_query( $query ); 376 $image_row = mysql_fetch_array( $image_result );370 $image_row = mysql_fetch_array( $image_result ); 377 371 378 372 $file = get_filename_wo_extension( $image_row['file'] ); 379 373 380 374 // 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']; 386 378 387 379 $thumbnail_title = $lang['hint_category']; 388 380 389 $url_link = './category.php?cat='.$subcat ['id'];381 $url_link = './category.php?cat='.$subcat_id; 390 382 if ( !in_array( $page['cat'], $page['tab_expand'] ) ) 391 383 { … … 394 386 } 395 387 $url_link.= '&expand='.$page['expand']; 396 list( $year,$month,$day ) = explode( '-', $subcat ['date_dernier'] );388 list( $year,$month,$day ) = explode( '-', $subcat_infos['date_last'] ); 397 389 $date = mktime( 0, 0, 0, $month, $day, $year ); 398 390 … … 400 392 $vtp->addSession( $handle, 'thumbnail' ); 401 393 $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 ); 403 395 $vtp->setVar( $handle, 'thumbnail.alt', $image_row['file'] ); 404 396 $vtp->setVar( $handle, 'thumbnail.title', $thumbnail_title ); … … 412 404 $cell_number = 1; 413 405 // we open a new line if the subcat was not the last one 414 if ( $i d< count( $subcats ) - 1 )406 if ( $i++ < count( $subcats ) - 1 ) 415 407 { 416 408 $vtp->addSession( $handle, 'line' ); … … 418 410 } 419 411 } 420 if ( $i d< count( $subcats ) - 1 )412 if ( $i < count( $subcats ) - 1 ) 421 413 { 422 414 $vtp->closeSession( $handle, 'line' ); … … 424 416 $vtp->closeSession( $handle, 'thumbnails' ); 425 417 } 418 $output.= 'after thumbs : '.get_elapsed_time( $t2, get_moment() ).'<br />'; 426 419 //------------------------------------------------------- category informations 427 420 if ( isset ( $page['cat'] ) ) … … 470 463 //----------------------------------------------------------- html code display 471 464 $code = $vtp->Display( $handle, 0 ); 465 echo $output; 472 466 echo $code; 473 467 ?> -
trunk/identification.php
r10 r26 58 58 $vtp->setGlobalVar( $handle, 'mail_webmaster', $conf['mail_webmaster'] ); 59 59 // 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'] ); 61 initialize_template(); 66 62 //-------------------------------------------------------------- errors display 67 63 if ( sizeof( $error ) != 0 ) -
trunk/include/config.inc.php
r21 r26 23 23 include_once( PREFIX_INCLUDE.'./include/functions.inc.php' ); 24 24 include_once( PREFIX_INCLUDE.'./include/vtemplate.class.php' ); 25 26 25 // How to change the order of display for images in a category ? 27 26 // … … 40 39 $conf['order_by'] = ' ORDER BY date_available DESC, file ASC'; 41 40 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); 44 45 $conf['version'] = '1.3'; 45 46 $conf['site_url'] = 'http://www.phpwebgallery.net'; … … 59 60 'upload_available', 'upload_maxfilesize', 'upload_maxwidth', 60 61 'upload_maxheight', 'upload_maxwidth_thumbnail', 61 'upload_maxheight_thumbnail' );62 'upload_maxheight_thumbnail','log','comments_validation' ); 62 63 63 $query = 'SELECT ';64 $query = 'SELECT '; 64 65 foreach ( $infos as $i => $info ) { 65 66 if ( $i > 0 ) $query.= ','; 66 else $query.= ' ';67 67 $query.= $info; 68 68 } … … 82 82 } 83 83 } 84 $conf['log'] = false;85 84 $conf['top_number'] = 20; 86 85 ?> -
trunk/include/functions.inc.php
r21 r26 67 67 function array_remove( $array, $value ) 68 68 { 69 $i = 0;70 69 $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; 79 77 } 80 78 … … 321 319 function database_connection() 322 320 { 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 332 321 include( PREFIX_INCLUDE.'./include/mysql.inc.php' ); 333 322 define( PREFIX_TABLE, $prefix_table ); … … 347 336 $query = 'insert into '.PREFIX_TABLE.'history'; 348 337 $query.= ' (date,login,IP,file,category,picture) values'; 349 $query.= " (".time().", '".$user[' pseudo']."'";338 $query.= " (".time().", '".$user['username']."'"; 350 339 $query.= ",'".$_SERVER['REMOTE_ADDR']."'"; 351 340 $query.= ",'".$file."','".$category."','".$picture."');"; … … 358 347 global $vtp, $lang, $page, $user, $conf; 359 348 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] ); 364 351 } 365 352 } -
trunk/include/functions_category.inc.php
r21 r26 60 60 if ( isset( $cat ) ) 61 61 { 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; 67 74 $query. ';'; 68 75 $result = mysql_query( $query ); … … 72 79 } 73 80 } 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' ) 76 86 { 77 87 $page['cat'] = $cat; … … 80 90 } 81 91 82 function display_cat( $id_uppercat, $indent, $restriction, $tab_expand ) 83 { 84 global $user,$lang,$conf,$page,$vtp,$handle; 92 function get_plain_structure() 93 { 94 $infos = array( 'name','id','date_last','nb_images','dir','id_uppercat', 95 'rank'); 85 96 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(); 98 107 $result = mysql_query( $query ); 99 108 while ( $row = mysql_fetch_array( $result ) ) 100 109 { 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']."&expand=$expand"; 131 if ( $page['cat'] == 'search' ) 132 { 133 $url.= "&search=".$_GET['search'].'&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', '>' ); 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', '>' ); 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'].'&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.' ', 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 125 function 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 142 function 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 182 function 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 238 function 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 258 function count_images( $categories ) 221 259 { 222 260 $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'] ); 244 264 } 245 265 return $total; … … 262 282 $cat['name'] = array(); 263 283 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;'; 269 290 $row = mysql_fetch_array( mysql_query( $query ) ); 270 291 $cat['site_id'] = $row['site_id']; … … 273 294 $cat['nb_images'] = $row['nb_images']; 274 295 $cat['last_dir'] = $row['dir']; 296 $cat['date_last'] = $row['date_last']; 275 297 $galleries_url = $row['galleries_url']; 276 298 … … 281 303 while ( !$is_root ) 282 304 { 283 $query = ' selectname,dir,id_uppercat';284 $query.= ' from'.PREFIX_TABLE.'categories';285 $query.= ' whereid = '.$row['id_uppercat'].';';305 $query = 'SELECT name,dir,id_uppercat'; 306 $query.= ' FROM '.PREFIX_TABLE.'categories'; 307 $query.= ' WHERE id = '.$row['id_uppercat'].';'; 286 308 $row = mysql_fetch_array( mysql_query( $query ) ); 287 $cat['dir'] = $row['dir']. "/".$cat['dir'];309 $cat['dir'] = $row['dir'].'/'.$cat['dir']; 288 310 if ( $row['name'] == "" ) 289 311 { … … 503 525 } 504 526 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 : 508 531 // 509 532 // - catname [cat_id] 510 533 // - cat1 [1] -> given uppercat 511 // - cat1.1 [ 2] (empty)534 // - cat1.1 [12] (empty) 512 535 // - cat1.1.1 [5] (empty) 513 536 // - cat1.1.2 [6] … … 516 539 // 517 540 // 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; 544 function get_non_empty_subcat_ids( $id_uppercat ) 530 545 { 531 546 global $user; 532 547 533 $ cats = array();534 535 $query = 'SELECT id,n ame,dir,date_dernier,nb_images';548 $ids = array(); 549 550 $query = 'SELECT id,nb_images'; 536 551 $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; 538 555 // 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 ) { 541 557 $query.= ' AND id != '.$restricted_cat; 542 558 } … … 552 568 or $non_empty_cat = get_first_non_empty_cat_id( $row['id'] ) ) 553 569 { 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; 564 574 } 565 575 … … 575 585 $query.= ' WHERE id_uppercat = '.$id_uppercat; 576 586 // 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 ) { 579 588 $query.= ' AND id != '.$restricted_cat; 580 589 } -
trunk/include/functions_user.inc.php
r21 r26 314 314 { 315 315 $lowest_category_id = $category_id; 316 316 317 317 $is_root = false; 318 318 while ( !$is_root and !in_array( $category_id, $restrictions ) ) … … 323 323 $query.= ';'; 324 324 $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; 329 326 $category_id = $row['id_uppercat']; 330 327 } 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; 340 331 // this user is allowed to go in this category 341 332 return 0; -
trunk/include/init.inc.php
r21 r26 19 19 include_once( './include/config.inc.php' ); 20 20 include_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 25 22 // calculation of the number of picture to display per page 26 23 $user['nb_image_page'] = $user['nb_image_line'] * $user['nb_line_page']; … … 36 33 $user['username'] = $lang['guest']; 37 34 } 38 include_once( './template/'.$user['template'].'/style.inc.php' );39 35 include_once( './template/'.$user['template'].'/htmlfunctions.inc.php' ); 40 36 ?> -
trunk/include/user.inc.php
r21 r26 21 21 // status --> $user['status'] 22 22 $infos = array( 'id', 'username', 'mail_address', 'nb_image_line', 23 'nb_line_page', 'status', ' theme', 'language', 'maxwidth',23 'nb_line_page', 'status', 'language', 'maxwidth', 24 24 'maxheight', 'expand', 'show_nb_comments', 'short_period', 25 25 'long_period', 'template' ); 26 26 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 '; 28 foreach ( $infos as $i => $info ) { 29 if ( $i > 0 ) $query_user.= ','; 30 $query_user.= $info; 39 31 } 40 32 $query_user.= ' FROM '.PREFIX_TABLE.'users'; -
trunk/language/francais.php
r21 r26 1 1 <?php 2 // start version 1.3 3 $lang['charset'] = 'Shift_JIS';//'ISO_8859-1'; 4 // end version 1.3 2 5 $lang['only_members'] = 'Seuls les membres du site peuvent accéder à cette page'; 3 6 $lang['invalid_pwd'] = 'le mot de passe rentré n\'est pas valide'; … … 20 23 $lang['add'] = 'ajouter'; 21 24 $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'; 22 31 // end version 1.3 23 32 … … 133 142 $lang['err_maxwidth'] = 'la largeur maximum des images doit être un entier supérieur à 50'; 134 143 $lang['err_maxheight'] = 'la hauteur maximum des images doit être un entier supérieur à 50'; 135 136 // p age photo144 145 // picture.php 137 146 $lang['previous_image'] = 'Précédent'; 138 147 $lang['next_image'] = 'Suivant'; … … 167 176 $lang['del_favorites_alt'] = 'Retirer des favoris'; 168 177 $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 170 186 // page register 171 187 $lang['register_page_title'] = 'Enregistrement'; … … 209 225 $lang['upload_username'] = 'Nom d\'utilisateur'; 210 226 $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 211 233 212 234 //----------------------------------administration … … 235 257 $lang['title_cat_perm'] = 'Modifier les permissions pour la catégorie'; 236 258 $lang['title_group_perm'] = 'Modifier les permissions pour le groupe'; 259 $lang['title_comments'] = 'Commentaires des visiteurs'; 237 260 // end version 1.3 238 261 $lang['title_categories'] = 'Gestion des catégories'; … … 256 279 // start version 1.3 257 280 $lang['menu_groups'] = 'Groupes'; 281 $lang['menu_comments'] = 'Commentaires'; 258 282 // end version 1.3 259 283 … … 307 331 // $lang['conf_general_expand'] = 'développer toutes les catégories'; 308 332 // $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'; 309 335 // end version 1.3 310 336 $lang['conf_comments'] = 'commentaires utilisateurs'; … … 316 342 $lang['conf_err_comment_number'] = 'le nombre de commentaires par page doit être compris entre 5 et 50 inclus.'; 317 343 // 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'; 318 346 // $lang['conf_remote_site_title'] = 'Site distant'; 319 347 // end version 1.3 … … 337 365 $lang['conf_upload_maxheight_thumbnail_info'] = 'Hauteur maximum autorisée pour les miniatures. Celle-ci doit être un entier supérieur à 10, en pixels.'; 338 366 $lang['conf_err_upload_maxheight_thumbnail'] = 'la hauteur maximum des miniatures uploadées doit être un entier supérieur à 10.'; 339 367 340 368 $lang['conf_default_title'] = 'Affichage par défaut pour les visiteurs non enregistrés et les nouveaux comptes'; 341 369 // start version 1.3 … … 463 491 // end version 1.3 464 492 // 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 466 496 $lang['infoimage_general'] = 'Options générale pour la catégorie'; 467 497 $lang['infoimage_useforall'] = 'utiliser pour toutes les images ?'; … … 494 524 $lang['tn_err_width'] = 'la largeur doit être un entier supérieur à'; 495 525 $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 497 529 498 530 $lang['tn_results_title'] = 'Résultats de la miniaturisation'; 499 531 $lang['tn_picture'] = 'image'; 500 $lang['tn_filesize'] = 'poids'; 532 // start version 1.3 533 // $lang['tn_filesize'] = 'poids'; 534 // end version 1.3 501 535 $lang['tn_results_gen_time'] = 'généré en'; 502 536 … … 524 558 $lang['tn_dirs_title'] = 'Liste des répertoires'; 525 559 $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 527 573 // help page 528 574 $lang['help_images_title'] = 'Ajout d\'images'; … … 545 591 $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.'; 546 592 547 // start version 1.3 548 // $lang['help_remote_title'] = 'Site distant'; 549 // end version 1.3 593 $lang['help_remote_title'] = 'Site distant'; 550 594 $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 :'; 551 595 $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 17 17 18 18 // 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 gallery21 19 //----------------------------------------------------------- personnal include 22 20 include_once( './include/init.inc.php' ); … … 148 146 149 147 $tpl = array( 'back','submit','comments_title','comments_del','delete', 150 'comments_add','author' ); 148 'comments_add','author','slideshow','slideshow_stop', 149 'period_seconds' ); 151 150 templatize_array( $tpl, 'lang', $handle ); 151 $vtp->setGlobalVar( $handle, 'user_template', $user['template'] ); 152 152 $vtp->setGlobalVar( $handle, 'text_color', $user['couleur_text'] ); 153 //-------------------------------------------------------- slideshow management 154 if ( 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.= '&cat='.$page['cat']; 162 $url.= '&expand='.$_GET['expand']; 163 if ( $page['cat'] == 'search' ) 164 { 165 $url.= '&search='.$_GET['search']; 166 $url.= '&mode='.$_GET['mode']; 167 } 168 $vtp->setVar( $handle, 'stop_slideshow.url', add_session_id( $url ) ); 169 $vtp->closeSession( $handle, 'stop_slideshow' ); 170 } 171 else 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.= '&cat='.$page['cat']; 180 $url.= '&expand='.$_GET['expand']; 181 if ( $page['cat'] == 'search' ) 182 { 183 $url.= '&search='.$_GET['search']; 184 $url.= '&mode='.$_GET['mode']; 185 } 186 $url.= '&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 } 153 192 //------------------------------------------------------------------ page title 154 193 if ( $page['name'] != '' ) … … 377 416 $vtp->setVar( $handle, 'favorite.title', $lang['add_favorites_hint'] ); 378 417 $vtp->setVar( $handle, 'favorite.src', 379 './t heme/'.$user['theme'].'/favorite.gif' );418 './template/'.$user['template'].'/theme/favorite.gif' ); 380 419 $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['add_favorites_alt'].' ]' ); 381 420 $vtp->closeSession( $handle, 'favorite' ); … … 389 428 $vtp->setVar( $handle, 'favorite.title', $lang['del_favorites_hint'] ); 390 429 $vtp->setVar( $handle, 'favorite.src', 391 './t heme/'.$user['theme'].'/del_favorite.gif' );430 './template/'.$user['template'].'/theme/del_favorite.gif' ); 392 431 $vtp->setVar( $handle, 'favorite.alt','[ '.$lang['del_favorites_alt'].' ]' ); 393 432 $vtp->closeSession( $handle, 'favorite' ); … … 453 492 $vtp->setGlobalVar( $handle, 'next.alt', $alt_thumbnail ); 454 493 $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.'&slideshow='.$_GET['slideshow']; 500 $vtp->setVar( $handle, 'refresh.url', add_session_id( $url ) ); 501 $vtp->closeSession( $handle, 'refresh' ); 502 } 455 503 } 456 504 else … … 472 520 } 473 521 $query = 'INSERT INTO '.PREFIX_TABLE.'comments'; 474 $query.= ' (author,date,image_id,content ) VALUES';522 $query.= ' (author,date,image_id,content,validated) VALUES'; 475 523 $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.= ');'; 477 530 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' ); 478 539 } 479 540 // comment deletion … … 489 550 $query = 'SELECT COUNT(*) AS nb_comments'; 490 551 $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.= ';'; 492 555 $row = mysql_fetch_array( mysql_query( $query ) ); 493 556 $page['nb_comments'] = $row['nb_comments']; … … 520 583 $query.= ' FROM '.PREFIX_TABLE.'comments'; 521 584 $query.= ' WHERE image_id = '.$page['id']; 585 $query.= " AND validated = 'true'"; 522 586 $query.= ' ORDER BY date ASC'; 523 587 $query.= ' LIMIT '.$page['start'].', '.$conf['nb_comment_page'].';'; … … 531 595 $displayed_date.= date( " j ", $row['date'] ); 532 596 $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'] ); 534 598 $vtp->setVar( $handle, 'comment.date', $displayed_date ); 535 599 $vtp->setVar( $handle, 'comment.content', nl2br( $row['content'] ) ); -
trunk/profile.php
r17 r26 29 29 check_cat_id( $_GET['cat'] ); 30 30 //------------------------------------------------------ update & customization 31 $infos = array( 'nb_image_line', 'nb_line_page', ' theme', 'language',31 $infos = array( 'nb_image_line', 'nb_line_page', 'language', 32 32 'maxwidth', 'maxheight', 'expand', 'show_nb_comments', 33 33 'short_period', 'long_period', 'template', 'mail_address' ); … … 36 36 // - on teste si chacune des variables est passée en argument à la page 37 37 // - ce qui signifie que l'on doit venir de la page de personnalisation 38 $error = array();38 $errors = array(); 39 39 if ( isset( $_POST['submit'] ) ) 40 40 { 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'] ); 63 59 } 64 60 else 65 61 { 66 // l a période longue doit être supérieure à la période courte62 // long period must be longer than short period 67 63 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 ); 79 73 } 80 74 if ( $_POST['use_new_pwd'] == 1 ) 81 75 { 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 84 77 if ( $_POST['password'] != $_POST['passwordConf'] ) 85 78 { 86 $error[$i++] = $lang['reg_err_pass'];79 array_push( $errors, $lang['reg_err_pass'] ); 87 80 } 88 81 } 89 82 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; 108 90 $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']; 119 95 $query.= ';'; 120 96 mysql_query( $query ); … … 122 98 if ( $_POST['use_new_pwd'] == 1 ) 123 99 { 124 $query = ' update'.PREFIX_TABLE.'users';125 $query.= " setpassword = '".md5( $_POST['password'] )."'";126 $query.= ' whereid = '.$user['id'];100 $query = 'UPDATE '.PREFIX_TABLE.'users'; 101 $query.= " SET password = '".md5( $_POST['password'] )."'"; 102 $query.= ' WHERE id = '.$user['id']; 127 103 $query.= ';'; 128 104 mysql_query( $query ); 129 echo '<br />'.$query;130 105 } 131 106 // redirection … … 133 108 if ( $page['cat'] == 'search' ) 134 109 { 135 $url.= '&search='.$_GET['search'].'& amp;mode='.$_GET['mode'];110 $url.= '&search='.$_GET['search'].'&mode='.$_GET['mode']; 136 111 } 137 112 $url = add_session_id( $url, true ); … … 157 132 $vtp->setGlobalVar( $handle, 'form_action', add_session_id( $url ) ); 158 133 //-------------------------------------------------------------- errors display 159 if ( sizeof( $error) != 0 )134 if ( count( $errors ) != 0 ) 160 135 { 161 136 $vtp->addSession( $handle, 'errors' ); 162 for ( $i = 0; $i < sizeof( $error ); $i++ ) 163 { 137 foreach ( $errors as $error ) { 164 138 $vtp->addSession( $handle, 'li' ); 165 $vtp->setVar( $handle, 'li.li', $error [$i]);139 $vtp->setVar( $handle, 'li.li', $error ); 166 140 $vtp->closeSession( $handle, 'li' ); 167 141 } … … 221 195 $vtp->setVar( $handle, 'option.option', $option[$i] ); 222 196 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 //----------------------------------------------------------------------- theme232 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'] ) )244 197 { 245 198 $vtp->setVar( $handle, 'option.selected', ' selected="selected"' ); -
trunk/upload.php
r20 r26 17 17 18 18 //------------------------------------------------------------------- functions 19 20 19 // The validate_upload function checks if the image of the given path is valid. 21 20 // A picture is valid when : … … 115 114 if ( $access_forbidden == true 116 115 or $page['cat_site_id'] != 1 117 or $conf['upload_available'] == 'false')116 or !$conf['upload_available'] ) 118 117 { 119 118 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' ).'">'; 121 120 echo $lang['thumbnails'].'</a></div>'; 122 121 exit(); … … 128 127 129 128 $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' ); 132 templatize_array( $tpl, 'lang', $handle ); 136 133 137 134 $error = array(); 138 $i = 0;139 135 $page['upload_successful'] = false; 140 136 if ( isset( $_GET['waiting_id'] ) ) … … 143 139 } 144 140 //-------------------------------------------------------------- picture upload 145 // v érification de la présence et de la validité des champs.141 // verfying fields 146 142 if ( isset( $_POST['submit'] ) and !isset( $_GET['waiting_id'] ) ) 147 143 { … … 149 145 if ( @is_file( $path ) ) 150 146 { 151 $error[$i++] = $lang['upload_file_exists'];147 array_push( $error, $lang['upload_file_exists'] ); 152 148 } 153 149 // 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'] ); 157 153 } 158 154 if ( !ereg( "([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)", 159 155 $_POST['mail_address'] ) ) 160 156 { 161 $error[$i++] = $lang['reg_err_mail_address'];157 array_push( $error, $lang['reg_err_mail_address'] ); 162 158 } 163 159 if ( $_POST['username'] == '' ) 164 160 { 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 168 189 if ( sizeof( $error ) == 0 ) 169 190 { … … 174 195 for ( $j = 0; $j < sizeof( $result['error'] ); $j++ ) 175 196 { 176 $error[$i++] = $result['error'][$j];197 array_push( $error, $result['error'][$j] ); 177 198 } 178 199 } … … 181 202 { 182 203 $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'; 184 205 $query.= " (".$page['cat'].",'".$_FILES['picture']['name']."'"; 185 206 $query.= ",'".htmlspecialchars( $_POST['username'], ENT_QUOTES)."'"; 186 $query.= ",'".$_POST['mail_address']."',".time()." )";207 $query.= ",'".$_POST['mail_address']."',".time().",'".$xml_infos."')"; 187 208 $query.= ';'; 188 209 mysql_query( $query ); … … 210 231 for ( $j = 0; $j < sizeof( $result['error'] ); $j++ ) 211 232 { 212 $error[$i++] = $result['error'][$j];233 array_push( $error, $result['error'][$j] ); 213 234 } 214 235 if ( sizeof( $error ) == 0 ) … … 244 265 $url.= '&waiting_id='.$page['waiting_id']; 245 266 } 246 $vtp->setGlobalVar( $handle, 'form_action', $url);267 $vtp->setGlobalVar( $handle, 'form_action', add_session_id( $url ) ); 247 268 //--------------------------------------------------------------------- advises 248 269 if ( $conf['upload_maxfilesize'] != '' ) … … 308 329 { 309 330 $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 310 348 $vtp->closeSession( $handle, 'fields' ); 349 350 $vtp->addSession( $handle, 'note' ); 351 $vtp->closeSession( $handle, 'note' ); 311 352 } 312 353 $vtp->closeSession( $handle, 'upload_not_successful' );
Note: See TracChangeset
for help on using the changeset viewer.