*
 *  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/functions.php');
require (JIRAFEAU_ROOT . 'lib/lang.php');
require (JIRAFEAU_ROOT . 'lib/config.original.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 if (is_int ($item))
            fwrite ($handle, $item);
        else if (is_array ($item))
            fwrite ($handle, str_replace(array("\n", "\r"), "",
                                         var_export ($item, true)));
        else
            fwrite ($handle, 'null');
        fwrite ($handle, ';'.NL);
    }
    /* No newline at the end of the file to be able to send headers. */
    fwrite ($handle, '?>');
    fclose ($handle);
}
function
jirafeau_mkdir ($path)
{
    if (!file_exists ($path) &&  !@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)
{
    /* "@" gets rid of error messages. */
    return is_writable ($path) || @chmod ($path, 0777);
}
function
jirafeau_check_var_dir ($path)
{
    $mkdir_str1 = t('The following directory could not be created') . ':';
    $mkdir_str2 = t('You should create this directory by hand.');
    $write_str1 = t('The following directory is not writable') . ':';
    $write_str2 = t('You should give the write right to the web server on ' .
                    'this directory.');
    $solution_str = t('Here is a solution') . ':';
    if (!jirafeau_mkdir ($path) || !jirafeau_is_writable ($path))
        return array ('has_error' => true,
                      'why' => $mkdir_str1 . '
' .
                               $path . '
' . $solution_str .
                               '
' . $mkdir_str2);
    foreach (array ('files', 'links', 'async') as $subdir)
    {
        $subpath = $path.$subdir;
        if (!jirafeau_mkdir ($subpath) || !jirafeau_is_writable ($subpath))
            return array ('has_error' => true,
                          'why' => $mkdir_str1 . '
' .
                                   $subpath . '
' . $solution_str .
                                   '
' . $mkdir_str2);
    }
    return array ('has_error' => false, 'why' => '');
}
function
jirafeau_add_ending_slash ($path)
{
    return $path . ((substr ($path, -1) == '/') ? '' : '/');
}
if ($cfg['installation_done'] === true)
{
    header('Location: index.php');
    exit;
}
if (!file_exists (JIRAFEAU_CFG))
{
    /* We try to create an empty one. */
    if (!@touch (JIRAFEAU_CFG))
    {
        require (JIRAFEAU_ROOT . 'lib/template/header.php');
        echo '
' .
             t('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.') .
             '
' .
         t('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.') .
         '
'.$err['why'].'
'.NL;
        ?>
            ';
    }
    else
    {
        $cfg['installation_done'] = true;
        jirafeau_export_cfg ($cfg);
        echo '';
    }
break;
}
require (JIRAFEAU_ROOT . 'lib/template/footer.php');
?>