<?php


use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/vhosts/subscripts/vendor/phpmailer/phpmailer/src/Exception.php';
require '/vhosts/subscripts/vendor/phpmailer/phpmailer/src/PHPMailer.php';
require '/vhosts/subscripts/vendor/phpmailer/phpmailer/src/SMTP.php';

date_default_timezone_set('Europe/Moscow');

ini_set('error_reporting', E_ALL);
ini_set('display_startup_errors', 0);
ini_set("display_errors",'0');
//ini_set("track_errors",'1');
//ini_set("html_errors",'1');

require 'sendsheff.php';
require 'vendor/akdelf/korm/korm.php';
require '/vhosts/an/httpdocs/system/templink/templink.php';
//require '/vhosts/an/httpdocs/vendor/PHPMailer/PHPMailerAutoload.php';
require 'db_lite/db_lite.php';





function view ($view, $data = array(), $layer = null){

	ob_start();
	
	if (is_array($data))
		extract($data);
	if ($layer !== null){
		$content = view($view, $data);
		require $layer;
	}
	else
		require $view;
					 
	return trim(ob_get_clean());

}	




function email( $mail, $subject, $message, $frommail ) {

	$mail = mb_strtolower($mail);
	
	if (isset($frommail['login']) and $frommail['login'] !== '')
		$login = $frommail['login'];
	else {
		$login = $frommail['mail'];
	}	

	$send = new PHPMailer;
				//$mail->SMTPDebug = 3;                               // Enable verbose debug output
				$send->isSMTP();
				//$send->SMTPDebug=3;                                      // Set mailer to use SMTP
				$send->Host = $frommail['host'];  // Specify main and backup SMTP servers
				                              // Enable SMTP authentication
				$send->Username = $login;                 // SMTP username
				$send->Password = $frommail['password']; 
				if (isset($frommail['secure'])) {
					$send->SMTPSecure = $frommail['secure'];
					$send->SMTPAuth = true; 
					$send->SMTPOptions = array(
						'ssl' => array(
							'verify_peer' => false,
							'verify_peer_name' => false,
							'allow_self_signed' => true
						)
					);
				}	
				else {
					$mail->SMTPSecure = false;
					$mail->SMTPAutoTLS = false;
				}
				$send->Port = $frommail['port'];                                    // TCP port to connect to
				$send->setFrom($frommail['mail'], 'Аргументы Недели');
				$send->addAddress($mail, $mail);     // Add a recipient
				$send->CharSet = 'UTF-8';
				$send->isHTML(True);  // Set email format to HTML
					$send->Subject = $subject;
					/*ob_start();
					include 'mail.phtml';
					$mailbody = ob_get_contents();
					ob_end_clean();*/

				$send->Body = $message;
					



	//$headers = "MIME-Version: 1.0\r\n";
	//$headers .= "Content-type: text/plain; charset=utf-8\r\n";
	//$headers .= "Content-Transfer-Encoding: 8bit \r\n";
	//$headers .= "From: nomer@arguments.ru\r\n";
	//$headers .= 'Reply-To: nomer@arguments.ru'."\r\n";

	//if (mail($mail, $subject, $message, $headers))
	//	$status = 'OK';
	//else
	//	$status = 'NO';
	
	
	if($send->send()) 
		$status = 'OK';
	else {
        $status = 'NO';
        echo 'Mailer Error: ' . $send->ErrorInfo."\n";
    }

return $status;
	

}

echo "\nsubscript\n";




//kORM::config('argumentiru', 'newser', 'Chjk90yuiREY', 'mysql');
kORM::config('chitatel', 'chitatel', 'hjYu78kl*90Uio', 'mysql', 'argumentiru');
//kORM::config('argumentiru', 'root', 'zFgj67TyuUIO23Tyu3', 'mysql');
db_config('argumentiru', 'mysql:host=mysql;dbname=argumentiru', 'chitatel', 'hjYu78kl*90Uio');
db_config('newser', 'mysql:host=mysql;dbname=argumentiru', 'newser', 'Chjk90yuiREY');


$endnumber = kORM::table('price')->where('category_id', 1)->sort('price_id', 'desc')->one();

$endnumber = db_get("SELECT * FROM `price` WHERE `category_id` = 1 ORDER BY `price_id` DESC LIMIT 1");


//if (is_array($endnumber))
//	$link = templink::get('https://argumenti.ru/pub/files/pdf/pdf/'.$endnumber['price_id'].'.pdf');

