|
1
|
|
|
<?php |
|
2
|
|
|
require_once(dirname(__FILE__).'/../require/settings.php'); |
|
3
|
|
|
require_once(dirname(__FILE__).'/../require/class.Connection.php'); |
|
4
|
|
|
|
|
5
|
|
|
class create_db { |
|
6
|
|
|
|
|
7
|
|
|
/** |
|
8
|
|
|
* @param string $filename |
|
9
|
|
|
*/ |
|
10
|
|
|
public static function import_file($filename) { |
|
11
|
|
|
$filename = filter_var($filename,FILTER_SANITIZE_STRING); |
|
12
|
|
|
$Connection = new Connection(); |
|
13
|
|
|
if (!$Connection->connectionExists()) return 'error: DB connection failed'; |
|
14
|
|
|
//Connection::$db->beginTransaction(); |
|
15
|
|
|
$templine = ''; |
|
16
|
|
|
$handle = @fopen($filename,"r"); |
|
17
|
|
|
if ($handle) { |
|
18
|
|
|
//$lines = file($filename); |
|
19
|
|
|
//foreach ($lines as $line) |
|
20
|
|
|
while (($line = fgets($handle,4096)) !== false) |
|
21
|
|
|
{ |
|
22
|
|
|
if (substr($line,0,2) == '--' || $line == '') continue; |
|
23
|
|
|
$templine .= $line; |
|
24
|
|
|
if (substr(trim($line), -1,1) == ';') |
|
25
|
|
|
{ |
|
26
|
|
|
try { |
|
27
|
|
|
$sth = $Connection->db->prepare($templine); |
|
28
|
|
|
$sth->execute(); |
|
29
|
|
|
} catch(PDOException $e) { |
|
30
|
|
|
return "error (import ".$filename.") : ".$e->getMessage()."\n"; |
|
31
|
|
|
} |
|
32
|
|
|
$templine = ''; |
|
33
|
|
|
} |
|
34
|
|
|
} |
|
35
|
|
|
fclose($handle); |
|
36
|
|
|
} |
|
37
|
|
|
//Connection::$db->commit(); |
|
38
|
|
|
$Connection->db = null; |
|
39
|
|
|
return ''; |
|
40
|
|
|
} |
|
41
|
|
|
|
|
42
|
|
|
public static function import_all_db($directory) { |
|
43
|
|
|
$error = ''; |
|
44
|
|
|
$dh = opendir($directory); |
|
45
|
|
|
//foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $filename) |
|
46
|
|
|
while(false !== ($filename = readdir($dh))) |
|
47
|
|
|
{ |
|
48
|
|
|
if (preg_match('/\.sql$/',$filename)) $error .= create_db::import_file($directory.$filename); |
|
49
|
|
|
} |
|
50
|
|
|
return $error; |
|
51
|
|
|
} |
|
52
|
|
|
|
|
53
|
|
|
public static function create_database($root,$root_pass,$user,$pass,$db,$db_type,$host,$port = '') { |
|
54
|
|
|
$root = filter_var($root,FILTER_SANITIZE_STRING); |
|
55
|
|
|
$root_pass = filter_var($root_pass,FILTER_SANITIZE_STRING); |
|
56
|
|
|
$user = filter_var($user,FILTER_SANITIZE_STRING); |
|
57
|
|
|
$password = filter_var($pass,FILTER_SANITIZE_STRING); |
|
58
|
|
|
$db = filter_var($db,FILTER_SANITIZE_STRING); |
|
59
|
|
|
$db_type = filter_var($db_type,FILTER_SANITIZE_STRING); |
|
60
|
|
|
$host = filter_var($host,FILTER_SANITIZE_STRING); |
|
61
|
|
|
if ($db_type == 'mysql' && $port == '') $port = 3306; |
|
62
|
|
|
elseif ($port == '') $port = 5432; |
|
63
|
|
|
// Dirty hack |
|
64
|
|
|
if ($host != 'localhost' && $host != '127.0.0.1') { |
|
65
|
|
|
$grantright = $_SERVER['SERVER_ADDR']; |
|
66
|
|
|
} else $grantright = 'localhost'; |
|
67
|
|
|
try { |
|
68
|
|
|
if ($host == 'localhost') $dbh = new PDO($db_type.':host=127.0.0.1',$root,$root_pass); |
|
69
|
|
|
else $dbh = new PDO($db_type.':host='.$host.';port='.$port,$root,$root_pass); |
|
70
|
|
|
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
|
71
|
|
|
if ($db_type == 'mysql') { |
|
72
|
|
|
$dbh->exec('CREATE DATABASE IF NOT EXISTS `'.$db.'`;GRANT ALL ON `'.$db."`.* TO '".$user."'@'".$grantright."' IDENTIFIED BY '".$password."';FLUSH PRIVILEGES;"); |
|
73
|
|
|
if ($grantright == 'localhost') $dbh->exec('GRANT ALL ON `'.$db."`.* TO '".$user."'@'127.0.0.1' IDENTIFIED BY '".$password."';FLUSH PRIVILEGES;"); |
|
74
|
|
|
} else if ($db_type == 'pgsql') { |
|
75
|
|
|
$dbh->exec("CREATE DATABASE ".$db.";"); |
|
76
|
|
|
$dbh->exec("CREATE USER ".$user." WITH PASSWORD '".$password."'; |
|
77
|
|
|
GRANT ALL PRIVILEGES ON DATABASE ".$db." TO ".$user.";"); |
|
78
|
|
|
} |
|
79
|
|
|
} catch(PDOException $e) { |
|
80
|
|
|
$dbh = null; |
|
|
|
|
|
|
81
|
|
|
return "error : ".$e->getMessage(); |
|
82
|
|
|
} |
|
83
|
|
|
$dbh = null; |
|
|
|
|
|
|
84
|
|
|
} |
|
85
|
|
|
|
|
86
|
|
|
} |
|
87
|
|
|
?> |
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.
Both the
$myVarassignment in line 1 and the$higherassignment in line 2 are dead. The first because$myVaris never used and the second because$higheris always overwritten for every possible time line.