]> git.wh0rd.org - tt-rss.git/blobdiff - install/index.php
Merge pull request #147 from pedros/nnttrss_api_extensions
[tt-rss.git] / install / index.php
index 2ac7a093536d1daa104459746a2d1299da8509dc..3b6a1f544fadb3fbd765e853ddaf07a63b36efee 100644 (file)
@@ -9,7 +9,7 @@
 </head>
 <body>
 
-<?
+<?php
        function sanity_check($db_type) {
                $errors = array();
 
                        array_push($errors, "PHP version 5.3.0 or newer required.");
                }
 
-               if (ini_get("open_basedir")) {
-                       array_push($errors, "PHP configuration option open_basedir is not supported. Please disable this in PHP settings file (php.ini).");
-               }
-
                if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
                        array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.");
                }
                        array_push($errors, "PHP safe mode setting is not supported.");
                } */
 
-               if ((PUBSUBHUBBUB_HUB || PUBSUBHUBBUB_ENABLED) && !function_exists("curl_init")) {
-                       array_push($errors, "PHP support for CURL is required for PubSubHubbub.");
-               }
-
                if (!class_exists("DOMDocument")) {
                        array_push($errors, "PHP support for DOMDocument is required, but was not found.");
                }
                        $link = mysql_connect($host, $user, $pass);
                        if ($link) {
                                $result = mysql_select_db($db, $link);
-                               return $link;
+                               if ($result) return $link;
                        }
                }
        }
 
+       function make_config($DB_TYPE, $DB_HOST, $DB_USER, $DB_NAME, $DB_PASS,
+                       $DB_PORT, $SELF_URL_PATH) {
+
+               $data = explode("\n", file_get_contents("../config.php-dist"));
+
+               $rv = "";
+
+               $finished = false;
+
+               foreach ($data as $line) {
+                       if (preg_match("/define\('DB_TYPE'/", $line)) {
+                               $rv .= "\tdefine('DB_TYPE', '$DB_TYPE');\n";
+                       } else if (preg_match("/define\('DB_HOST'/", $line)) {
+                               $rv .= "\tdefine('DB_HOST', '$DB_HOST');\n";
+                       } else if (preg_match("/define\('DB_USER'/", $line)) {
+                               $rv .= "\tdefine('DB_USER', '$DB_USER');\n";
+                       } else if (preg_match("/define\('DB_NAME'/", $line)) {
+                               $rv .= "\tdefine('DB_NAME', '$DB_NAME');\n";
+                       } else if (preg_match("/define\('DB_PASS'/", $line)) {
+                               $rv .= "\tdefine('DB_PASS', '$DB_PASS');\n";
+                       } else if (preg_match("/define\('DB_PORT'/", $line)) {
+                               $rv .= "\tdefine('DB_PORT', '$DB_PORT');\n";
+                       } else if (preg_match("/define\('SELF_URL_PATH'/", $line)) {
+                               $rv .= "\tdefine('SELF_URL_PATH', '$SELF_URL_PATH');\n";
+                       } else if (!$finished) {
+                               $rv .= "$line\n";
+                       }
+
+                       if (preg_match("/\?\>/", $line)) {
+                               $finished = true;
+                       }
+               }
+
+               return $rv;
+       }
+
        function db_query($link, $query, $type, $die_on_error = true) {
                if ($type == "pgsql") {
                        $result = pg_query($link, $query);
                }
        }
 
+       function make_self_url_path() {
+               $url_path = ($_SERVER['HTTPS'] != "on" ? 'http://' :  'https://') . $_SERVER["HTTP_HOST"] . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
+
+               return $url_path;
+       }
+
 ?>
 
-<div class="floatingLogo"><img src="../images/logo_wide.png"></div>
+<div class="floatingLogo"><img src="../images/logo_small.png"></div>
 
 <h1>Tiny Tiny RSS Installer</h1>
 
+<div class='content'>
+
 <?php
+
        if (file_exists("../config.php")) {
                require "../config.php";
 
                if (!defined('_INSTALLER_IGNORE_CONFIG_CHECK')) {
-                       print_error("Error: config.php already exists; aborting.");
+                       print_error("Error: config.php already exists in tt-rss directory; aborting.");
                        exit;
                }
        }
        @$DB_NAME = strip_tags($_POST['DB_NAME']);
        @$DB_PASS = strip_tags($_POST['DB_PASS']);
        @$DB_PORT = strip_tags($_POST['DB_PORT']);
+       @$SELF_URL_PATH = strip_tags($_POST['SELF_URL_PATH']);
 
+       if (!$SELF_URL_PATH) {
+               $SELF_URL_PATH = preg_replace("/\/install\/$/", "/", make_self_url_path());
+       }
 ?>
 
-<h2>Database settings</h2>
-
 <form action="" method="post">
 <input type="hidden" name="op" value="testconfig">
 
+<h2>Database settings</h2>
+
 <?php
        $issel_pgsql = $DB_TYPE == "pgsql" ? "selected" : "";
        $issel_mysql = $DB_TYPE == "mysql" ? "selected" : "";
 
 <fieldset>
        <label>Port</label>
-       <input name="DB_PORT" placeholder="if needed, PgSQL only" size="20" value="<?php echo $DB_PORT ?>"/>
+       <input name="DB_PORT" type="number" placeholder="if needed, PgSQL only" size="20" value="<?php echo $DB_PORT ?>"/>
 </fieldset>
 
+<h2>Other settings</h2>
+
+<p>This should be set to the location your Tiny Tiny RSS will be available on.</p>
+
+<fieldset>
+       <label>Tiny Tiny RSS URL</label>
+       <input type="url" name="SELF_URL_PATH" placeholder="<?php echo $SELF_URL_PATH; ?>" size="60" value="<?php echo $SELF_URL_PATH ?>"/>
+</fieldset>
+
+
 <p><input type="submit" value="Test configuration"></p>
 
 </form>
                        exit;
                }
 
+               $notices = array();
+
+               if (!function_exists("curl_init")) {
+                       array_push($notices, "It is highly recommended to enable support for CURL in PHP.");
+               }
+
+               if (count($notices) > 0) {
+                       print_notice("Configuration check succeeded with minor problems:");
+
+                       print "<ul>";
+
+                       foreach ($notices as $notice) {
+                               print "<li>$notice</li>";
+                       }
+
+                       print "</ul>";
+               } else {
+                       print_notice("Configuration check succeeded.");
+               }
+
        ?>
 
        <h2>Checking database</h2>
                                <input type="hidden" name="DB_HOST" value="<?php echo $DB_HOST ?>"/>
                                <input type="hidden" name="DB_PORT" value="<?php echo $DB_PORT ?>"/>
                                <input type="hidden" name="DB_TYPE" value="<?php echo $DB_TYPE ?>"/>