if (is_array($endnumber))	
	$link = 'https://klan.argumenti.ru/read/'.$endnumber['pricehash'];




//$link = 'https://argumenti.ru/app/templink.php?id=3e460287f6ae89f04709c15ffd3487aa';
$subject = $endnumber['priceauthor'].' '.$endnumber['pricename'];
$message = '
<p>><b><span style="color:red;">А</span>РГУМЕНТЫ <span style="color:red;">Н</span>ЕДЕЛИ/b></p>
<p>Уважаемый читатель!</p>
<p>В рамках действующей подписки Вам стал доступен архив газет и подборка книг от Издательского дома «Аргументы Недели»</p>
<p>Для того чтобы воспользоваться сервисом, <a href="'.$linkuser.'">пройдите по ссылке</a> и придумайте пароль</p>
<p>Вы сможете <span style="font-weight:bold;">скачать Ваш экземпляр «Аргументов Недели» по ссылке</span> - <a href="'.$link.'">'.$link.'</a></p>
<p>- Если ссылка в письме неактивная - скопируйте ее и вставьте в адресную строку браузера.</p>
<p>- Добавьте адрес <a href="mailto:shop@argumenti.ru">shop@argument.ru</a> в контакты, чтобы письма от нас не попадали в спам.</p>';
if ($argv[1] == 'blat') {
	$message .= '<p>Для консультации и разрешения возникших вопросов Вы можете обратиться к нам по электронному адресу <a href="mailto:podpiska@argumenti.ru">podpiska@argumenti.ru</a></p>';
}
else {
	$message .= '<p>Для консультации и разрешения возникших вопросов Вы можете обратиться к нам по электронному адресу <a href="mailto:shop@argumenti.ru">shop@argumenti.ru</a></p>';
}	
$message .= '<br><p>Все материалы этого номера будут доступны <span style="font-weight:bold;">на сайте <b>завтра</b></span> - <a href="https://argumenti.ru/numbers/number/'.$endnumber['price_id'].'?token=41098063333700612987800405345">по Вашей личной ссылке</a></p>';

//#Зауглом


$subsql = "SELECT * FROM `subscript_news` WHERE `weekly` = '1' ORDER BY `id` DESC LIMIT 1";
$subscript_news = Table('subscript_news')->where('weekly', 1)->sort('id', 'desc')->one();
$subscript_news = db_get($subsql, 'newser');




//$panfile = '/vhosts/adanar.argumenti.ru/subscript_test.html';

//if (file_exists($panfile)) {
//	$message .= '<p>ТАКЖЕ ПРЕДЛАГАЕМ ВАМ ПОДБОРКУ ИНТЕРЕСНЫХ НОВОСТЕЙ, КОТОРЫЕ НЕ ПОПАЛИ В БУМАЖНЫЙ НОМЕР:</p>'.file_get_contents($panfile);
//}


$ferr = '/vhosts/adanar.argumenti.ru/error.json';
$mails = array();
$end_id = 0;
$users = array();
					
if ($argv[1] == 'test') {
	$users = [
		'ak778@mail.ru',
		'ak@argumenti.ru',
		'viatcheslav.zhuk@gmail.com',
		'zheltov@argumenti.ru',
		'panv@bk.ru'
	];

	
	$viewfile = '/vhosts/adanar.argumenti.ru/views/animag.phtml';

	$filestr = view('/vhosts/adanar.argumenti.ru/views/animag.phtml', array('message'=>$message)); 
	
	$filename = '/vhosts/adanar.argumenti.ru/html/number.html';
	file_put_contents($filename, $filestr);

	/** $users = [
		'ak778@mail.ru',
		'ak@argumenti.ru',
		'prytkov2005@yandex.ru'
	];*/





	$days = 100;

	$subject = 'TEST - рассылка для тестовой группы';
}
elseif ($argv[1] == 'aktest') {
    $users = ['ak@argumenti.ru'];
}
elseif ($argv[1] == 'blat') {
	$users = kORM::table('anbuy')->where('number_id', 689)->where('buy_status', 1)->all();
		
}
elseif ($argv[1] == 'error'){
    if (file_exists($ferr)) {
        $json_file = file_get_contents($ferr);
        $users = json_decode($json_file, True);
    }
}

elseif ($argv[1] == 'endnumber') {

	$users = kORM::table('anbuy')->where('number_id', 1118)->where('buy_status', 1)->all();
	
}	


