Домой Каталог: Дополнения WP-Recall WP Access Ultimate E-mail рассылка об окончании доступа: выбор для разных Аккаунтов доступа
17ответ(ов) в теме
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
1
13:12
Версия WP-Recall: 16.17.5
Версия дополнения: 1.6.0

Похожий вопрос раньше уже был

Вы не можете просматривать опубликованные ссылки

, но у нас ситуация несколько иная.

По части Аккаунтов доступа такая рассылка нужна, а по части нет. Можно ли как-то сделать так, чтобы для отдельных аккаунтов (доступов) рассылка не производилась?

Если в настройках аккаунта указать "продление доступа" запрещено, то письмо с напоминанием не будет высылаться?

Или возможно прямо в коде для ряда аккаунтов отменить письма?

Редакции сообщения
20.01.2021 14:49dm1Причина: не указано
0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
2
13:15

Андрей, сможете помочь?

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
3
13:26

Если вас не устраивают дефолтные опции, то создавайте задание и описывайте, что именно вам требуется, заинтересованные исполнители откликнутся.

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
4
15:13

Странный ответ) Вы продаете ПО, я его покупаю. И спрашиваю. Если в настройках аккаунта указать "продление доступа" запрещено, то письмо с напоминанием не будет высылаться?

По логике должно быть именно так: если продление доступа не нужно, то и письмо о продлении доступа уходить не должно.

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
5
12:09

Андрей, если Ваш продукт работает некорректно и Вы сейчас не имеете возможность его сопровождать (хотя, мы платим деньги и за ПО, и за сопровождение (обращение на форум)), напишите, пожалуйста, какие строки кода и как нужно поправить. Чтобы функция "продление доступа" запрещено - работала корректно.

Спасибо.

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
6
14:09

Я не вижу некорректной работы. Письмо об окончании платного доступа никак не привязано к опции продления аккаунта и привязано быть не должно. Письмо лишь сообщает, что время подходит к концу, почему оно не должно отправляться при невозможности продления неясно, доступ закончится - появится новая возможность его приобрести.

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
7
18:19

Вы же программист, значит, должны понимать логику: для тех доступов, которые можно продлить, уходит письмо с предложением продлить доступ; для тех, доступов которые продлять не нужно, уходит либо другое письмо (совершенно другой текст), либо вообще не уходит письмо. Логично же, да?

Соответственно, вопрос. Если мы не можем сделать разные письма для разных доступов, то можем хотя бы сделать так, чтобы для доступов, которым не нужно продление, письмо не уходило (хотя бы так; не прошу отдельное письмо). Можно ли оперативно какие-то строки текста поправить, чтобы сделать эту связь? Галочка "запрещено" = письмо не отправляется по этому виду доступа.

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
8
18:39

откройте файл wp-content/wp-recall/add-on/wp-access-ultimate/index.php
строка 107 измените массив передаваемый в функцию таким образом

$access = wau_get_access_by_args( array(
	'number' => -1,
	'is_prolong' => 1
) );

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
9
22:11

Спасибо. Андрей, к каким изменениям это приведет? Чтобы я точно понимал, что в итоге получим.

У нас большая система с десятками тысяч пользователей и транзакций. Упасть не можем себе позволить.

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
10
22:12

И еще вопрос. Такие изменения тестировались у вас на тестовом сервере или еще где-то?

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
11
10:25

Конечно, я специально развернул тестовый сервер, все там проверил из под разных аккаунтов, гостя и авторизованного, проверил логи ошибок, пофиксил замеченные, а затем уже отдал правку вам.

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
12
17:49

Андрей, строку добавили. Но письма всё равно приходят.

Пользователь подписан на два аккаунта. В одном стоит галочка Продление доступа "Разрешено". В другом "Запрещено". Приходит и в том, и в другом случае письмо.

Может быть, что-то еще нужно поправить или как-то иначе? А то пользователям уходят некорректные письма. Очень нужна Ваша помощь.

Напоминаю:

Версия WP-Recall: 16.17.5
Версия дополнения: 1.6.0

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
13
19:04

тогда чуть ниже строки 126:

} else if ( $time < $daySeconds && $time > ($daySeconds - 86400) ) {

добавьте
if(wau_get_account($acc->account_id)->is_prolong) continue;

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
14
19:39

Есть вот такой кусок кода, в которой указанной Вами строки не видно (else if вообще только 1 раз используется в другом смысле):

function wau_daily_cron_actions() {

	$access = wau_get_access_by_args( array(
		'number' => -1,
		'is_prolong' => 1
	) );

	if ( ! $access )
		return false;

	$mailText	 = wau_get_option( 'mail-text-remind' );
	// $daySeconds	 = wau_get_option( 'days-remind', 1 ) * 86400;

	foreach ( $access as $acc ) {

		$time = $acc->access_time - (strtotime( current_time( 'mysql' ) ) - strtotime( $acc->access_date ));
		
		// Отправлять письма когда пользователю осталось 
		// 6 дней
		// 3 дня
		$oneDay = 86400;
        $firstMailDays = 6;
        $secondMailDays = 3;
        $shouldSendFirstMail = ($time >= $firstMailDays * $oneDay) && ($time <= ($firstMailDays + 1) * $oneDay);
        $shouldSendSecondMail = ($time >= $secondMailDays * $oneDay) && ($time <= ($secondMailDays + 1) * $oneDay);

		if ( $time < 0 ) {

			wau_delete_access( $acc->access_id );
		} else if ($shouldSendFirstMail || $shouldSendSecondMail) {

			$timeData = wau_parse_time( $time );

			$mailTextParse = str_replace( array(
				'{accountName}',
				'{userName}',
				'{timeEnd}'
				), array(
				wau_get_account_field( $acc->account_id, 'account_name' ),
				get_the_author_meta( 'display_name', $acc->user_id ),
				($timeData['day'] ? $timeData['day'] . ' дн. ' : '') . $timeData['hour'] . ' час. ' . $timeData['minute'] . ' минут'
				), $mailText );

			rcl_mail( get_the_author_meta( 'email', $acc->user_id ), __( 'Время вашего доступа истекает!' ), $mailTextParse );
		}
	}
}

Куда именно добавить, подскажите, пожалуйста. И оставлять ли правку с prolong?

Может быть, это связано с тем, что мы добавили вручную отправку второго письма (за 3 дня и 6 дней - с Вами очень давно это обсуждали). Тогда подскажите, как поправить, чтобы всё корректно работало.

Спасибо.

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
15
08:36

тогда сразу после

foreach ( $access as $acc ) {

добавьте
if(!wau_get_account($acc->account_id)->is_prolong) continue;

Редакции сообщения
12.03.2021 08:36Андрей CSПричина: не указано
0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
16
10:41

То есть должно получиться так, верно?

	foreach ( $access as $acc ) {
		if(!wau_get_account($acc->account_id)->is_prolong) continue;
		$time = $acc->access_time - (strtotime( current_time( 'mysql' ) ) - strtotime( $acc->access_date ));
		
		// Отправлять письма когда пользователю осталось 
		// 6 дней
		// 3 дня
		$oneDay = 86400;
        $firstMailDays = 6;
        $secondMailDays = 3;
        $shouldSendFirstMail = ($time >= $firstMailDays * $oneDay) && ($time <= ($firstMailDays + 1) * $oneDay);
        $shouldSendSecondMail = ($time >= $secondMailDays * $oneDay) && ($time <= ($secondMailDays + 1) * $oneDay);

0
dm1
не в сети 3 года
На сайте с 07.12.2018
Участник
Тем 55
Сообщения 306
17
10:49

И оставить ли первую правку, добавление

'is_prolong' => 1

или убрать?

0
Вы не имеете права на публикацию сообщений в этой теме