require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/include.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/subscribe/prolog.php");
IncludeModuleLangFile(__FILE__);
$POST_RIGHT = $APPLICATION->GetGroupRight("subscribe");
if($POST_RIGHT=="D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$MAIN_RIGHT = $APPLICATION->GetGroupRight("main");
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("imp_import_tab"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("imp_import_tab_title")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs, true, true);
$arError = array();
$bShowRes = false;
if(!is_array($USER_GROUP_ID))
$USER_GROUP_ID=array();
if($REQUEST_METHOD=="POST" && !empty($Import) && $POST_RIGHT>="W" && check_bitrix_sessid())
{
//*************************************
//Prepare emails
//*************************************
//This is from the form
$sAddr = $ADDR_LIST.",";
//And this is from the file
if(!empty($_FILES["ADDR_FILE"]["tmp_name"]))
{
if((integer)$_FILES["ADDR_FILE"]["error"] <> 0)
$arError[] = array("id"=>"ADDR_FILE", "text"=>GetMessage("subscr_imp_err1")." (".GetMessage("subscr_imp_err2")." ".$_FILES["ADDR_FILE"]["error"].")");
else
$sAddr .= file_get_contents($_FILES["ADDR_FILE"]["tmp_name"]);
}
//explode to emails array
$aEmail = array();
$addr = strtok($sAddr, ", \r\n\t");
while($addr!==false)
{
if($addr <> '')
$aEmail[$addr] = true;
$addr = strtok(", \r\n\t");
}
//check for duplicate emails
$addr = CSubscription::GetList();
while($addr_arr = $addr->Fetch())
if(isset($aEmail[$addr_arr["EMAIL"]]))
unset($aEmail[$addr_arr["EMAIL"]]);
//*************************************
//add users and subscribers
//*************************************
//constant part of the subscriber
$subscr = new CSubscription;
$arFields = Array(
"ACTIVE" => "Y",
"FORMAT" => ($FORMAT <> "html"? "text":"html"),
"CONFIRMED" => ($CONFIRMED <> "Y"? "N":"Y"),
"SEND_CONFIRM" => ($SEND_CONFIRM <> "Y"? "N":"Y"),
"ALL_SITES" => "Y",
"RUB_ID" => $RUB_ID
);
//constant part of the user
if($USER_TYPE == "U")
$user = new CUser;
$nError = 0;
$nSuccess = 0;
foreach($aEmail as $email=>$temp)
{
$USER_ID = false;
if($USER_TYPE == "U")
{
//add user
$sPassw = randString(6);
$arUserFields = Array(
"LOGIN" => randString(50),
"CHECKWORD" => randString(8),
"PASSWORD" => $sPassw,
"CONFIRM_PASSWORD" => $sPassw,
"EMAIL" => $email,
"ACTIVE" => "Y",
"GROUP_ID" => ($MAIN_RIGHT >= "W"?$USER_GROUP_ID:array(COption::GetOptionString("main", "new_user_registration_def_group")))
);
if($USER_ID = $user->Add($arUserFields))
{
$user->Update($USER_ID, array("LOGIN"=>"user".$USER_ID));
//send registration message
if($SEND_REG_INFO == "Y")
$user->SendUserInfo($USER_ID, $LID, GetMessage("subscr_send_info"));
}
else
{
$arError[] = array("id"=>"", "text"=>$email.": ".$user->LAST_ERROR);
$nError++;
continue;
}
}//$USER_TYPE == "U"
//add subscription
$arFields["USER_ID"] = $USER_ID;
$arFields["EMAIL"] = $email;
if(!$subscr->Add($arFields, $LID))
{
$arError[] = array("id"=>"", "text"=>$email.": ".$subscr->LAST_ERROR);
$nError++;
}
else
$nSuccess++;
}//foreach
$bShowRes = true;
}//$REQUEST_METHOD=="POST"
else
{
//default falues
$CONFIRMED = "Y";
$USER_TYPE = "A";
$SEND_REG_INFO = "Y";
$FORMAT = "text";
$USER_GROUP_ID = array();
$RUB_ID = array();
}
$APPLICATION->SetTitle(GetMessage("imp_title"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
if(count($arError)>0)
{
$e = new CAdminException($arError);
$message = new CAdminMessage(GetMessage("imp_error"), $e);
echo $message->Show();
}
?>
if($bShowRes)
{
CAdminMessage::ShowMessage(array(
"MESSAGE"=>GetMessage("imp_results"),
"DETAILS"=>GetMessage("imp_results_total").' '.count($aEmail).'
'
.GetMessage("imp_results_added").' '.$nSuccess.'
'
.GetMessage("imp_results_err").' '.$nError.'',
"HTML"=>true,
"TYPE"=>"PROGRESS",
));
}
?>