Домой Каталог: Дополнения WP-Recall Groups Recall Как убрать запрос на добавление в закрытую группу от пользователя, которого уже нет на сайте
3ответ(ов) в теме
Alena-ps
не в сети 3 года
На сайте с 12.11.2020
Участник
Тем 60
Сообщения 140
1
23:19
Версия WP-Recall: 16.24.35
Версия дополнения: 3.0.0

Пользователь подает заявку в закрытую группу. Я как админ не успеваю одобрить заявку.
Затем пользователь удаляет свой аккаунт.
Я как админ захожу в эту группу, вижу входящий запрос:

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

нажимаю туда и вижу, что запросов нет:

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

потому что пользователь удалил свою анкету с сайта.
Как убрать этот запрос на несуществующего пользователя?

0
Preci
не в сети 1 день
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
2
23:48

После удаления юзера дополнение не очищает заявки, которые он оставил.

function fix_group_membership_requests() {

  $groups_requests = RQ::tbl(new Rcl_Groups_Options_Query())
  ->select(['option_value', 'group_id'])
  ->where([
	  'option_key' => 'requests_group_access',
  ])->get_results();

  if (!$groups_requests) {
	return;
  }

  foreach ($groups_requests as $_requests) {

	$requests_users = $_requests->option_value;
	$group_id = $_requests->group_id;

	$need_update = false;
	
	/**
	 * Если в группу нет заявок - ничего не делаем
	 */

	if (!$requests_users) {
	  continue;
	}
	
	/**
	 * Если есть заявки - ищем "мертвых" пользователей
	 */

	foreach ($requests_users as $key => $u_id) {
	  $user_exists = get_userdata($u_id);

	  if (!$user_exists) {
		$need_update = true;
		unset($requests_users[$key]);
		rcl_add_log('fix_group_membership_requests', array(
			'removed_user' => $u_id,
			'from_group' => $group_id
		));
	  }
	}
	
	/**
	 * Если мертвых пользователей не найдено - ничего не делаем
	 */
	if(!$need_update) {
	  continue;
	}
	
	/**
	 * Если среди заявок остались только мертвые пользователи - удалим опцию
	 */
	
	if(!$requests_users) {
	  rcl_delete_group_option( $group_id, 'requests_group_access' );
	}
	
	/**
	 * Обновим список заявок, оставив только существующих пользователей
	 */
	if($requests_users) {
	  rcl_update_group_option($group_id, 'requests_group_access', $requests_users);
	}
	
  }


}

add_action('init', 'fix_group_membership_requests');

Можете этот код добавить в файл функций темы и открыть любую страницу на сайте, потом можно удалить код, что бы он каждый раз не искал в заявках мертвых юзеров

1
Alena-ps
не в сети 3 года
На сайте с 12.11.2020
Участник
Тем 60
Сообщения 140
3
00:46

Спасибо! Сделала. Это помогло!

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