NpjObject:: Init, устанавливаем $this->filter = "npjdev@npj" or npjdev (проверил, нигде не встречается)
в NpjObject:: Load надо уметь вставлять $this->filter
Установка фильтра
NpjObject:: _NpjAddressToUrl, когда получаем объект из кэша, надо уметь дописывать эту радость.
1.2. Распознавание и установка фильтра: когда?
Все посты «только в одно сообщество» должны всегда иметь адрес через фильтр этого сообщества
Все недомодерированные посты не должны иметь адреса через фильтр
При установке ссылки на посты из пространства другого журнала, их нужно ставить «через фильтр»
При установке ссылки на посты из «отфильтрованного» поста, их нужно ставить «через тот же фильтр»
Вопросы к обсуждению:
Как указать адрес «без фильтра» для поста «только в одно сообщество», чтобы он «прошёл» через нпж-адрес-в-урл-функцию и не дописался обязательный фильтр?
отказаться от «всегда иметь» не хочется, или хочется уметь это делать «опционально»
я за «опциональное» решение и не иметь мозг.
1.3. Распознавание и установка фильтра: зачем?
Посты, не принадлежащие сообществу, при попытке адресации «через фильтр», должны отрезаться. Или редиректиться, кстати? Наверное, редиректиться на адрес с корректным фильтром
Лента, пропущенная через фильтр, должна оставлять только посты в этом сообществе.
Модератор сообщества может «скринить» комментарии, скринятся они только для фильтра этого сообщества.
2. Как сделать?
Фильтр на поведение, который распознаётся в Init, записывается в $this->filter
Фильтр на ссылки, который зависит от пространства другого журнала, берётся из $this->rh->account->filter
Фильтр на ссылки, который зависит от того, что пост помещён только в один журнал?
можно решить через модификацию БД, куда складывать допустимые фильтры. Аналог уже есть, это поле crossposted. Можно на его механизм обновления и подсесть.
Корректность фильтра проверяется:
при распознавании адреса в $rh, чтобы не вести себя «странно»
надо ли проверять корректность распознанного «фильтра на поведение»?
Если мы подсядем на кросспостед, то для постов у нас всегда будет корректный фильтр
А вот для комментариев придётся смотреть «пост».
Хотя мы можем всегда пользоваться $rh->account->filter — ведь его мы проверили выше. Почему можем — чтобы ответить на вопрос, попробуем написать описание функции.
3. О чём речь?
Фильтр сообщества — это возможность для модераторов сообщества (РГ) управлять отображением некоторых элементов «чужих» сообщений в рамках своего сообщества. А именно, комментариев.
Модератор не может удалять комментарии к сообщениям, опубликованным в сообществе — потому что, в соответствие с концепцией личного пространства, эти сообщения (и комментарии тоже) принадлежат пространству автора, в которое модератор не имеет права вмешиваться.
Однако, в рамках своего сообщества модератор должен иметь возможность хотя бы «скрыть» нежелаемые комментарии из контекста дискуссии своего сообщества. Для этого и служит функция фильтр сообщества.
В чём заключается действие этой функции:
Все ссылки на сообщения, ведущие со страниц журнала некоторого сообщества, указываются «через фильтр сообщества».
Возможно активировать такой режим функционирования узла, когда сообщения, размещённые только в одном сообществе становятся доступными только через «фильтр сообщества».
Модератор может скрывать комментарии с помощью настроек «фильтра».
3.1. Важные ограничения
У этой схемы есть несколько ограничений, которые, как мне кажется, выглядят естественно и поэтому легко запоминаются.
3.1.1. Сообщение, не опубликованное в сообществе, не может быть показано «через фильтр» этого сообщества
Т.е. автор сообщения при публикации даёт модератору право на применение «фильтра» к своему сообщению. Соответственно, модераторы других сообществ (где сообщение не опубликовано) также не могут применять свои фильтры, пока автор не опубликует сообщение и в этих сообществах.
3.1.2. Вручную можно поставить ссылку на некорректный фильтр
Никто не сможет помешать вам исправить адресную строку браузера. Точно так же вы можете написать такой адрес и в теле вашего документа.
При попытке указать адрес сообщения через фильтр сообщества, где оно не опубликовано, происходит перенаправление на «корректный» адрес.
3.1.3. Лента одного сообщества, показанная через второе, содержит ссылки через фильтр второго
Фильтр применяется к сообщениям, и при автоматическом указании в ссылке определяется тем местом, через которое пользователь получает эту ссылку на сообщение.