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

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


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 Но враги не видят календарь, это радует ;)
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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