Встроенный форум (с cache блоком)

Сообщение Nemezida » 04 окт 2019, 14:31

Автор: 7Max7
poster_0.jpg

Моя версия форума (переделывал лично) (не самая последняя версия, но все же)
Архив распаковать в корень, просмотреть файл forum+cache_by_7Max7.htm и запросы в базу.txt

Удачи :cool:

Функции:

Call to undefined function get_user_rgbcolor() здесь:
stefan писал(а):

Fatal error: Call to undefined function get_user_rgbcolor()


Код: Выделить всё
function get_user_rgbcolor($class, $username)
{
  global $tracker_lang;
 switch ($username)
 {
     /// меняем цвета
 
      case 'Тя': /// кому
    return "008000"; /// на
 break; }

 switch ($class)  {
    case UC_SYSOP:
      return "0000ff";
      break;
    case UC_ADMINISTRATOR:
      return "008000";
      break;
    case UC_MODERATOR:
      return "ff0000";
      break;
     case UC_UPLOADER:
      return "f59555";
      break;
     case UC_VIP:
      return "9C2FE0";
      break;
     case UC_POWER_USER:
      return "D21E36";
      break;
     case UC_USER:
      return "000000";
       break;
   }
  return $username; }


нужно бы эту функция заУконить уже


Дополнения:
1) Ваша Статистика на форуме:

В файл forums.php чуть выше (это в самом внизу):
Код: Выделить всё
$htmlout.= "<table border='1' cellspacing='0' cellpadding='10' width='100%'>
<tr><td class=colhead align=center><span class='btn'>.:: <a class=\"altlink_white\" href='forums.php?action=search'>Поиск на форуме</a></span> :: <span class='btn'><a class=\"altlink_white\"href='forums.php?action=viewunread'>К непрочитанным сообщениям</a></span> :: <span class='btn'><a class=\"altlink_white\" href='forums.php?action=catchup'>Пометить прочитанным</a> ::.</span>
</td></tr></table>\n";


кидаем:
Код: Выделить всё
$num_post1=sql_query("SELECT COUNT(*) AS my_user FROM posts WHERE userid='".$CURUSER["id"]."'") or sqlerr(__FILE__, __LINE__);
$num_p1=mysql_fetch_assoc($num_post1);   

$num_post=sql_query("SELECT COUNT(*) AS cou, (SELECT COUNT(*) FROM posts WHERE editedby<>'0') AS mod_cou FROM posts") or sqlerr(__FILE__, __LINE__);
$num_p=mysql_fetch_assoc($num_post);

$num_post2=sql_query("SELECT COUNT(*) AS cou_user FROM posts GROUP BY userid") or sqlerr(__FILE__, __LINE__);
$num_p2=mysql_fetch_assoc($num_post2);
/*
$num_post_cat=sql_query("SELECT    forumid,c.name, COUNT(*) AS pos_numis
FROM posts
LEFT JOIN forums AS c ON c.id=posts.forumid
WHERE userid='".$CURUSER["id"]."' ORDER BY posts.id limit 1") or sqlerr(__FILE__, __LINE__);
$num_cat_sql=mysql_fetch_assoc($num_post_cat);
*/
$num_p_f=$num_p["cou"];
$num_p_modded=$num_p["mod_cou"];
$num_p_u=$num_p2["cou_user"];
$num_p_m=$num_p1["my_user"];
$num_cat_id=$num_cat_sql["name"];

//// вычитаем дни после реги
   $time_user=sql_timestamp_to_unix_timestamp($CURUSER["added"]);
    $time_now = time();
    if ($time_now>=$time_user)
    $diff = $time_now-$time_user;
    else
    $diff = $time_user-$time_now;

if($diff>=86400){
$day = floor($diff/86400);
} else $day=1;
//// вычитаем дни после реги
$size_to_day=number_format((1 - $num_p_m/$day),2);

$size_to_all=number_format(100*($num_p_m/$num_p_f),2);

///    <b>»</b> Ваша наибольшая активность в разделе <a href=\"forums.php?action=viewforum&forumid=".$num_cat_sql["forumid"]."\"> ".$num_cat_id." </a> с <b>".$num_cat_sql["pos_numis"]."</b> сообщениями.<br/>
/// тут у меня ступор полный, нет могу выполнить правильно запрос, кто захочет //может поиграться

$htmlout.= "<table border='0' cellspacing='0' cellpadding='10' width='100%'>

<td width=\"50%\" valign=\"top\" align=\"left\" class=\"a\">
        <b>»</b> Всего Ваших сообщений на форуме: <b>".$num_p_m."</b> | <b>".$size_to_day."</b> сообщений в день.<br/>
       <b>»</b> У вас <b>".$size_to_all."%</b> от всех сообщений на форуме.<br/><br/>
   
     <b>» »</b> Всего сообщений на форуме: <b>".$num_p_f."</b> (отредактированых: <b>".$num_p_modded."</b>)<br>
     <b>» »</b> Оставлены пользователями: <b>".$num_p_u."</b><br/>
 </table>\n";


