Перемещение тем через базу

 • Просмотры: 548
Ka
Karlos
Сообщения: 80
Зарегистрирован: 31 май 2010, 12:13
Сообщение

Перемещение тем через базу

04 авг 2010, 16:19

Делаю скрипт, который бы перемещал в форум "Мусор" раздачи, где NN количество дней не было раздающих.
Делать "перенос" я придумал путём замены значения 'forum_id'.'phpbb_topics' для моего топика на значение форума МУСОР (у меня это forum_id=22)

Проблема в том - что часть тем не отображаются в "мусоре". Если их искать через поиск - они найдутся. Причём при открытии темы под шапкой будет написано "Список форумов ‹ Трекер ‹ Мусор". Но этих тем там нет!

Подскажите как правильно....
Ka
Karlos
Сообщения: 80
Зарегистрирован: 31 май 2010, 12:13
Сообщение

Перемещение тем через базу

04 авг 2010, 16:21

Но этих тем там нет!
это при просмотре вот так /viewforum.php?f=22
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Перемещение тем через базу

04 авг 2010, 16:42

То же самое нужно делать и в таблице phpbb_posts, а в таблице phpbb_forums попутно нужно уменьшать и увеличивать счётчик сообщений и тем в соотв. форумах
Ka
Karlos
Сообщения: 80
Зарегистрирован: 31 май 2010, 12:13
Сообщение

Перемещение тем через базу

05 авг 2010, 11:04

а вы случаем не планируете добавить подобный механизм в оффициальный репозиторий? было бы весьма полезно
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Перемещение тем через базу

05 авг 2010, 12:20

Планирую .. но не очень скоро.
Ka
Karlos
Сообщения: 80
Зарегистрирован: 31 май 2010, 12:13
Сообщение

Перемещение тем через базу

09 авг 2010, 16:50

спасибо за помощь, всё доделал, всё работает
Ka
Karlos
Сообщения: 80
Зарегистрирован: 31 май 2010, 12:13
Сообщение

Перемещение тем через базу

16 авг 2010, 11:58

Может кому понадобится:

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

#!/bin/sh

BT_DBI_CONF="/etc/sysconfig/`basename $0`"

###

start_QUERY() {
# $1 - QueryName

  local QUERY=`get_VAR_VAL "$1"`
  check_CONF "$QUERY"
  echo "USE $DBI_DB; $QUERY;" | $DBI_CMD
}

###

get_DEFAULT_CONF() {
  echo '# DBI settings'
  echo '#'
  echo "DBI_HOST=''"
  echo "DBI_USER=''"
  echo "DBI_PASSWD=''"
  echo "DBI_DB=''"
  echo 'DBI_CMD=""'
  echo
  echo '# Querys'
  echo '# in format:'
  echo "# <QUERY_NAME>='<QUERY string>'"
  echo '#'
}

check_CONF() {
# $1 - Query

  [ "$DBI_HOST" = '' ]					&& error_CONF "DBI_HOST not defined in '$BT_DBI_CONF'"
  [ "$DBI_USER" = '' ]					&& error_CONF "DBI_USER not defined in '$BT_DBI_CONF'"
  [ "$DBI_PASSWD" = '' ]				&& error_CONF "DBI_PASSWD not defined in '$BT_DBI_CONF'"
  [ "$DBI_DB" = '' ]					&& error_CONF "DBI_DB not defined in '$BT_DBI_CONF'"
  [ "$DBI_CMD" = '' ]					&& error_CONF "DBI_CMD not defined in '$BT_DBI_CONF'"
  [ -f "$(echo "$DBI_CMD" | awk '{print $1}')" ]	|| error_CONF "DBI_CMD='$DBI_CMD' not exist"
  [ "$1" = '' ]						&& error_CONF "Query not defined in '$BT_DBI_CONF'"
}

error_CONF() {
# $1 - Message

  echo "!! $1"
  exit 64
}

get_VAR_VAL() {
# $1 - VarName

  eval "echo \"\$${1}\""
}

###

[ -f "$BT_DBI_CONF" ] || get_DEFAULT_CONF >$BT_DBI_CONF
. $BT_DBI_CONF

case "$1" in
  -q)	start_QUERY "$2" ;;
  *)	echo
  echo -e "\nUsage: $0 -q QUERY_NAME"; exit 1 ;;
esac

exit 0 
Поди сами разберётесь дальше :)

Вернуться в «Вопросы, ответы и примеры решений»