Adaptive Hide BBcodes

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
Adaptive Hide BBcodes - как в этом моде добавить возможность, чтобы текст был виден только для пользователя с определённым ником?
http://www.phpbb.com/community/viewtopic.php?t=1501835

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
такой возможности у этого мода нет, только если допиливать.
но если нужно что бы было видно только одному конкретному пользователю, то можешь создать отдельную группу и добавить нужного пользователя в нее. ну и в тегах уже указывать номер этой группы.

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
Придется искать пилу. А в группу помещать не вариант :)

-- добавлено 09 май 2012, 21:27 --

В моде есть несколько bbcode таких как: [hide], [ghide]
У меня есть модифицированный, т.е. +2 кода: [thide], [phide]
Теперь проблема заключается в следующем: нужно объединить все под один bbcode [hide], т.е. чтобы было так:
[hide=x1,x2,x3,x4]{TEXT}[/hide]
x1,x2,x3,x4 - кол-во сообщений, айди группы, количество тем, количество спасибок.

Возможно такое сделать? Если да, то в какую сторону копать? Видел такое в ipb и булке.

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
возможно если переделать весь код мода.
но есть ли смысл? если нужно ограничение по 2м параметрам то вложи просто теги друг в друга, да и путаницы будет меньше с разными тегами.

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
У меня по 7 параметрам идет ограничение. А 7 тегов друг в друге это не мало, поэтому и хотел как то сделать получше.

А на вскидку какой кусок нужно переделать? Там в принципе сам мод маленький.
Вложения
Adaptive_Hide_BBcodes_1_0_2 (1).zip    61.1 КБ • 63 скачивания

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
переделывать в основном надо часть добавляемую в includes/bbcode.php
но и остальные файлы надо будет переделывать

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
А приватной версия нигде не встречалась? Чтобы хоть глянуть что переделать.

-- добавлено 09 май 2012, 22:44 --

Не возьмешься за переделку? за Для благодарностей =) Яндекс.Деньги 41001853456355 :kr:

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
посмотрим)

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
А посмотрим это когда?)

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
будет время попробую что получится, а там и обсудим

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
Буду надеяться что это будет скоро:)

-- добавлено 10 май 2012, 22:26 --

Сдвиги есть?:)

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
ну как бы я работаю днем, а вечером не всегда есть желание чем-то заниматься.
пока не смотрел

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
Я понимаю. На всякий случай спросил:)

-- добавлено 13 май 2012, 11:13 --

Нет ли каких нибудь изменения?:)

-- добавлено 17 май 2012, 18:14 --

Тишина?:)

Аватара пользователя
Distructor
Администратор
Сообщения: 1631
Зарегистрирован: 28 дек 2009
да. пока очень занят.

x00peR
Сообщения: 141
Зарегистрирован: 05 мар 2011
Наверное это надолго :)

Вот такие у меня вопросы:
1. Как сделать хайд под имя?
2. Как сделать хайд под репу? User Reputation Points 0.3.5
3. Как сделать хайд под количество приглашенных? phpBB Invite 2.0
4. Как сделать хайд под это viewtopic.php?t=899 "4)К выплате: =1-2-3+5 (поле должно отражаться в темах)" ?

includes/bbcode.php
Вот код под количество спасибок

Код: Выделить всё

if (substr_count($preg['search'][0], '[bhide\=') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
                     {
                        $sql = 'SELECT group_id
                           FROM ' . USER_GROUP_TABLE . '
                           WHERE user_id = ' . (int)$poster_id . '
                           AND user_pending = 0';
                        $result = $db->sql_query($sql);
                        $poster_groups = array();
                        while ($sql_row = $db->sql_fetchrow($result))
                        {
                           $poster_groups[] = $sql_row['group_id'];
                        }
                        $db->sql_freeresult($result);
                        $ignore_groups = explode(',', ADAPT_HIDE_IGNORE_LIMIT_GROUPS);
                        $ignore_limit = false;
                        foreach ($poster_groups as $poster_group)
                        {
                           if (in_array($poster_group, $ignore_groups))
                           {
                              $ignore_limit = true;
                              break;
                           }
                        }

                        $sql = 'SELECT poster_id, COUNT(*) AS user_receive_count
                           FROM ' . THANKS_TABLE . "
                           WHERE poster_id = " . (int) $user->data['user_id']. '
                           GROUP BY poster_id';
                        $result = $db->sql_query($sql);
                        $user_receive_count = (int) $db->sql_fetchfield('user_receive_count');
                        $db->sql_freeresult($result);

                        $hide_matches = array();
                        preg_match_all($preg['search'][0], $message, $hide_matches);
                        foreach ($hide_matches[1] as $key => $thanks)
                        {
                           if (!$ignore_limit)
                           {
                              $thanks = min($thanks, ADAPT_HIDE_LIMIT_POSTS, $user_receive_count);
                           }
                           $hide_cause = false;
                           if ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1)
                           {
                              if ($thanks == 0)
                              {
                                 $hide_cause = $user->lang('ADAPT_HIDE_GUEST');
                              }
                              else
                              {
                                 $hide_cause = sprintf($user->lang('ADAPT_HIDE_GUEST_THANKS'), $thanks);
                              }
                           }
                           elseif ($user_receive_count < $thanks)
                           {
                              $hide_cause = sprintf($user->lang('ADAPT_HIDE_THANKS'), $thanks);
                           }
                           if ($hide_cause)
                           {
                              $hide_submatches = array();
                              preg_match_all('/<!\-\- ia([0-9]+) \-\->(.*?)<!\-\- ia\1 \-\->/', $hide_matches[0][$key], $hide_submatches);
                              foreach ($hide_submatches[1] as $ia_index)
                              {
                                 $hide_ia_indexes[] = $ia_index;
                              }
                              $message = str_replace($hide_matches[0][$key], '[bhide=' . $thanks . ':' . $this->bbcode_uid . ']' . $hide_cause . '[/bhide:' . $this->bbcode_uid . ']', $message);
                           }
                        }
                     }


Вот код под количество тем:

Код: Выделить всё

if (substr_count($preg['search'][0], '[thide\=') && !$auth->acl_get('m_edit', $row['forum_id']) && $user->data['user_id'] != $poster_id)
                     {
                        $sql = 'SELECT group_id
                           FROM ' . USER_GROUP_TABLE . '
                           WHERE user_id = ' . (int)$poster_id . '
                           AND user_pending = 0';
                        $result = $db->sql_query($sql);
                        $poster_groups = array();
                        while ($sql_row = $db->sql_fetchrow($result))
                        {
                           $poster_groups[] = $sql_row['group_id'];
                        }
                        $db->sql_freeresult($result);
                        $ignore_groups = explode(',', ADAPT_HIDE_IGNORE_LIMIT_GROUPS);
                        $ignore_limit = false;
                        foreach ($poster_groups as $poster_group)
                        {
                           if (in_array($poster_group, $ignore_groups))
                           {
                              $ignore_limit = true;
                              break;
                           }
                        }

                        $sql = 'SELECT topic_poster, COUNT(*) AS user_topics
                           FROM ' . TOPICS_TABLE . "
                           WHERE topic_poster = " . (int) $user->data['user_id']. '
                           GROUP BY topic_poster';
                        $result = $db->sql_query($sql);
                        $user_topics = (int) $db->sql_fetchfield('user_topics');
                        $db->sql_freeresult($result);

                        $hide_matches = array();
                        preg_match_all($preg['search'][0], $message, $hide_matches);
                        foreach ($hide_matches[1] as $key => $topics)
                        {
                           if (!$ignore_limit)
                           {
                              $topics = min($topics, ADAPT_HIDE_LIMIT_POSTS, $user_topics);
                           }
                           $hide_cause = false;
                           if ($user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] == 1)
                           {
                              if ($topics == 0)
                              {
                                 $hide_cause = $user->lang('ADAPT_HIDE_GUEST');
                              }
                              else
                              {
                                 $hide_cause = sprintf($user->lang('ADAPT_HIDE_GUEST_TOPICS'), $topics);
                              }
                           }
                           elseif ($user_topics < $topics)
                           {
                              $hide_cause = sprintf($user->lang('ADAPT_HIDE_TOPICS'), $topics);
                           }
                           if ($hide_cause)
                           {
                              $hide_submatches = array();
                              preg_match_all('/<!\-\- ia([0-9]+) \-\->(.*?)<!\-\- ia\1 \-\->/', $hide_matches[0][$key], $hide_submatches);
                              foreach ($hide_submatches[1] as $ia_index)
                              {
                                 $hide_ia_indexes[] = $ia_index;
                              }
                              $message = str_replace($hide_matches[0][$key], '[thide=' . $topics . ':' . $this->bbcode_uid . ']' . $hide_cause . '[/thide:' . $this->bbcode_uid . ']', $message);
                           }
                        }
                     }

Distructor, поможешь доделать? А то вообще ничего не понимаю в этом :(
Остальные файлы которые нужно поправить - я поправлю, там легко. А вот с includes/bbcode.php все гораздо сложнее :(


Вернуться в «phpBB3»