Files
adanar/subscripts.php
arlemp@selectel.ru c5003b00cf add files
2023-08-05 11:59:48 +03:00

669 lines
18 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;