Перейти к содержимому


Фото
- - - - -

Всех пользователей приравнивать к группе "Гости"


  • Чтобы отвечать, сперва войдите на форум
8 ответов в теме

#1 Kami

Kami
  • Пользователь
  • 443 сообщений
  • Откуда:Россия

Опубликовано 08.07.2020 - 12:39

Возможно ли сделать так, чтоб любой посетитель без регистрации, автоматически был в группе "Гости" созданной в разделе группы? 



#2 Kami

Kami
  • Пользователь
  • 443 сообщений
  • Откуда:Россия

Опубликовано 08.07.2020 - 13:05

Ну или вариант такой , сейчас стоит модуль "видимость товаров в зависимости от группы"

Соответственно если у товара  visible_to_all = 1 , то он виден всем ,  как обычным пользователям так и группам, 
а нужно собственно чтоб когда visible_to_all=1 , то виден был  только тем пользователем которые не относятся ни к какой группе,

visible_to_all=1 ставится через админ панель чек боксом. 

 

Не могу победить запрос чтоб исключить показ группам и оставить только юзерам которые вошли без регистрации или не относятся ни к одной группе

        if (!$_SESSION['admin'] && $_SESSION['user_group_id'] && !empty($_SESSION['group_visible_ids']) && empty($groups_ids_visible)) {
            $groups_ids_visible = explode(',',$_SESSION['group_visible_ids']);
        }
        $select_groups = '';
        foreach($groups_ids_visible as $gid) {
            $select_groups .= "p.group_visible_".intval($gid).", ";
        }
        $group_visible_filter = '';
        if (!$_SESSION['admin']) {
            $group_visible_filter = 'AND (p.visible_to_all=1';
            if ($_SESSION['user_group_id'] && in_array((int)$_SESSION['user_group_id'], $groups_ids_visible)) {
                $group_visible_filter .= $this->db->placehold(' OR p.group_visible_?=1', intval($_SESSION['user_group_id']));
            }
            $group_visible_filter .= ') ';
        }


#3 shooroop

shooroop
  • Фрилансер
  • 1 125 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 08.07.2020 - 13:37

во view есть штатная проверка еще чуточку надо модифицировать

 

// Пользователь, если залогинен



#4 Kami

Kami
  • Пользователь
  • 443 сообщений
  • Откуда:Россия

Опубликовано 08.07.2020 - 13:44

во view есть штатная проверка еще чуточку надо модифицировать

 

// Пользователь, если залогинен

 

Ну если брать данный модуль видимость определенной группе то тут в View.php

 

            $groups_discount = $this->users->get_groups(array('for_visible' => 1));
            $groups_ids = array();
            foreach($groups_discount as $group) {
                $groups_ids[] = $group->id;
            }
            $_SESSION['group_visible_ids'] = implode(',', $groups_ids);
            
            if ($this->user) {
                $_SESSION['user_group_id'] = $this->user->group_id;
            } else {
                unset($_SESSION['user_group_id']);
            }

Получается проверку лучше сделать ниже? если пользователь залогинен то проверять группу и по группе проверять стоит ли галочка у товара? я все таки думал это нужно на стадии запроса sql  делать? или я не прав?

 

			// Пользователь, если залогинен
			if(isset($_SESSION['user_id']))
			{
				$u = $this->users->get_user(intval($_SESSION['user_id']));
				if($u && $u->enabled)
				{
					$this->user = $u;
					$this->group = $this->users->get_group($this->user->group_id);
				
				}
			}

Изменено: Kami, 08.07.2020 - 13:45


#5 shooroop

shooroop
  • Фрилансер
  • 1 125 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 08.07.2020 - 13:49

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



#6 Kami

Kami
  • Пользователь
  • 443 сообщений
  • Откуда:Россия

Опубликовано 08.07.2020 - 13:56

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

 

так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе. 

Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?

Как правильней с вашей точки зрения сделать?



#7 shooroop

shooroop
  • Фрилансер
  • 1 125 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 08.07.2020 - 13:59

так как есть поле в таблице s_products visible_to_all, при котором отображается все пользователям и группам, то думал в запросе дописать чтоб данное значение visible_to_all=1, показывало всем, за исключением к принадлежности в группе
Только вот с mysql засада присходит, выдает все равно всем группам, не натолкнете на мысль?
Как правильней с вашей точки зрения сделать?

чет тут не стыковочка у вас

если пользователь зарегестрирован то так

if($u && $u->visible_to_all)

 

но в заголовок темы другой... если если пользователь не зарегистрирован то просто убеждаетесь что это гость и присваевате ему фильтр visible_to_all создав этот фильтр предварительно


Изменено: shooroop, 08.07.2020 - 14:07


#8 Kami

Kami
  • Пользователь
  • 443 сообщений
  • Откуда:Россия

Опубликовано 08.07.2020 - 14:19

чет тут не стыковочка у вас

если пользователь зарегестрирован то так

if($u && $u->visible_to_all)

 

Может я не правильно выразился

 

Сейчас так,

у s_products есть поле visible_to_all - видимость товара для всех пользователей, гостей так и обычных зарегистрированных (включая все группы) и и динамически создаются поля group_visible_2 , где 2 это id группы которая участвует в видимости. Сколько групп, столько и полей group_visible_(id_group)

 

Соответственно сейчас хочу сделать следующее, чтоб установка галочки visible_to_all  , показывала товар только "гостям" сайта и пользователям без группы.

 

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

 

Пробовал if($u && $u->visible_to_all), но тут только отсекаем юзеров которые залогинились, а тут нужно "гостей" и пользователей без группы.

 

То есть я выбираю у каждого товара, если стоит галочка visible_to_all - показываем гостям и пользователям которые не состоят ни в какой группе , если стоит галочка group_visible_2 то показываю только оптовикам ( созданная группа с id 2), а если стоят обе галочки, соответственно и тем и тем.

 

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



#9 shooroop

shooroop
  • Фрилансер
  • 1 125 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 08.07.2020 - 15:24

подсказка когда вы ставите условие if вы еще можете использовать else ....






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых