source: trunk/admin/install.php @ 20

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

* empty log message *

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