Current File : /home/caballoscriollos/www/phplist/lists/admin/importsimple.php
<?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) {
print '<p class="information">'.$GLOBALS['I18N']->get('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['invalid'] = 0;
$count['foundonblacklist'] = 0;
$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 ($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,1,"%s")', $tables["user"], $line, $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,$GLOBALS['I18N']->get('import_by').' '.adminName(),'');
}
## do not add them to the list(s) when blacklisted
$isBlackListed = isBlackListed($line);
if (!$isBlackListed) {
foreach($selected_lists as $k => $listid) {
$query = "replace into ".$tables["listuser"]." (userid,listid,entered) values($userid,$listid,current_timestamp)";
$result = Sql_query($query);
}
} else {
$count['foundonblacklist']++;
}
} else {
$count['invalid']++;
}
$count['processed']++;
if ($count['processed'] % 100 == 0) {
print $count['processed'].' / '.$total.' '.$GLOBALS['I18N']->get('Imported').'<br/>';
flush();
}
}
$report = sprintf($GLOBALS['I18N']->get('%d lines processed')."\n",$count['processed']);
$report .= sprintf($GLOBALS['I18N']->get('%d email imported')."\n",$count['imported']);
$report .= sprintf($GLOBALS['I18N']->get('%d duplicates')."\n",$count['duplicate']);
$report .= sprintf($GLOBALS['I18N']->get('%d invalidated')."\n",$count['invalid']);
if ($count['foundonblacklist']) {
$report .= sprintf($GLOBALS['I18N']->get('%d addresses were blacklisted and have not been subscribed to the list')."\n",$count['foundonblacklist']);
}
print ActionResult(nl2br($report));
if ($_GET['page'] == 'importsimple') {
if (!empty($_GET['list'])) {
$toList = sprintf('&list=%d',$_GET['list']);
} else {
$toList = '';
}
print '<div class="actions">
'
.PageLinkButton('send&new=1'.$toList,$GLOBALS['I18N']->get('Send a campaign'))
.PageLinkButton('importsimple',$GLOBALS['I18N']->get('Import some more emails'))
.'</div>';
}
sendMail(getConfig("admin_address"), $GLOBALS['I18N']->get('phplist Import Results'), $report);
foreach ($GLOBALS['plugins'] as $pluginname => $plugin) {
$plugin->importReport($report);
}
return;
}
if ($GLOBALS["require_login"] && !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',$GLOBALS['I18N']->get('Add a new list'));
print 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">'.$GLOBALS['I18N']->get('Adding subscribers').' <b>%s</b>',$c,stripslashes($row["name"]),$c,$row["id"],stripslashes($row["name"]));
} else {
$content .= '<p>'.$GLOBALS['I18N']->get('Select the lists to add the emails to').'</p>';
$content .= ListSelectHTML($selected_lists,'importlists',$subselectimp);
}
$content .= '<p class="information">'.
$GLOBALS['I18N']->get('Please enter the emails to import, one per line, in the box below and click "Import Emails"');
#$GLOBALS['I18N']->get('<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"><input type="checkbox" name="checkvalidity" value="1" checked="checked" /> '.$GLOBALS['I18N']->get('Check to skip emails that are not valid').'</div>';
$content .= '<div class="field"><input type="submit" name="doimport" value="'.$GLOBALS['I18N']->get('Import emails').'" ></div>';
$content .= '<div class="field"><textarea name="importcontent" rows="10" cols="40"></textarea></div>';
$panel = new UIPanel('',$content);
print $panel->display();
print '</form>';
Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat