source: trunk/admin/install.php @ 77

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

improve the header of each file

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.0 KB
Line 
1<?php
2/***************************************************************************
3 *                                install.php                              *
4 *                            -------------------                          *
5 *   application   : PhpWebGallery 1.3 <http://phpwebgallery.net>          *
6 *   author        : Pierrick LE GALL <pierrick@z0rglub.com>               *
7 *                                                                         *
8 *   $Id: install.php 57 2003-08-24 07:40:56Z z0rglub $
9 *                                                                         *
10 ***************************************************************************/
11
12/***************************************************************************
13 *                                                                         *
14 *   This program is free software; you can redistribute it and/or modify  *
15 *   it under the terms of the GNU General Public License as published by  *
16 *   the Free Software Foundation;                                         *
17 *                                                                         *
18 ***************************************************************************/
19function header_install()
20{
21  $output = "
22<html>
23        <head>
24                <title>PhpWebGallery 1.2</title>
25                <style>
26                        a
27                        {
28                                text-decoration : none;
29                                color : #006699;
30                        }
31                        a:hover
32                        {
33                                text-decoration : underline;
34                        }
35                        body,table,input,form,select,textarea
36                        {
37                                font-family : Arial, Verdana, Sans-Serif;
38                                font-size : 12px;
39                        }
40                        .miniature
41                        {
42                                border : solid 1px black;
43                        }
44                        body
45                        {
46                                background-color :  #E5E5E5;
47                        }
48                        .titretable1
49                        {
50                                color : black;
51                                background-color : #D3DCE3;
52                                text-align : center;
53                                border : 2px solid #006699;
54                        }
55                        .grostitre
56                        {
57                                text-align : center;
58                                font-size : 20px;
59                                margin-bottom : 20px;
60                        }
61                        .plan
62                        {
63                                margin : 10px 10px 10px 2px;
64                                white-space : nowrap;
65                        }
66                        .table1
67                        {
68                                border-collapse : collapse;
69                                background-color : #FFFFFF;
70                        }
71                        .contenucellule
72                        {
73                                background-color : #EEEEEE;
74                                border : 2px solid #006699;
75                        }
76                        .style1
77                        {
78                                margin-top : 20px;
79                        }
80                        th
81                        {
82                                font-weight : bold;
83                                background-color : #D3DCE3;
84                        }
85                        td.row1
86                        {
87                                background-color : #DDDDDD;
88                        }
89                        td.row2
90                        {
91                                background-color : #E8E8E8;
92                        }
93                        .cat_plan
94                        {
95                                font-weight : bold;
96                        }
97                        .retrait
98                        {
99                                margin : 10px;
100                                margin-left : 30px;
101                                margin-top : 2px;
102                        }
103                        input,textarea
104                        {
105                                border-width : 1;
106                                border-color : #000000;
107                                background : #ffffff;
108                                color: #000000;
109                        }
110                        .erreur
111                        {
112                                color : red;
113                                text-align : center;
114                        }
115                        .info
116                        {
117                                color : darkblue;
118                                text-align : center;
119                        }
120                </style>
121        </head>
122        <body>
123                <table style=\"width:100%;height:100%\">
124                        <tr align=\"center\" valign=\"middle\">
125                                <td>
126                                        <div class=\"grostitre\">PhpWebGallery 1.2</div>
127                                        <table width=\"700\" class=\"table1\" style=\"margin:auto;\">
128                                                <tr>
129                                                        <td class=\"contenucellule\">";
130  return $output;
131}
132       
133function footer_install()
134{
135  $output = "
136                                                        </td>
137                                                </tr>
138                                        </table>
139                                </td>
140                        </tr>
141                </table>
142        </body>
143</html>";
144  return $output;
145}
146       
147if ( isset( $HTTP_GET_VARS['language'] ) )
148{
149  $isadmin = true;
150  $lang = array();
151  include( "../language/".$HTTP_GET_VARS['language'].".php" );
152}
153       
154/*---------------------------------------Step 1------------------------------------*/
155if ( $HTTP_GET_VARS['step'] == 1 )
156{
157  $erreur1 = true;
158  $message = "";
159  // création du fichier de configuration de connexion à la BD mysql
160  if( isset( $HTTP_POST_VARS['cfgBase'] ) && isset( $HTTP_POST_VARS['cfgUser'] ) && isset( $HTTP_POST_VARS['cfgPassword'] ) && isset( $HTTP_POST_VARS['cfgHote'] ) )
161  {
162    if ( @mysql_connect( $HTTP_POST_VARS['cfgHote'], $HTTP_POST_VARS['cfgUser'], $HTTP_POST_VARS['cfgPassword'] ) )
163    {
164      if ( @mysql_select_db($HTTP_POST_VARS['cfgBase'] ) )
165      {
166        $message.= "<div class=\"info\">".$lang['step1_confirmation']."</div>";
167        $erreur1 = false;
168      }
169      else
170      {
171        $message.= "<div class=\"erreur\">".$lang['step1_err_db']."</div>";
172      }
173    }
174    else
175    {
176      $message.= "<div class=\"erreur\">".$lang['step1_err_server']."</div>";
177    }
178                       
179    if ( !$erreur1 )
180    {                           
181      // écriture du fichier de configuration
182      if ( $fp = @fopen("../include/mysql.inc.php","a+") )
183      {
184        fwrite( $fp, "<?php\n\t\$cfgBase='".$HTTP_POST_VARS['cfgBase']."';\n\t\$cfgUser='".$HTTP_POST_VARS['cfgUser']."';\n\t\$cfgPassword='".$HTTP_POST_VARS['cfgPassword']."';\n\t\$cfgHote='".$HTTP_POST_VARS['cfgHote']."';\n\t\PREFIX_TABLE='".$HTTP_POST_VARS['prefixe']."';\n?>" ); 
185        fclose( $fp );
186      }
187      $cfgHote = "";
188      $cfgUser = "";
189      $cfgPassword = "";
190      $cfgBase = "";
191      include ( "../include/mysql.inc.php" );
192      $erreur2 = true;
193      if ( @mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) )
194      {
195        if ( @mysql_select_db ( $cfgBase ) )
196        {
197          $erreur2 = false;
198        }
199      }
200      if ( $erreur2 )
201      {
202        $message.="<br /><br />".$lang['step1_err_copy']." :<br />
203                                                        -----------------------------------------------------<br />
204                                                        <div style=\"color:blue;\">&lt;?php<br />
205                                                        \$cfgBase = '".$HTTP_POST_VARS['cfgBase']."';<br />
206                                                        \$cfgUser = '".$HTTP_POST_VARS['cfgUser']."';<br />
207                                                        \$cfgPassword = '".$HTTP_POST_VARS['cfgPassword']."';<br />
208                                                        \$cfgHote = '".$HTTP_POST_VARS['cfgHote']."';<br />
209                                                        \PREFIX_TABLE = '".$HTTP_POST_VARS['prefixe']."';<br />
210                                                        ?&gt;</div>
211                                                        -----------------------------------------------------<br />";
212        $message.= "<div style=\"text-align:center;\">".$lang['step1_err_copy_2']."<br />";
213        $message.= "<a href=\"install.php?step=2&amp;language=".$HTTP_GET_VARS['language']."\">".$lang['step1_err_copy_next']."</a></div>";
214      }
215      else
216      {
217        $url = "install.php?step=2&language=".$HTTP_GET_VARS['language'];
218        header("Request-URI: $url"); 
219        header("Content-Location: $url"); 
220        header("Location: $url");
221        exit();
222      }
223    }
224  }
225               
226  echo header_install();
227  if ( isset( $message ) && $message != "" )
228  {
229    echo"
230                                        <table width=\"100%\">
231                                                <tr>
232                                                        <th>".$lang['install_message']."</th>
233                                                </tr>
234                                                <tr>
235                                                        <td>$message</td>
236                                                </tr>
237                                        </table>";
238  }
239  if ( $erreur1 )
240  {
241    echo"
242                                        <form method=\"post\" action=\"install.php?step=1&amp;language=".$HTTP_GET_VARS['language']."\">
243                                                <table width=\"100%\">
244                                                        <tr>
245                                                                <th colspan=\"3\">".$lang['step1_title']."</th>
246                                                        </tr>
247                                                        <tr>
248                                                                <td colspan=\"3\">&nbsp;</th>
249                                                        </tr>
250                                                        <tr>
251                                                                <td>".$lang['step1_host']."</td>
252                                                                <td align=center><input type='text' name='cfgHote' value='";
253    if ( !isset( $HTTP_POST_VARS['cfgHote'] ) )
254    {
255      echo"localhost";
256    }
257    else
258    {
259      echo $HTTP_POST_VARS['cfgHote'];
260    }
261    echo"'></td>
262                                                                <td class=\"row2\">".$lang['step1_host_info']."</td>
263                                                        </tr>
264                                                        <tr>
265                                                                <td>".$lang['step1_user']."</td>
266                                                                <td align=center><input type='text' name='cfgUser' value='".$HTTP_POST_VARS['cfgUser']."'></td>
267                                                                <td class=\"row2\">".$lang['step1_user_info']."</td>
268                                                        </tr>
269                                                        <tr>
270                                                                <td>".$lang['step1_pass']."</td>
271                                                                <td align=center><input type='password' name='cfgPassword' value=''></td>
272                                                                <td class=\"row2\">".$lang['step1_pass_info']."</td>
273                                                        </tr>
274                                                        <tr>
275                                                                <td>".$lang['step1_database']."</td>
276                                                                <td align=center><input type='text' name='cfgBase' value='".$HTTP_POST_VARS['cfgBase']."'></td>
277                                                                <td class=\"row2\">".$lang['step1_database_info']."</td>
278                                                        </tr>
279                                                        <tr>
280                                                                <td>".$lang['step1_prefix']."</td>
281                                                                <td align=center><input type='text' name='prefixe' value='";
282    if ( !isset( $HTTP_POST_VARS['prefixe'] ) )
283    {
284      echo"phpwebgallery_";
285    }
286    else
287    {
288      echo $HTTP_POST_VARS['prefixe'];
289    }
290    echo"'></td>
291                                                                <td class=\"row2\">".$lang['step1_prefix_info']."</td>
292                                                        </tr>
293                                                        <tr>
294                                                                <td colspan=\"3\">&nbsp;</th>
295                                                        </tr>
296                                                        <tr>
297                                                                <td colspan=3 align=center><input type='submit' name='Valider' value=\"".$lang['submit']." *\"></td>
298                                                        </tr>
299                                                </table>
300                                        </form>";
301  }
302  echo footer_install();
303}
304/*---------------------------------------Step 2------------------------------------*/
305else if ( $HTTP_GET_VARS['step'] == 2 )
306{
307  include( "../include/mysql.inc.php" );
308  mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) or die ( "erreur de connexion au serveur" );
309  mysql_select_db( $cfgBase ) or die ( "erreur de connexion a la base de donnees" );
310               
311  if ( !isset( $HTTP_POST_VARS['submit'] ) )
312  {
313    $query = "CREATE TABLE ".PREFIX_TABLE."categories (
314                                id tinyint(3) unsigned NOT NULL auto_increment,
315                          date_dernier date NOT NULL default '0000-00-00',
316                          nb_images smallint(5) unsigned NOT NULL default '0',
317                          name varchar(255) default NULL,
318                          id_uppercat tinyint(3) unsigned default NULL,
319                          comment text,
320                          dir varchar(255) NOT NULL default '',
321                          rank tinyint(3) unsigned default NULL,
322                          status enum('visible','invisible') NOT NULL default 'visible',
323                          site_id tinyint(4) unsigned NOT NULL default '1',
324                          PRIMARY KEY (id)
325                        );";
326    mysql_query( $query );
327    $query = "CREATE TABLE ".PREFIX_TABLE."comments (
328                          id int(11) unsigned NOT NULL auto_increment,
329                          image_id smallint(5) unsigned NOT NULL default '0',
330                          date int(11) unsigned NOT NULL default '0',
331                          author varchar(255) NOT NULL default '',
332                          content longtext,
333                          PRIMARY KEY  (id)
334                        );";
335    mysql_query( $query );
336    $query = "CREATE TABLE ".PREFIX_TABLE."config (
337                          periode_courte smallint(5) unsigned NOT NULL default '7',
338                          periode_longue smallint(5) unsigned NOT NULL default '14',
339                          prefix_thumbnail varchar(10) NOT NULL default 'TN-',
340                          webmaster varchar(255) NOT NULL default '',
341                          mail_webmaster varchar(255) NOT NULL default '',
342                          acces enum('libre','restreint') NOT NULL default 'libre',
343                          session_id_size tinyint(3) unsigned NOT NULL default '4',
344                          session_keyword varchar(255) NOT NULL default '',
345                          session_time tinyint(3) unsigned NOT NULL default '30',
346                          max_user_listbox tinyint(3) unsigned NOT NULL default '10',
347                          expand enum('true','false') NOT NULL default 'false',
348                          show_comments enum('true','false') NOT NULL default 'true',
349                          nb_comment_page tinyint(4) NOT NULL default '10',
350                          upload_available enum('true','false') NOT NULL default 'false',
351                          upload_maxfilesize smallint(5) unsigned NOT NULL default '150',
352                          upload_maxwidth smallint(5) unsigned NOT NULL default '800',
353                          upload_maxheight smallint(5) unsigned NOT NULL default '600',
354                          upload_maxwidth_thumbnail smallint(5) unsigned NOT NULL default '150',
355                          upload_maxheight_thumbnail smallint(5) unsigned NOT NULL default '100'
356                        );";
357    mysql_query( $query );
358    $query = "CREATE TABLE ".PREFIX_TABLE."favorites (
359                          user_id smallint(5) unsigned NOT NULL default '0',
360                          image_id smallint(5) unsigned NOT NULL default '0',
361                          KEY user_id (user_id,image_id)
362                        );";
363    mysql_query( $query );
364    $query = "CREATE TABLE ".PREFIX_TABLE."history (
365                          date int(11) NOT NULL default '0',
366                          login varchar(15) default NULL,
367                          IP varchar(50) NOT NULL default '',
368                          categorie varchar(150) default NULL,
369                          page varchar(50) default NULL,
370                          titre varchar(150) default NULL,
371                          commentaire varchar(200) default NULL
372                        );";
373    mysql_query( $query );
374    $query = "CREATE TABLE ".PREFIX_TABLE."images (
375                          id smallint(5) unsigned NOT NULL auto_increment,
376                          file varchar(255) NOT NULL default '',
377                          cat_id tinyint(3) unsigned NOT NULL default '0',
378                          date_available date NOT NULL default '0000-00-00',
379                          date_creation date default NULL,
380                          tn_ext char(3) NOT NULL default 'jpg',
381                          name varchar(255) default NULL,
382                          comment varchar(255) default NULL,
383                          author varchar(255) default NULL,
384                          hit int(10) unsigned NOT NULL default '0',
385                          filesize mediumint(9) unsigned default NULL,
386                          width smallint(9) unsigned default NULL,
387                          height smallint(9) unsigned default NULL,
388                          PRIMARY KEY  (id),
389                          KEY cat_id (cat_id)
390                        );";
391    mysql_query( $query );
392    $query = "CREATE TABLE ".PREFIX_TABLE."restrictions (
393                          user_id smallint(5) unsigned NOT NULL default '0',
394                          cat_id tinyint(3) unsigned NOT NULL default '0',
395                          PRIMARY KEY  (user_id,cat_id)
396                        );";
397    mysql_query( $query );
398    $query = "CREATE TABLE ".PREFIX_TABLE."sessions (
399                          id varchar(255) binary NOT NULL default '',
400                          user_id smallint(5) unsigned NOT NULL default '0',
401                          expiration int(10) unsigned NOT NULL default '0',
402                          ip varchar(255) NOT NULL default '',
403                          PRIMARY KEY  (id)
404                        );";
405    mysql_query( $query );
406    $query = "CREATE TABLE ".PREFIX_TABLE."sites (
407                          id tinyint(4) NOT NULL auto_increment,
408                          galleries_url varchar(255) NOT NULL default '',
409                          PRIMARY KEY  (id),
410                          UNIQUE KEY galleries_url (galleries_url)
411                        );";
412    mysql_query( $query );
413    $query = "CREATE TABLE ".PREFIX_TABLE."users (
414                          id smallint(5) unsigned NOT NULL auto_increment,
415                          pseudo varchar(20) binary NOT NULL default '',
416                          password varchar(255) NOT NULL default '',
417                          mail_address varchar(255) default NULL,
418                          nombre_image_ligne tinyint(1) unsigned NOT NULL default '5',
419                          nombre_ligne_page tinyint(3) unsigned NOT NULL default '3',
420                          theme varchar(255) NOT NULL default 'melodie/blue',
421                          status enum('admin','membre','visiteur') NOT NULL default 'visiteur',
422                          language varchar(50) NOT NULL default 'english',
423                          maxwidth smallint(6) default NULL,
424                          maxheight smallint(6) default NULL,
425                          PRIMARY KEY  (id),
426                          UNIQUE KEY pseudo (pseudo)
427                        );";
428    mysql_query( $query );
429    $query = "CREATE TABLE ".PREFIX_TABLE."waiting (
430                          id int(10) unsigned NOT NULL auto_increment,
431                          cat_id tinyint(3) unsigned NOT NULL default '0',
432                          file varchar(255) NOT NULL default '',
433                          username varchar(255) NOT NULL default '',
434                          mail_address varchar(255) NOT NULL default '',
435                          date int(10) unsigned NOT NULL default '0',
436                          tn_ext char(3) default NULL,
437                          PRIMARY KEY  (id)
438                        );";
439    mysql_query( $query );
440  }
441  if ( isset( $HTTP_POST_VARS['submit'] ) )
442  {
443    $configuration = false;
444    $erreur = "";
445    $nb_erreur = 0;
446    // le pseudo du webmaster ne doit pas
447    // 1. être vide
448    // 2. commencer ou se terminer par un espace
449    // 3. comporter les caractères ' ou "
450    // Notes sur le pseudo du webmaster :
451    // - lorsque l'on trouve plusieurs occurences
452    // consécutives du caractère espace, on réduit à une seule occurence
453    if ( $HTTP_POST_VARS['webmaster'] == "" )
454    {
455      $erreur .= "<li>".$lang['step2_err_login1']."</li>";
456      $nb_erreur++;
457    }
458    $webmaster = ereg_replace( "[ ]{2,}", " ", $HTTP_POST_VARS['webmaster'] );
459    if ( ereg( "^.* $", $webmaster ) || ereg( "^ .*$", $webmaster) )
460    {
461      $erreur .= "<li>".$lang['step2_err_login2']."</li>";
462      $nb_erreur++;
463    }
464    if ( ereg( "'",$webmaster ) || ereg( "\"",$webmaster ) )
465    {
466      $erreur .= "<li>".$lang['step2_err_login3']."</li>";
467      $nb_erreur++;
468    }
469    // on vérifie que le password rentré correspond bien à la confirmation faite par l'utilisateur
470    if ( $HTTP_POST_VARS['pwdWebmaster'] != $HTTP_POST_VARS['pwdWebmasterConf'] )
471    {
472      $erreur .= "<li>".$lang['step2_err_pass']."</li>";
473      $nb_erreur++;
474    }
475    // le mail doit être conforme à qqch du type : nom@serveur.com
476    if( !ereg("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)", $HTTP_POST_VARS['mail_webmaster'] ) )
477    {
478      $erreur .= "<li>".$lang['step2_err_mail']."</li>";
479      $nb_erreur++;
480    }
481    // on met à jour les paramètres de l'application dans le cas où il n'y aucune erreur
482    if ( $nb_erreur == 0 )
483    {
484      mysql_query( "delete from PREFIX_TABLE"."config" );
485      $query = "insert into PREFIX_TABLE"."config (webmaster,mail_webmaster) values ('$webmaster','".$HTTP_POST_VARS['mail_webmaster']."')";
486      mysql_query($query);
487      $query = "insert into PREFIX_TABLE"."sites values (1, './galleries/');";
488      mysql_query($query);
489      $query = "insert into PREFIX_TABLE"."users (pseudo,password,status,language) values ('$webmaster','".md5( $pwdWebmaster )."','admin','".$HTTP_GET_VARS['language']."')";
490      mysql_query($query);
491      mysql_query("insert into PREFIX_TABLE"."users (pseudo,password,status,language) values ('visiteur','".md5( "" )."','visiteur','".$HTTP_GET_VARS['language']."')");
492      $configuration = true;
493    }
494  }
495               
496  echo header_install();
497  if ( $configuration )
498  {
499    echo"
500                                                <table width=\"100%\">
501                                                        <tr>
502                                                                <th>".$lang['install_end_title']."</th>
503                                                        </tr>
504                                                        <tr>
505                                                                <td>&nbsp;</th>
506                                                        </tr>
507                                                        <tr>
508                                                                <td>".$lang['install_end_message']."</td>
509                                                        </tr>
510                                                </table>";
511  }
512  else
513  {
514    if ( $nb_erreur > 0 )
515    {
516      echo"
517                                                <table width=100%>
518                                                        <tr>
519                                                                <th>".$lang['install_message']."</th>
520                                                        </tr>
521                                                        <tr>
522                                                                <td>&nbsp;</td>
523                                                        </tr>
524                                                        <tr>
525                                                                <td>$erreur</td>
526                                                        </tr>
527                                                        <tr>
528                                                                <td>&nbsp;</td>
529                                                        </tr>
530                                                </table>";
531    }
532    echo"
533                                        <form method=\"post\" action=\"install.php?step=2&amp;language=".$HTTP_GET_VARS['language']."\">
534                                                <table width=100%>
535                                                        <tr>
536                                                                <th colspan=\"3\">".$lang['step2_title']."</th>
537                                                        </tr>
538                                                        <tr>
539                                                                <td colspan=\"3\">&nbsp;</td>
540                                                        </tr>
541                                                        <tr>
542                                                                <td>".$lang['conf_general_webmaster']."</td>
543                                                                <td align=\"center\"><input type='text' name='webmaster' value=\"".$HTTP_POST_VARS['webmaster']."\"></td>
544                                                                <td class=\"row2\">".$lang['conf_general_webmaster_info']."</td>
545                                                        </tr>
546                                                        <tr>
547                                                                <td>".$lang['step2_pwd']."</td>
548                                                                <td align=center><input type='password' name='pwdWebmaster' value=''></td>
549                                                                <td class=\"row2\">".$lang['step2_pwd_info']."</td>
550                                                        </tr>
551                                                        <tr>
552                                                                <td>".$lang['step2_pwd_conf']."</td>
553                                                                <td align=center><input type='password' name='pwdWebmasterConf' value=''></td>
554                                                                <td class=\"row2\">".$lang['step2_pwd_conf_info']."</td>
555                                                        </tr>
556                                                        <tr>
557                                                                <td>".$lang['conf_general_mail']."</td>
558                                                                <td align=center><input type='text' name='mail_webmaster' value=\"".$HTTP_POST_VARS['mail_webmaster']."\"></td>
559                                                                <td class=\"row2\">".$lang['conf_general_mail_info']."</td>
560                                                        </tr>
561                                                        <tr>
562                                                                <td colspan=\"3\">&nbsp;</th>
563                                                        </tr>
564                                                        <tr>
565                                                                <td colspan=3 align=center>
566                                                                        <input type='submit' name='submit' value='".$lang['submit']."'>
567                                                                </td>
568                                                        </tr>
569                                                </table>
570                                        </form>";
571  }
572  echo footer_install();
573}
574/*----------------------------------Language choice------------------------------------*/
575else
576{
577  include( "../include/functions.php" );
578  echo header_install();
579  echo"
580                                        <form method=\"get\" action=\"install.php\">
581                                                <input type=\"hidden\" name=\"step\" value=\"1\"/>
582                                                <table width=\"100%\">
583                                                        <tr>
584                                                                <td align=\"center\">
585                                                                        <select name=\"language\">";
586  $languages = get_languages( "../language/" );
587  for ( $i = 0; $i < sizeof ( $languages ); $i++ )
588  {
589    echo"
590                                                                                <option>".$languages[$i]."</option>";
591  }
592  echo"
593                                                                                </select>
594                                                                                <input type=\"submit\" value=\"Go\">
595                                                                </td>
596                                                        </tr>
597                                                </table>
598                                        </form>";
599  echo footer_install();
600}
601?>
Note: See TracBrowser for help on using the repository browser.