<?php require_once dirname(__FILE__).'/accesscheck.php'; $subselectimp = ''; //# do not use subselect: https://mantis.phplist.com/view.php?id=16725 @ob_end_flush(); if (!ALLOW_IMPORT) { echo '<p class="information">'.s('import is not available').'</p>'; return; } //# most basic possible import: big text area to paste emails in $selected_lists = array(); //# this needs to be outside of anything, so that (ajaxed) addition of a list can be processed $selected_lists = getSelectedLists('importlists'); $actionresult = ''; $content = ''; if (!empty($_POST['importcontent'])) { $lines = explode("\n", $_POST['importcontent']); $count['imported'] = 0; $count['duplicate'] = 0; $count['processed'] = 0; $count['addedtolist'] = 0; $count['invalid'] = 0; $count['foundonblacklist'] = 0; $rejectReport = array( 'invalid' => '', ); $total = count($lines); foreach ($lines as $line) { if (trim($line) == '') { continue; } //# do some basic clearing $line = cleanEmail($line); $uniqid = getUniqid(); if (!empty($_POST['checkvalidity'])) { $isValid = validateEmail($line); } else { $isValid = true; } if (!empty($_POST['confirm'])) { $isConfirmed = '1'; } else { $isConfirmed= '0'; } if ($isValid) { //# I guess everyone will import all their users wanting to receive HTML .... $query = sprintf('insert into %s (email,entered,htmlemail,confirmed,uniqid) values("%s",now(),1,"%d","%s")', $tables['user'], $line, $isConfirmed, $uniqid); $result = Sql_query($query, 1); $userid = Sql_insert_id(); if (empty($userid)) { ++$count['duplicate']; //# mark the subscriber confirmed, don't touch blacklisted //# hmm, maybe not, can be done on the reconcile page // Sql_Query(sprintf('update %s set confirmed = 1 where email = "%s"', $tables["user"], $line)); $idreq = Sql_Fetch_Row_Query(sprintf('select id from %s where email = "%s"', $tables['user'], $line)); $userid = $idreq[0]; } else { ++$count['imported']; addUserHistory($line, s('import_by').' '.adminName(), ''); } //# do not add them to the list(s) when blacklisted $isBlackListed = isBlackListed($line); if (!$isBlackListed) { $addition = false; foreach ($selected_lists as $k => $listid) { $query = 'insert ignore into '.$tables['listuser']." (userid,listid,entered) values($userid,$listid,now())"; $result = Sql_query($query); $addition = $addition || Sql_Affected_Rows() == 1; } if ($addition) { ++$count['addedtolist']; } } else { //# mark blacklisted, just in case ##17288 Sql_Query(sprintf('update %s set blacklisted = 1 where id = %d', $tables['user'], $userid)); ++$count['foundonblacklist']; } } else { ++$count['invalid']; $rejectReport['invalid'] .= "\n".$line; //# @TODO hmm, this can blow up } ++$count['processed']; if ($count['processed'] % 100 == 0) { echo $count['processed'].' / '.$total.' '.s('Imported').'<br/>'; flush(); } } $report = s('%d lines processed', $count['processed']).PHP_EOL; $report .= s('%d email addresses added to the list(s)', $count['addedtolist']).PHP_EOL; $report .= s('%d new email addresses imported', $count['imported']).PHP_EOL; $report .= s('%d email addresses already existed in the database', $count['duplicate']).PHP_EOL; if (!empty($count['invalid'])) { $report .= s('%d invalid email addresses', $count['invalid']).PHP_EOL; $report .= s('Invalid addresses will be reported in the report that is sent to %s', getConfig('admin_address')).PHP_EOL; } if ($count['foundonblacklist']) { $report .= s('%d addresses were blacklisted and have not been subscribed to the list', $count['foundonblacklist']).PHP_EOL; } echo Info(nl2br($report),true); if ($_GET['page'] == 'importsimple') { if (!empty($_GET['list'])) { $toList = sprintf('&list=%d', $_GET['list']); } else { $toList = ''; } echo '<div class="actions"> ' .PageLinkButton('send&new=1'.$toList, s('Send a campaign')) .PageLinkButton('importsimple', s('Import some more emails')) .'</div>'; } if (!empty($rejectReport['invalid'])) { $report .= "\n\n".s('Rejected email addresses').":\n"; $report .= $rejectReport['invalid']; } sendMail(getConfig('admin_address'), s('phplist Import Results'), $report); foreach ($GLOBALS['plugins'] as $pluginname => $plugin) { $plugin->importReport($report); } return; } if (!isSuperUser()) { $access = accessLevel('import1'); switch ($access) { case 'owner': $subselectimp = ' where owner = '.$_SESSION['logindetails']['id']; break; case 'all': $subselectimp = ''; break; case 'none': default: $subselectimp = ' where id = 0'; break; } } if (isset($_GET['list'])) { $id = sprintf('%d', $_GET['list']); if (!empty($subselectimp)) { $subselectimp .= ' and id = '.$id; } else { $subselectimp .= ' where id = '.$id; } } //print PageLinkDialog('addlist',s('Add a new list')); echo FormStart(' enctype="multipart/form-data" name="import"'); $result = Sql_query('SELECT id,name FROM '.$tables['list']."$subselectimp ORDER BY listorder"); $total = Sql_Num_Rows($result); $c = 0; if ($total == 1) { $row = Sql_fetch_array($result); $content .= sprintf('<input type="hidden" name="listname[%d]" value="%s"><input type="hidden" name="importlists[%d]" value="%d">'.s('Adding subscribers').' <b>%s</b>', $c, disableJavascript(stripslashes($row['name'])), $c, $row['id'], disableJavascript(stripslashes($row['name']))); } else { $content .= '<p>'.s('Select the lists to add the emails to').'</p>'; $content .= ListSelectHTML($selected_lists, 'importlists', $subselectimp); } $content .= '<p class="information">'. s('Please enter the emails to import, one per line, in the box below and click "Import Emails"'); //s('<b>Warning</b>: the emails you import will not be checked on validity. You can do this later on the "reconcile subscribers" page.'); $content .= '</p>'; $content .= '<div class="field"><textarea name="importcontent" rows="10" cols="40"></textarea></div>'; $content .= '<div class="field"><input type="checkbox" name="checkvalidity" value="1" checked="checked" /> '.s('Check to skip emails that are not valid').'</div>'; $content .= '<div class="field"><input type="checkbox" name="confirm" value="1" checked="checked" /> '.s('Confirm email addresses by default').'</div>'; $content .= '<div class="field"><input type="submit" name="doimport" value="'.s('Import emails').'" ></div>'; $panel = new UIPanel('', $content); echo $panel->display(); echo '</form>';
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 |
|