]> git.p6c8.net - jirafeau_mojo42.git/blobdiff - install.php
[TASK] Rename license short identifier
[jirafeau_mojo42.git] / install.php
index ae4bd99b4d0df702fe9ae1161b4b4f50337556b5..fbd366727c896f8b37453ddd3c4e56281354f10e 100644 (file)
  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 define ('JIRAFEAU_ROOT', dirname (__FILE__) . '/');
-define ('NL', "\n");
-define ('QUOTE', "'");
 
-define ('JIRAFEAU_CFG', JIRAFEAU_ROOT.'lib/config.local.php');
+define ('JIRAFEAU_CFG', JIRAFEAU_ROOT . 'lib/config.local.php');
 define ('JIRAFEAU_VAR_RAND_LENGTH', 15);
 
+require (JIRAFEAU_ROOT . 'lib/settings.php');
 require (JIRAFEAU_ROOT . 'lib/functions.php');
 require (JIRAFEAU_ROOT . 'lib/lang.php');
-require (JIRAFEAU_ROOT . 'lib/config.original.php');
+
+/**
+ * Prepend used functions
+ **/
 
 function
 jirafeau_quoted ($str)
@@ -37,32 +39,17 @@ jirafeau_quoted ($str)
 function
 jirafeau_export_cfg ($cfg)
 {
-    $handle = fopen (JIRAFEAU_CFG, 'w');
-    fwrite ($handle, '<?php' . NL);
-    fwrite ($handle,
-            '/* ' .
-            t ('This file was generated by the install process. ' .
+    $content = '<?php' . NL;
+    $content .= '/* ' . t ('This file was generated by the install process. ' .
                'You can edit it. Please see config.original.php to understand the ' .
-               'configuration items.') . ' */' . NL);
-    foreach ($cfg as $key => $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);
+               'configuration items.') . ' */' . NL;
+    $content .= '$cfg = ' . var_export($cfg, true) . ';';
+
+    $fileWrite = file_put_contents(JIRAFEAU_CFG, $content);
+
+    if (false === $fileWrite) {
+        jirafeau_fatal_error(t('Can not write local configuration file'));
     }
-    /* No newline at the end of the file to be able to send headers. */
-    fwrite ($handle, '?>');
-    fclose ($handle);
 }
 
 function
@@ -120,42 +107,62 @@ jirafeau_add_ending_slash ($path)
     return $path . ((substr ($path, -1) == '/') ? '' : '/');
 }
 
-if ($cfg['installation_done'] === true)
+function
+jirafeau_fatal_error($errorText)
 {
-    header('Location: index.php');
+    echo '<div class="error"><h2>Error</h2><p>' . $errorText . '</p></div>';
+    require (JIRAFEAU_ROOT . 'lib/template/footer.php');
     exit;
 }
 
+/**
+ * Check installation
+ **/
+
+// Is the installation process done already?
+// Then there is nothing to do here → redirect to the main page.
+if ($cfg['installation_done'] === true)
+{
+       header('Location: index.php');
+       exit;
+}
+
+/**
+ * Prepare installation process
+ **/
+
+require (JIRAFEAU_ROOT . 'lib/template/header.php');
+
+// does the local configuration file exist?
 if (!file_exists (JIRAFEAU_CFG))
 {
-    /* We try to create an empty one. */
+    // show an error if it is not possible to create the file
     if (!@touch (JIRAFEAU_CFG))
     {
-        require (JIRAFEAU_ROOT . 'lib/template/header.php');
-        echo '<div class="error"><p>' .
-             t('The local configuration file could not be created. Create a ' .
+        jirafeau_fatal_error(
+            t('The local configuration file could not be created. Create a ' .
                '<code>lib/config.local.php</code> file and give the write ' .
                'permission to the web server (preferred solution), or give the ' .
                'write permission to the web server on the <code>lib</code> ' .
-               'directory.') .
-             '</p></div>';
-        require (JIRAFEAU_ROOT . 'lib/template/footer.php');
-        exit;
+               'directory.')
+        );
     }
 }
 
+// is the local configuration writable?
 if (!is_writable (JIRAFEAU_CFG) && !@chmod (JIRAFEAU_CFG, '0666'))
 {
-    require (JIRAFEAU_ROOT . 'lib/template/header.php');
-    echo '<div class="error"><p>' .
-         t('The local configuration is not writable by the web server. ' .
-           'Give the write permission to the web server on the ' .
-           '<code>lib/config.local.php</code> file.') .
-         '</p></div>';
-    require (JIRAFEAU_ROOT . 'lib/template/footer.php');
-    exit;
+    jirafeau_fatal_error(
+        t('The local configuration is not writable by the web server. ' .
+            'Give the write permission to the web server on the ' .
+            '<code>lib/config.local.php</code> file.')
+    );
 }
 
+/**
+ * Run trough each installation step
+ **/
+
 if (isset ($_POST['step']) && isset ($_POST['next']))
 {
     switch ($_POST['step'])
@@ -185,9 +192,6 @@ if (isset ($_POST['step']) && isset ($_POST['next']))
 
 }
 
-require (JIRAFEAU_ROOT . 'lib/settings.php');
-require (JIRAFEAU_ROOT . 'lib/template/header.php');
-
 $current = 1;
 if (isset ($_POST['next']))
     $current = $_POST['step'] + 1;
@@ -202,8 +206,7 @@ case 1:
 default:
     ?><h2><?php printf (t('Installation of Jirafeau') . ' - ' . t('step') .
     ' %d ' . t('out of') . ' %d', 1, 4);
-    ?></h2> <div id = "install"> <form action =
-        "<?php echo basename(__FILE__); ?>" method = "post"> <input type =
+    ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value = "1" /><fieldset> <legend><?php echo t('Language');
@@ -236,8 +239,7 @@ break;
 case 2:
     ?><h2><?php printf (t('Installation of Jirafeau') . ' - ' . t('step') .
     ' %d ' . t('out of') . ' %d', 2, 4);
-    ?></h2> <div id = "install"> <form action =
-        "<?php echo basename(__FILE__); ?>" method = "post"> <input type =
+    ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value = "2" /><fieldset> <legend><?php
@@ -268,8 +270,7 @@ break;
 case 3:
     ?><h2><?php printf (t('Installation of Jirafeau') . ' - ' . t('step') .
     ' %d ' . t('out of') . ' %d', 3, 4);
-    ?></h2> <div id = "install"> <form action =
-        "<?php echo basename(__FILE__); ?>" method = "post"> <input type =
+    ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value =
@@ -324,8 +325,7 @@ break;
 case 4:
     ?><h2><?php printf (t('Installation of Jirafeau') . ' - ' . t('step') .
     ' %d ' . t('out of') . ' %d', 4, 4);
-    ?></h2> <div id = "install"> <form action =
-        "<?php echo basename(__FILE__); ?>" method = "post"> <input type =
+    ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value =
@@ -346,8 +346,7 @@ case 4:
     if ($err['has_error'])
     {
         echo '<div class="error"><p>'.$err['why'].'<br />'.NL;
-        ?><form action = "<?php echo basename(__FILE__); ?>" method =
-            "post"> <input type = "hidden" name = "jirafeau" value =
+        ?><form method="post"> <input type = "hidden" name = "jirafeau" value =
             "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
             "step" value = "4" /><input type = "submit" name =
             "retry" value =
@@ -367,4 +366,3 @@ break;
 }
 
 require (JIRAFEAU_ROOT . 'lib/template/footer.php');
-?>

patrick-canterino.de