Problem mit User Management in Profil Mod

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Gastschreiber

Problem mit User Management in Profil Mod

Beitrag von Gastschreiber »

Hi,

ich hab da ein seltsames Problem, wenn ich so einen Mod einbau das ich vom User PRofil direkt ind en Adminbereich komm, lädt er nach der User ID also z.B. so ...

admin_users.php?mode=edit&u=2

Problem ist aber, meine User Profile sind anders verschlüsselt, d.h. ich komm auf eine ungültige Seite. Anstatt nach ID wird folgendes geladen (evtl. nach Passwort?!) ...

admin_users.php?mode=edit&u=1&sid=f49c4491c878bdec2b64a2f0632faa44


Kann mir das zufällig jemand erklären und am besten noch eine Lösung präsentieren?

Danke und Tschaui
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Ich nehme ma an, Du benutzt phpBB 2.0.4.. kannst Du ma einen Link zu dem Hack posten (welcher sicherlich noch ned 2.0.4-tauglich is).
Gastschreiber

Beitrag von Gastschreiber »

Der Mod ist nur für 2.01 ging aber bis zur 2.03 problemlos, kann aber eigentlich nciht das PRoblem sein, man mü0te ja theorethisch nur den Link ändern. Die Frage ist bloß, wo finde ich den richtigen? Wenn ich z.B. im Adminteil bin und da mir von einem anwesenden User das Profil anzeigen lassen will, muß das der selbe Link sein wie bei diesem Mod. Leider finde ich das aber nicht, hab alles mögliche auch durch probiert. Ich finde irgendwie nicht genau den Link den er da benutzt.

Hab die Datei selbst nicht mehr gefunden aber kopiere dir gerne den Inhalt mal rein. Wird wie gesagt alles fertig gemacht, der einzige Fehler sind die Links weil das 2.04 Board die irgendwie anders berechnet.
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php
#
#-----[ FIND ]------------------------------------------
#
//
// Generate page
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
// MOD: Admin Link in User Profile v1.0.2
//
if($userdata['user_level'] == ADMIN)
{
$adminlink_label = $lang['AdminLink_Label'] . ': ';
$adminlink_manage = "<a href=\"" . append_sid("admin/admin_users.$phpEx?mode=edit&u=" . $profiledata['user_id']) . "\">" . $lang['AdminLink_Manage'] . "</a> ";
$adminlink_permissions = "<a href=\"" . append_sid("admin/admin_ug_auth.$phpEx?mode=user&u=" . $profiledata['user_id']) . "\">" . $lang['AdminLink_Permissions'] . "</a> ";
}
else
{
$adminlink_label = '';
$adminlink_manage = '';
$adminlink_permissions = '';
}
//
// MOD: -END-
//

#
#-----[ FIND ]------------------------------------------
#
'AVATAR_IMG' => $avatar_img,
#
#-----[ AFTER, ADD ]------------------------------------------
#

//
// MOD: Admin Link in User Profile v1.0.2
//
'L_ADMINLINK' => $adminlink_label,
'ADMINLINK_MANAGE' => $adminlink_manage,
'ADMINLINK_PERMISSIONS' => $adminlink_permissions,
//
// MOD: -END-
//
#
#-----[ OPEN ]------------------------------------------
#
# The following need to be modified for every TEMPLATE you are using:
#
templates/subSilver/profile_view_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<td align="right"><span class="nav"><br />{JUMPBOX}</span></td>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
<!-- MOD: Admin Link in User Profile v1.0.2 -->
<td align="left"><span class="gensmall"><b>{L_ADMINLINK}</b>{ADMINLINK_MANAGE}{ADMINLINK_PERMISSIONS}</span></td>
<!-- MOD: -END- -->
#
#-----[ OPEN ]------------------------------------------
#
# The following need to be modified for every LANGUAGE you are supporting:
# (ENGLISH)
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
# To make things easier for the user, the translation texts used
# should be the same as given in language/lang_english/lang_admin.php
# as $lang['Users'], $lang['Manage'], and $lang['Permissions'],
# respectively.
#
//
// MOD: Admin Link in User Profile v1.0.2
//
$lang['AdminLink_Label'] = 'User Admin';
$lang['AdminLink_Manage'] = 'Management';
$lang['AdminLink_Permissions'] = 'Permissions';
//
// MOD: -END-
//

