Adaptive Hide BBcodes

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

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

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

-- добавлено 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
Администратор
возможно если переделать весь код мода.
но есть ли смысл? если нужно ограничение по 2м параметрам то вложи просто теги друг в друга, да и путаницы будет меньше с разными тегами.
Вернуться к началу

x00peR
У меня по 7 параметрам идет ограничение. А 7 тегов друг в друге это не мало, поэтому и хотел как то сделать получше.

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

Distructor
Администратор
переделывать в основном надо часть добавляемую в includes/bbcode.php
но и остальные файлы надо будет переделывать
Вернуться к началу

x00peR
А приватной версия нигде не встречалась? Чтобы хоть глянуть что переделать.

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

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

Distructor
Администратор
посмотрим)
Вернуться к началу

x00peR
А посмотрим это когда?)
Вернуться к началу

Distructor
Администратор
будет время попробую что получится, а там и обсудим
Вернуться к началу

x00peR
Буду надеяться что это будет скоро:)

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

Сдвиги есть?:)
Вернуться к началу

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

x00peR
Я понимаю. На всякий случай спросил:)

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

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

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

Тишина?:)
Вернуться к началу

Distructor
Администратор
да. пока очень занят.
Вернуться к началу

x00peR
Наверное это надолго :)

Вот такие у меня вопросы:
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 все гораздо сложнее :(
Вернуться к началу