Napsal jsem si modifikaci phpBB2 pro přesunutí nebo zkopírování jednotlivého příspěvku do jiného tématu.
Máte-li oprávnění upravovat příspěvek (tj. jste-li jeho autor, moderátor nebo administrátor),objeví se v jeho záhlaví ikona pro přesun tohoto příspěvku do jiného tématu.
Po klepnutí vyberte cílové fórum a v třetím kroku i téma, do kterého
chcete příspěvek zkopírovat nebo přesunout.
Přesun se neprovede, pokud nemáte oprávnění vkládat nové příspěvky do cílového fóra.
Mod pro přesun příspěvku mezi tématy
A tady je slíbený ModCopyPost:
Kód: Vybrat vše
##############################################################
## MOD Name: ModCopyPost
## MOD Title: Copy/move a single post to any topic
## MOD Author: vit$oft http://www.vitsoft.info/
## MOD Description: This modification of phpBB2 allows
## the author or moderator to copy or move
## a single post to any other topic
## where (s)he has write-permission.
## MOD Version: 2008.09.21
## Tested With: phpBB 2.0.22, MySQL 5.0.24, PHP 5.16
## Files To Edit: language/lang_english/lang_faq.php
## language/lang_czech/lang_faq.php
## language/lang_english/lang_main.php
## language/lang_czech/lang_main.php
## templates/subSilver/viewtopic_body.tpl
## templates/Acid/viewtopic_body.tpl
## viewtopic.php
## posting.php
## Included Files: -
## License: Public Domain
##############################################################
## Author Notes: Modify additional corresponding files
## if your phpBB uses other languages beside English and Czech
## and other skins beside subSilver and Acid.
##
## Mod expects HTML and BBcode be enabled in posting.
## Neither did I bother with moving votes together with the 1st post,
## notifying users about moved posts by email,
## updating the search_wordlist, LastPost indication etc.
## Feel free to enhance this mod, if you wish to.
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_faq.php
#
#-----[ FIND ]------------------------------------------
#
$faq[] = array("How do I create a poll?"
#
#-----[ BEFORE, ADD ]------------------------------------------
$faq[] = array("How do I move a post to other topic",
"If you have permission to edit your post (i.e. you are the author, moderator or admin),
you'll notice an icon <img src='templates/subSilver/images/topic_move.gif'/>
in the post header. After click on that icon select the target forum and topic
to move or copy your post to.<br/>
Copying will fail if you do not have write-permission to the target topic.");
#
#-----[ OPEN ]------------------------------------------
#
language/lang_czech/lang_faq.php
#
#-----[ FIND ]------------------------------------------
#
$faq[] = array('Jak vytvořím hlasování?'
#
#-----[ BEFORE, ADD ]------------------------------------------
$faq[] = array('Jak přesunu příspěvek jinam?',
'Máte-li oprávnění upravovat příspěvek (tj. jste-li jeho autor, moderátor nebo administrátor),
objeví se v jeho záhlaví ikona pro přesun tohoto příspěvku do jiného tématu
<img src="templates/subSilver/images/topic_move.gif"/>.
Po klepnutí vyberte cílové fórum a ve třetím kroku i téma, do kterého
chcete příspěvek zkopírovat nebo přesunout.<br/>
Přesun se neprovede, pokud nemáte oprávnění vkládat nové příspěvky do cílového fóra.');
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['Options']
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['ModCopyPost'] = 'Copy or move to another topic';
$lang['Perform'] = 'Perform';
$lang['Select_forum_to_copy'] = 'Select forum to copy to:';
$lang['Select_topic_to_copy'] = 'Select topic to copy to:';
$lang['ModCopyPostNoForumSelected'] = 'You did not select a forum.';
$lang['ModCopyPostNoTopicSelected'] = 'You did not select a topic.';
$lang['ModCopyPostDisp'] = 'What to do with original post:';
$lang['ModCopyPostDispCopy'] = 'leave untouched';
$lang['ModCopyPostDispCopyNote'] = 'append a note where it was copied to';
$lang['ModCopyPostDispMove'] = 'delete';
$lang['ModCopyPostDispMoveNote'] = 'replace with a note where it was moved to';
$lang['ModCopyPostMoved'] = 'This post was moved';
$lang['ModCopyPostCopied'] = 'This post was copied';
$lang['ModCopyPostBy'] = 'by';
#
#-----[ OPEN ]------------------------------------------
#
language/lang_czech/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['Options']
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['ModCopyPost'] = 'Přesunout jinam';
$lang['Perform'] = 'Provést';
$lang['Select_forum_to_copy'] = 'Vyberte fórum, kam příspěvek přesunout:';
$lang['Select_topic_to_copy'] = 'Vyberte téma, kam příspěvek přesunout:';
$lang['ModCopyPostNoForumSelected'] = 'Zapoměli jste vybrat fórum.';
$lang['ModCopyPostNoTopicSelected'] = 'Zapoměli jste vybrat téma.';
$lang['ModCopyPostDisp'] = 'Co s původním příspěvkem:';
$lang['ModCopyPostDispCopy'] = 'ponechat beze změny';
$lang['ModCopyPostDispCopyNote'] = 'doplnit poznámkou, kam byl zkopírován';
$lang['ModCopyPostDispMove'] = 'vymazat';
$lang['ModCopyPostDispMoveNote'] = 'nahradit poznámkou, kam byl přesunut';
$lang['ModCopyPostMoved'] = 'Příspěvek byl přesunut';
$lang['ModCopyPostCopied'] = 'Příspěvek byl zkopírován';
$lang['ModCopyPostBy'] = 'uživatelem';
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/viewtopic_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<td valign="top" nowrap="nowrap">{postrow.QUOTE_IMG} {postrow.EDIT_IMG} {postrow.DELETE_IMG} {postrow.IP_IMG}</td>
#
#-----[ REPLACE WITH ]------------------------------------------
#
<td valign="top" nowrap="nowrap">{postrow.QUOTE_IMG} {postrow.EDIT_IMG} {postrow.MODCOPYPOST_IMG} {postrow.DELETE_IMG} {postrow.IP_IMG}</td>
#
#-----[ OPEN ]------------------------------------------
#
templates/Acid/viewtopic_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<td valign="top" nowrap="nowrap">{postrow.QUOTE_IMG} {postrow.EDIT_IMG} {postrow.DELETE_IMG} {postrow.IP_IMG}</td>
#
#-----[ REPLACE WITH ]------------------------------------------
#
<td valign="top" nowrap="nowrap">{postrow.QUOTE_IMG} {postrow.EDIT_IMG} {postrow.MODCOPYPOST_IMG} {postrow.DELETE_IMG} {postrow.IP_IMG}</td>
#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php
#
#-----[ FIND ]------------------------------------------
#
$edit = '<a href="' . $temp_url . '">' . $lang['Edit_delete_post'] . '</a>';
#
#-----[ AFTER, ADD ]------------------------------------------
#
$temp_url = append_sid("posting.$phpEx?mode=ModCopyPost&" .
POST_POST_URL . "=" . $postrow[$i]['post_id']);
$ModCopyPost_img = '<a href="' . $temp_url . '"><img src="' . $images['topic_mod_move'] .
'" alt="' . $lang['ModCopyPost'] . '" title="' . $lang['ModCopyPost'] . '" border="0" /></a>';
$ModCopyPost = '<a href="' . $temp_url . '">' . $lang['ModCopyPost'] . '</a>';
#
#-----[ FIND ]------------------------------------------
#
$edit = '';
#
#-----[ AFTER, ADD ]------------------------------------------
#
$ModCopyPost_img = '';
$ModCopyPost = '';
#
#-----[ FIND ]------------------------------------------
#
'EDIT' => $edit,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'MODCOPYPOST_IMG' => $ModCopyPost_img,
'MODCOPYPOST' => $ModCopyPost,
#
#-----[ OPEN ]------------------------------------------
#
posting.php
#
#-----[ FIND ]------------------------------------------
#
'poll_edit' => 'edit_poll_option', 'mode' => 'mode');
#
#-----[ AFTER, ADD ]------------------------------------------
#
$params['ModCopyPostForum']='ModCopyPostForum';
$params['ModCopyPostTopic']='ModCopyPostTopic';
$params['ModCopyPostDisp']='ModCopyPostDisp';
#
#-----[ FIND ]------------------------------------------
#
$is_auth_type = 'auth_edit';
#
#-----[ BEFORE, ADD ]------------------------------------------
#
case 'ModCopyPost':
case 'ModCopyPostSelectForum':
case 'ModCopyPostSelectTopic':
case 'ModCopyPostPerform':
#
#-----[ FIND ]------------------------------------------
#
case 'quote':
case 'editpost':
case 'delete':
#
#-----[ BEFORE, ADD ]------------------------------------------
#
case 'ModCopyPost': // user clicked on CopyPost icon
$message = "
<form action='posting.php'>
<input type='hidden' name='mode' value='ModCopyPostSelectTopic'/>
<input type='hidden' name='" . POST_POST_URL . "' value='$post_id'/>
<select name='ModCopyPostForum'>
<option value='0'>".$lang['Select_forum_to_copy']."</option>";
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f
WHERE f.cat_id = c.cat_id
GROUP BY c.cat_id, c.cat_title, c.cat_order
ORDER BY c.cat_order";
if ( !($category_rows = $db->sql_query($sql)) )
message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql);
$sql = "SELECT *
FROM " . FORUMS_TABLE . "
ORDER BY cat_id, forum_order";
while ( $category_row = $db->sql_fetchrow($category_rows) )
{$message.="\r\n<optgroup label='".$category_row['cat_title']."'>";
if ( !($forum_rows = $db->sql_query($sql)) )
message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
while ( $forum_row = $db->sql_fetchrow($forum_rows) )
if ($forum_row['cat_id']==$category_row['cat_id'])
$message.="\r\n<option value='".$forum_row['forum_id']."'>".$forum_row['forum_name']."</option>";
} $message.="</select>
<input type='submit' name='ModCopyPostSelectForum' value='".$lang['Select_forum']."'/>
</form>";
message_die(GENERAL_MESSAGE,$message);
case 'ModCopyPostSelectTopic': // user selected forum to copy to
if (!$ModCopyPostForum) message_die(GENERAL_MESSAGE,$lang['ModCopyPostNoForumSelected']);
$is_auth = auth($AUTH_POST,$ModCopyPostForum,$userdata); if (!$is_auth['auth_post'])
message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_post'], $is_auth['auth_post_type']));
$message = "
<form action='posting.php'>
<input type='hidden' name='mode' value='ModCopyPostPerform'/>
<input type='hidden' name='ModCopyPostForum' value='$ModCopyPostForum'/>
<input type='hidden' name='" . POST_POST_URL . "' value='$post_id'/>
<p style='padding-left:24em;text-align:left;'>".$lang['ModCopyPostDisp']."
<br/><input type='radio' name='ModCopyPostDisp' value='Copy' />".$lang['ModCopyPostDispCopy']."
<br/><input type='radio' name='ModCopyPostDisp' value='CopyNote' checked='checked' />".$lang['ModCopyPostDispCopyNote']."
<br/><input type='radio' name='ModCopyPostDisp' value='Move' />".$lang['ModCopyPostDispMove']."
<br/><input type='radio' name='ModCopyPostDisp' value='MoveNote' />".$lang['ModCopyPostDispMoveNote']."</p>
<select name='ModCopyPostTopic'>
<option value='0'>".$lang['Select_topic_to_copy']."</option>\r\n";
$sql = "SELECT forum_name FROM ".FORUMS_TABLE." WHERE forum_id = $ModCopyPostForum";
if (!$DestForumInfo = $db->sql_fetchrow($db->sql_query($sql)))
message_die(GENERAL_ERROR, "Couldn't get forum information", "", __LINE__, __FILE__, $sql);
$message.="<optgroup label='".$DestForumInfo['forum_name']."'>\r\n";
$sql = "SELECT t.topic_id, t.forum_id, t.topic_title
FROM " . TOPICS_TABLE . " t
WHERE t.forum_id = $ModCopyPostForum";
if ( !($topics_rows = $db->sql_query($sql)) )
message_die(GENERAL_ERROR, "Couldn't obtain topics list.", "", __LINE__, __FILE__, $sql);
while ($topics_row = $db->sql_fetchrow($topics_rows) )
$message.="<option value='".$topics_row['topic_id']."'>".$topics_row['topic_title']."</option>\r\n";
$message.="</select>
<input type='submit' name='ModCopyPostPerform' value='".$lang['Perform']."'/></form>";
message_die(GENERAL_MESSAGE,$message);
case 'ModCopyPostPerform': // user selected disposition and topic to copy to
$is_auth = auth($AUTH_POST,$ModCopyPostForum,$userdata); if (!$is_auth['auth_post'])
message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_auth_post'], $is_auth['auth_post_type']));
if (!$ModCopyPostTopic) message_die(GENERAL_MESSAGE,$lang['ModCopyPostNoTopicSelected']);
$sql = "SELECT * FROM ".POSTS_TABLE." WHERE post_id = $post_id";
if (!$SrcPostsInfo = $db->sql_fetchrow($db->sql_query($sql)))
message_die(GENERAL_ERROR, "Couldn't get posts information", "", __LINE__, __FILE__, $sql);
$SrcTopicId = $SrcPostsInfo['topic_id'];
$sql = "SELECT topic_title FROM ".TOPICS_TABLE." WHERE topic_id = $SrcTopicId";
if (!$SrcTopicsInfo = $db->sql_fetchrow($db->sql_query($sql)))
message_die(GENERAL_ERROR, "Couldn't get topics information", "", __LINE__, __FILE__, $sql);
$SrcTopicsTitle = $SrcTopicsInfo['topic_title'];
$sql = "SELECT topic_title FROM ".TOPICS_TABLE." WHERE topic_id = $ModCopyPostTopic";
if (!$DestTopicsInfo = $db->sql_fetchrow($db->sql_query($sql)))
message_die(GENERAL_ERROR, "Couldn't get topics information", "", __LINE__, __FILE__, $sql);
$DestTopicsTitle = $DestTopicsInfo['topic_title'];
$sql = "SELECT * FROM ".POSTS_TEXT_TABLE." WHERE post_id = $post_id";
if (!$SrcPostsTextInfo = $db->sql_fetchrow($db->sql_query($sql)))
message_die(GENERAL_ERROR, "Couldn't get posts_text information", "", __LINE__, __FILE__, $sql);
$SrcBbcodeUid=$SrcPostsTextInfo['bbcode_uid'];
$ModCopyPostNote="\r\n";
$ModCopyPostNote.=$ModCopyPostDisp=='Copy'||$ModCopyPostDisp=='CopyNote'?$lang['ModCopyPostCopied']:
$lang['ModCopyPostMoved'];
$ModCopyPostNote.=date(" j.n.Y H:i ").$lang['ModCopyPostBy']." <b>".$userdata['username']."</b>
<a href='viewtopic.php?".POST_TOPIC_URL."=$SrcTopicId'>$SrcTopicsTitle</a> -> <a href='viewtopic.php?".
POST_TOPIC_URL."=$ModCopyPostTopic'>$DestTopicsTitle</a>";
$ModCopyPostNotePrepared=prepare_message("<br><hr>[size=10:$SrcBbcodeUid][color=#808080:$SrcBbcodeUid]".
$ModCopyPostNote."[/color:$SrcBbcodeUid][/size:$SrcBbcodeUid]",1,0,0,$SrcBbcodeUid);
$SrcPostSubjectPrepared=prepare_message(unprepare_message($SrcPostsTextInfo['post_subject']),0,0,0,0);
$SrcPostTextPrepared=prepare_message(unprepare_message($SrcPostsTextInfo['post_text']),$SrcPostsInfo['enable_html'],
$SrcPostsInfo['enable_bbcode'],$SrcPostsInfo['enable_smilies'],$SrcBbcodeUid);
switch ($ModCopyPostDisp)
{case 'Copy': case 'CopyNote':
$sql="INSERT INTO ".POSTS_TABLE."(topic_id,forum_id,poster_id,post_time,poster_ip,post_username,enable_bbcode,
enable_html,enable_smilies,enable_sig,post_edit_time,post_edit_count)
VALUES ($ModCopyPostTopic,$ModCopyPostForum,".$SrcPostsInfo['poster_id'].",".$SrcPostsInfo['post_time'] .
",'".$SrcPostsInfo['poster_ip']."','".$SrcPostsInfo['post_username']."',".$SrcPostsInfo['enable_bbcode'].",".
$SrcPostsInfo['enable_html'].",".$SrcPostsInfo['enable_smilies'].",".$SrcPostsInfo['enable_sig'].",'".
$SrcPostsInfo['post_edit_time']."',".$SrcPostsInfo['post_edit_count'].")";
if (!$db->sql_query($sql)) message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
$DestPostId = $db->sql_nextid();
$sql="INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, bbcode_uid, post_subject, post_text)
VALUES ($DestPostId,'".$SrcPostsTextInfo['bbcode_uid']."','$SrcPostSubjectPrepared','$SrcPostTextPrepared')";
if (!$db->sql_query($sql)) message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
if ($ModCopyPostDisp=='CopyNote')
{$sql="UPDATE ".POSTS_TEXT_TABLE." SET post_text = '$SrcPostTextPrepared$ModCopyPostNotePrepared'
WHERE post_id = $post_id";
if (!$db->sql_query($sql)) message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}; break;
case 'Move': case 'MoveNote':
$sql="UPDATE ".POSTS_TABLE." SET forum_id = $ModCopyPostForum, topic_id = $ModCopyPostTopic WHERE post_id = $post_id";
if(!$db->sql_query($sql)) message_die(GENERAL_ERROR,"Couldn't update forum information","",__LINE__,__FILE__,$sql);
if ($ModCopyPostDisp=='MoveNote')
{$sql="INSERT INTO ".POSTS_TABLE."(topic_id,forum_id,poster_id,post_time,poster_ip,post_username,enable_bbcode,
enable_html,enable_smilies,enable_sig,post_edit_time,post_edit_count)
VALUES (".$SrcPostsInfo['topic_id'].",".$SrcPostsInfo['forum_id'].",".$SrcPostsInfo['poster_id'].",".
$SrcPostsInfo['post_time'].",'".$SrcPostsInfo['poster_ip']."','".$SrcPostsInfo['post_username']."',1,1,1,0,'',0)";
if (!$db->sql_query($sql)) message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
$SrcPostId = $db->sql_nextid();
$sql="INSERT INTO ".POSTS_TEXT_TABLE." (post_id,bbcode_uid,post_subject,post_text)
VALUES ($SrcPostId,'$SrcBbcodeUid','$SrcPostSubjectPrepared','$ModCopyPostNotePrepared')";
if (!$db->sql_query($sql)) message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}; break; default: message_die(GENERAL_MESSAGE, "Bad ModCopyPostDisp='$ModCopyPostDisp'");
} // endswitch ($ModCopyPostDisp)
message_die(GENERAL_MESSAGE,$message.$ModCopyPostNote);
#
#####end
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM