GIF89a;
Direktori : /home/serb/public_html/freichat/installation/ |
Current File : /home/serb/public_html/freichat/installation/install.php |
<?php session_start(); //security check if (!isset($_SESSION['FREIX']) || $_SESSION['FREIX'] != 'authenticated' || !isset($_POST['host'])) { header("Location:index.php"); exit; } if (!is_writable("../hardcode.php")) { //die("arg.php is not writable!<br/>Go back and change ~/freichat/arg.php permisssions"); $_SESSION['error'] = 'hardcode.php is not writable!<br/>Go back and change ~/freichat/hardcode.php permisssions'; header('Location: error.php'); } class Install { public function __construct() { $this->installed = 'true'; $this->path_host = str_replace("installation/install.php", "", "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']); if ($_POST['port'] == '' || $_POST['port'] == null) { $this->port = ''; } else { $this->port = 'port=' . $_POST['port'] . ';'; } } public function connectDB() { require '../hardcode.php'; try { $this->db = new PDO($dsn, $db_user, $db_pass); } catch (PDOException $e) { $this->installed = 'false'; print "Error!: " . $e->getMessage() . "<br/>"; die(); } } // // remove_remarks will strip the sql comment lines out of an uploaded sql file // private function remove_remarks($sql) { $lines = explode("\n", $sql); // try to keep mem. use down $sql = ""; $linecount = count($lines); $output = ""; for ($i = 0; $i < $linecount; $i++) { if (($i != ($linecount - 1)) || (strlen($lines[$i]) > 0)) { if (isset($lines[$i][0]) && $lines[$i][0] != "#") { $output .= $lines[$i] . "\n"; } else { $output .= "\n"; } // Trading a bit of speed for lower mem. use here. $lines[$i] = ""; } } return $output; } // // split_sql_file will split an uploaded sql file into single sql statements. // Note: expects trim() to have already been run on $sql. // private function split_sql_file($sql, $delimiter) { // Split up our string into "possible" SQL statements. $tokens = explode($delimiter, $sql); // try to save mem. $sql = ""; $output = array(); // we don't actually care about the matches preg gives us. $matches = array(); // this is faster than calling count($oktens) every time thru the loop. $token_count = count($tokens); for ($i = 0; $i < $token_count; $i++) { // Don't wanna add an empty string as the last thing in the array. if (($i != ($token_count - 1)) || (strlen($tokens[$i] > 0))) { // This is the total number of single quotes in the token. $total_quotes = preg_match_all("/'/", $tokens[$i], $matches); // Counts single quotes that are preceded by an odd number of backslashes, // which means they're escaped quotes. $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$i], $matches); $unescaped_quotes = $total_quotes - $escaped_quotes; // If the number of unescaped quotes is even, then the delimiter did NOT occur inside a string literal. if (($unescaped_quotes % 2) == 0) { // It's a complete sql statement. $output[] = $tokens[$i]; // save memory. $tokens[$i] = ""; } else { // incomplete sql statement. keep adding tokens until we have a complete one. // $temp will hold what we have so far. $temp = $tokens[$i] . $delimiter; // save memory.. $tokens[$i] = ""; // Do we have a complete statement yet? $complete_stmt = false; for ($j = $i + 1; (!$complete_stmt && ($j < $token_count)); $j++) { // This is the total number of single quotes in the token. $total_quotes = preg_match_all("/'/", $tokens[$j], $matches); // Counts single quotes that are preceded by an odd number of backslashes, // which means they're escaped quotes. $escaped_quotes = preg_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $tokens[$j], $matches); $unescaped_quotes = $total_quotes - $escaped_quotes; if (($unescaped_quotes % 2) == 1) { // odd number of unescaped quotes. In combination with the previous incomplete // statement(s), we now have a complete statement. (2 odds always make an even) $output[] = $temp . $tokens[$j]; // save memory. $tokens[$j] = ""; $temp = ""; // exit the loop. $complete_stmt = true; // make sure the outer loop continues at the right point. $i = $j; } else { // even number of unescaped quotes. We still don't have a complete statement. // (1 odd and 1 even always make an odd) $temp .= $tokens[$j] . $delimiter; // save memory. $tokens[$j] = ""; } } // for.. } // else } } return $output; } private function get_queries($sql) { $sql = $this->remove_remarks($sql); $sql = $this->split_sql_file($sql, ';'); return $sql; } public function create_tables() { $sql = file_get_contents("install.sql"); $queries = $this->get_queries($sql); $res = false; //print_r($queries); foreach ($queries as $query) { //reformat the query $query = trim($query) . ";"; $res = $this->db->query($query); if (!$res) { //problem; break; } } } public function init() { $this->connectDB(); $this->create_tables(); //$this->write_hardcode(); $cname = $_POST['driver']; require 'integ/' . $cname . '.php'; $cls = new $cname(); $cls->path_host = $this->path_host; $output = $cls->info($this->path_host); $output['auto_install'] = $cls->self_install(); return $output; } } $install = new Install(); $info = $install->init(); require("header.php"); ?> <script> $(document).ready(function() { //$('#content_manual').dialog({autoOpen: false, minWidth: 800, title: "Manual Installation"}); }); function maximize() { $('#content_manual').modal(); } </script> <?php $submit_url = $_SERVER['SERVER_NAME']; ?> <!---COMMERCIAL_CODE---> <div class="box span10 centerme" id="content"> <div id="modal_db"></div> <div class="box-content" > <span style=""> <?php if ($info['auto_install'] == true) { echo '<h2><br/><br/>' . $_SESSION['cms'] . " has been auto installed</h2>"; } else { ?> </span> <?php if ($info['integ_url'] != '') { ?> <div class="well"> <h4>Download and install the following <?php echo $info['module_type']; ?></h4> <br/><a href="<?php echo $info["integ_url"]; ?>" class="btn" target="_blank"><i class="icon-download-alt"></i> Download</a> </div> <div style="text-align:center"> <h2> <br/>OR </h2> </div> <br/> <?php } ?> <br/> <style> textarea { font-size: 12px; text-shadow: 0 1px white; font-family: time new roman; color: #222; width: 98%; height: 100px; } </style> <?php if ($info['manual']) { ?> <br/> <div id ="manual" class="well"> <h4>copy paste the following code</h4><br/> <a style="text-align:center" class="btn" href="#content_manual" data-toggle="modal"><i class="icon-pencil"></i> get the code</a> </div> <div id ="content_manual" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3>Manual installation</h3> </div> <div class="modal-body"> <?php if ($_SESSION['cms'] == 'se4' || $_SESSION['cms'] == 'etano') { ?> <div class=""> <?php echo $info['cookie_where']; ?> </div> <br/> <textarea style="height:30px" onclick="this.focus();this.select();" readonly="readonly"><?php echo $info['cookie_code']; ?></textarea> <br/><br/> <?php } ?> <div class=""> <?php echo $info['addn_info']; echo $info['code_add']; echo $info['jsloc']; echo $info['js_where']; ?> </div> <br/> <div> <textarea onclick="this.focus();this.select();" readonly="readonly"><?php echo $info['phpcode']; echo $info['jscode']; echo $info['csscode']; ?></textarea> </div> </div> </div> <?php } //show manual install or not ?> <?php } ?><br/><br/><div align='center'> <a style="width:200px;height:40px;line-height: 40px" class="btn btn-primary" href='../administrator/index.php' target="_blank"><i class="icon-wrench icon-white"></i> Administer</a> </div><br/><br/> </div> </div> <?php require("footer.php"); //session_destroy(); ?>