Перейти к контенту

Закрыть просмотр постов и комментариев в календаре от врагов


replicant

Рекомендуемые сообщения

Допустим у нас есть дневник с правами на чтение "Всем" или "Всем кроме гостей". Владелец дневника заполняет список врагов (хотя до сих пор не понимаю зачем это делать при таких-то правах доступа :D ), но все же ... он(она) берет и делает ЭТО.

 

В итоге "враг" зайти в дневник и прочитать посты и камменты не может, но есть один способ обойти это... воспользоваться календарем:

journal.php?list=allpost или journal.php?list=allcomm за любую дату.

 

В итоге посты и комментарии становятся доступными.

 

Чтобы этого избежать необходимо сделать следующее: в файле journal.php в функции Get query for journal access заменить эту строку

$q_extra .= '  AND m.id NOT IN ('.(implode(", ",$this->_cache['enemy'])).')';

на эту

$q_extra = ' m.id NOT IN ('.(implode(", ",$this->_cache['enemy'])).')';

 

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

Ссылка на комментарий
Поделиться на других сайтах

мое решение было изложено тут

http://www.ibresource.ru/forums/index.php?...st&p=274983

 

Хех, а я-то и не заметил. Ну вобщем в итоге есть два решения убрать посты и комментарии в календаре и поиске от врагов.

Ссылка на комментарий
Поделиться на других сайтах

replicant

А ошибок точно ни где не возникает если убираешь AND из запроса ?

 

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

 

Там не только AND убирается, там же еще и .= меняется на =

 

По-моему так более логично. ИМХО сначала мы чуть выше проверяем на ufriends 17,19 access, там же подхватываем 18, но с бОльшим числом условий делаем else, а уже затем все еще раз проверяем на enemy.

 

urisoft, а еще SfinkS на основе твоего RSS мода для форума сделал френд-ленты для журналов. Чуть позже выложу с инструкцией по применению, пока можно посмотреть у меня на сервере. В планах сделать rss для каждого блога в отдельности.

Ссылка на комментарий
Поделиться на других сайтах

replicant, что-то я не понимаю, как в твоем варианте проводится проверка на доступ в дневники "только для друзей"... Ведь получается, если меня некто внес во враги, он тем самым мне открыл доступ во все дневники, где я не враг, т.к. заменив ".=" на "=", ты откинул проверку на "друзей".
Ссылка на комментарий
Поделиться на других сайтах

Может быть мы не о том AND и не о той точке говорим... :D На всякий случай еще раз перепроверю, но проверяли несколько человек одновременно в различных комбинациях.
Ссылка на комментарий
Поделиться на других сайтах

replicant

А ошибок точно ни где не возникает если убираешь AND из запроса ?

 

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

 

Там не только AND убирается, там же еще и .= меняется на =

 

По-моему так более логично. ИМХО сначала мы чуть выше проверяем на ufriends 17,19 access, там же подхватываем 18, но с бОльшим числом условий делаем else, а уже затем все еще раз проверяем на enemy.

можно просто сделать echo какого-нибудь запроса, который использует обсуждаемую функцию (это get_access_query(), так?) для пользователя, который у кого-нибудь во врагах, и проверить. Я свой запрос не буду приводить, т.к. у меня есть два дополнительных типа доступа, помимо стандартных, и они будут здорово все запутывать.

Ссылка на комментарий
Поделиться на других сайтах

Там не только AND убирается, там же еще и .= меняется на =

Вроде там не просто так этот AND и точка с равенством.... Хотя может я и перемудрил чего... Вполне возможно. :D

 

а еще SfinkS на основе твоего RSS мода для форума сделал френд-ленты для журналов. Чуть позже выложу с инструкцией по применению, пока можно посмотреть у меня на сервере. В планах сделать rss для каждого блога в отдельности

А вот это очень нужная штука. Думаю вам многие спасибо за нее скажут.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 недели спустя...

Подскажите, пожалуйста, что у меня за проблема?

Как админ нажимаю на календарь и вижу все посты, а с других ников и групп это невозможно, выдаёт

mySQL query error: SELECT COUNT(p.post_date) as posts
						FROM ibf_jposts p
						LEFT JOIN ibf_jmembers m ON (m.id=p.journal_id)
						WHERE p.post_date > '1191355200'
						AND p.post_date < '1191441599' AND (p.closed=0 OR (p.closed=1 AND p.journal_id IN (428))) AND (m.j_access IN ('17', '19') OR (m.j_access = '18' AND m.id IN (428))))

SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5
SQL error code: 
Date: 12.10.2007, 16:13

Почему я вижу посты через календарь, а другие нет? Никто не внесён во враги, выдаёт такую ошибку.

 

Спасибо.

 

Кажется разобралась, вот в этом проблема:

2) в journal/journal.php в ф-ции get_access_query вот это

Код

$q_extra = "m.j_access IN ('17', '19') OR (m.j_access = '18' AND m.id IN (".(implode(", ",$this->_cache['ufriends']))."))";

 

заменить на это

Код

$q_extra = "(m.j_access IN ('17', '19') OR (m.j_access = '18' AND m.id IN (".(implode(", ",$this->_cache['ufriends'])).")))";

 

Вот с этим не работает ))), убираю одну скобку и работает.

Извиняюсь за беспокойство.

Изменено пользователем Lera
Ссылка на комментарий
Поделиться на других сайтах

Lera, лишняя скобка вылазит где-то в другом месте, не в приведенной тобой строке.

 

Потому что в процитированной тобой инструкции добавляется пара скобок. Добавляется в правильно составленное (т.е. с правильными скобками) выражение. Если в правильное выражение добавить только одну, левую, скобку, оно обязательно станет неправильным. Так что не путай людей :D

Ссылка на комментарий
Поделиться на других сайтах

Хорошо, l-k, спасибо. Я сама путаюсь, прошу прощения. Строчку эту заменила на первую, работает. Если ставлю вторую, твою строчку, не работает, но я думаю это потому, что я ещё что-то ставила от врагов, видимо вместе они и не контачат. Потому что стоит добавить эту скобочку, всё перестаёт работать, убираю её и опять работает. Никого не захотела запутать, прошу прощения. Я налепила всего себе, что нашла тут от врагов, вот видимо что-то и напуталось. Может быть при такой каше, которую я наворотила, эта скобочка с чем-то не контачит, а каша у меня большая (((( И это только у меня, когда ставила изначально этот хак, всё работало отлично, с тремя скобочками, это потом перестало, наслоение модов видимо, так что не слушайте меня. :D Но враги не видят календарь, это радует ;)
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.