| // | branch : BSF (Best So Far) | // +-----------------------------------------------------------------------+ // | file : $RCSfile$ // | last update : $Date$ // | last modifier : $Author$ // | revision : $Revision$ // +-----------------------------------------------------------------------+ // | This program is free software; you can redistribute it and/or modify | // | it under the terms of the GNU General Public License as published by | // | the Free Software Foundation | // | | // | This program is distributed in the hope that it will be useful, but | // | WITHOUT ANY WARRANTY; without even the implied warranty of | // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | // | General Public License for more details. | // | | // | You should have received a copy of the GNU General Public License | // | along with this program; if not, write to the Free Software | // | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | // | USA. | // +-----------------------------------------------------------------------+ //-------------------------------------------------------------------- includes define( 'PREFIX_INCLUDE', '' ); include( './include/vtemplate.class.php' ); include( './include/functions.inc.php' ); $config_file = './config.php'; //----------------------------------------------------- template initialization $vtp = new VTemplate; $handle = $vtp->Open( './template/default/install.vtp' ); $vtp->setGlobalVar( $handle, 'release', '1.4' ); //-------------------------------------------------------------------- language if ( isset( $_GET['language'] ) ) { $isadmin = true; $lang = array(); include( './language/'.$_GET['language'].'.php' ); $tpl = array( 'step1_err_copy', 'step1_err_copy_2', 'step1_err_copy_next', 'errors_title', 'step1_title','step1_host','step1_host_info', 'step1_user','step1_user_info','step1_pass','step1_pass_info', 'step1_database','step1_database_info','step1_prefix', 'step1_prefix_info','submit','infos_title','step2_title', 'conf_general_webmaster','conf_general_webmaster_info', 'step2_pwd','step2_pwd_info','step2_pwd_conf', 'step2_pwd_conf_info','conf_general_mail', 'conf_general_mail_info','install_end_title', 'install_end_message','install_help'); templatize_array( $tpl, 'lang', $handle ); $vtp->setGlobalVar( $handle, 'language', $_GET['language'] ); } //---------------------- Step 1 : connection informations, write of config file if ( isset($_GET['step']) && $_GET['step'] == 1 ) { $errors = array(); $infos = array(); // creation of ./include/mysql.inc.php : file containing database // connection informations if ( isset( $_POST['cfgBase'] ) and isset( $_POST['cfgUser'] ) and isset( $_POST['cfgPassword'] ) and isset( $_POST['cfgHote'] ) ) { if ( @mysql_connect( $_POST['cfgHote'], $_POST['cfgUser'], $_POST['cfgPassword'] ) ) { if ( @mysql_select_db($_POST['cfgBase'] ) ) { array_push( $infos, $lang['step1_confirmation'] ); } else { array_push( $errors, $lang['step1_err_db'] ); } } else { array_push( $errors, $lang['step1_err_server'] ); } if ( count( $errors ) == 0 ) { $file_content = ""; // writting the configuration file if ( $fp = @fopen( $config_file, 'a+' ) ) { ftruncate($fp, 0); fwrite( $fp, $file_content ); fclose( $fp ); } $cfgHote = ''; $cfgUser = ''; $cfgPassword = ''; $cfgBase = ''; if ( is_file( $config_file ) ) include( $config_file ); $file_OK = false; if ( @mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) ) { if ( @mysql_select_db( $cfgBase ) ) $file_OK = true; } if ( !$file_OK ) { $vtp->addSession( $handle, 'error_copy' ); $html_content = htmlentities( $file_content, ENT_QUOTES ); $html_content = nl2br( $html_content ); $vtp->setVar( $handle, 'error_copy.file_content', $html_content ); $vtp->closeSession( $handle, 'error_copy' ); } else { $url = 'install.php?step=2&language='.$_GET['language']; header( 'Request-URI: '.$url ); header( 'Content-Location: '.$url); header( 'Location: '.$url ); exit(); } } } // errors display if ( sizeof( $errors ) != 0 ) { $vtp->addSession( $handle, 'errors' ); foreach ( $errors as $error ) { $vtp->addSession( $handle, 'error' ); $vtp->setVar( $handle, 'error.content', $error ); $vtp->closeSession( $handle, 'error' ); } $vtp->closeSession( $handle, 'errors' ); } // infos display if ( sizeof( $infos ) != 0 ) { $vtp->addSession( $handle, 'infos' ); foreach ( $infos as $info ) { $vtp->addSession( $handle, 'info' ); $vtp->setVar( $handle, 'info.content', $info ); $vtp->closeSession( $handle, 'info' ); } $vtp->closeSession( $handle, 'infos' ); } // form display (if necessary) if ( !isset( $_POST['submit'] ) or sizeof( $errors ) > 0 ) { $vtp->addSession( $handle, 'step1' ); // host if ( !isset( $_POST['cfgHote'] ) ) $vtp->setVar( $handle, 'step1.f_host', 'localhost' ); else $vtp->setVar( $handle, 'step1.f_host', $_POST['cfgHote'] ); // user if ( isset( $_POST['cfgUser'] ) ) $vtp->setVar( $handle, 'step1.f_user', $_POST['cfgUser'] ); // base if ( isset( $_POST['cfgBase'] ) ) $vtp->setVar( $handle, 'step1.f_base', $_POST['cfgBase'] ); // prefixeTable if ( !isset( $_POST['prefixeTable'] ) ) $vtp->setVar( $handle, 'step1.f_prefixeTable', 'phpwebgallery_' ); else $vtp->setVar( $handle, 'step1.f_prefixeTable', $_POST['prefixeTable'] ); $vtp->closeSession( $handle, 'step1' ); } } //------------------------------------- Step 2 : creation of tables in database else if ( isset($_GET['step']) && $_GET['step'] == 2 ) { $errors = array(); $infos = array(); include( $config_file ); mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) or die ( "Can't connect to database host" ); mysql_select_db( $cfgBase ) or die ( "Connection to host succeeded, but database selection failed" ); if ( !isset( $_POST['submit'] ) ) { // tables creation, based on phpwebgallery_structure.sql $sql_lines = file( './admin/phpwebgallery_structure.sql' ); $query = ''; foreach ( $sql_lines as $sql_line ) { $sql_line = trim( $sql_line ); if ( preg_match( '/(^--|^$)/', $sql_line ) ) continue; $query.= ' '.$sql_line; // if we reached the end of query, we execute it and reinitialize the // variable "query" if ( preg_match( '/;$/', $sql_line ) ) { $query = trim( $query ); $query = str_replace( 'phpwebgallery_', $table_prefix, $query ); // we don't execute "DROP TABLE" queries if ( !preg_match( '/^DROP TABLE/i', $query ) ) mysql_query( $query ); $query = ''; } } } if ( isset( $_POST['submit'] ) ) { // webmaster login must be // 1. non empty // 2. without characters ' or " $webmaster = preg_replace( '/\s{2,}/', ' ', $_POST['webmaster'] ); $webmaster = trim( $webmaster ); if ( $webmaster == '' ) array_push( $errors, $lang['step2_err_login1'] ); if ( preg_match( '/[\'"]/', $webmaster ) ) array_push( $errors, $lang['step2_err_login3'] ); // the webmaster string must be the same as its confirmation if ( $_POST['pwdWebmaster'] != $_POST['pwdWebmasterConf'] ) array_push( $errors, $lang['step2_err_pass'] ); // mail address must have this format : name@server.com $error_mail_address = validate_mail_address( $_POST['mail_webmaster'] ); if ( $error_mail_address != '' ) array_push( $errors, $error_mail_address ); if ( $_POST['mail_webmaster'] == '' ) array_push( $errors, $lang['reg_err_mail_address'] ); // if no error found till here : insertion of data in tables if ( count( $errors ) == 0 ) { $query = 'DELETE FROM '.$table_prefix.'config'; mysql_query( $query ); $query = 'INSERT INTO '.$table_prefix.'config'; $query.= ' (webmaster,mail_webmaster) VALUES '; $query.= " ('".$webmaster."','".$_POST['mail_webmaster']."')"; $query.= ';'; mysql_query( $query ); $query = 'INSERT INTO '.$table_prefix.'sites'; $query.= " (id,galleries_url) VALUES (1, './galleries/')"; $query.= ';'; mysql_query( $query ); // webmaster admin user $query = 'INSERT INTO '.$table_prefix.'users'; $query.= ' (id,username,password,status,language,mail_address) VALUES '; $query.= "(1,'".$webmaster."','".md5( $_POST['pwdWebmaster'] )."'"; $query.= ",'admin','".$_GET['language']."'"; $query.= ",'".$_POST['mail_webmaster']."')"; $query.= ';'; mysql_query($query); // guest user $query = 'INSERT INTO '.$table_prefix.'users'; $query.= '(id,username,password,status,language) VALUES '; $query.= "(2,'guest','','guest','".$_GET['language']."')"; $query.= ';'; mysql_query( $query ); } } // errors display if ( sizeof( $errors ) != 0 ) { $vtp->addSession( $handle, 'errors' ); foreach ( $errors as $error ) { $vtp->addSession( $handle, 'error' ); $vtp->setVar( $handle, 'error.content', $error ); $vtp->closeSession( $handle, 'error' ); } $vtp->closeSession( $handle, 'errors' ); } if ( !isset( $_POST['submit'] ) or sizeof( $errors ) > 0 ) { $vtp->addSession( $handle, 'step2' ); if ( isset( $_POST['webmaster'] )) $vtp->setVar( $handle, 'step2.f_webmaster', $_POST['webmaster'] ); if ( isset( $_POST['mail_webmaster'] )) $vtp->setVar( $handle, 'step2.f_mail_webmaster', $_POST['mail_webmaster']); $vtp->closeSession( $handle, 'step2' ); } // end of installation message if ( isset( $_POST['submit'] ) and count( $errors ) == 0 ) { $vtp->addSession( $handle, 'install_end' ); $vtp->closeSession( $handle, 'install_end' ); } } //---------------------------------------------------- Step 0 : language choice else { $vtp->addSession( $handle, 'step0' ); $languages = get_languages( './language/' ); foreach ( $languages as $language ) { $vtp->addSession( $handle, 'language' ); $vtp->setVar( $handle, 'language.name', $language ); $vtp->closeSession( $handle, 'language' ); } $vtp->closeSession( $handle, 'step0' ); } //----------------------------------------------------------- html code display $code = $vtp->Display( $handle, 0 ); echo $code; ?>