Default Green Orange
Gemini_13's Blog
Блокнот полезных вещей
Home
    • Карта сайта
    • Обо мне
RSS

Отключение счетчика сообщений в разделе v.2

Мои моды к TorrentPier II, Скрипты Add comments

—————————————————
Название: Отключение счетчика сообщений в разделе v.2
Автор: Xore <xore@azuriah.com> (Robert Hetzler)
Адаптировал под R775: Demetri (Dmitriy Y. Mayer)
Адаптировал под TPII: Gemini_13 <gemini_13@torba.su>
Описание: Мод добавляет возможность отключать счетчик сообщений в разделе, в результате чего сообщения и темы созданные в этом разделе не засчитаются пользователям в статистику.
Сложность установки: Легкая
Время установки: ~ 10 минут
Адаптирован под версию TPII: R550
Файлы к редактированию:
— admin/admin_forums.php
— includes/functions_admin.php
— includes/functions_post.php
— language/lang_russian/lang_admin.php
— templates/admin/admin_forums.tpl
Изменения v.2:
— исправлен баг изменения «флага» у постов при переносе темы в другой раздел
— исправлен баг изменения «флага» у постов при включении/отключении счетчика в разделе через админку
Addon:
— Вычисление отключенных сообщений с общей статистики (Addon)
—————————————————

Копирование и выкладывание модификаций на сторонних ресурсах без указания ссылки запрещено.

# ---- [ SQL ] -------------------

ALTER TABLE bb_forums ADD forum_postcount TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE bb_posts ADD posts_count TINYINT(1) DEFAULT '1' NOT NULL;

# ---- [ Открыть ] -------------------

admin/admin_forums.php

# ---- [ Найти ] -------------------

				'S_STATUS_LIST' => $statuslist,

# ---- [ Вставить после ] -------------------

				'S_FORUM_POSTCOUNT' => ( isset($row) && isset($row['forum_postcount']) && ($row['forum_postcount'] == 0) ) ? '' : 'checked="checked"',

# ---- [ Найти ] -------------------

$columns = '

# ---- [ Вставить до ] -------------------

			$forum_postcount = isset($_POST['forum_postcount']) ? intval($_POST['forum_postcount']) : 0;

# ---- [ Найти ] -------------------

$columns = '

# ---- [ В строке найти ] -------------------

,  forum_display_order

# ---- [ В строке добавить после ] -------------------

, forum_postcount

# ---- [ Найти ] -------------------

$values = "

# ---- [ В строке найти ] -------------------

, $forum_display_order

# ---- [ В строке добавить после ] -------------------

, $forum_postcount

# ---- [ Найти ] -------------------

				$prune_days = $row['prune_days'];

# ---- [ Вставить после ] -------------------

				$forum_postcount = ($row['forum_postcount']) ? HTML_CHECKED : '';

# ---- [ Найти ] -------------------

				$prune_days = 0;

# ---- [ Вставить после ] -------------------

				$forum_postcount = '';

# ---- [ Найти ] -------------------

			$forum_data = get_forum_data($forum_id);
			$old_cat_id = $forum_data['cat_id'];
			$forum_order = $forum_data['forum_order'];

# ---- [ Вставить после ] -------------------

			$forum_postcount = '';