elseif ($argv[1] == 'local') {



	$users = ['krez52@mail.ru'];

}
elseif ($argv[1] == 'support'){
/** 	$users= [
			'kan8809282@gmail.com',
			'zubovalex54@yandex.ru',//
			'malihincolya@yandex.ru',
			'family4@list.ru',
			'kvnsumy@mail.ru',
			'sivakova45@mail.ru',
			'50sd015@mail.ru',
			'rbp48@mail.ru',
			'nik_denisov_1951@list.ru',
			'slava2rf@gmail.com',
			'svetayacushko@inbox.ru',
			'adkham.rafikov@gmail.com',
			'sberezinko@gmail.com',
			'autobyd@mail.ru',
			'fga50@mail.ru',
			'aksand@mail.ru',
			'v.kozyirev@gmail.com',
			'stvzyn@mail.ru',
			'potashev49@bk.ru',
			'shokvadim48@gmail.com'
	]; */

	$users = [
		'bkorsaev@yandex.ru',
		'ginzbo@me.com',
		'vm.baglikov@gmail.com',
		'sav58@yandex.ru'
	];

}
elseif ($argv[1] == 'qr'){
	//$usql = "SELECT * FROM `anbuy` WHERE `number_id` = '486' AND `buy_status` = 1 AND `buy_id` > 75367";
	$usql = "SELECT * FROM `anbuy` WHERE `number_id` IN (486, 689) AND `buy_status` = '1' AND `mail_status` = '0'";
	$users = db_get($usql);

	if (count($users) == 0) {
		echo 'no users';
		exit;
	}

    //$sql_user = kORM::table('anbuy')->where('number_id', 486)->where('buy_status', 1)->where('buy_id', 75135, '>');
    //$users = $sql_user->all();
}
else {
	//echo kORM::table('anbuy')->where('number_id', 486)->where('buy_status', 1)->where('buy_id', '46425', 'AND', '>');
	//exit;
	//$start_id = 83722;
	//$end_id = 83722;

	$start_id = 0;
	$items = kORM::table('anbuy')->where('number_id', 486)->where('buy_status', 1)->where('buy_id', $start_id, '>', 'AND')->order('buy_id', 'desc')->all();
	//$items = kORM::table('anbuy')->where('number_id', 486)->where('buy_status', 1)->all();

	$today = date("Y-m-d H:i:s");
	$today_time = strtotime($today);

	$date_now = time(); // текущее время (метка времени)
	
	# определяем просроченную подписку


	foreach ($items as $item){

		$key = $item['client_id'];

		//нет даты начала действия
		if ($item['date'] == '0000-00-00 00:00:00'){
			continue;
		}
		elseif ($item['date_end'] == '0000-00-00 00:00:00'){ // нет даты окончания
			$end_date = $item['date'].' +1 year';		
		}
		else {
			$end_date = $item['date_end'];
			//date_add($end_date, date_interval_create_from_date_string('1 year'));	
		}

		// подписка еще не вступила в силу
		if (strtotime($item['date'] > $date_now)){
			continue;
		}

		$end_time = strtotime($end_date);
		$date_end =  date('Y-m-d H:i:s', $end_time); //вычисляем конечную дату
		
		if($end_time > $date_now) {
			$status = "активна";

			$users[$key] = $item; //добавляем только активных
			$users[$key]['date_end'] = $date_end;

			$seconds = abs($date_now - $end_time);
			$days = floor($seconds / 86400);
			$users[$key]['days']  = $days;

			
		}
		else {
			$status = " просрочена";
			$days = 0;
			//echo $status.' '.$item['date_start']."\n";
		}


		//echo $status.' '.$item['date_start']."\n";
		//echo " $status: ".$item['date_start']."\n";


		$user_log .= $item['buy_id'].'.'.$item['buy_email'].'-'.$status.' days:'.$days.'  |  '.$item['date'].' = '.$date_end."\n";

		
	}
	
}


file_put_contents('/vhosts/adanar.argumenti.ru/user.log', $user_log);


//$users = array('0'=>array('buy_email'=>'vak@argumenti.ru'), '3'=>array('buy_email'=>'usatiy.ded@gmail.com'));



//$users = explode(" - NO", $str);



$nn =0;
$col = 0;

$result = '';
$pause = 1;

$errors = array();

