Не пойму, как этот "пользователь" пробрался

Был у меня написан код, что-то типа:
[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]

а в другом месте:
[[!+modx.user.id:ismember=`Mygroup_2`:then=`3`:else=`4`]]

Раньше все работало прекрасно, потом обновился до версии 2.5.0, а недавно до 2.5.2 И заметил, что если пользователь не авторизован, то в варианте кода №2 выводится 4, а в варианте кода №1 выводится 1. Хотя, неавторизованый пользователь не должен принадлежать ни к Mygroup_1, ни к Mygroup_2. Как он «пробрался» в группу 1, и как его оттуда убрать?
Роман
14 декабря 2016, 21:18
modx.pro
1
2 414
0

Комментарии: 5

Наумов Алексей
15 декабря 2016, 10:19
0
В админке ты точно не авторизован сам в этот момент?
    Роман
    15 декабря 2016, 18:43
    0
    в том-то и дело, что нет. Про Админку я в курсе. Пробовал в разных браузерах, везде всё одинаково. Я подумал, может быть «ismember» неправильно стало работать. Но во второй группе всё нормально работает, а в первой — нет. Пробовал выводить id пользователя, так он пишет, что «0». Это неавторизованный пользователь, но он же не принадлежит группе №1, почему на него ismember срабатывает, никак не пойму.

    P.S. Я в другом топике вопрос про ошибку задавал (https://modx.pro/help/10665/), может быть это всё взаимосвязано как-то?!
    Andrei D.
    15 декабря 2016, 19:04
    1
    0
    Немного переделал сниппет Bob Ray'а под себя, попробуйте:

    <?php
    /* IsMember Snippet */
    $groups = $modx->getOption('groups', $scriptProperties);
    $groups_array = explode(',', $groups);
    
    if ($modx->user->isMember($groups_array)) {
        if (preg_match('/^@INLINE/',$yesChunk)) {
            return substr($yesChunk, 7);
        } else {
            return $modx->getChunk($yesChunk);
        }
    } else {
        if (preg_match('/^@INLINE/',$noChunk)) {
            return substr($noChunk, 7);
        } else {
            return $modx->getChunk($noChunk);
        }
    }
    Вызывать можно inline или чанками

    [[!IsMember? 
    &groups=`Users`
    &yesChunk=`@INLINE <h2>Вы в группе А</h2>`
    &noChunk=`@INLINE <div class="button>Вступить в группу А</div>`
    ]]
    [[!IsMember? 
    &groups=`Group_B,Group_C`
    &yesChunk=`visible_chunk_for_groups_B_C`
    ]]
      Роман
      15 декабря 2016, 22:44
      0
      а с сессиями в PHP на сервере не может быть связано никак?
        Роман
        16 декабря 2016, 08:13
        0
        поставил костыль:
        [[!+modx.user.id:isloggedin=`1`:then=`[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]
        `:else=`2`]]

        но это как-то ненормально. И ошибка «flush_session_err» как-то напрягает немного.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          5