blob: fc4e001d74f51461b4528bb4acbd54f92b0e51a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/usr/bin/php
<?php
require_once(dirname(__FILE__).'/shared/include/includes.php'); // USE __DIR__ in 5.3.0
function echo_and_query($q) {
global $S;
echo $q."\n";
return $S['pdo']->query($q);
}
$interactive=posix_isatty(STDIN);
$opts=getopt('R');
$S['pdo']=new PDO('mysql:host='.$conf['sqlhost'], $conf['sqluser'], $conf['sqlpass']);
if (isset($opts['R'])) {
echo_and_query('DROP DATABASE IF EXISTS `'.$conf['sqldb'].'`');
}
echo_and_query('CREATE DATABASE IF NOT EXISTS `'.$conf['sqldb'].'`'); // We can add charset and collate here if we want
echo_and_query('USE `'.$conf['sqldb'].'`');
sql_row_obj::set_pdo_obj($S['pdo']);
foreach (get_declared_classes() as $class) {
if (!is_subclass_of($class, 'sql_row_obj')) {
continue;
}
$r=new ReflectionClass($class);
if (!$r->isInstantiable()) continue;
unset($r);
$o=new $class(); // TODO this will be static once 5.3.0 is out
if (isset($opts['R'])) {
echo_and_query($o->drop_table());
}
echo_and_query($o->create_table());
}
do {
if ($user->email) {
echo 'Invalid entry: '.$user->email."\n";
}
echo 'Admin email address: ';
$user=new sql_user();
$user->email=trim(fgets(STDIN));
if (!$interactive) {
echo "\n";
}
} while (!Validate::email($user->email));
do {
if ($user->name) {
echo 'Invalid entry: '.$user->name."\n";
}
echo 'Admin display name: ';
$user->name=trim(fgets(STDIN));
if (!$interactive) {
echo "\n";
}
} while (!Validate::username($user->name));
if ($interactive) {
system('stty -echo');
}
do {
if ($pass && $passconfirm) {
echo "Entered passwords did not match. Try again.\n";
}
echo 'Admin password: ';
$pass=trim(fgets(STDIN));
echo "\nRepeat password: ";
$passconfirm=trim(fgets(STDIN));
echo "\n";
} while (!$pass || $pass != $passconfirm);
if ($interactive) {
system('stty echo');
}
$user->passhash=substr($pass, 0, 5)=='sha1:'?substr($pass, 5):sha1($pass);
$user->flags='a'; // Admin
$user->write();
foreach (glob(dirname(__FILE__).'/*_setup.php') as $file) { // __DIR__ 5.3.0
require($file);
}
?>
|