source: trunk/admin/create_listing_file.php @ 161

Last change on this file since 161 was 161, checked in by z0rglub, 21 years ago

Filename must use the same characters as the directories

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.2 KB
Line 
1<?php
2/***************************************************************************
3 *                          create_listing_file.php                        *
4 *                            -------------------                          *
5 *   application   : PhpWebGallery 1.3 <http://phpwebgallery.net>          *
6 *   author        : Pierrick LE GALL <pierrick@z0rglub.com>               *
7 *                                                                         *
8 *   $Id: create_listing_file.php 161 2003-09-23 21:37:04Z z0rglub $
9 *                                                                         *
10 ***************************************************************************/
11
12$prefix_thumbnail = 'TN-';
13       
14$conf['picture_ext'] = array ( 'jpg', 'gif', 'png', 'JPG', 'GIF', 'PNG' );
15
16$listing = '';
17
18$end = strrpos( $_SERVER['PHP_SELF'], '/' ) + 1;
19$local_folder = substr( $_SERVER['PHP_SELF'], 0, $end );
20$url = 'http://'.$_SERVER['HTTP_HOST'].$local_folder;
21
22$listing.= '<url>'.$url.'</url>';
23       
24// get_dirs retourne un tableau contenant tous les sous-répertoires d'un
25// répertoire
26function get_dirs( $rep, $indent, $level )
27{
28  $sub_rep = array();
29  $i = 0;
30  $dirs = "";
31  if ( $opendir = opendir ( $rep ) )
32  {
33    while ( $file = readdir ( $opendir ) )
34    {
35      if ( $file != "."
36           and $file != ".."
37           and is_dir ( $rep."/".$file )
38           and $file != "thumbnail" )
39      {
40        $sub_rep[$i++] = $file;
41        if ( !preg_match( '/^[a-zA-Z0-9-_.]+$/', $file ) )
42        {
43          echo '<span style="color:red;">"'.$file.'" : ';
44          echo 'The name of the directory should be composed of ';
45          echo 'letters, figures, "-", "_" or "." ONLY';
46          echo '</span><br />';
47        }
48      }
49    }
50  }
51  // write of the dirs
52  for ( $i = 0; $i < sizeof( $sub_rep ); $i++ )
53  {
54    $dirs.= "\n".$indent.'<dir'.$level.' name="'.$sub_rep[$i].'">';
55    $dirs.= get_pictures( $rep.'/'.$sub_rep[$i], $indent.'  ' );
56    $dirs.= get_dirs( $rep.'/'.$sub_rep[$i], $indent.'  ', $level + 1 );
57    $dirs.= "\n".$indent.'</dir'.$level.'>';
58  }
59  return $dirs;         
60}
61
62// get_extension returns the part of the string after the last "."
63function get_extension( $filename )
64{
65  return substr( strrchr( $filename, '.' ), 1, strlen ( $filename ) );
66}
67
68// get_filename_wo_extension returns the part of the string before the last
69// ".".
70// get_filename_wo_extension( 'test.tar.gz' ) -> 'test.tar'
71function get_filename_wo_extension( $filename )
72{
73  return substr( $filename, 0, strrpos( $filename, '.' ) );
74}
75
76function is_image( $filename )
77{
78  global $conf;
79
80  if ( !is_dir( $filename )
81       and in_array( get_extension( $filename ), $conf['picture_ext'] ) )
82  {
83    return true;
84  }
85  return false;
86}
87
88function TN_exists( $dir, $file )
89{
90  global $conf, $prefix_thumbnail;
91
92  $titre = get_filename_wo_extension( $file );
93
94  for ( $i = 0; $i < sizeof ( $conf['picture_ext'] ); $i++ )
95  {
96    $base_tn_name = $dir.'/thumbnail/'.$prefix_thumbnail.$titre.'.';
97    $ext = $conf['picture_ext'][$i];
98    if ( is_file( $base_tn_name.$ext ) )
99    {
100      return $ext;
101    }
102  }
103  echo 'The thumbnail is missing for '.$dir.'/'.$file;
104  echo '-> '.$dir.'/thumbnail/'.$prefix_thumbnail.$titre.'.xxx';
105  echo ' ("xxx" can be : ';
106  for ( $i = 0; $i < sizeof ( $conf['picture_ext'] ); $i++ )
107  {
108    if ( $i > 0 )
109    {
110      echo ', ';
111    }
112    echo '"'.$conf['picture_ext'][$i].'"';
113  }
114  echo ')<br />';
115  return false;
116}
117
118function get_pictures( $rep, $indent )
119{
120  $pictures = array();         
121
122  $tn_ext = '';
123  $root = '';
124  if ( $opendir = opendir ( $rep ) )
125  {
126    while ( $file = readdir ( $opendir ) )
127    {
128      if ( is_image( $file ) and $tn_ext = TN_exists( $rep, $file ) )
129      {
130        $picture = array();
131
132        $picture['file']     = $file;
133        $picture['tn_ext']   = $tn_ext;
134        $picture['date']     = date('Y-m-d',filemtime( $rep.'/'.$file ) );
135        $picture['filesize'] = floor( filesize( $rep."/".$file ) / 1024 );
136        $image_size = @getimagesize( $rep."/".$file );
137        $picture['width']    = $image_size[0];
138        $picture['height']   = $image_size[1];
139
140        array_push( $pictures, $picture );
141
142        if ( !preg_match( '/^[a-zA-Z0-9-_.]+$/', $file ) )
143        {
144          echo '<span style="color:red;">"'.$file.'" : ';
145          echo 'The name of the picture should be composed of ';
146          echo 'letters, figures, "-", "_" or "." ONLY';
147          echo '</span><br />';
148        }
149      }
150    }
151  }
152  // write of the node <root> with all the pictures at the root of the
153  // directory
154  $root.= "\n".$indent."<root>";
155  if ( sizeof( $pictures ) > 0 )
156  {
157    for( $i = 0; $i < sizeof( $pictures ); $i++ )
158    {
159      $root.= "\n".$indent.'  ';
160      $root.= '<picture';
161      $root.= ' file="'.     $pictures[$i]['file'].     '"';
162      $root.= ' tn_ext="'.   $pictures[$i]['tn_ext'].   '"';
163      $root.= ' date="'.     $pictures[$i]['date'].     '"';
164      $root.= ' filesize="'. $pictures[$i]['filesize']. '"';
165      $root.= ' width="'.    $pictures[$i]['width'].    '"';
166      $root.= ' height="'.   $pictures[$i]['height'].   '"';
167      $root.= ' />';
168    }
169  }
170  $root.= "\n".$indent.'</root>';
171  return $root;
172}
173
174$listing.= get_dirs( '.', '', 0 );
175
176if ( $fp = @fopen("./listing.xml","w") )
177{
178  fwrite( $fp, $listing );
179  fclose( $fp );
180}
181else
182{
183  echo "I can't write the file listing.xml";
184}
185
186echo "listing.xml created";
187?>
Note: See TracBrowser for help on using the repository browser.