replicant Опубликовано 12 Сентября 2007 Жалоба Поделиться Опубликовано 12 Сентября 2007 Допустим у нас есть дневник с правами на чтение "Всем" или "Всем кроме гостей". Владелец дневника заполняет список врагов (хотя до сих пор не понимаю зачем это делать при таких-то правах доступа ), но все же ... он(она) берет и делает ЭТО. В итоге "враг" зайти в дневник и прочитать посты и камменты не может, но есть один способ обойти это... воспользоваться календарем: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'])).')'; Решение может быть и другим. Если у кого-то есть на этот счет свои решения, то прошу высказываться. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 12 Сентября 2007 Жалоба Поделиться Опубликовано 12 Сентября 2007 мое решение было изложено тутhttp://www.ibresource.ru/forums/index.php?...st&p=274983 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 13 Сентября 2007 Автор Жалоба Поделиться Опубликовано 13 Сентября 2007 мое решение было изложено тутhttp://www.ibresource.ru/forums/index.php?...st&p=274983 Хех, а я-то и не заметил. Ну вобщем в итоге есть два решения убрать посты и комментарии в календаре и поиске от врагов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 14 Сентября 2007 Жалоба Поделиться Опубликовано 14 Сентября 2007 replicantА ошибок точно ни где не возникает если убираешь AND из запроса ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 14 Сентября 2007 Автор Жалоба Поделиться Опубликовано 14 Сентября 2007 replicantА ошибок точно ни где не возникает если убираешь AND из запроса ? У меня работает именно так. Перепроверяли все возможные комбинации прав доступа и врагов/друзей как на тестовом так и на рабочем сервере. Там не только AND убирается, там же еще и .= меняется на = По-моему так более логично. ИМХО сначала мы чуть выше проверяем на ufriends 17,19 access, там же подхватываем 18, но с бОльшим числом условий делаем else, а уже затем все еще раз проверяем на enemy. urisoft, а еще SfinkS на основе твоего RSS мода для форума сделал френд-ленты для журналов. Чуть позже выложу с инструкцией по применению, пока можно посмотреть у меня на сервере. В планах сделать rss для каждого блога в отдельности. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 14 Сентября 2007 Жалоба Поделиться Опубликовано 14 Сентября 2007 replicant, что-то я не понимаю, как в твоем варианте проводится проверка на доступ в дневники "только для друзей"... Ведь получается, если меня некто внес во враги, он тем самым мне открыл доступ во все дневники, где я не враг, т.к. заменив ".=" на "=", ты откинул проверку на "друзей". Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 14 Сентября 2007 Автор Жалоба Поделиться Опубликовано 14 Сентября 2007 Может быть мы не о том AND и не о той точке говорим... На всякий случай еще раз перепроверю, но проверяли несколько человек одновременно в различных комбинациях. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 14 Сентября 2007 Жалоба Поделиться Опубликовано 14 Сентября 2007 replicantА ошибок точно ни где не возникает если убираешь AND из запроса ? У меня работает именно так. Перепроверяли все возможные комбинации прав доступа и врагов/друзей как на тестовом так и на рабочем сервере. Там не только AND убирается, там же еще и .= меняется на = По-моему так более логично. ИМХО сначала мы чуть выше проверяем на ufriends 17,19 access, там же подхватываем 18, но с бОльшим числом условий делаем else, а уже затем все еще раз проверяем на enemy.можно просто сделать echo какого-нибудь запроса, который использует обсуждаемую функцию (это get_access_query(), так?) для пользователя, который у кого-нибудь во врагах, и проверить. Я свой запрос не буду приводить, т.к. у меня есть два дополнительных типа доступа, помимо стандартных, и они будут здорово все запутывать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 14 Сентября 2007 Жалоба Поделиться Опубликовано 14 Сентября 2007 Там не только AND убирается, там же еще и .= меняется на =Вроде там не просто так этот AND и точка с равенством.... Хотя может я и перемудрил чего... Вполне возможно. а еще SfinkS на основе твоего RSS мода для форума сделал френд-ленты для журналов. Чуть позже выложу с инструкцией по применению, пока можно посмотреть у меня на сервере. В планах сделать rss для каждого блога в отдельностиА вот это очень нужная штука. Думаю вам многие спасибо за нее скажут. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 12 Октября 2007 Жалоба Поделиться Опубликовано 12 Октября 2007 (изменено) Подскажите, пожалуйста, что у меня за проблема?Как админ нажимаю на календарь и вижу все посты, а с других ников и групп это невозможно, выдаёт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'])).")))"; Вот с этим не работает ))), убираю одну скобку и работает.Извиняюсь за беспокойство. Изменено 12 Октября 2007 пользователем Lera Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 13 Октября 2007 Жалоба Поделиться Опубликовано 13 Октября 2007 Lera, лишняя скобка вылазит где-то в другом месте, не в приведенной тобой строке. Потому что в процитированной тобой инструкции добавляется пара скобок. Добавляется в правильно составленное (т.е. с правильными скобками) выражение. Если в правильное выражение добавить только одну, левую, скобку, оно обязательно станет неправильным. Так что не путай людей Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 13 Октября 2007 Жалоба Поделиться Опубликовано 13 Октября 2007 Хорошо, l-k, спасибо. Я сама путаюсь, прошу прощения. Строчку эту заменила на первую, работает. Если ставлю вторую, твою строчку, не работает, но я думаю это потому, что я ещё что-то ставила от врагов, видимо вместе они и не контачат. Потому что стоит добавить эту скобочку, всё перестаёт работать, убираю её и опять работает. Никого не захотела запутать, прошу прощения. Я налепила всего себе, что нашла тут от врагов, вот видимо что-то и напуталось. Может быть при такой каше, которую я наворотила, эта скобочка с чем-то не контачит, а каша у меня большая (((( И это только у меня, когда ставила изначально этот хак, всё работало отлично, с тремя скобочками, это потом перестало, наслоение модов видимо, так что не слушайте меня. Но враги не видят календарь, это радует Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.