mnemonik50666 Опубликовано 9 Ноября 2004 Жалоба Поделиться Опубликовано 9 Ноября 2004 Как в 1.3.1 русской модиф-ой скрывать выложенные ссылки от незарегистрированных юзеров? И сразу ещё вопросик Существует ли транслитор сообщений для 1.3.1? Спасибки Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 14 Ноября 2009 Жалоба Поделиться Опубликовано 14 Ноября 2009 sources\lib\post_parser.phpНайти: function regex_build_url($url=array()) {Ниже добавить global $ibforums;Теперь эта функция сможет пользоваться правами доступа.И расставляйте по своему усмотрению права.Напримерif($ibforums->member['is_mod'])означает "только модераторам". То же с $ibforums->member['g_is_supmod'] - для супермодераторов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sergey Olshin Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 добавить global $ibforums;И расставляйте по своему усмотрению права. Расставлять в том же файле или в другом? Если в том же - эффекта не даёт. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 Расставлять в том же файле или в другом? Если в том же - эффекта не даёт.Найти:return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];добавить выше if(!$ibforums->member['g_is_supmod'] and !$ibforums->member['g_is_supmod'] ) return $url['st'] . "[URL=".$url['html']."]".$show."[/URL]" . $url['end']; else Модератор впоследствии может опубликовать эти ссылки просто нажав редактирование поста и тут же сохранение, ничего не меняя. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sergey Olshin Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 Спасибо. А можно ли как-то зафильтровать тэги? Отображается вот так: [URL=http://ibresource.ru/]http://ibresource.ru/[/URL] Скажите, пожалуйста, а как быть с уже имеющимися на форуме ссылками? Хочу в один миг превратить их в "некликабельные". И ещё хотелось бы сделать исключение для ссылок своего домена, т.е. чтобы они были кликабельны для гостей, пользователей, модераторов и т.д.А остальным - фиг. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 Раз уж взялись развивать однушку, давайте потихоньку учиться работать с ней самостоятельно.Попробую описать "человеческим" языком, тем более, что я сам не программист, и мне очень не хватало "человеческих" описаний.Если требуется по условию изменить выдачу линков - тогда логично модифицировать функцию, обрабатывающую линки.Если Вы хотите, чтобы линки обрабатывались только у модераторов и админов, логичней добавлять условие не в тело функции, а в вызов этой функции: тогда у модеров и админов линки преобразуются в кликабельные, а у остальных останутся непреобразованными, как ввели. Запускаем поиск по файлу подстроки "regex_build_url", у меня нашлось 7 строк. Вот пример функции с 3 строками:function parse_poll_tags($txt) { // if you want to parse more tags for polls, simply cut n' paste from the "convert" routine // anywhere here. $txt = preg_replace( "#\[img\](.+?)\[/img\]#ie" , "\$this->regex_check_image('\\1')", $txt ); $txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt ); $txt = preg_replace( "#\[url\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt ); $txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt ); return $txt; } Чтобы функция имела доступ к массиву информации, нужно это указать оператором global.Информация о пользователе содержится в массиве $ibforums->member - его и нужно вызвать этим оператором. Тогда элементы массива можно будет использовать в условиях. Элемент массива $ibforums->member['g_is_supmod'] заполнен у супермодераторов, у остальных он не существует.То же для модераторов: $ibforums->member['is_mod']. Нам требуется разрешить линки модерам и админам? Значит конструкция: если ( модератор ИЛИ админ )сделать линк;На языке пхп это if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = ... ); Вот что должно получиться:function parse_poll_tags($txt) { global $ibforums; // if you want to parse more tags for polls, simply cut n' paste from the "convert" routine // anywhere here. $txt = preg_replace( "#\[img\](.+?)\[/img\]#ie" , "\$this->regex_check_image('\\1')", $txt ); if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt ); if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt ); if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt ); return $txt; }Наверное понятно, что функцию regex_build_url в этом случае трогать не надо. Чтобы внутренние ссылки принимались у всех?Внутренние - это значит, в строке есть URL вашего форума. Он содержится в глобальной переменной $ibforums->vars['board_url']Расширяем условие: если ( модератор ИЛИ админ ИЛИ внутренний_линк )сделать линк;if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] or stristr($url['html'], $ibforums->vars['board_url']) )$txt = ... ); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sergey Olshin Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 FatCat, всё сделал. Но почему-то при захождении в любую тему форума - выдаётся чистый белый лист. Скажите, пожалуйста, в чём может быть причина? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 15 Ноября 2009 Жалоба Поделиться Опубликовано 15 Ноября 2009 Проверяй синтаксис. Скорее всего где-то какой-то символ неправильно вбит, или скобки не закрыты, или кавычки не там или не такие... Я же писал с руки, не устанавливая у себя такой код; мог где-нибудь очепятаться...Вообще установки модификаций предпочитаю делать под денвером на локалке - денвер покажет ошибки даже если показ отключен, как в движке форума. Хоть подскажет в какой строке искать... И уже когда все работает, залить измененный файл на хост не выключая форума. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sergey Olshin Опубликовано 18 Ноября 2009 Жалоба Поделиться Опубликовано 18 Ноября 2009 FatCat, пока не стал проверять, но сделал то, что Вы рекомендовали ранее пользователю Haktar. После 2 SQL запросов все ссылки перепарсились. Правда, сначала не получилось, сломалась таблица ibf_posts, от нагрузки наверно. Починил.Перезапустил Apache на сервере, затем выключил форум на 15 минут, снова сделал первый запрос, потом второй, и всё стало отлично. Гости теперь не видят ссылок. Но есть одна загвоздка. Гости форума сейчас видят это: http://medicinform.ru/guest.jpg А хотелось бы, что б они увидели вот это: http://medicinform.ru/guest2.jpg Т.е. чтобы фраза была выделена жирным красным шрифтом, как для старых ссылок, так и для последующих. И после неё кликабельная кнопочка "Регистрация". Подскажите, пожалуйста, как это сделать? И ещё хотелось бы "обезвредить" ссылки в подписях на форуме (чтобы гости, в том числе и поисковики, не видели их). Скажите, пожалуйста, это возможно? Или хотя бы просто заключить их в тэг <noindex>А то что-то индекс цитирования в Яндексе сильно упал... Хоть и вычистил горы спама со ссылками... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 18 Ноября 2009 Жалоба Поделиться Опубликовано 18 Ноября 2009 После 2 SQL запросов все ссылки перепарсились. Правда, сначала не получилось, сломалась таблица ibf_posts, от нагрузки наверно."Медикинформ"? Дык там база небось больше гига, и небось фултекстовый индекс на поле post... Не удивительно... Я бы такую базу не рискнул целиком трогать, только по частям... чтобы фраза была выделена жирным красным шрифтом, как для старых ссылок, так и для последующих. И после неё кликабельная кнопочка "Регистрация".Покрасить-то не проблема, пропишите в стилях желаемый цвет.А вот с кнопочкой мега-проблема, стандарт ХТМЛ не допускает вложенности тегов формы. Если добавите такую кнопочку - слетят какие-то модераторские функции; я раз пободался с этой проблемой и забросил. И ещё хотелось бы "обезвредить" ссылки в подписях на форуме (чтобы гости, в том числе и поисковики, не видели их). Скажите, пожалуйста, это возможно? Запретить... В конце концов размер поля в таблице мемберов сделайте длиной в 1 символ, и пусть попробуют запостить линк длиной в 1 символ. А то что-то индекс цитирования в Яндексе сильно упал... Хоть и вычистил горы спама со ссылками...Это не ссылочное утекает, это яндекс алгоритмы меняет.А нафига, собственно, тИЦ нужен? В сапе вроде не торгуете... А на выдачу он не влияет ни разу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sergey Olshin Опубликовано 19 Ноября 2009 Жалоба Поделиться Опубликовано 19 Ноября 2009 "Медикинформ"? Дык там база небось больше гига, и небось фултекстовый индекс на поле post... Не удивительно... Я бы такую базу не рискнул целиком трогать, только по частям... Со спамом вес был около 500 мб... А когда вычистил, значение стало варьироваться до 300 мб... До гигабайта ещё далеко, наверно... Покрасить-то не проблема, пропишите в стилях желаемый цвет. А это как? В каком файле прописать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 20 Ноября 2009 Жалоба Поделиться Опубликовано 20 Ноября 2009 А это как? В каком файле прописать? Ссылки попадают под тег <span class='hide_post'> Значит, в админке в стили добавить описание класса hide_post. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
mnemonik50666
Как в 1.3.1 русской модиф-ой скрывать выложенные ссылки от незарегистрированных юзеров?
И сразу ещё вопросик
Существует ли транслитор сообщений для 1.3.1?
Спасибки
Ссылка на комментарий
Поделиться на других сайтах
36 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.