Добавить тему в phpbb

Статус
В этой теме нельзя размещать новые ответы.

Mikhail.M

Создатель
Регистрация
2 Июл 2008
Сообщения
11
Реакции
4
Нужен скрипт, например в файле addpost.php, при запуске которого на форум, работающий на phpbb будет добавлятся тема. Моих знаний, которые я подчерпнул из первых глав "PHP для чайников" для этого не хватает:( И уж конечно в mysql я ничего не понимаю :ah:
Названия темы, автор, само сообщение, раздел и т.д. хранятся в определенных переменных. Просто нужно: запускаешь скрипт - новая тема с текущим временем создания добавилась.
Может у кого-нибудь есть что то похожее?
 
Для удаленного форума или своего?
 
Для своего.
 
Вот функция из сабдримера, думаю сам разберешься че отсюда взять.
PHP:
function ForumArticle($forumids)
{
  global $DB, $userinfo, $dbname, $usersystem, $sdurl;

  $timenow = time();

  // get article's post vars
  $title       = $_POST['title'];
  $description = $_POST['description'] == ' ' ? '' : $_POST['description']; // sometimes fckeditor adds a &nsbp;
  $article     = $_POST['article'];

  // include description in article?
  if(isset($_POST['displaydescription']) OR (isset($_POST['useglobalsettings']) AND $includedescription = $DB->query_first("SELECT value FROM " . TABLE_PREFIX . "pluginsettings WHERE description = 'Display Description Inside Article' AND value = '1'")))
  {
    $article = $description . "\n\n" . $article;
  }

  // erase old forum link
  $article = preg_replace("'<!--StartSdNewsForum-->(.*)<!--EndSdNewsForum-->'ms", "", $article);

  $postusername = $userinfo['username'];
  $postuserid   = $userinfo['userid'];
  $clientip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR );
  $userip   = encode_ip($clientip);

  $title   = trim(strip_tags(FormatText($title)));
  $article = trim(strip_tags(FormatText($article)));

  // switch databases?
  if(($usersystem['dbname'] != $dbname))
  {
    $DB->select_db($usersystem['dbname']);
  }

  for($i = 0; $i < count($forumids); $i++)
  {
    // create new thread
    $DB->query("INSERT INTO " . $usersystem['tblprefix'] . "topics (forum_id, topic_title, topic_poster, topic_time)
                VALUES ('" . $forumids[$i] . "', '$title', $postuserid, $timenow)");

    $topic_id = $DB->insert_id();

    // create new post
    $DB->query("INSERT INTO " . $usersystem['tblprefix'] ."posts (topic_id, forum_id, poster_id, post_time, poster_ip, enable_sig)
                VALUES ($topic_id, '" . $forumids[$i] . "', $postuserid, $timenow, '$userip', 1)");

    $postid = $DB->insert_id();

    // create post text
    $DB->query("INSERT INTO " . $usersystem['tblprefix'] . "posts_text (post_id, post_text)
               VALUES ($postid, '$article')");

    // update thread
    $DB->query("UPDATE " . $usersystem['tblprefix'] . "topics SET topic_first_post_id = $postid,
                                                                  topic_last_post_id  = $postid
                                                            WHERE topic_id            = $topic_id");

    // update user
    $DB->query("UPDATE " . $usersystem['tblprefix'] . "users SET user_lastvisit = $timenow,
                                                                 user_posts     = (user_posts + 1)
                                                           WHERE user_id        = $postuserid");

    // update forum
    $DB->query("UPDATE " . $usersystem['tblprefix'] . "forums SET forum_posts        = (forum_posts + 1),
                                                                  forum_topics       = (forum_topics + 1),
                                                                  forum_last_post_id = $postid
                                                            WHERE forum_id           = '".$forumids[$i]."'");
  }

  // change back to Subdreamer database?
  if(($usersystem['dbname'] != $dbname))
  {
    $DB->select_db($dbname);
  }

  // return a link to the article
  return 'viewtopic.php?t=' . $topic_id; // threadid is the last returned thread

}
 
Сделал вот так:
PHP:
<?php
//хостинг
$sqlhost="localhost";
//имя пользователя
$sqluser="root";
//пароль
$sqlpass="";
//имя БД
$db="phpbb_forum";

//Подключаемся к MySQL
mysql_connect($sqlhost, $sqluser, $sqlpass) or die ("MySQL не доступен!".mysql_error());
//Подключаемся к БД
mysql_select_db($db) or die ("Нет соединения с БД!".mysql_error());
$prefix="phpbb_";
$timenow = time();
$forumid=2;
$title="My Topic";
$postuserid=2;
$userip="";
$posttext="Post Text";
$topicfirstpostername="admin";
$topicfirstpostercolour="AA0000";
$topiclastposterid=2;


    // create new thread 
	mysql_query("INSERT INTO " .$prefix."topics (forum_id, topic_title, topic_poster, topic_time, topic_first_poster_name, topic_first_poster_colour, topic_last_poster_id, topic_last_poster_name, topic_last_poster_colour, topic_last_post_time, topic_last_view_time, topic_last_post_subject) 
                VALUES ('" . $forumid . "', '$title', $postuserid, $timenow,'$topicfirstpostername','$topicfirstpostercolour',$topiclastposterid,'$topicfirstpostername','$topicfirstpostercolour',$timenow,$timenow, '$title')");

    $topic_id = mysql_insert_id(); 

    // create new post 
    mysql_query("INSERT INTO " . $prefix."posts (topic_id, forum_id, poster_id, post_time, poster_ip, enable_sig, post_text, post_subject ) 
                VALUES ($topic_id, '" . $forumid . "', $postuserid, $timenow, '$userip', 1, '$posttext', '$title')"); 

    $postid = mysql_insert_id(); 
	// update thread 
    mysql_query("UPDATE " . $prefix . "topics SET topic_first_post_id = $postid, 
                                                                  topic_last_post_id  = $postid 
                                                            WHERE topic_id            = $topic_id"); 

    // update user 
    mysql_query("UPDATE " . $prefix . "users SET user_lastvisit = $timenow, 
                                                                 user_posts     = (user_posts + 1) 
                                                           WHERE user_id        = $postuserid"); 

    // update forum 
    mysql_query("UPDATE " . $prefix . "forums SET forum_posts        = (forum_posts + 1), 
                                                                  forum_topics       = (forum_topics + 1),
																  forum_topics_real =(forum_topics_real +1),
																  forum_last_post_subject = '$title',
                                                                  forum_last_post_id = $postid 
                                                            WHERE forum_id           = '".$forumid."'"); 
?>
Вроде ничего не напутал. Таблицу posts_text не нашел, зато в posts был такой столбик. Общий принцип правильный?
 
Вроде правильный :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху