[szukam->propozycja]mod do automatycznego sklejania posto
[szukam->propozycja]mod do automatycznego sklejania posto
Otoz, czy ktos wie, gdzie mozna znalesc moda, ktory automatycznie skleja posty (zaraz po napisaniu nowego dodajac date nowego wpisu) tego samego autora, jesli sa dwa kolejne po sobie Chociaz podpowiedz, jak moze sie nazywac bo jak znajde chwilke to sama zaczne go szukac. Z gory dziekuje za pomoc
Ostatnio zmieniony 03 sierpnia 2005, 20:01 przez Lilly, łącznie zmieniany 1 raz.
chodzi Ci o moda laczenie postów?
jesli tak to prosze
Otworz posting.php i znajdz:
jesli tak to prosze
Otworz posting.php i znajdz:
Kod: Zaznacz cały
else if ( $submit || $confirm )
{
Kod: Zaznacz cały
niżej dodaj:
// Wlacz laczenie postow (true - wlaczone, false - wylaczone)
$split_messages = true;
// Wlacz laczenie postow dla adminow
$split_messages_admin = true;
// Wlacz laczenie postow dla moderatorow
$split_messages_mod = true;
// Nie lacz w forach (wartosci oddziel przecinkami np: '3, 6, 8';
$split_messages_except = '';
if ( $mode == 'reply' && $userdata['user_id'] != ANONYMOUS )
{
$do_split = false;
if ( $userdata['user_level'] == ADMIN )
{
$do_split = (!$split_messages_admin) ? false : true;
}
else
{
$do_split = ($userdata['user_level'] == MOD && !$split_messages_mod) ? false : true;
}
if ( !empty($split_messages_except) && $do_split )
{
if ( strstr($split_messages_except, ',') )
{
$fids = explode(',', $split_messages_except);
while( list($foo, $id) = each($fids) )
{
$fid[] = intval( trim($id) );
}
}
else
{
$fid[] = intval( trim($split_messages_except) );
}
reset($fid);
$do_split = ( in_array($forum_id, $fid) == true ) ? false : true;
}
if ( $do_split )
{
$poster_id = $userdata['user_id'];
$sql = "SELECT post_id, poster_id, MAX(post_time) FROM " . POSTS_TABLE . "
WHERE topic_id = $topic_id
GROUP BY post_time
ORDER BY post_time DESC LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain post', '', __LINE__, __FILE__, $sql);
}
$post_id_last_row = $db->sql_fetchrow($result);
$post_id = $post_id_last_row['post_id'];
$poster_topic_id = $post_id_last_row['poster_id'];
if ( $post_id_last_row['poster_id'] == $poster_id )
{
$sql = "SELECT pt.post_text, pt.bbcode_uid, p.enable_bbcode, p.enable_html, p.enable_smilies
FROM " . POSTS_TEXT_TABLE . " pt, " . POSTS_TABLE . " p
WHERE p.post_id = $post_id
AND pt.post_id = $post_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain post information', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$buid = $row['bbcode_uid'];
$add_data = create_date($board_config['default_dateformat'], time(), $board_config['board_timezone']);
$separator = " \n\n[size=9:" . $buid . "][ [i:" . $buid . "][b:" . $buid . "]Dodano[/b:" . $buid . "]: " . $add_data . "[/i:" . $buid . "] ][/size:" . $buid . "]\n";
$message = prepare_message($HTTP_POST_VARS['message'], $row['enable_html'], $row['enable_bbcode'], $row['enable_smilies'], $buid, $forum_id);
$last_message = prepare_message(str_replace(array("'", "\\"), array("''", "\\\\"), unprepare_message($row['post_text'])), $row['enable_html'], $row['enable_bbcode'], $row['enable_smilies'], $buid, $forum_id);
$splited = $last_message . $separator . str_replace("\'", "''", $message);
if ( strlen($splited) > 65500 )
{
message_die(GENERAL_MESSAGE, 'Your message is too long. It can not be more than 65500 chars.');
}
if ( trim(str_replace("''", "\'", $last_message)) == trim(str_replace('\"', '"', $message)) )
{
message_die(GENERAL_ERROR, 'Detected that same message !');
}
$sql = "UPDATE " . POSTS_TEXT_TABLE . "
SET post_text = '$splited'
WHERE post_id = $post_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update splited message', '', __LINE__, __FILE__, $sql);
}
include($phpbb_root_path . 'includes/functions_search.'.$phpEx);
add_search_words(0, $post_id, stripslashes($message));
$meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">';
$return_message = $lang['Stored'] . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>');
$template->assign_vars(array(
'META' => $meta . $return_meta)
);
message_die(GENERAL_MESSAGE, $return_message);
}
}
}
Forum Młodzieżowe http://www.forumer.ddl2.pl/index.php - Serdecznie Zapraszam
hmm, jest na to rozwiązanie, tego hacka pisał Przemo..
trzeba byloby sie zglosic na phpbb2.pl i spytac sie jak zrobic zeby w laczeniu postow pokazywalo ze ktos dodal "dodatkowy" post ..
trzeba byloby sie zglosic na phpbb2.pl i spytac sie jak zrobic zeby w laczeniu postow pokazywalo ze ktos dodal "dodatkowy" post ..
Forum Młodzieżowe http://www.forumer.ddl2.pl/index.php - Serdecznie Zapraszam
-
- Posty: 17
- Rejestracja: 02 sierpnia 2005, 08:55
To niech bedzie dla potomnych
Trzeba wstawic po:
w tym kodzie, ktory powyzej napisal Kokoosh.
Zasada dzialania jest taka, ze zmienia sie data glownego posta. Jest to obejscie troche na okolo, ale poki co nie udalo mi sie wymyslic nic lepszego (trzeba by pewnie zmienic warunki wyswietlania "new_post" we view_forum.php, a na to chwilowo nie mam ochoty bo jeszcze nie rozgryzlam zbyt dobrze tego pliku).
EDIT: Za wczasu uprzedze, ze ta moja modyfikacja ma jeszcze drobne niedociagniecia w postaci zlego przekierowania do ostatniego posta z poziomu forum oraz zlego sortowania postow w subforum (ten nowy nie jeste na gorze). Kiedy to naprawie, umieszcze tutaj. Ewentualne pomysly i podpowiedzi mile widziane
Kod: Zaznacz cały
$time = time();
$sql = "UPDATE " . POSTS_TABLE . " SET post_time = $time WHERE post_id = $post_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Nie udalo sie zmienic czasu posta', '', __LINE__, __FILE__, $sql);
}
Kod: Zaznacz cały
$sql = "UPDATE " . POSTS_TEXT_TABLE . "
SET post_text = '$splited'
WHERE post_id = $post_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update splited message', '', __LINE__, __FILE__, $sql);
}
Zasada dzialania jest taka, ze zmienia sie data glownego posta. Jest to obejscie troche na okolo, ale poki co nie udalo mi sie wymyslic nic lepszego (trzeba by pewnie zmienic warunki wyswietlania "new_post" we view_forum.php, a na to chwilowo nie mam ochoty bo jeszcze nie rozgryzlam zbyt dobrze tego pliku).
EDIT: Za wczasu uprzedze, ze ta moja modyfikacja ma jeszcze drobne niedociagniecia w postaci zlego przekierowania do ostatniego posta z poziomu forum oraz zlego sortowania postow w subforum (ten nowy nie jeste na gorze). Kiedy to naprawie, umieszcze tutaj. Ewentualne pomysly i podpowiedzi mile widziane
Lilly, może to zapytanie Cię naprowadzi na to, na to trzeba napisać update:
A chodzi mi dokładniej o fragment:
leniwy jestem, nie?
Kod: Zaznacz cały
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$limit_topics_time
ORDER BY t.topic_type DESC, t.topic_last_post_id DESC
LIMIT $start, ".$board_config['topics_per_page'];
Kod: Zaznacz cały
t.topic_last_post_id DESC
W sumie to wiem, ze trzeba zmienic post_id i last_post_id, bo wedlug nich na forum jest wszystko ukladane. Natomiast trzeba to zrobic przynajmniej w dwoch tabelach. Jedno zapytanie juz mam napisane, drugie chodzi po glowie, tylko musze i tak zrobic sobie forum testowe u siebie na kompie, bo jak sie nie daj boze pomyle w ktoryms z zapytan, to mi jeszcze jakis post zniknie, albo jeszcze cos gorszego Wiec czekam po prostu na chwilke czasu, zeby skonfigurowac u siebie Krasnala