if ($argv[1] == 'aktest' or $argv[1] == 'test' or $argv[1] == 'blat' or $argv[1] == 'local' or $argv[1] == 'support' ) {
	
	//$emails = ['mail'=>'noreply@argumenti.ru', 'password'=>'eessoj8Let', 'port'=>465, 'host'=>'smtp.mail.ru', 'secure' => 'ssl']; 
	/** $emails = ['mail'=>'news@mail.argumenti.ru', 
					'password'=>'UgPn&KvErnkD$5', 
					'port'=>465, 
					'host'=>'mail.argumenti.ru',
					'secure' => PHPMailer::ENCRYPTION_SMTPS
					]; 	/
					
				/** 	$emails = ['mail'=>'shop@argumenti.ru', 
					'password'=>'5{5HgJjZMgwk', 
					'port'=>465, 
					'secure' => true,
					'host'=>'smtp.mail.ru'
					]; 	*/	
					
					
					$emails = ['mail'=>'grig@argumenti.ru', 
						'password'=>'Rt90Fg', 
						'port'=>25, 
						'host'=>'mx4.argumenti.ru'
					]; 		
	
}	

else {

	/** $emails = array (
					'gazeta@argumenti.ru',
					'angazeta@argumenti.ru',
					'gazeta-vsem@argumenti.ru',
					'nespam@argumenti.ru',
					'shoplist@argumenti.ru',
					'shop5@argumenti.ru', 
					'shop4@argumenti.ru', 
					'kinigian@argumenti.ru', 
					'anshop@argumenti.ru', 
					'gazeta@argumenti.ru',
					'knigian@argumenti.ru',
					'pokupka@argumenti.ru',
					'tovar@argumenti.ru',
					'zakaz@argumenti.ru',
					'order@argumenti.ru',
					'vash-zakaz@argumenti.ru',
					'vasha-gazeta@argumenti.ru',
					'vasha-an@argumenti.ru'
				); */

		/*$email = [
			['login'=>'shop@argumenti.ru', 
				'password'=>'5{5HgJjZMgwk', 
					'port'=>465, 'smtp'=>'smtp.mail.ru'],
			['login'=>'gazeta@argumenti.ru', 'password'=>'eessoj8Let', 'port'=>465, 'smtp'=>'smtp.mail.ru']	
		];*/
		
				
				$emails = ['mail'=>'grig@argumenti.ru', 
					'password'=>'Rt90Fg', 
					'port'=>25, 
					'host'=>'mx4.argumenti.ru'
					]; 


				/** $emails = ['mail'=>'news@mail.argumenti.ru', 
					'password'=>'UgPn&KvErnkD$5', 
					'port'=>465, 
					'host'=>'mail.argumenti.ru',
					'secure' => PHPMailer::ENCRYPTION_SMTPS
					]; */		
					
				/** 	$emails = ['mail'=>'shop@argumenti.ru', 
					'password'=>'5{5HgJjZMgwk', 
					'port'=>465, 
					'secure' => true,
					'host'=>'smtp.mail.ru'
					]; 	*/		
			
}


//$keymail = 0;
$frommail = $emails;

$data = array();
$data['price_id'] = $endnumber['price_id'];
$data['link'] = $link;
$data['subscript_news'] = $subscript_news;



