Nikela |
Отправлено: 12 февраля 2011 — 00:19
|
Advanced Member
Покинул форум
Сообщений всего: 254
Дата рег-ции: Нояб. 2010
Откуда: Минск
Репутация: 10
|
lisiycat, действительно может решить.
Например смотрите: создалось 2 одинаковых темы (начальная и тема-дубль). Я беру в начальной теме создаю сообщение, в которое копирую временно под своим авторством текст из 1поста темы-дубля, затем в эту начальную тему забрасываю все остальные сообщения из темы-дубля, которые и так переносятся (только все никак не выйдет мод, чтобы они корректно датировались ) и потом беру и изменяю в своем скопированном посте автора, на того, кто создал тему-дубль.
Скачала, только вот установить его вряд ли получится, т.к. там идет замена файлов, которые уже правлены были мной не раз, из-за установки других модов. Было бы здорово, чтобы Юрий сделал стандартную инструкцию по установке мода, т.к. это хоть какое-то, но все-таки решение серьезной проблемы по склейке тем.(Отредактировано автором: 12 февраля 2011 — 00:53) |
|
|
Nikela |
Отправлено: 13 февраля 2011 — 20:41
|
Advanced Member
Покинул форум
Сообщений всего: 254
Дата рег-ции: Нояб. 2010
Откуда: Минск
Репутация: 10
|
electron пишет:Nikela , в архиве есть файл chownposts.diff - это и есть инструкция по установке
electron, спасибо, блин, ну разве можно догадаться что там инструкция ...
Я, наверное, полный нуб (хотя как-то ж большинство модов установила), но ткните меня носом в строки, где описано что надо делать в этом файле:
Спойлер (Отобразить)CODE:diff -U 3 -H -b -w -B -E -d -r -X /var/virtualhosts/alohomora/www/diffexclude.txt -- ExBB_FM_1.0_RC1/javascript/topicmoder.js ExBB_FM_1.0_RC1_with_chownposts/javascript/topicmoder.js
--- ExBB_FM_1.0_RC1/javascript/topicmoder.js 2007-01-15 03:31:32.000000000 +0300
+++ ExBB_FM_1.0_RC1_with_chownposts/javascript/topicmoder.js 2010-03-07 05:48:25.795721302 +0300
@@ -19,7 +19,7 @@
function CheckFormAction() {
act = document.ModOptions.action;
- if (act.value == 'delselected' || act.value == 'innew' || act.value == 'inexists' || act.value == 'delattach'){
+ if (act.value == 'delselected' || act.value == 'innew' || act.value == 'inexists' || act.value == 'delattach'|| act.value == 'chown'){
el = document.getElementsByTagName('input');
arr = ''; ii = 0;
for (var i = 0; i < el.length; i++){
diff -U 3 -H -b -w -B -E -d -r -X /var/virtualhosts/alohomora/www/diffexclude.txt -- ExBB_FM_1.0_RC1/language/russian/lang_front_forums.php ExBB_FM_1.0_RC1_with_chownposts/language/russian/lang_front_forums.php
--- ExBB_FM_1.0_RC1/language/russian/lang_front_forums.php 2009-03-11 00:05:36.000000000 +0300
+++ ExBB_FM_1.0_RC1_with_chownposts/language/russian/lang_front_forums.php 2010-03-07 05:47:30.763720594 +0300
@@ -108,6 +108,7 @@
$this->LANG['DelTrackers'] = 'Отписать от темы всех';
$this->LANG['TopRestore'] = 'Восстановить тему';
$this->LANG['SelectAll'] = 'Выделить все';
+$this->LANG['chown'] = 'Сменить автора';
$this->LANG['SearchText'] = 'Искать в тексте';
@@ -309,6 +310,14 @@
$this->LANG['AttachDeleteOk'] = 'Прикрепленные файлы, в выбранных сообщениях, успешно удалены!';
/*
+
+*/
+$this->LANG['chown_posts'] = 'Смена автора сообщений';
+$this->LANG['chown_posts_ok'] = 'Новые авторы назначены успешно. Счётчики сообщений успешно обновлены.';
+
+
+
+/*
move selected innew & inexists
*/
$this->LANG['MoveSelectedInNew'] = 'Выделение сообщений в новую тему';
diff -U 3 -H -b -w -B -E -d -r -X /var/virtualhosts/alohomora/www/diffexclude.txt -- ExBB_FM_1.0_RC1/postings.php ExBB_FM_1.0_RC1_with_chownposts/postings.php
--- ExBB_FM_1.0_RC1/postings.php 2009-07-15 21:55:08.000000000 +0400
+++ ExBB_FM_1.0_RC1_with_chownposts/postings.php 2010-03-07 05:47:30.765721128 +0300
@@ -77,6 +77,10 @@
break;
case 'delattach' : delattach();
break;
+ case 'chown' : chown_posts();
+ break;
+ case 'chownthread' : chown_posts(true);
+ break;
default : $fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
break;
}
@@ -1529,6 +1533,16 @@
$list[$newtopic_id] = $tpm_list;
}
+ // Если посты переносятся в тему, находящуюся в подфоруме, то обновляем ластпост родительского форума
+ // Также в этом форуме увеличим число тем на 1 и число ответов на кол-во перемещаемых сообщений минус 1
+ $pcatid = $allforums[$toforum_id]['catid'];
+ if (stristr($pcatid, 'f')) {
+ $pforum = substr($pcatid, 1, strlen($pcatid) - 1);
+ $allforums[$pforum]['topics']++;
+ $allforums[$pforum]['posts'] += $countmoving - 1;
+ relast_post($pforum);
+ }
+
unset($tpm_list,$newlist);
uasort($list,"sort_by_postdate");
$fm->_Write($fp_list,$list);
@@ -1549,16 +1563,6 @@
$allforums[$forum_id]['posts'] = ($movingFlag === TRUE) ? $allforums[$forum_id]['posts']-$countmoving:$allforums[$forum_id]['posts']-1;
$allforums[$forum_id]['topics'] = count($list);
- // Если посты переносятся в тему, находящуюся в подфоруме, то обновляем ластпост родительского форума
- // Также в этом форуме увеличим число тем на 1 и число ответов на кол-во перемещаемых сообщений минус 1
- $pcatid = $allforums[$toforum_id]['catid'];
- if (stristr($pcatid, 'f')) {
- $pforum = substr($pcatid, 1, strlen($pcatid) - 1);
- $allforums[$pforum]['topics']++;
- $allforums[$pforum]['posts'] += $countmoving - 1;
- relast_post($pforum);
- }
-
// Если посты перенесены из темы, находящейся в подфоруме, то обновим ластпост родительского форума
// Также вычтем из числа ответов этого форума кол-во перемещённых сообщений
$pcatid = $allforums[$forum_id]['catid'];
@@ -1721,6 +1725,15 @@
$topicname = (isset($list[$newtopic_id]['tnun'])) ? $list[$newtopic_id]['name'].' - '.$list[$newtopic_id]['tnun']:$list[$newtopic_id]['name'];
}
+ // Если сообщения перемещаются в тему, находящуюся в подфоруме, то обновим ластпост в родительском форуме
+ // Также прибавим к числу ответов этого форума кол-во перемещаемых сообщений
+ $pcatid = $allforums[$toforum_id]['catid'];
+ if (stristr($pcatid, 'f')) {
+ $pforum = substr($pcatid, 1, strlen($pcatid) - 1);
+ $allforums[$pforum]['posts'] += $countmoving;
+ relast_post($pforum);
+ }
+
uasort($list,"sort_by_postdate");
$fm->_Write($fp_list,$list);
@@ -1738,15 +1751,6 @@
$allforums[$forum_id]['last_post'] = $list[$oldlasttopic]['name'];
$allforums[$forum_id]['last_post_id'] = $oldlasttopic;
- // Если сообщения перемещаются в тему, находящуюся в подфоруме, то обновим ластпост в родительском форуме
- // Также прибавим к числу ответов этого форума кол-во перемещаемых сообщений
- $pcatid = $allforums[$toforum_id]['catid'];
- if (stristr($pcatid, 'f')) {
- $pforum = substr($pcatid, 1, strlen($pcatid) - 1);
- $allforums[$pforum]['posts'] += $countmoving;
- relast_post($pforum);
- }
-
// Если сообщения перемещаются из темы, находящейся в подфоруме, то обновим ластпост в родительском форуме
// Также вычтем из числа ответов этого форума кол-во перемещаемых сообщений
$pcatid = $allforums[$forum_id]['catid'];
@@ -2056,4 +2060,152 @@
return $allforums;
}
+function chown_posts($chown_thread = false)
+{
+ global $fm, $allforums;
+ global $forum_id,$topic_id;
+ $action = $fm->input['action'];
+ if ($fm->_POST === FALSE)
+ {
+ $fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
+ }
+
+ $allforums = $fm->_Read2Write($fp_allforums,FM_ALLFORUMS);
+
+ if (($topic_id = $fm->_Intval('topic')) === 0 || ($forum_id = $fm->_Intval('forum')) === 0 || !isset($allforums[$forum_id]))
+ {
+ $fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
+ }
+ if (!$chown_thread)
+ {
+ if (($postkey = $fm->_String('postkey')) === '' || ($postkey = @unserialize($postkey)) === FALSE || count($postkey) === 0)
+ {
+ $fm->_Message($fm->LANG['chown'],$fm->LANG['NotSelectedPosts']);
+ }
+ }
+ $user_id = $fm->_Intval('user_id');
+ $user_name = $fm->_String('user_name');
+ if ( $user_id === 0 && $user_name === '' ) //первый этап: ввод части имени
+ {
+ $fm->_Fclose($fp_allforums);
+ $selectdesc = $fm->LANG['User'];
+ $jumphtml = '<input type="text" name="user_name">';
+ if (!$chown_thread)
+ $postkey = serialize($postkey);
+ else
+ $postkey = null;
+ $bodytitle = $fm->LANG['chown_posts'];
+ } else if ( $user_id === 0 ) { // второй этап: выбор имени
+ $fm->_Fclose($fp_allforums);
+ $selectdesc = $fm->LANG['User'];
+ $bodytitle = $fm->LANG['chown_posts'];
+ $allusers = $fm->_Read(FM_USERS,FALSE);
+ $username = preg_quote($fm->_LowerCase($user_name));
+ ksort($allusers);
+ $jumphtml = '<select name="user_id">'; //TODO сообщение "не найдено"
+ foreach ($allusers as $id=>$info)
+ {
+ if (preg_match("#^".$username."#is",$info['n']))
+ {
+ $jumphtml .= '<option value="'.$id.'">'.$info['n'].'</option>';
+ }
+ }
+ $jumphtml .= '</select>';
+ if (!$chown_thread)
+ $postkey = serialize($postkey);
+ else
+ $postkey = null;
+ } else {
+ $topic = $fm->_Read2Write($fp_topic,'forum'.$forum_id.'/'.$topic_id.'-thd.php', FALSE);
+ ksort($topic,SORT_NUMERIC);
+ end($topic);
+ $last_key = key($topic);
+ $user = $fm->_Read2Write($fp_user,'members/'.$user_id.'.php');
+ $allusers = $fm->_Read2Write($fp_allusers,FM_USERS,FALSE);
+ $count = 0;
+ $log_entry="chown_posts[forum_id=$forum_id,topic_id=$topic_id,user_id=$user_id]: ";
+ if ($chown_thread)
+ {
+ reset($topic);
+ $postkey = array(key($topic));
+ }
+ foreach ($postkey as $post_id)
+ {
+ if (!isset($topic[$post_id]))
+ {
+ $fm->_WriteLog($log_entry . 'ОШИБКА: пост '.$post_id.' не найден, пропуск.');
+ continue;
+ }
+ $prev_user_id = $topic[$post_id]['p_id'];
+ if ($prev_user_id==$user_id)
+ {
+ continue; //тот же юзер, нечего делать
+ }
+ $prev_user = $fm->_Read2Write($fp_prev_user,'members/'.$prev_user_id.'.php');
+ $prev_user['posts']--;
+ if (isset($prev_user['posted'][$forum_id]))
+ {
+ $prev_user['posted'][$forum_id]--;
+ if ($prev_user['posted'][$forum_id]<1)
+ unset($prev_user['posted'][$forum_id]);
+ }
+ $fm->_Write($fp_prev_user,$prev_user);
+ $user['posts']++;
+ if (isset($user['posted'][$forum_id]))
+ $user['posted'][$forum_id]++;
+ else
+ $user['posted'][$forum_id]=1;
+ $topic[$post_id]['p_id'] = $user_id;
+ $allusers[$prev_user_id]['p'] = $prev_user['posts'];
+ if ($last_key == $post_id || $chown_thread)
+ {
+ $list = $fm->_Read2Write($fp_list, 'forum'.$forum_id.'/list.php');
+ }
+ if ($chown_thread)
+ {
+ $list[$topic_id]['author'] = $user['name'];
+ $list[$topic_id]['a_id'] = $user_id;
+ }
+ if ($last_key == $post_id) //последний пост в теме
+ {
+ $list[$topic_id]['poster'] = $user['name'];
+ $list[$topic_id]['p_id'] = $user_id;
+ if ($allforums[$forum_id]['last_post_id'] == $topic_id)
+ {
+ $allforums[$forum_id]['last_poster'] = $user['name'];
+ $allforums[$forum_id]['last_poster_id'] = $user_id;
+ $pcatid = $allforums[$forum_id]['catid'];
+ if (stristr($pcatid, 'f'))
+ {
+ $pforum = substr($pcatid, 1, strlen($pcatid) - 1);
+ if ($allforums[$pforum]['last_post_id'] == $topic_id && @$allforums[$pforum]['last_sub'] == $forum_id)
+ {
+ $allforums[$pforum]['last_poster'] = $user['name'];
+ $allforums[$pforum]['last_poster_id'] = $user_id;
+ }
+ }
+ }
+ }
+ if ($last_key == $post_id || $chown_thread)
+ {
+ $fm->_Write($fp_list,$list);
+ unset($list);
+ }
+ unset($prev_user);
+ $count++;
+ }
+ $allusers[$user_id]['p'] = $user['posts'];
+ $fm->_Write($fp_topic,$topic);
+ $fm->_Write($fp_user,$user);
+ $fm->_Write($fp_allusers,$allusers);
+ $fm->_Write($fp_allforums,$allforums);
+ $fm->_WriteLog($log_entry . 'Завершено успешно. '.$count.' сообщений сменили владельца');
+ $fm->_Message($fm->LANG['chown_posts'], $fm->LANG['chown_posts_ok'], 'topic.php?forum='.$forum_id.'&topic='.$topic_id);
+
+ }
+ include('./templates/'.DEF_SKIN.'/all_header.tpl');
+ include('./templates/'.DEF_SKIN.'/chown_posts.tpl');
+ include('./templates/'.DEF_SKIN.'/footer.tpl');
+}
+
?>
diff -U 3 -H -b -w -B -E -d -r -X /var/virtualhosts/alohomora/www/diffexclude.txt -- ExBB_FM_1.0_RC1/templates/InvisionExBB/topic_options.tpl ExBB_FM_1.0_RC1_with_chownposts/templates/InvisionExBB/topic_options.tpl
--- ExBB_FM_1.0_RC1/templates/InvisionExBB/topic_options.tpl 2009-01-30 21:15:08.000000000 +0300
+++ ExBB_FM_1.0_RC1_with_chownposts/templates/InvisionExBB/topic_options.tpl 2010-03-07 05:47:30.766720296 +0300
@@ -10,6 +10,7 @@
<option value="innew">{$fm->LANG['MoveInNew']}</option>
<option value="inexists">{$fm->LANG['MoveInExists']}</option>
<option value="delattach">{$fm->LANG['AttachDelSelected']}</option>
+ <option value="chown">{$fm->LANG['chown']}</option>
<option value="-1" style="color:black"></option>
<option value="-1" style="color:black">---- {$fm->LANG['TopicOptions']} ----</option>
<option value="edittopic">{$fm->LANG['EditTitle']}</option>
@@ -20,6 +21,7 @@
<option value="movetopic">{$fm->LANG['Move']}</option>
<option value="trackers">{$fm->LANG['DelTrackers']}</option>
<option value="restore">{$fm->LANG['TopRestore']}</option>
+ <option value="chownthread">{$fm->LANG['chown']}</option>
</select>
<input name="chek" type="checkbox" onClick="ChekUncheck()" title="{$fm->LANG['SelectAll']}">
<input type="button" value="Go!" onClick="CheckFormAction();" />
electron пишет:их можно заливать к себе при условии что у вас "голый" , т.е. не обвешанный модами и исправлениями форум
Pauk утверждает обратное...(Отредактировано автором: 13 февраля 2011 — 20:42) |
|
|
|