#
#-----[ OPEN ]------------------------------------------
#
# The following need to be modified for every LANGUAGE you are supporting:
# (GERMAN)
#
language/lang_german/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
# To make things easier for the user, the translation texts used
# should be the same as given in language/lang_german/lang_admin.php
# as $lang['Users'], $lang['Manage'], and $lang['Permissions'],
# respectively.
#
//
// MOD: Admin Link in User Profile v1.0.2
//
$lang['AdminLink_Label'] = 'Benutzer';
$lang['AdminLink_Manage'] = 'Einstellungen';
$lang['AdminLink_Permissions'] = 'Befugnisse';
//
// MOD: -END-
//

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
Gastschreiber

Beitrag von Gastschreiber »

Hab genau das gleiche heute mit dem Merge Topic Mod gehabt (also Themen zusammenfügen). Auch da wird mir ein falscher Link angezeigt so das ich auf eine leere Seite komme. Hoffe die ganzen Mods werden nach und nach für 2.04 optimiert, meine ganzen alten Lieblingsmods kann ich nicht mehr benutzen :(
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php
#
#-----[ FIND ]------------------------------------------
#
//
// Generate page
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
// MOD: Admin Link in User Profile v1.0.2
//
if($userdata['user_level'] == ADMIN)
{
$adminlink_label = $lang['AdminLink_Label'] . ': ';
$adminlink_manage = '<a href="admin/admin_users.' . $phpEx . '?mode=edit&u=' . $profiledata['user_id'] . '&sid=' . $userdata['session_id'] . '">' . $lang['AdminLink_Manage'] . '</a> ';
$adminlink_permissions = '<a href="admin/admin_ug_auth.' . $phpEx . '?mode=user&u=' . $profiledata['user_id'] . '&sid=' . $userdata['session_id'] . '">' . $lang['AdminLink_Permissions'] . '</a> ';
}
else
{
$adminlink_label = '';
$adminlink_manage = '';
$adminlink_permissions = '';
}
//
// MOD: -END-
//
...das die Seiten sich dann ohne den linken Frame öffnen is normal oder ?
Gastschreiber

Beitrag von Gastschreiber »

jaja das ist nicht mein Problem, dass Problem ist es öffnet sich gar keine richtige Seite sondern es kommt ein Server nicht gefunden fehler!

Wie ich anfangs schrieb ....

Der Link muß wie folgt aussehen um einen User bearbeiten zu können ...

admin_users.php?mode=edit&u=1&sid=f49c4491c878bdec2b64a2f0632faa44


der der durch den Code erzeugt wird sieht aber wie folgt aus ...

admin_users.php?mode=edit&u=2

da fehlt ein Ende weil das anders berechnet wird und dadurch kommt eine Fehlerseite ohne Inhalt.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

..schau Dir den Code, den ich gepostet habe, ma genau an (er unterscheidet sich ein wenig zu dem betreffenden Teil in der Hackanleitung). ;)
Gastschreiber

Beitrag von Gastschreiber »

Das hab ich doch total übersehen, ich dachte du wolltest mich nur darauf hinweisen das es ohne Frame geladen wird und das in der Codestelle steckt. Das ohne Frame macht mir überhaupt nichts, das ist so schon total gut. Es ist einfach sehr viel bequemer direkt aus dem Profil alles ändern zu können anstatt dauernd ins Adminpanel zu müssen.

Will nochmal ganz doll Danke sagen, ich hab wirklich stundenlang gesucht um da irgendein Prinzip zu erkennen (hab zwar einige Erfahrung mit dem Einbauen von Hacks aber das ist halt auch nur einfaches kopieren zum Großteil). Jetzt ist das Teil auch 2.04 tauglich und funktioniert super.

Weil ich aber neugierig bin, kannst du mir das in Kurzfassung mal erklären was da eigentlich geändert wurde und was das für einen Sinn macht? Das alte einfache Laden nach der Nutzer ID war doch ok oder war da ein Sicherheitsloch?

Falls du etwas mehr Zeit hast, könntest Du mir auch beim Merge Mod die Zeilen irgendwie anzeigen die ich ändern müßte?