foreach ($users as $user) {

    $nn++;

	

	$data['linkuser'] = '';
	$data['group'] = $argv[1];
	$data['days'] = $user['days'];
	

	if (isset($user['buy_email']))
		$currmail = $user['buy_email'];
	else
		$currmail = $user;

	$currmail = mb_strtolower(trim($currmail));


	$client_sql = "SELECT * FROM `clients` WHERE `clientmail` = '$currmail' LIMIT 1";
	
	$client = db_get($client_sql);
	$buy_id = (int)$user['buy_id'];

	
	if ($user['client_id'] == 0 and $buy_id > 0) { // заводим клиента
        if (!is_array($client) or count($client) == 0){		
            $date = date("Y-m-d H:i:s");
            $hash = md5($currmail.$date);
            $addclient['clientmail'] = $currmail;
            $addclient['clienthash'] = $hash;
            $addclient['clientdate'] = $date;
			$addclient['clientpassword'] = '';
			$client_id = db_insert('clients', $addclient);
			echo "$client_id \n";	
            if ($client_id > 0){
                $client['client_id'] = $client_id;
            }
		}

		if (isset($client['client_id']) and $client['client_id'] > 0){ // добавляем клиента в заказ
			$sql_update = "
			UPDATE `anbuy`
			SET `client_id` = '".$client['client_id']."' 
			WHERE `buy_id` = '$buy_id';
			";  
			echo "$sql_update\n";
			$update = db_get($sql_update);  
		}
	}
	
	if (isset($client['client_id']) and $client['clientpassword'] == '')
		$data['linkuser'] = 'http://klan.argumenti.ru/resetpwd/'.$client['clienthash'];

	if ($end_id > 0 and $user['buy_id'] > $end_id)
		break;
		
		
		$zauglom = db_get("
		SELECT 
			`news_id`,
			`title`,
			`alias`,
			DATE_FORMAT(date_insert, '%Y/%m') AS dateurl 
		FROM 
			`news` 
		LEFT JOIN 
			`siteparts3` ON `news`.`sitepart_id` = `siteparts3`.`sitepart_id`
		WHERE 
			`news`.`sitepart_id` = '104' AND `active` = '1'
		ORDER BY 
			`news_id` DESC LIMIT 1
		", 'newser');

	if (isset($zauglom['news_id'])){
		$data['zauglom'] = $zauglom['title'];
		$data['zauglom_link'] = 'https://argumenti.ru/'.$zauglom['alias'].'/'.$zauglom['dateurl'].'/'.$zauglom['news_id'];
	} 
	

	$message = view('views/subscript.phtml', $data);


	if (!in_array($currmail, $mails)) { // защита от повторной отправки
		
		//file_put_contents("/vhosts/adanar.argumenti.ru/log/mailtest_$nn.html", $message);

		// это отправка письма
		$sender = email($currmail, $subject, $message, $frommail);
		$keymail = $keymail + 1;

		if (!isset($emails[$keymail])){
            $keymail = 0;
        }

		if ($sender == 'NO') {
            $keymail = $keymail + 1;

		    if (!isset($emails[$keymail])){
                $keymail = 0;
			}
			
			echo "paused $pause s ... \n";
			sleep($pause);

			
        //	$sender = email($currmail, $subject, $message, $frommail);

		}
		
		//$frommail = $emails[$keymail];

		if (isset($user['buy_id']))
			$buy_id = $user['buy_id'];
		else
			$buy_id = $nn;	
        
        if ($sender == 'NO'){
            $errors[] = ['buy_id' => $buy_id, 'buy_email' => $currmail];
		}
		else {  //письмо отправлено
			$sql_okmail = "
			UPDATE `anbuy`
			SET  `mail_status` = '1' 
			WHERE `buy_id` = '$buy_id';
			";  
			$okupdate = db_get($sql_okmail);  
		}
		


        $senddate = date('H:i:s d-m-Y');

        $str_info = 'ID: '.$client['client_id'].' BUY_ID: '.$buy_id.". $currmail - $sender $senddate (".$frommail['mail'].')';
        echo "$str_info\n";
        $resusers[] = $str_info;
		$mails[$currmail] = $currmail;
	}

	//sleep(3); 
}


if ($argv[1] !== 'test') {



    $arr_json = json_decode($errors);
    file_put_contents($ferr, $arr_json);

    $sendsheff = new sendsheff();

	$text = "Приветствую!\nНастоящим уверяю Вас в своем почтении. Высылаю результаты отправки подписки  ".$endnumber['priceauthor'].' '.$endnumber['pricename']."\n";
	$text .= "\nВсего доставлено: '.$nn.' экз.\n\n";

	foreach ($resusers as $resuser) {
        $text .= "$resuser\n";
    }

	$text .= errs2array($errors);
	$log_file = 'logs/subscript_'.$argv[1].'_'.date('H:i:s d-m-Y');

    file_put_contents($log_file, $text);


  $prmails = array('0'=>'ak@argumenti.ru', '1' => 'shop@argumenti.ru', '3' => 'viatcheslav.zhuk@gmail.com', '4'=>'podpiska@argumenti.ru');
  $prmails = array('0'=>'ak@argumenti.ru');

	foreach($prmails as $prmail) {
		$send = $sendsheff->send($prmail, 'Доставка подписки '.$endnumber['priceauthor'].' '.$endnumber['pricename'], $text);
	}

	file_put_contents('/vhosts/adanar.argumenti.ru/subscript.log', $text);

}


function errs2array($users) {
    $text = "\nC ошибками:\n";
    $text .= "\n".'$users'."= [\n";
    foreach ($users as $user){
        $text .= "\n'".$user['buy_email']."',\n";
    }

    $text .= "\n];\n";

    return $text;

}




echo "\n\nSubscripts: ".$nn;
