* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ define('JIRAFEAU_ROOT', dirname(__FILE__) . '/'); define('NL', "\n"); define('QUOTE', "'"); define('JIRAFEAU_CFG', JIRAFEAU_ROOT . 'lib/config.local.php'); define('JIRAFEAU_VAR_RAND_LENGTH', 15); require(JIRAFEAU_ROOT . 'lib/config.php'); function jirafeau_quoted($str) { return QUOTE . str_replace(QUOTE, "\'", $str) . QUOTE; } function jirafeau_export_cfg($cfg) { $handle = fopen(JIRAFEAU_CFG, 'w'); fwrite($handle, ' $item) { fwrite($handle, '$cfg[' . jirafeau_quoted($key) . '] = '); if(is_bool($item)) { fwrite($handle, ($item ? 'true' : 'false')); } else if(is_string($item)) { fwrite($handle, jirafeau_quoted($item)); } else { fwrite($handle, 'null'); } fwrite($handle, ';' . NL); } fwrite($handle, '?>'); // no newline at the end of the file to be able to send headers fclose($handle); } function jirafeau_mkdir($path) { if(!file_exists($path)) { if(!@mkdir($path, 0755)) { return false; } } return true; } /** * Returns true whether the path is writable or we manage to make it * so, which essentially is the same thing. * @param $path is the file or directory to be tested. * @return true if $path is writable. */ function jirafeau_is_writable($path) { return is_writable($path) || @chmod($path, 0777); // "@" gets rid of error messages. } function jirafeau_check_var_dir($path) { $mkdir_str1 = _('The following directory could not be created:'); $mkdir_str2 = _('You should create this directory by hand.'); $write_str1 = _('The following directory is not writable:'); $write_str2 = _('You should give the write right to the web server on this directory.'); $solution_str = _('Here is a solution:'); if(!jirafeau_mkdir($path)) { return array( 'has_error' => true, 'why' => $mkdir_str1 . '
' . $path . '
' . $solution_str . '
' . $mkdir_str2 ); } if(!jirafeau_is_writable($path)) { return array( 'has_error' => true, 'why' => $write_str1 . '
' . $path . '
' . $solution_str . '
' . $write_str2 ); } foreach(array('files', 'links') as $subdir) { $subpath = $path . $subdir; if(!jirafeau_mkdir($subpath)) { return array( 'has_error' => true, 'why' => $mkdir_str1 . '
' . $subpath . '
' . $solution_str . '
' . $mkdir_str2 ); } if(!jirafeau_is_writable($subpath)) { return array( 'has_error' => true, 'why' => $write_str1 . '
' . $subpath . '
' . $solution_str . '
' . $write_str2 ); } } return array('has_error' => false, 'why' => ''); } function jirafeau_add_ending_slash($path) { return $path . ((substr($path, -1) == '/') ? '' : '/'); } if(!file_exists(JIRAFEAU_CFG)) { // we try to create an empty one if(!@touch(JIRAFEAU_CFG)) { require(JIRAFEAU_ROOT . 'lib/template/header.php'); echo '

' . _('The local configuration file could not be created. Create a lib/config.local.php file and give the write right to the web server (preferred solution), or give the write right to the web server on the lib directory.') . '

'; require(JIRAFEAU_ROOT . 'lib/template/footer.php'); exit; } } if (!is_writable(JIRAFEAU_CFG) && !@chmod(JIRAFEAU_CFG, '0666')) { require(JIRAFEAU_ROOT . 'lib/template/header.php'); echo '

' . _('The local configuration is not writable by the web server. Give the write right to the web server on the lib/config.local.php file.') . '

'; require(JIRAFEAU_ROOT . 'lib/template/footer.php'); exit; } if(isset($_POST['step']) && isset($_POST['next'])) { switch($_POST['step']) { case 1: $cfg['lang'] = $_POST['lang']; jirafeau_export_cfg($cfg); break; case 2: $cfg['web_root'] = jirafeau_add_ending_slash($_POST['web_root']); $cfg['var_root'] = jirafeau_add_ending_slash($_POST['var_root']); jirafeau_export_cfg($cfg); break; default: // nothing to do } } require(JIRAFEAU_ROOT . 'lib/settings.php'); require(JIRAFEAU_ROOT . 'lib/template/header.php'); $current = 1; if(isset($_POST['next'])) { $current = $_POST['step'] + 1; } else if(isset($_POST['previous'])) { $current = $_POST['step'] - 1; } else if(isset($_POST['retry'])) { $current = $_POST['step']; } switch($current) { case 3: ?>

' . $err['why'] . '
' . NL; ?>

'; } else { echo '

' . _('Your website is now fully operational:') . '
' . $cfg['web_root'] . '

'; } break; case 2: ?>

'English', 'fr_FR.UTF-8' => 'Français' ); ?>