+                               <input type="hidden" name="SELF_URL_PATH" value="<?php echo $SELF_URL_PATH ?>"/>
 
                                <?php if ($need_confirm) { ?>
                                        <p><input onclick="return confirm('Please read the warning above. Continue?')" type="submit" value="Initialize database" style="color : red"></p>
                                <input type="hidden" name="DB_HOST" value="<?php echo $DB_HOST ?>"/>
                                <input type="hidden" name="DB_PORT" value="<?php echo $DB_PORT ?>"/>
                                <input type="hidden" name="DB_TYPE" value="<?php echo $DB_TYPE ?>"/>
+                               <input type="hidden" name="SELF_URL_PATH" value="<?php echo $SELF_URL_PATH ?>"/>
 
                                <input type="hidden" name="op" value="skipschema">
                                <p><input type="submit" value="Skip initialization"></p>
 
                        print "<h2>Generated configuration file</h2>";
 
-                       print "<p>Copy following text and save as <b>config.php</b> in tt-rss main directory. It is suggested to read through the file to the end in case you need any options changed fom default values.</p>";
-
-                       print "<textarea cols=\"80\" rows=\"20\" name=\"config\">";
-                       $data = explode("\n", file_get_contents("../config.php-dist"));
-
-                       foreach ($data as $line) {
-                               if (preg_match("/define\('DB_TYPE'/", $line)) {
-                                       echo "\tdefine('DB_TYPE', '$DB_TYPE');\n";
-                               } else if (preg_match("/define\('DB_HOST'/", $line)) {
-                                       echo "\tdefine('DB_HOST', '$DB_HOST');\n";
-                               } else if (preg_match("/define\('DB_USER'/", $line)) {
-                                       echo "\tdefine('DB_USER', '$DB_USER');\n";
-                               } else if (preg_match("/define\('DB_NAME'/", $line)) {
-                                       echo "\tdefine('DB_NAME', '$DB_NAME');\n";
-                               } else if (preg_match("/define\('DB_PASS'/", $line)) {
-                                       echo "\tdefine('DB_PASS', '$DB_PASS');\n";
-                               } else if (preg_match("/define\('DB_PORT'/", $line)) {
-                                       echo "\tdefine('DB_PORT', '$DB_PORT');\n";
+                       print "<p>Copy following text and save as <code>config.php</code> in tt-rss main directory. It is suggested to read through the file to the end in case you need any options changed fom default values.</p>";
 
-                               } else {
-                                       print "$line\n";
-                               }
+                       print "<p>After copying the file, you will be able to login with default username and password combination: <code>admin</code> and <code>password</code>. Don't forget to change the password immediately!</p>"; ?>
+
+                       <form action="" method="post">
+                               <input type="hidden" name="op" value="saveconfig">
+                               <input type="hidden" name="DB_USER" value="<?php echo $DB_USER ?>"/>
+                               <input type="hidden" name="DB_PASS" value="<?php echo $DB_PASS ?>"/>
+                               <input type="hidden" name="DB_NAME" value="<?php echo $DB_NAME ?>"/>
+                               <input type="hidden" name="DB_HOST" value="<?php echo $DB_HOST ?>"/>
+                               <input type="hidden" name="DB_PORT" value="<?php echo $DB_PORT ?>"/>
+                               <input type="hidden" name="DB_TYPE" value="<?php echo $DB_TYPE ?>"/>
+                               <input type="hidden" name="SELF_URL_PATH" value="<?php echo $SELF_URL_PATH ?>"/>
+                       <?php print "<textarea cols=\"80\" rows=\"20\">";
+                       echo make_config($DB_TYPE, $DB_HOST, $DB_USER, $DB_NAME, $DB_PASS,
+                               $DB_PORT, $SELF_URL_PATH);
+                       print "</textarea>"; ?>
+
+                       <?php if (is_writable("..")) { ?>
+                               <p>We can also try saving the file automatically now.</p>
+
+                               <p><input type="submit" value="Save configuration"></p>
+                               </form>
+                       <?php } else {
+                               print_error("Unfortunately, parent directory is not writable, so we're unable to save config.php automatically.");
                        }
 
-                       print "</textarea>";
+                  print_notice("You can generate the file again by changing the form above.");
+
+               } else if ($op == "saveconfig") {
+
+                       print "<h2>Saving configuration file to parent directory...</h2>";
+
+                       if (!file_exists("../config.php")) {
+
+                               $fp = fopen("../config.php", "w");
+
+                               if ($fp) {
+                                       $written = fwrite($fp, make_config($DB_TYPE, $DB_HOST,
+                                               $DB_USER, $DB_NAME, $DB_PASS,
+                                               $DB_PORT, $SELF_URL_PATH));
 
-                       print "<p>You can generate the file again by changing the form above.</p>";
+                                       if ($written > 0) {
+                                               print_notice("Successfully saved config.php. You can try <a href=\"..\">loading tt-rss now</a>.");
+
+                                       } else {
+                                               print_notice("Unable to write into config.php in tt-rss directory.");
+                                       }
+
+                                       fclose($fp);
+                               } else {
+                                       print_error("Unable to open config.php in tt-rss directory for writing.");
+                               }
+                       } else {
+                               print_error("config.php already present in tt-rss directory, refusing to overwrite.");
+                       }
                }
        ?>
 
+</div>
 
 </body>
 </html>