Die erste hatte ich sogar alleine hinbekommen (habs aber jetzt nicht gespeichert) aber dann kam noch ein Link und da war denn Schluss weil ich da nix gefunden hatte.

Wenn du keine Lust Zeit hast macht auch nichts, sooo wichtig ist dieser Mod nicht. Der andere war wichtiger. Bloß ist bei diesem genau der selbe Fehler an mindestens 2 Stellen. Eigentlich schade das es keine richtige gute Mod Datenbank gibt mit den aktuellen funktionierenden 2.04 er Mods (ich weiß es gibt die von phpBB.com aber die ist ziemlich leer und die meisten Mods schwirren in den Foren rum).
#
#-----[ COPY ]------------------------------------------
#
copy templates/subSilver/*.* to template/subSilver/
copy templates/subSilver/images/*.* to template/subSilver/images/

#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php

#
#-----[ FIND ]------------------------------------------
#
//
// That's all Folks!

#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Merge Topic MOD
$lang['Merge'] = 'Merge';
$lang['Topics_Merged'] = 'The selected topics have been merged';
$lang['No_Topics_Merged'] = 'No topics were merged';
$lang['Confirm_merge_topic'] = 'Are you sure you want to merge the selected topic/s?<br><span class=genmed>(Next you will select a target post to merge these into next)</span>';
$lang['Merge_to_forum'] = 'Merge to forum';
$lang['Merge_topic'] = 'Merge this topic';

$lang['Merge_post'] = 'Merge posts in this topic';
$lang['Merge_after'] = 'Merge from selected post';
$lang['Merge_posts'] = 'Merge selected posts';
$lang['Mod_CP_explain'] = 'Using the form below you can perform mass moderation operations on this forum. You can lock, unlock, move, merge or delete any number of topics.';
$lang['Mod_CP_merge_explain'] = 'Select the topic with which the topic/post has to merge';
$lang['Merge_Topic_explain'] = 'Using the form below you can merge posts to a topic, either by selecting the posts individually or by merging at a selected post';
$lang['Merge_post_topic'] = 'Merge posts into a topic';
$lang['Posts_Merged'] = 'The selected posts have been merged';

#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php

#
#-----[ FIND ]------------------------------------------
#
$topic_mod .= '<a href="' . append_sid("modcp.$phpEx?" . POST_TOPIC_URL . "=$topic_id&mode=move"). '"><img src="' . $images['topic_mod_move'] . '" alt="' . $lang['Move_topic'] . '" title="' . $lang['Move_topic'] . '" border="0" /></a>&nbsp;';

#
#-----[ AFTER, ADD ]------------------------------------------
#
$topic_mod .= '<a href="' . append_sid("modcp.$phpEx?" . POST_TOPIC_URL . "=$topic_id&mode=mergepost"). '"><img src="' . $images['topic_mod_merge'] . '" alt="' . $lang['Merge_post'] . '" title="' . $lang['Merge_post'] . '" border="0" /></a>&nbsp;';

#
#-----[ OPEN ]------------------------------------------
#
modcp.php

#
#-----[ FIND ]------------------------------------------
#
$unlock = ( isset($HTTP_POST_VARS['unlock']) ) ? TRUE : FALSE;

#
#-----[ AFTER, ADD ]------------------------------------------
#
// Merge topic MOD
$mergetopic = ( isset($HTTP_POST_VARS['mergetopic']) ) ? TRUE : FALSE;
$mergepost = ( isset($HTTP_POST_VARS['mergepost']) ) ? TRUE : FALSE;
// Merge topic MOD

#
#-----[ FIND ]------------------------------------------
#
$mode = 'move';
}

#
#-----[ AFTER, ADD ]------------------------------------------
#

else if ( $mergetopic )
{
$mode = 'mergetopic';
}
else if ( $mergepost )
{
$mode = 'mergepost';
}

#
#-----[ FIND ]------------------------------------------
#
case 'lock':

#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
// Merge Topic MOD - Begin
//
case 'mergetopic':
$page_title = $lang['Mod_CP'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$merge2 = ( isset($HTTP_POST_VARS['merge2']) ) ? TRUE : FALSE;
// this starts after you selected the forum to which the topic will be moved/merged
if ( $merge2 )
{

$new_forum_id = $HTTP_POST_VARS['new_forum'];

if ( isset($HTTP_POST_VARS['topic_id_list']) )
{
$topics = $HTTP_POST_VARS['topic_id_list'];
$topic_list = '';

for($i = 0; $i < count($topics); $i++)
{
$topic_list .= ( ( $topic_list != '' ) ? ', ' : '' ) . $topics[$i];
$hidden_fields .= '<input type="hidden" name="topic_id_list[]" value="' . intval($topics[$i]) . '" />';
}
}
else
{
$topic_list = $topic_id;
$hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
}
$hidden_fields .= '<input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
$hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
$hidden_fields .= '<input type="hidden" name="new_forum" value="' . $new_forum_id . '" />';

$template->assign_block_vars('switch_shadow_topic', array());

$template->assign_vars(array(
'FORUM_NAME' => $forum_name,

'L_MOD_CP' => $lang['Mod_CP'],
'L_MOD_CP_EXPLAIN' => $lang['Mod_CP_merge_explain'],
'L_SELECT' => $lang['Select'],
'L_MERGE' => $lang['Merge'],
'L_TOPICS' => $lang['Topics'],
'L_REPLIES' => $lang['Replies'],
'L_LASTPOST' => $lang['Last_Post'],
'L_SELECT' => $lang['Select'],
'L_LEAVESHADOW' => $lang['Leave_shadow_topic'],

'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"),
'S_HIDDEN_FIELDS' => $hidden_fields,
'S_MODCP_ACTION' => append_sid("modcp.$phpEx"))
);

$template->set_filenames(array(
'body' => 'modcp_merge_topicpost.tpl')
);

//
// Define censored word matches
//
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);

$sql = "SELECT t.*, u.username, u.user_id, p.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p
WHERE t.forum_id = $new_forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
AND t.topic_id NOT IN ($topic_list)
ORDER BY t.topic_type DESC, p.post_time DESC
LIMIT $start, " . $board_config['topics_per_page'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
}

while ( $row = $db->sql_fetchrow($result) )
{
$topic_title = '';

if ( $row['topic_status'] == TOPIC_LOCKED )
{
$folder_img = $images['folder_locked'];
$folder_alt = $lang['Topic_locked'];
}
else
{
if ( $row['topic_type'] == POST_ANNOUNCE )
{
$folder_img = $images['folder_announce'];
$folder_alt = $lang['Announcement'];
}
else if ( $row['topic_type'] == POST_STICKY )
{
$folder_img = $images['folder_sticky'];
$folder_alt = $lang['Sticky'];
}
else
{
$folder_img = $images['folder'];
$folder_alt = $lang['No_new_posts'];
}
}

$topic_id = $row['topic_id'];
$topic_type = $row['topic_type'];
$topic_status = $row['topic_status'];

if ( $topic_type == POST_ANNOUNCE )
{
$topic_type = $lang['Topic_Announcement'] . ' ';
}
else if ( $topic_type == POST_STICKY )
{
$topic_type = $lang['Topic_Sticky'] . ' ';
}
else if ( $topic_status == TOPIC_MOVED )
{
$topic_type = $lang['Topic_Moved'] . ' ';
}
else
{
$topic_type = '';
}

if ( $row['topic_vote'] )
{
$topic_type .= $lang['Topic_Poll'] . ' ';
}

$topic_title = $row['topic_title'];
if ( count($orig_word) )
{
$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
}

$u_view_topic = '';
$topic_replies = $row['topic_replies'];

$last_post_time = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);

$template->assign_block_vars('topicrow', array(
'U_VIEW_TOPIC' => $u_view_topic,

'TOPIC_FOLDER_IMG' => $folder_img,
'TOPIC_TYPE' => $topic_type,
'TOPIC_TITLE' => $topic_title,
'REPLIES' => $topic_replies,
'LAST_POST_TIME' => $last_post_time,
'TOPIC_ID' => $topic_id,

'L_TOPIC_FOLDER_ALT' => $folder_alt)
);
}

$template->assign_vars(array(
'PAGINATION' => generate_pagination("modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id", $forum_topics, $board_config['topics_per_page'], $start),
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $forum_topics / $board_config['topics_per_page'] )),
'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('body');
}
// After you selected the topic to merge with
else if ( $confirm )
{
// $leave_shadow = ( $HTTP_POST_VARS['merge_leave_shadow'] ) ? TRUE : 0;
if ( empty($HTTP_POST_VARS['topic_id_to']) )
{
message_die(GENERAL_MESSAGE, $lang['None_selected']);
}

$topic_id_to = $HTTP_POST_VARS['topic_id_to'];
$new_forum_id = $HTTP_POST_VARS['new_forum'];
$old_forum_id = $forum_id;

if ( $topic_id != $topic_id_to )
{
$topics = ( isset($HTTP_POST_VARS['topic_id_list']) ) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id);

$topic_list = '';
for($i = 0; $i < count($topics); $i++)
{
$topic_list .= ( ( $topic_list != '' ) ? ', ' : '' ) . $topics[$i];
}

$sql = "SELECT *
FROM " . TOPICS_TABLE . "
WHERE topic_id IN ($topic_list)
AND topic_status <> " . TOPIC_MOVED;
if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
{
message_die(GENERAL_ERROR, 'Could not select from topic table', '', __LINE__, __FILE__, $sql);
}

$row = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);

for($i = 0; $i < count($row); $i++)
{
$topic_id = $row[$i]['topic_id'];

if ( isset($HTTP_POST_VARS['merge_leave_shadow']) )
{
// Insert topic in the old forum that indicates that the forum has moved.
$sql = "INSERT INTO " . TOPICS_TABLE . " (forum_id, topic_title, topic_poster, topic_time, topic_status, topic_type, topic_vote, topic_views, topic_replies, topic_first_post_id, topic_last_post_id, topic_moved_id)
VALUES ($old_forum_id, '" . addslashes(str_replace("\'", "''", $row[$i]['topic_title'])) . "', '" . str_replace("\'", "''", $row[$i]['topic_poster']) . "', " . $row[$i]['topic_time'] . ", " . TOPIC_MOVED . ", " . POST_NORMAL . ", " . $row[$i]['topic_vote'] . ", " . $row[$i]['topic_views'] . ", " . $row[$i]['topic_replies'] . ", " . $row[$i]['topic_first_post_id'] . ", " . $row[$i]['topic_last_post_id'] . ", $topic_id_to)";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not insert shadow topic', '', __LINE__, __FILE__, $sql);
}
}

$sql = "DELETE
FROM " . TOPICS_TABLE . "
WHERE topic_id = $topic_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete old topic', '', __LINE__, __FILE__, $sql);
}

$sql = "UPDATE " . POSTS_TABLE . "
SET forum_id = $new_forum_id, topic_id = $topic_id_to
WHERE topic_id = $topic_id";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update post topic ids', '', __LINE__, __FILE__, $sql);
}
}

// Sync the forum indexes
sync('forum', $new_forum_id);
sync('forum', $old_forum_id);
sync('topic', $topic_id_to);
$message = $lang['Topics_Merged'] . '<br /><br />';

}
else
{
$message = $lang['No_Topics_Merged'] . '<br /><br />';
}

if ( !empty($topic_id) )
{
$redirect_page = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id_to");
$message .= sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>');
}
else
{
$redirect_page = append_sid("modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id");
$message .= sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>');
}

$message = $message . '<br \><br \>' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$old_forum_id") . '">', '</a>');

$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">')
);

message_die(GENERAL_MESSAGE, $message);
}
// Here you select the forum is has to merge to
else
{
if ( empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id) )
{
message_die(GENERAL_MESSAGE, $lang['None_selected']);
}

$hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';

if ( isset($HTTP_POST_VARS['topic_id_list']) )
{
$topics = $HTTP_POST_VARS['topic_id_list'];

for($i = 0; $i < count($topics); $i++)
{
$hidden_fields .= '<input type="hidden" name="topic_id_list[]" value="' . intval($topics[$i]) . '" />';
}
}
else
{
$hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
}

//
// Set template files
//
$template->set_filenames(array(
'movetopic' => 'modcp_merge_topic.tpl')
);

$template->assign_vars(array(
'MESSAGE_TITLE' => $lang['Confirm'],
'MESSAGE_TEXT' => $lang['Confirm_merge_topic'],

'L_MERGE_TO_FORUM' => $lang['Merge_to_forum'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],

'S_FORUM_SELECT' => make_forum_select('new_forum'),
'S_MODCP_ACTION' => append_sid("modcp.$phpEx"),
'S_HIDDEN_FIELDS' => $hidden_fields)
);

$template->pparse('movetopic');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
break;
case 'mergepost':
$page_title = $lang['Mod_CP'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
if ( $confirm )
{

if ( empty($HTTP_POST_VARS['topic_id_to']) )
{
message_die(GENERAL_MESSAGE, $lang['None_selected']);
}

$topic_id_to = $HTTP_POST_VARS['topic_id_to'];
$new_forum_id = $HTTP_POST_VARS['new_forum_id'];
$old_forum_id = $forum_id;

$posts = $HTTP_POST_VARS['post_id_list'];

$sql = "SELECT poster_id, topic_id, post_time
FROM " . POSTS_TABLE . "
WHERE post_id = " . $posts[0];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get post information', '', __LINE__, __FILE__, $sql);
}

$post_rowset = $db->sql_fetchrow($result);
$post_time = $post_rowset['post_time'];

if( !empty($HTTP_POST_VARS['merge_type_all']) )
{
$post_id_sql = '';
for($i = 0; $i < count($posts); $i++)
{
$post_id_sql .= ( ( $post_id_sql != '' ) ? ', ' : '' ) . $posts[$i];
}

$sql = "UPDATE " . POSTS_TABLE . "
SET topic_id = $topic_id_to, forum_id = $new_forum_id
WHERE post_id IN ($post_id_sql)";
}
else if( !empty($HTTP_POST_VARS['merge_type_beyond']) )
{
$sql = "UPDATE " . POSTS_TABLE . "
SET topic_id = $topic_id_to, forum_id = $new_forum_id
WHERE post_time >= $post_time
AND topic_id = $topic_id";
}

if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update posts table', '', __LINE__, __FILE__, $sql);
}

sync('topic', $topic_id_to);
sync('topic', $topic_id);
sync('forum', $new_forum_id);
sync('forum', $old_forum_id);

$template->assign_vars(array(
'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">')
);

$message = $lang['Posts_Merged'] . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
// Step 1 - Pic topic to merge to
else if ( isset($HTTP_POST_VARS['merge_type_all']) || isset($HTTP_POST_VARS['merge_type_beyond']) )
{
$posts = $HTTP_POST_VARS['post_id_list'];
$new_forum_id = $HTTP_POST_VARS['new_forum_id'];

if ( isset($HTTP_POST_VARS['post_id_list']) )
{
$posts = $HTTP_POST_VARS['post_id_list'];
$posts_list = '';

for($i = 0; $i < count($posts); $i++)
{
$posts_list .= ( ( $posts_list != '' ) ? ', ' : '' ) . $posts[$i];
$hidden_fields .= '<input type="hidden" name="post_id_list[]" value="' . intval($posts[$i]) . '" />';
}
}
else
{
$posts_list = $post_id;
$hidden_fields .= '<input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '" />';
}
$hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
$hidden_fields .= '<input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
$hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
$hidden_fields .= '<input type="hidden" name="new_forum_id" value="' . $new_forum_id . '" />';
$hidden_fields .= '<input type="hidden" name="merge_type_all" value="' . $HTTP_POST_VARS['merge_type_all'] . '" />';
$hidden_fields .= '<input type="hidden" name="merge_type_beyond" value="' . $HTTP_POST_VARS['merge_type_beyond'] . '" />';
$template->assign_vars(array(
'FORUM_NAME' => $forum_name,

'L_MOD_CP' => $lang['Mod_CP'],
'L_MOD_CP_EXPLAIN' => $lang['Mod_CP_explain'],
'L_SELECT' => $lang['Select'],
'L_MERGE' => $lang['Merge'],
'L_TOPICS' => $lang['Topics'],
'L_REPLIES' => $lang['Replies'],
'L_LASTPOST' => $lang['Last_Post'],
'L_SELECT' => $lang['Select'],

'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"),
'S_HIDDEN_FIELDS' => $hidden_fields,
'S_MODCP_ACTION' => append_sid("modcp.$phpEx"))
);

$template->set_filenames(array(
'body' => 'modcp_merge_topicpost.tpl')
);

//
// Define censored word matches
//
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
//AND t.topic_id NOT IN ($topic_list)
$sql = "SELECT t.*, u.username, u.user_id, p.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p
WHERE t.forum_id = $new_forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
AND t.topic_id != $topic_id
ORDER BY t.topic_type DESC, p.post_time DESC
LIMIT $start, " . $board_config['topics_per_page'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
}

while ( $row = $db->sql_fetchrow($result) )
{
$topic_title = '';

if ( $row['topic_status'] == TOPIC_LOCKED )
{
$folder_img = $images['folder_locked'];
$folder_alt = $lang['Topic_locked'];
}
else
{
if ( $row['topic_type'] == POST_ANNOUNCE )
{
$folder_img = $images['folder_announce'];
$folder_alt = $lang['Announcement'];
}
else if ( $row['topic_type'] == POST_STICKY )
{
$folder_img = $images['folder_sticky'];
$folder_alt = $lang['Sticky'];
}
else
{
$folder_img = $images['folder'];
$folder_alt = $lang['No_new_posts'];
}
}

$topic_id = $row['topic_id'];
$topic_type = $row['topic_type'];
$topic_status = $row['topic_status'];

if ( $topic_type == POST_ANNOUNCE )
{
$topic_type = $lang['Topic_Announcement'] . ' ';
}
else if ( $topic_type == POST_STICKY )
{
$topic_type = $lang['Topic_Sticky'] . ' ';
}
else if ( $topic_status == TOPIC_MOVED )
{
$topic_type = $lang['Topic_Moved'] . ' ';
}
else
{
$topic_type = '';
}

if ( $row['topic_vote'] )
{
$topic_type .= $lang['Topic_Poll'] . ' ';
}

$topic_title = $row['topic_title'];
if ( count($orig_word) )
{
$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
}

$u_view_topic = '';
$topic_replies = $row['topic_replies'];

$last_post_time = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);

$template->assign_block_vars('topicrow', array(
'U_VIEW_TOPIC' => $u_view_topic,

'TOPIC_FOLDER_IMG' => $folder_img,
'TOPIC_TYPE' => $topic_type,
'TOPIC_TITLE' => $topic_title,
'REPLIES' => $topic_replies,
'LAST_POST_TIME' => $last_post_time,
'TOPIC_ID' => $topic_id,

'L_TOPIC_FOLDER_ALT' => $folder_alt)
);
}

$template->assign_vars(array(
'PAGINATION' => generate_pagination("modcp.$phpEx?" . POST_FORUM_URL . "=$forum_id", $forum_topics, $board_config['topics_per_page'], $start),
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $forum_topics / $board_config['topics_per_page'] )),
'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('body');
}

else
{ // Step 0 - select the post you want to merge
//
// Set template files
//
$template->set_filenames(array(
'merge_post_body' => 'modcp_merge_post.tpl')
);

$sql = "SELECT u.username, p.*, pt.post_text, pt.bbcode_uid, pt.post_subject, p.post_username
FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
WHERE p.topic_id = $topic_id
AND p.poster_id = u.user_id
AND p.post_id = pt.post_id
ORDER BY p.post_time ASC";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get topic/post information', '', __LINE__, __FILE__, $sql);
}

$s_hidden_fields = '<input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" /><input type="hidden" name="mode" value="mergepost" />';
$s_hidden_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
if( ( $total_posts = $db->sql_numrows($result) ) > 0 )
{
$postrow = $db->sql_fetchrowset($result);

$template->assign_vars(array(
'L_MERGE_TOPIC' => $lang['Merge_Topic'],
'L_MERGE_TOPIC_EXPLAIN' => $lang['Merge_Topic_explain'],
'L_AUTHOR' => $lang['Author'],
'L_MESSAGE' => $lang['Message'],
'L_SELECT' => $lang['Select'],
'L_MERGE_TO_FORUM' => $lang['Merge_to_forum'],
'L_MERGE_POST_TOPIC' => $lang['Merge_post_topic'],
'L_POSTED' => $lang['Posted'],
'L_MERGE_POSTS' => $lang['Merge_posts'],
'L_SUBMIT' => $lang['Submit'],
'L_MERGE_AFTER' => $lang['Merge_after'],
'L_MARK_ALL' => $lang['Mark_all'],
'L_UNMARK_ALL' => $lang['Unmark_all'],
'L_POST' => $lang['Post'],

'FORUM_NAME' => $forum_name,

'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"),

'S_MERGE_ACTION' => append_sid("modcp.$phpEx"),
'S_HIDDEN_FIELDS' => $s_hidden_fields,
'S_FORUM_SELECT' => make_forum_select("new_forum_id"))
);

for($i = 0; $i < $total_posts; $i++)
{
$post_id = $postrow[$i]['post_id'];
$poster_id = $postrow[$i]['user_id'];
$poster = $postrow[$i]['username'];

$post_date = create_date($board_config['default_dateformat'], $postrow[$i]['post_time'], $board_config['board_timezone']);

$bbcode_uid = $postrow[$i]['bbcode_uid'];
$message = $postrow[$i]['post_text'];
$post_subject = ( $postrow[$i]['post_subject'] != '' ) ? $postrow[$i]['post_subject'] : $topic_title;

//
// If the board has HTML off but the post has HTML
// on then we process it, else leave it alone
//
if ( !$board_config['allow_html'] )
{
if ( $postrow[$i]['enable_html'] )
{
$message = preg_replace('#(<)([\/]?.*?)(>)#is', '<\\2>', $message);
}
}

if ( $bbcode_uid != '' )
{
$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
}

//
// Define censored word matches
//
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);

if ( count($orig_word) )
{
$post_subject = preg_replace($orig_word, $replacement_word, $post_subject);
$message = preg_replace($orig_word, $replacement_word, $message);
}

$message = make_clickable($message);

if ( $board_config['allow_smilies'] && $postrow[$i]['enable_smilies'] )
{
$message = smilies_pass($message);
}

$message = str_replace("\n", '<br />', $message);

$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

$checkbox = ( $i > 0 ) ? '<input type="checkbox" name="post_id_list[]" value="' . $post_id . '" />' : '&nbsp;';

$template->assign_block_vars('postrow', array(
'ROW_COLOR' => '#' . $row_color,
'ROW_CLASS' => $row_class,
'POSTER_NAME' => $poster,
'POST_DATE' => $post_date,
'POST_SUBJECT' => $post_subject,
'MESSAGE' => $message,
'POST_ID' => $post_id,

'S_MERGE_CHECKBOX' => $checkbox)
);
}

$template->pparse('merge_post_body');
}
}
break;
//
// Merge Topic MOD - End
//

#
#-----[ FIND ]------------------------------------------
#
'L_REPLIES' => $lang['Replies'],
'L_LASTPOST' => $lang['Last_Post'],
'L_SELECT' => $lang['Select'],

#
#-----[ AFTER, ADD ]------------------------------------------
#
'L_MERGE' => $lang['Merge'],

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/subSilver.cfg

#
#-----[ FIND ]------------------------------------------
#
$images['topic_mod_move'] = "$current_template_images/topic_move.gif";

#
#-----[ AFTER, ADD ]------------------------------------------
#
$images['topic_mod_merge'] = "$current_template_images/topic_merge.gif";

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/modcp_body.tpl

#
#-----[ FIND ]------------------------------------------
#
<input type="submit" name="move" class="liteoption" value="{L_MOVE}" />
&nbsp;

#
#-----[ AFTER, ADD ]------------------------------------------
#
<input type="submit" name="mergetopic" class="liteoption" value="{L_MERGE}" />
&nbsp;

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Gastschreiber

Beitrag von Gastschreiber »

Uii sehe gerade das Teil ist doch länger als gedacht. Wie gesagt wenn keine Lust/ Zeit hast macht überhaupt nichts. Vielleicht wär es aber für`s Forum ganz schön wenn man die aktuell funktionierenden Mods wo man geholfen hat und weiß das die klappen, irgendwo im Mod Forum oder so oben festsetzt dann braucht man nciht immer auf die selben Fragen antwortn weil ja die meisten die selben Probleme bekommen.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

http://www.phpbb.com/phpBB/viewtopic.php?t=75101
..da arbeitet scho jemand dran, scheint zwar noch ned ganz ausgereift zu sein, aber wenn, dann findest Du in dem Topic die neue Version.
Antworten

Zurück zu „phpBB 2.0: Mod Support“