# ---- [ Найти ] -------------------

			DB()->query("
				UPDATE ". BB_FORUMS ." SET
					forum_name          = '$forum_name',
					cat_id              = $cat_id,

# ---- [ Вставить до ] -------------------

			$forum_postcount = isset($_POST['forum_postcount']) ? intval($_POST['forum_postcount']) : 0;
			$forum_postcount_old = DB()->query("
				SELECT forum_postcount
				FROM bb_forums
				WHERE forum_id = $forum_id
			");

			// Update posts count options if changed forum_postcount
			if ($forum_postcount != $forum_postcount_old)
			{
				DB()->query("
					UPDATE ". BB_POSTS ."
					SET posts_count = $forum_postcount
					WHERE forum_id = $forum_id
				");
			}

# ---- [ Найти ] -------------------

			DB()->query("
				UPDATE ". BB_FORUMS ." SET
					forum_name          = '$forum_name',
					cat_id              = $cat_id,

# ---- [ В строке найти ] -------------------

					prune_days    = $prune_days,

# ---- [ В строке добавить после ] -------------------

					forum_postcount = $forum_postcount,

# ---- [ Найти ] -------------------

				// Update topics
				DB()->query("
					UPDATE ". BB_TOPICS ." SET
						forum_id = $to_id
					WHERE forum_id = $from_id
				");

# ---- [ Вставить после ] -------------------

				// Update posts count options
				DB()->query("
					UPDATE ". BB_POSTS ." p
					SET p.posts_count = (
						SELECT f.forum_postcount
						FROM ". BB_FORUMS ." f
						WHERE f.forum_id = $to_id
					)
					WHERE p.forum_id = $from_id
				");

# ---- [ Открыть ] -------------------

includes/functions_admin.php

# ---- [ Найти ] -------------------

                        DB()->query("
                                REPLACE INTO $tmp_user_posts
                                        SELECT user_id, 0
                                        FROM ". BB_USERS ."
                                        WHERE user_id != ". GUEST_UID ."
                                                $where_user_sql
                                UNION
                                        SELECT poster_id, COUNT(*)
                                        FROM ". BB_POSTS ."
                                        WHERE poster_id != ". GUEST_UID ."

# ---- [ Вставить после ] -------------------

AND posts_count != 0

# ---- [ Найти ] -------------------

	DB()->query("
		INSERT INTO $tmp_user_posts

# ---- [ В строке найти ] -------------------

				AND p.poster_id != ". GUEST_UID ."

# ---- [ В строке добавить после ] -------------------

				AND p.posts_count != 0

# ---- [ Найти ] -------------------

	// Update torrents
	DB()->query("
		UPDATE ". BB_BT_TORRENTS ." SET
			forum_id = $to_forum_id
		WHERE topic_id IN($topic_csv)
	");

# ---- [ Вставить после ] -------------------

	// Update posts count options
	DB()->query("
		UPDATE ". BB_POSTS ." p
		SET p.posts_count = (
			SELECT f.forum_postcount
			FROM ". BB_FORUMS ." f
			WHERE f.forum_id = $to_forum_id
		)
		WHERE p.topic_id IN ($topic_csv)
	");

# ---- [ Открыть ] -------------------

includes/functions_post.php

# ---- [ Найти ] -------------------

	// Flood control
	$row = null;
	$where_sql = (IS_GUEST) ? "p.poster_ip = '". USER_IP ."'" : "p.poster_id = {$userdata['user_id']}";
       
# ---- [ Вставить до ] -------------------

	// Check post count option
	$sql = "SELECT forum_postcount AS forum_post_count FROM ". BB_FORUMS ." WHERE forum_id = '" . $forum_id . "'";
	if (!$forum_posts_count = DB()->fetch_row($sql))
	{
		message_die(GENERAL_ERROR, $forum_posts_count['forum_post_count']);	
	}
	$posts_count = (intval($forum_posts_count['forum_post_count'])) ? intval($forum_posts_count['forum_post_count']) : 0;

# ---- [ Найти ] -------------------

	$sql = ($mode != "editpost") ? "INSERT INTO " . BB_POSTS

# ---- [ В строке найти ] -------------------

post_time, poster_ip

# ---- [ В строке добавить после ] -------------------

, posts_count

# ---- [ В строке найти ] -------------------

, $current_time, '". USER_IP ."'

# ---- [ В строке добавить после ] -------------------

, $posts_count

# ---- [ Найти ] -------------------

		$sql = "UPDATE " . BB_USERS . "

# ---- [ Вставить до ] -------------------

		$sql = "SELECT forum_postcount
			FROM " . BB_FORUMS . "
			WHERE forum_id = $forum_id
			AND forum_postcount = 0";
		if (!$result = DB()->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql);
		}
		if ($row = DB()->sql_fetchrow($result))
		{
			return;
		}

# ---- [ Открыть ] -------------------

language/lang_russian/lang_admin.php

# ---- [ Найти ] -------------------

$lang['PRUNE_DAYS']

# ---- [ Вставить до ] -------------------

$lang['FORUM_POSTCOUNT'] = 'Считать сообщения пользователей';

# ---- [ Открыть ] -------------------

templates/admin/admin_forums.tpl

# ---- [ Найти ] -------------------

	<tr>
		<td class="catBottom" colspan="2">
			<input type="submit" name="submit" value="{S_SUBMIT_VALUE}" class="mainoption" />
		</td>
	</tr>

# ---- [ Вставить до ] -------------------

	<tr> 
		<td class="row1">{L_FORUM_POSTCOUNT}</td>
		<td class="row2">{L_ENABLED}<input type="checkbox" name="forum_postcount" value="1" {S_FORUM_POSTCOUNT} /></td>
	</tr>

# ---- [ Конец ] -------------------

10 февраля, 2014  
Tags: counter, mod, posts, torrentpier, tp, tp2, мод, счетчик сообщений

Leave a Reply

  • Рубрики

    • FreeBSD (20)
    • Linux (46)
    • MySQL (11)
    • Windows (14)
    • Железо (3)
    • Мои моды к TorrentPier II (16)
    • Настройка сервера (49)
    • Разное (33)
    • Скрипты (30)
  • Свежие записи

    • Поля форм на Yii2: textInput(), passwordInput() и hiddenInput()
    • Поля форм на Yii2: CheckboxList()
    • SpeedTest датацентров Digital Ocean
    • Патчим Gearman на Debian
    • nginx + Apache 2.4 и REMOTE_ADDR (решение проблемы)
    • Создание и подключение swap-файла в Debian
    • Запуск PhpStorm 9 x64 на Windows
    • Рекурсивная замена прав доступа для папок и файлов в Linux
    • VirtualBox 5 + phpVirtualBox на Debian 8.2 (jessie)
    • Обработка сессий PHP с помощью Redis + phpredis на Debian 7.8
  • Ссылки

    • My GitHub
  • Архивы

    • Июнь 2016 (2)
    • Март 2016 (2)
    • Январь 2016 (3)
    • Ноябрь 2015 (2)
    • Август 2015 (1)
    • Февраль 2015 (1)
    • Январь 2015 (7)
    • Октябрь 2014 (1)
    • Июнь 2014 (1)
    • Май 2014 (1)
    • Апрель 2014 (7)
    • Февраль 2014 (9)
    • Январь 2014 (5)
    • Декабрь 2013 (7)
    • Ноябрь 2013 (1)
    • Октябрь 2013 (3)
    • Август 2013 (4)
    • Июль 2013 (4)
    • Июнь 2013 (3)
    • Апрель 2013 (2)
    • Март 2013 (2)
    • Февраль 2013 (6)
    • Январь 2013 (2)
    • Декабрь 2012 (1)
    • Ноябрь 2012 (2)
    • Октябрь 2012 (7)
    • Сентябрь 2012 (22)
Все права защищены © 2014 Gemini_13's Blog
G13.org.ua