ob_end_flush(); $db->query("UPDATE " . $db->config['prefix'] . "email_templates\n SET day='" . $config['mail_not_completed_days'] . "'\n WHERE name='mail_not_completed' and day IS NULL"); print "OK<br />"; ob_end_flush(); } } /* ******************************************************************************* * * M A I N */ $old_db_version = $db->query_one("\n SELECT value\n FROM {$db->config[prefix]}config\n WHERE name='db_version'\n "); print "Current database version: [{$old_db_version}] <small>(may be different from aMember version number)</small>.\n<br />"; $f = join('', file('../amember.sql')); if (preg_match("/REPLACE INTO @DB_MYSQL_PREFIX@config \\(name,type,value\\) VALUES \\('db_version', 0, '(\\d+)'\\)/", $f, $rr)) { print "Version of <strong>amember.sql</strong> file is [{$rr['1']}].\n<br />"; } $create_email_templates = !email_templates_created(); create_mysql_tables(); if (!$admin_accounts_created) { create_admin_accounts(); } check_aff_commission_id(); $d =& amDb(); if ($d->selectCell("SELECT COUNT(*) FROM ?_countries") <= 0) { load_countries_from_file(); } if ($d->selectCell("SELECT COUNT(*) FROM ?_states") <= 0) { load_states_from_file(); } if ($create_email_templates) { print "<br /><br /><strong>Default e-mail templates were imported (from amember.sql file).<br />\n If you wish to load your templates to database from text files, click the following link:\n <a target='_blank' href='email_templates.php?a=convert'>Import templates from text files</a><br />"; }
function create_mysql_tables() { $vars = $_POST; $conn = @mysql_connect($vars['@DB_MYSQL_HOST@'], $vars['@DB_MYSQL_USER@'], $vars['@DB_MYSQL_PASS@']); if (!$conn) { exit_errors("Cannot connect to mysql (" . mysql_error() . ")"); } $dbc = @mysql_select_db($vars['@DB_MYSQL_DB@']); if (!$dbc) { exit_errors("Cannot select database '" . $vars["@DB_MYSQL_DB@"] . "' (" . mysql_error() . ")"); } if (!is_readable("amember.sql")) { exit_errors("File [amember.sql] not found, make sure you've uploaded all files"); } $file = join('', file("amember.sql")); $file = str_replace('@DB_MYSQL_PREFIX@', $vars['@DB_MYSQL_PREFIX@'], $file); $file = preg_replace('/^\\s+\\#(.*)$/m', '', $file); preg_match_all('/(CREATE TABLE\\s+(.+?)\\s+.+?|.+?);\\s*$/ms', $file, $out); $vars['@CURL_PATH@'] = guess_curl(); $prefix = $vars['@DB_MYSQL_PREFIX@']; $email_templates_created = email_templates_created($prefix); foreach ($out[0] as $sql) { foreach ($vars as $k => $v) { if ($k == '@ADMIN_PASS@') { srand(time()); $v = crypt($v); } if ($k == '@PAYMENT_PLUGINS@') { $v = serialize($v); } if ($k == '@PROTECT_PLUGINS@') { $v = serialize($v); } $k = mysql_escape_string($k); $v = mysql_escape_string($v); $sql = str_replace($k, $v, $sql); } if (preg_match('/CREATE TABLE\\s+(\\w+)/', $sql, $regs)) { $tname = $regs[1]; if (mysql_query("SELECT * FROM {$tname} LIMIT 1") && !mysql_errno()) { continue; // SKIP TABLE CREATION } } elseif (preg_match("/INSERT INTO {$prefix}email_templates/", $sql) && $email_templates_created) { continue; } elseif (preg_match('/MODIFY\\s+(\\w+)\\s+(.+);/', $sql, $regs)) { $tname = $regs[1]; $mreq = $regs[2]; if (preg_match('/FIELD\\s+(\\w+)\\s+(.+)/', $mreq, $regs)) { $field = $regs[1]; $q = mysql_query("SHOW FIELDS FROM {$tname}"); $sql = ''; while (list($f, $t, $null, $index, $add) = mysql_fetch_row($q)) { if ($f == $field) { $sql = "ALTER TABLE {$tname} CHANGE {$field} {$field} {$regs['2']};"; break; } } if (!$sql) { $sql = "ALTER TABLE {$tname} ADD {$field} {$regs['2']};"; } } elseif (preg_match('/DROP_FIELD\\s+(\\w+)/', $sql, $regs)) { $field = $regs[1]; $q = mysql_query("SHOW FIELDS FROM {$tname}"); $sql = ''; while (list($f, $t, $null, $index, $add) = mysql_fetch_row($q)) { if ($f == $field) { $sql = "ALTER TABLE {$tname} DROP {$field}"; break; } } } elseif (preg_match('/(UNIQUE INDEX|INDEX)\\s+(\\w+)\\s+.+/', $mreq, $regs)) { $index = $regs[2]; $q = mysql_query("SHOW INDEX FROM {$tname}"); while (list($t, $t, $index1) = mysql_fetch_row($q)) { if ($index1 != $index) { continue; } mysql_query("ALTER TABLE {$tname} DROP INDEX {$index}"); } $sql = "ALTER TABLE {$tname} ADD {$regs['0']}"; } else { // unknown modify request print "unknown modify request"; continue; } } $sql = preg_replace('/;\\s*$/s', '', $sql); mysql_query($sql); if ($err = mysql_error()) { exit_errors($err . "<br>SQL: <pre>{$sql}</pre>"); } } // insert countries foreach (array('countries', 'states') as $ff) { $fn = "sql-{$ff}.sql"; $q = mysql_query($s = "SELECT COUNT(*) FROM {$prefix}{$ff}"); if ($e = mysql_error()) { print "SQL Error: {$e}<br />\n"; } $c = mysql_fetch_row($q); $c = $c[0]; if ($c) { continue; } if (!is_readable($fn)) { exit_errors("File [{$fn}] not found, make sure you've uploaded all files"); } $sql = join('', file("{$fn}")); $sql = str_replace('@DB_MYSQL_PREFIX@', $vars['@DB_MYSQL_PREFIX@'], $sql); mysql_query($sql); if ($err = mysql_error()) { exit_errors($err . " in [{$fn}]"); } } }