<?php require_once dirname(__FILE__).'/accesscheck.php'; include dirname(__FILE__).'/structure.php'; function output($message) { if ($GLOBALS['commandline']) { @ob_end_clean(); echo strip_tags($message)."\n"; ob_start(); } else { echo $message; flush(); @ob_end_flush(); } flush(); } cl_output(s('Initialising phpList database structure.')); $success = 1; ## fall back to environment variables (mostly for CLI) if (!isset($_REQUEST['adminname'])) { $_REQUEST['adminname'] = getenv('ADMIN_NAME'); } if (!isset($_REQUEST['orgname'])) { $_REQUEST['orgname'] = getenv('ORGANISATION_NAME'); } if (!isset($_REQUEST['adminpassword'])) { $_REQUEST['adminpassword'] = getenv('ADMIN_PASSWORD'); } if (!isset($_REQUEST['adminemail'])) { $_REQUEST['adminemail'] = getenv('ADMIN_EMAIL'); } ## require some variables on CLI if ($GLOBALS['commandline']) { if (empty($_REQUEST['adminname'])) { $_REQUEST['adminname'] = 'admin'; } if (empty($_REQUEST['orgname'])) { $_REQUEST['orgname'] = s('Organisation Name'); } if (empty($_REQUEST['adminpassword'])) { output(s('Admin password not set, cannot continue')); cl_output(s('set ADMIN_PASSWORD environment variable')); return; } if (empty($_REQUEST['adminemail'])) { output(s('Admin email not set, cannot continue')); cl_output(s('set ADMIN_EMAIL environment variable')); return; } if ($GLOBALS['commandline'] && !is_email($_REQUEST['adminemail'])) { output(s('Unable to validate email address for admin: '.strip_tags($_REQUEST['adminemail']))); return; } } $force = (!empty($_GET['force']) && $_GET['force'] == 'yes') || isset($cline['f']); if ($force) { foreach ($DBstruct as $table => $val) { if ($table == 'attribute' && Sql_Table_Exists('attribute')) { $req = Sql_Query("select tablename from {$tables['attribute']}"); while ($row = Sql_Fetch_Row($req)) { Sql_Query('drop table if exists '.$table_prefix.'listattr_'.$row[0]); } } Sql_Query('drop table if exists '.$tables[$table]); } if (!$GLOBALS['commandline']) { session_destroy(); Redirect('initialise&firstinstall=1'); exit; } } @ob_end_flush(); if (!$GLOBALS['commandline'] && empty($_SESSION['hasconf']) && !empty($_REQUEST['firstinstall']) && (empty($_REQUEST['adminemail']) || strlen($_REQUEST['adminpassword']) < 8)) { $output = '<noscript>'; $output .= '<div class="error">'.s('To install phpList, you need to enable Javascript').'</div>'; $output .= '</noscript>'; if ($_SESSION['adminlanguage']['iso'] != $GLOBALS['default_system_language'] && in_array($_SESSION['adminlanguage']['iso'], array_keys($GLOBALS['LANGUAGES'])) ) { $output .= '<div class="info error">'.s('The default system language is different from your browser language.').'<br/>'; $output .= s('You can set <pre>$default_system_language = "%s";</pre> in your config file, to use your language as the fallback language.', $_SESSION['adminlanguage']['iso']).'<br/>'; $output .= s('It is best to do this before initialising the database.'); $output .= '</div>'; } $output .= '<form method="post" action="" class="configForm" id="initialiseform">'; $output .= '<fieldset><legend>'.s('phpList initialisation').' </legend> <input type="hidden" name="firstinstall" value="1" />'; $output .= '<input type="hidden" name="page" value="initialise" />'; $output .= '<label for="adminname">'.s('Please enter your name.').'</label>'; $output .= '<div class="field"><input type="text" name="adminname" class="error missing" value="'.htmlspecialchars($_REQUEST['adminname']).'" /></div>'; $output .= '<label for="orgname">'.s('The name of your organisation').'</label>'; $output .= '<input type="text" name="orgname" value="'.htmlspecialchars($_REQUEST['orgname']).'" />'; $output .= '<label for="adminemail">'.s('Please enter your email address.').'</label>'; $output .= '<input type="text" name="adminemail" value="'.htmlspecialchars($_REQUEST['adminemail']).'" />'; $output .= s('The initial <i>login name</i> will be').' "admin"'.'<br/>'; $output .= '<label for="adminpassword">'.s('Please enter the password you want to use for this account.').' ('.$GLOBALS['I18N']->get('minimum of 8 characters.').')</label>'; $output .= '<input type="text" name="adminpassword" value="" id="initialadminpassword" /><br/><br/>'; $output .= '<input type="submit" value="'.s('Continue').'" id="initialisecontinue" disabled="disabled" />'; $output .= '</fieldset></form>'; output($output); return; } //var_dump($GLOBALS['plugins']);exit; if ($GLOBALS['commandline'] && $_SESSION['hasconf'] && empty($force)) { cl_output(s('Already initialised. Use -f to force')); return; } output('<h3>'.s('Creating tables')."</h3><br />"); foreach ($DBstruct as $table => $val) { if ($force) { if ($table == 'attribute' && Sql_Table_exists('attribute')) { $req = Sql_Query("select tablename from {$tables['attribute']}"); while ($row = Sql_Fetch_Row($req)) { Sql_Query("drop table if exists $table_prefix"."listattr_$row[0]", 1); } } Sql_query("drop table if exists $tables[$table]"); unset($_SESSION["dbtables"]); } $query = "CREATE TABLE $tables[$table] (\n"; foreach ($DBstruct[$table] as $column => $struct) { if (preg_match('/index_\d+/', $column)) { $query .= 'index '.$struct[0].','; } elseif (preg_match('/unique_\d+/', $column)) { $query .= 'unique '.$struct[0].','; } else { $query .= "$column ".$struct[0].','; } } // get rid of the last , $query = substr($query, 0, -1); $query .= "\n) default character set utf8"; if (!empty($GLOBALS['mysql_database_engine'])) { $query .= ' engine '.$GLOBALS['mysql_database_engine']; } // submit it to the database output(s('Initialising table')." <b>$table</b>"); if (!$force && Sql_Table_Exists($tables[$table])) { Error(s('Table already exists').'<br />'); output( '... '.s('failed')."<br />"); $success = 0; } else { $res = Sql_Query($query, 0); $error = Sql_Has_Error($database_connection); $success = $force || ($success && !$error); if (!$error || $force) { if ($table == 'admin') { // create a default admin $_SESSION['firstinstall'] = 1; $adminemail = $_REQUEST['adminemail']; $adminpass = $_REQUEST['adminpassword']; Sql_Query(sprintf('insert into %s (loginname,namelc,email,created,modified,password,passwordchanged,superuser,disabled) values("%s","%s","%s",now(),now(),"%s",now(),%d,0)', $tables['admin'], 'admin', 'admin', sql_escape($adminemail), encryptPass($adminpass), 1)); //# let's add them as a subscriber as well $userid = addNewUser($adminemail, $adminpass); Sql_Query(sprintf('update %s set confirmed = 1 where id = %d', $tables['user'], $userid)); /* to send the token at the end, doesn't work yet $adminid = Sql_Insert_Id(); */ } elseif ($table == 'task') { foreach ($system_pages as $type => $pages) { foreach ($pages as $page => $access_level) { Sql_Query(sprintf('replace into %s (page,type) values("%s","%s")', $tables['task'], $page, $type)); } } } output( '... '.s('ok')."<br />"); } else { output( '... '.s('failed')."<br />\n"); } } } //https://mantis.phplist.com/view.php?id=16879 make sure the new settings are saved if ($success) { $_SESSION['hasconf'] = true; } //# initialise plugins that are already here foreach ($GLOBALS['plugins'] as $pluginName => $plugin) { output( s('Initialise plugin').' '.$pluginName.'<br/>'); if (method_exists($plugin, 'initialise')) { $plugin->initialise(); } SaveConfig(md5('plugin-'.$pluginName.'-initialised'), time(), 0); } if ($success) { output( s('Setting default configuration').'<br/>'); // mark the database to be our current version output('<strong>'.s('Admin =').'</strong> '.$_REQUEST['adminname'].'<br/>'); output('<strong>'.s('Admin Email =').'</strong> '.$adminemail.'<br/>'); SaveConfig('version', VERSION, 0); SaveConfig('admin_address', $adminemail, 1); SaveConfig('message_from_name', strip_tags($_REQUEST['adminname']), 1); SaveConfig('campaignfrom_default', "$adminemail ".strip_tags($_REQUEST['adminname'])); SaveConfig('notifystart_default', $adminemail); SaveConfig('notifyend_default', $adminemail); SaveConfig('report_address', $adminemail); SaveConfig('message_from_address', $adminemail); SaveConfig('message_from_name', strip_tags($_REQUEST['adminname'])); SaveConfig('message_replyto_address', $adminemail); SaveConfig('secret', bin2hex(random_bytes(20))); SaveConfig('lastcheckupdate', date('m/d/Y h:i:s', time()), 0, true); if (!empty($_REQUEST['orgname'])) { SaveConfig('organisation_name', strip_tags($_REQUEST['orgname']), 1); SaveConfig('campaignfrom_default', "$adminemail ".strip_tags($_REQUEST['orgname'])); SaveConfig('message_from_name', strip_tags($_REQUEST['orgname'])); } elseif (!empty($_REQUEST['adminname'])) { SaveConfig('organisation_name', strip_tags($_REQUEST['adminname']), 1); } else { SaveConfig('organisation_name', strip_tags($_REQUEST['adminemail']), 1); } // add a draft campaign for invite plugin addInviteCampaign(1); // add a testlist $info = s('List for testing'); $result = Sql_query("insert into {$tables['list']} (name,description,entered,active,owner) values(\"test\",\"$info\",now(),0,1)"); $info = s('Sign up to our newsletter'); $result = Sql_query("insert into {$tables['list']} (name,description,entered,active,owner) values(\"newsletter\",\"$info\",now(),1,1)"); //# add the admin to the lists Sql_Query(sprintf('insert into %s (listid, userid, entered) values(%d,%d,now())', $tables['listuser'], 1, $userid)); Sql_Query(sprintf('insert into %s (listid, userid, entered) values(%d,%d,now())', $tables['listuser'], 2, $userid)); $uri = $_SERVER['REQUEST_URI']; $uri = str_replace('?'.$_SERVER['QUERY_STRING'], '', $uri); $body = 'Version: '.VERSION."\r\n" .' Url: ' .$_SERVER['SERVER_NAME'] .$uri ."\r\n"; printf('<p class="information">' .$GLOBALS['I18N']->get('Success') .': <a class="button" href="mailto:info@phplist.com?subject=Successful installation of phplist&body=%s">' .$GLOBALS['I18N']->get('Tell us about it') .'</a>. </p>', $body); //printf('<p class="information"> //'.$GLOBALS['I18N']->get("Please make sure to read the file README.security that can be found in the zip file.").'</p>'); echo subscribeToAnnouncementsForm($_REQUEST['adminemail']); // make sure the 0 template has the powered by image $query = sprintf('insert into %s (template, mimetype, filename, data, width, height) values (0, "image/png", "powerphplist.png", "%s", 70, 30)', $GLOBALS['tables']['templateimage'], $newpoweredimage); Sql_Query($query); echo '<div id="continuesetup" style="display:none;" class="fleft">'.$GLOBALS['I18N']->get('Continue with').' '.PageLinkButton('setup', $GLOBALS['I18N']->get('phpList Setup')).'</div>'; unset($_SESSION['hasI18Ntable']); //# load language files // this is too slow $GLOBALS['I18N']->initFSTranslations(); } else { echo '<div class="initialiseOptions"><ul><li>'.s('Maybe you want to').' '.PageLinkButton('upgrade', s('Upgrade')).' '.s('instead?').'</li> <li>' .PageLinkButton('initialise', s('Force Initialisation'), 'force=yes').' '.s('(will erase all data!)').' '."</li></ul></div>\n"; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 489 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
Updater.php | File | 193 B | 0644 |
|
about.php | File | 7.4 KB | 0644 |
|
accesscheck.php | File | 715 B | 0644 |
|
addprefix.php | File | 1.01 KB | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 12.77 KB | 0644 |
|
adminattributes.php | File | 7.46 KB | 0644 |
|
admins.php | File | 5.16 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 26.2 KB | 0644 |
|
blacklistemail.php | File | 1.22 KB | 0644 |
|
bounce.php | File | 11.14 KB | 0644 |
|
bouncemgt.php | File | 1.44 KB | 0644 |
|
bouncerule.php | File | 4.27 KB | 0644 |
|
bouncerules.php | File | 6.33 KB | 0644 |
|
bounces.php | File | 7.57 KB | 0644 |
|
catlists.php | File | 3.34 KB | 0644 |
|
checkbouncerules.php | File | 1.43 KB | 0644 |
|
checki18n.php | File | 3.13 KB | 0644 |
|
checkprerequisites.php | File | 1.62 KB | 0644 |
|
class.image.inc | File | 3.9 KB | 0644 |
|
class.phplistmailer.php | File | 30.73 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.67 KB | 0644 |
|
community.php | File | 3.5 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 7.85 KB | 0644 |
|
connect.php | File | 89.86 KB | 0644 |
|
convertstats.php | File | 5.83 KB | 0644 |
|
converttoutf8.php | File | 3.78 KB | 0644 |
|
cron.php | File | 3.34 KB | 0644 |
|
date.php | File | 7.65 KB | 0644 |
|
dbcheck.php | File | 3.7 KB | 0644 |
|
defaultFrontendTexts.php | File | 9.79 KB | 0644 |
|
defaultconfig.php | File | 30.66 KB | 0644 |
|
defaultplugin.php | File | 31.59 KB | 0644 |
|
defaults.php | File | 3.64 KB | 0644 |
|
defaultsystemtemplate.php | File | 15.29 KB | 0644 |
|
defaulttest.php | File | 1.23 KB | 0644 |
|
dlusers.php | File | 235 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 371 B | 0644 |
|
editattributes.php | File | 8.78 KB | 0644 |
|
editlist.php | File | 7.4 KB | 0644 |
|
eventlog.php | File | 4.68 KB | 0644 |
|
export.php | File | 6.86 KB | 0644 |
|
exportuserdata.php | File | 8.26 KB | 0644 |
|
fckphplist.php | File | 49.84 KB | 0644 |
|
gchart.php | File | 903 B | 0644 |
|
generatebouncerules.php | File | 5.51 KB | 0644 |
|
home.php | File | 6.56 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 3.09 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 2.01 KB | 0644 |
|
import.php | File | 2.75 KB | 0644 |
|
import1.php | File | 11.09 KB | 0644 |
|
import2.php | File | 34.16 KB | 0644 |
|
import3.php | File | 22.72 KB | 0644 |
|
import4.php | File | 16.86 KB | 0644 |
|
importadmin.php | File | 17.08 KB | 0644 |
|
importsimple.php | File | 7.32 KB | 0644 |
|
index.php | File | 32.82 KB | 0644 |
|
info.php | File | 1.07 KB | 0644 |
|
init.php | File | 27.36 KB | 0644 |
|
initialise.php | File | 12.05 KB | 0644 |
|
initlanguages.php | File | 867 B | 0644 |
|
languages.php | File | 21.37 KB | 0644 |
|
lib.php | File | 86.79 KB | 0644 |
|
list.php | File | 11.32 KB | 0644 |
|
listbounces.php | File | 4.13 KB | 0644 |
|
login.php | File | 6.39 KB | 0644 |
|
logout.php | File | 865 B | 0644 |
|
massremove.php | File | 2.55 KB | 0644 |
|
mclicks.php | File | 7.28 KB | 0644 |
|
members.php | File | 19.99 KB | 0644 |
|
mergeduplicates.php | File | 4.48 KB | 0644 |
|
message.php | File | 9.08 KB | 0644 |
|
messages.php | File | 26.27 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.4 KB | 0644 |
|
msgstatus.php | File | 1.27 KB | 0644 |
|
mviews.php | File | 6.27 KB | 0644 |
|
mysql.inc | File | 40 B | 0644 |
|
mysqli.inc | File | 14.02 KB | 0644 |
|
pageaction.php | File | 1.11 KB | 0644 |
|
phpListAdminAuthentication.php | File | 6.82 KB | 0644 |
|
pluginlib.php | File | 9.43 KB | 0644 |
|
plugins.php | File | 17.78 KB | 0644 |
|
preparesend.php | File | 669 B | 0644 |
|
processbounces.php | File | 35.36 KB | 0644 |
|
processqueue.php | File | 3.71 KB | 0644 |
|
readtestmail.php | File | 11.59 KB | 0644 |
|
reconcileusers.php | File | 27.71 KB | 0644 |
|
redirecttoupdater.php | File | 187 B | 0644 |
|
reindex.php | File | 1.82 KB | 0644 |
|
rsslib.php | File | 3.17 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 6.17 KB | 0644 |
|
send_core.php | File | 63.91 KB | 0644 |
|
sendemaillib.php | File | 69.84 KB | 0644 |
|
sendprepared.php | File | 4.87 KB | 0644 |
|
sessionlib.php | File | 2.7 KB | 0644 |
|
setpermissions.php | File | 2.08 KB | 0644 |
|
setup.php | File | 2.56 KB | 0644 |
|
spage.php | File | 4.35 KB | 0644 |
|
spageedit.php | File | 19.08 KB | 0644 |
|
statsmgt.php | File | 1.23 KB | 0644 |
|
statsoverview.php | File | 6.19 KB | 0644 |
|
stresstest.php | File | 4.82 KB | 0644 |
|
structure.php | File | 29.21 KB | 0644 |
|
subscribelib2.php | File | 70.22 KB | 0644 |
|
subscriberstats.php | File | 617 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 795 B | 0644 |
|
systemstats.php | File | 5.73 KB | 0644 |
|
template.php | File | 16.4 KB | 0644 |
|
templates.php | File | 3.01 KB | 0644 |
|
tests.php | File | 1.67 KB | 0644 |
|
uclicks.php | File | 6.74 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.2 KB | 0644 |
|
updatetlds.php | File | 358 B | 0644 |
|
updatetranslation.php | File | 2.51 KB | 0644 |
|
upgrade.php | File | 23.82 KB | 0644 |
|
user.php | File | 23.08 KB | 0644 |
|
usercheck.php | File | 2.55 KB | 0644 |
|
userclicks.php | File | 11.57 KB | 0644 |
|
userhistory.php | File | 8.25 KB | 0644 |
|
usermgt.php | File | 1.9 KB | 0644 |
|
users.php | File | 19.3 KB | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 635 B | 0644 |
|
viewtemplate.php | File | 1.86 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|