В css стиль:
Код: Выделить всё
td.a { background-color : #ececec; padding : 6px; font-family : Verdana, Helvetica, sans-serif; font-size : 8pt; border-style : solid; border-width : 1px 1px 1px;}
td.b { background-color : #f7f7f7; padding : 6px; font-family : Verdana, Helvetica, sans-serif; font-size : 8pt; border-style : solid; border-width : 1px 1px 1px;}


Обновление от девушки с ником SelinaAnt за 07.02.2011:

SelinaAnt писал(а):

Немного обновила форум. Добавила тем, и иконок, исправила баг с загрузкой картинки категории. Делала все для Кибера (уже давно выложила там), но в принципе се это идеально подходит и под TBDeV.
Архив раскрыть в корень трекера (кроме папки "Запросы в БД"). Запросы сделать можно только на создание разделов форума, на посты и топики они те-же что и в первом посту Макса. Если вы хотите сохранить свои темы в форуме, импортируйте таблицы с темами и постами, потом сделаете запросы (из моей папки) и поверх-установите после свои темы\посты. Тут я думаю разберетесь сами.

1.jpg
2.jpg
3.jpg
4.jpg

Архив прикреплен.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Nemezida
Администратор
Администратор
 
Сообщения: 661
Зарегистрирован: 20 сен 2019, 22:32

Re: Встроенный форум (с cache блоком)

Сообщение Nemezida » 04 окт 2019, 14:52

Полностью от меня переделаный форум, с КЕШ-системой на блок "форум на главной". Вид изменен + переписан немного код. В первом посту картинки от моего переделаного форума, ибо в архиве дева все картинки умерли.

forums.php - в корень сайта с заменой
functions_forum.php - в папку include
block-forum.php - в папку blocks

На блоке стоит System_Cache! - система кеша: ТЫЦ У вас она должна обязательно быть установлена, иначе блок рихтуем под себя сами (закрываем кеш).

Удачи! Пофиксены символы ВСЕ - ранее они кракозябрами писались. Ну и вид немного подправлен, кеш теперь одним файлом а не через кучу файлов.

Кто еще не ставил форум, ниже описание что надо сделать. Из моего архива всё в корень сайта, запросы в базу выполнить из папки SQL.
Два архива! Один только для UTF-8, второй только для ср1251 кодировки! Выберите себе что нужно!

Установка Форума от 7Max7

1. В userdetails.php добавить ниже информации о клиенте:
Код: Выделить всё
if (get_user_class() >= UC_ADMINISTRATOR){   
  print("<tr><td class=rowhead>Отправка Тем <br> на форуме</td><td colspan=2 align=left>
 ".($user["forum_com"]<>"0000-00-00 00:00:00" ? "Бан до ".$user["forum_com"]." <input type=checkbox name=forum_pos_off value=1><i>Снять временной бан на форуме</i>":"
 Отключить возможность отправки сообщений на <select name=\"forum_pos\">
    <option value=\"0\">выбираем</option>
    <option value=\"1\">1 неделю</option>
    <option value=\"2\">2 недели</option>
    <option value=\"3\">3 недели</option>
    <option value=\"4\">4 недели</option>
    <option value=\"5\">5 недель</option>
    <option value=\"6\">6 недель</option>
    <option value=\"7\">7 недель</option>
    <option value=\"8\">8 недель</option>
    <option value=\"9\">9 недель</option>
    <option value=\"10\">10 недель</option>
    <option value=\"11\">11 недель</option>
    <option value=\"12\">12 недель</option>
    <option value=\"64\">много много лет</option>
    </select>
 ")."</td></tr>\n"); }


В modtask.php добавить ближе к концу но чуть дальше от сереДины:
Код: Выделить всё
if (get_user_class() >= UC_ADMINISTRATOR){   
 //// форум бан 
//$_POST["forum_pos"] == 'yes' && $arr["forum_com"]=='no'
$warnfban=(int) $_POST["forum_pos"];
if ($warnfban<>0 && $arr["forum_com"]=="0000-00-00 00:00:00"){
if ($warnfban == 64) {
$modcomment = gmdate("Y-m-d") . " - Поставлен бан на много много лет от " . $CURUSER['username'] . ".\n" . $modcomment;
$forumbanutil = get_date_time(gmtime() + 777 * 666666);
$updateset[] = "forum_com = '$forumbanutil'";
}else {
$forumbanutil = get_date_time(gmtime() + $warnfban * 604800);
$forum_dur = $warnfban . " недел" . ($warnfban > 1 ? "и" : "ю");
$modcomment = gmdate("Y-m-d") . " - Форум бан на $forum_dur от " . $CURUSER['username'] .".\n". $modcomment;
$updateset[] = "forum_com = '$forumbanutil'"; }}
 
  $fban=(int) $_POST["forum_pos_off"];
  if ($fban==1 && $arr["forum_com"]<>"0000-00-00 00:00:00"){
$modcomment = gmdate("Y-m-d") . " - Форум бан снял " . $CURUSER['username'] . ".\n" . $modcomment;
$updateset[] = "forum_com = '0000-00-00 00:00:00'"; }
  unset($fban); unset($warnfban);
  //// форум бан
}


Здесь же в modtask найти запрос:
Код: Выделить всё
$res = mysql_query("SELECT avatar....


(примерно 80 строчка) и добавить доп значений forum_com

Пример:
Код: Выделить всё
$res = mysql_query("SELECT avatar, email, ip, info, forum_com FROM users WHERE id=$userid") or sqlerr(__FILE__, __LINE__);


В cleanup.php добавить

Вначале в: global $torrent_dir, $signup_timeout, ..., $readpost_expiry;
Код: Выделить всё
$h = date('H'); // проверяем час
if (($h >= 07)&&($h <= 09)) // расписание
{
$dt = (time() - $readpost_expiry);

sql_query("DELETE readposts FROM readposts LEFT JOIN posts ON readposts.lastpostread = posts.id WHERE posts.added < $dt") or sqlerr(__FILE__,__LINE__);
}
// снятие истекших форум бан
   $now = sqlesc(get_date_time());
   $modcomment = sqlesc(date("Y-m-d") . " - Форум бан снят системой по таймауту.\n");
   $msg = sqlesc("Ваш бан на форуме был снят системой по таймауту. Постарайтесь больше не получать таких услуг от администрации и следовать правилам трекера.\n");
   sql_query("INSERT INTO messages (sender, receiver, added, msg, poster) SELECT 0, id, $now, $msg, 0 FROM users WHERE forum_com < NOW() AND enabled='yes' AND forum_com <> '0000-00-00 00:00:00'") or sqlerr(__FILE__,__LINE__);
   sql_query("UPDATE users SET forum_com = '0000-00-00 00:00:00', modcomment = CONCAT($modcomment, modcomment) WHERE forum_com < NOW() AND enabled='yes' AND forum_com <> '0000-00-00 00:00:00'") or sqlerr(__FILE__,__LINE__);

sql_query("DELETE FROM posts WHERE topicid not in (SELECT id FROM topics WHERE id=posts.topicid)") or sqlerr(__FILE__,__LINE__);


В functions_global.php добавить функцию:
Код: Выделить всё
function get_user_rgbcolor($class, $username){
  global $tracker_lang;
 switch ($username) {
 /// меняем цвета

 case 'Shoky': /// кому
   return "008000"; /// на
 break;
 
 case 'Тя': /// кому
    return "008000"; /// на
 break;
 }

 switch ($class)  {
    case UC_SYSOP:
      return "0000ff";
      break;
    case UC_ADMINISTRATOR:
      return "008000";
      break;
    case UC_MODERATOR:
      return "ff0000";
      break;
     case UC_UPLOADER:
      return "ffa500";
      break;
     case UC_VIP:
      return "9C2FE0";
      break;
     case UC_POWER_USER:
      return "D21E36";
      break;
     case UC_USER:
      return "000000";
       break;
   }
  return $username; }


В config.php:
Код: Выделить всё
/// для форума
$readpost_expiry = 14*86400; // количество дней для удаления как прочитанное собщение из базы для каждого юзера


Папка cache - атрибуты 777 на все файлы .htaccess - 655 или 555 вовсе.
Все запросы в базу в текстовой файле.
PS аватары у меня на сайте работают через pic/avatars/картинка - и это значение картинки хранится в базе, у вас не знаю как, поменяете значения avatars - на ваши, для трекера.

7Max7 писал(а):

На форуме одно но, bb коды на прередактировании (постараюсь исправить в близ время)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Nemezida
Администратор
Администратор
 
Сообщения: 661
Зарегистрирован: 20 сен 2019, 22:32

Re: Встроенный форум (с cache блоком)

Сообщение interes » 07 фев 2021, 18:16

Код: Выделить всё
$res = mysql_query("SELECT avatar, email, ip, info, forum_com FROM users WHERE id=$userid") or sqlerr(__FILE__, __LINE__);

нету :huh:
interes
Аплоадеры
Аплоадеры
 
Сообщения: 39
Зарегистрирован: 19 апр 2020, 08:58


Вернуться в TBDeV

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2