Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Связано.
Связано.
От блина! И чё делать, можно тут написать какие строки надо убрать, чтобы панель, что бы япотом на чистый файл внедрил свою панель?
Связь с панелью в каких файлах есть?
появился странный глюк - все темы в личных сообщениях имеют заголовок из первой буквы и потом сплошные "??????" в какую сторону копать? есть подозрения что кто-то нехороший сделал что-то плохое с кодировкой базы, но как-то странно все это
копать в сторону файла message_send. там есть такой фрагмент
else if ($pun_config['p_subject_all_caps'] == '0' && strtoupper($subject) == $subject && $pun_user['g_id'] > PUN_GUEST)
$subject = ucwords(strtolower($subject));
явно не приспособлено к utf-8. отсюда должны быть глюки.
включается/выключается режим в админке, раздел Permissions, в русской версии пукт называется "Тема прописными"
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\WEB\parta\include\pms\header_new_messages.php on line 19
Hotel sprositj. Bivalo shto chelovek napishit dljinnuju PM, possilajet, zhdjot atveta, no njepoluchajet. Potomushto PM njeposhlo. Dumal pochemu, - okazivajetsta - dostignut limit PM (u etova cheloveka bilo 40).
Jest lji ljogkij sposob kak ukazatj v design skoljko limit, i skoljko uzhe ispoljzovano?
на этом форуме кстати показывает
Тема сообщения - папки заполнены на 3%
в какой версии такая фишка введена?
на этом форуме кстати показывает
Тема сообщения - папки заполнены на 3%
в какой версии такая фишка введена?
Da, da - tokojo i nuzhno.
U menja stoit .14 versija s njejo komplektacioj...
так по идее, если заполнена папка - должно выводится сообщение, что лимит исчерпан, или у пользователя заполнена папка - как то так...
так по идее, если заполнена папка - должно выводится сообщение, что лимит исчерпан, или у пользователя заполнена папка - как то так...
Izvenjite. Ja sam admin, potomu u menja njetu PM limit, i umenja njetu tokoj strochki kak:
Messages status: 30%
папки заполнены на 30%
Toljko shto toljko proveril kak drugim poljozateljem, i uvidel shto takoje uzhe jestj...
Tak shto - vsjo poradke.
В итоге когда приходит одно новое сообщение, то появляется надпись:
Вам пришли новые сообщения ()
Когда больше одного тоже самое:
Вам пришли новые сообщения ()
В скобках должно появляться колчество новых сообщений, как сделать, чтобы оно всё-таки появлялось в этих самых скобках?
Скачал мод из первого поста отсюда. Проблема такая же.
Исправление:
Файл: include/pms/header_new_messages.php
найти:
if ($db->result($result_messages, 0)){
///$tpl_temp .= "\n\t\t\t\t".'<li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['New messages'].'</a></strong></li>';
$tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php"> '.$lang_pms['New messages'].' ('. $db->result($result_messages, 0). ')</a></strong></li></ul>';
заменить на:
list($new_msg)=$db->fetch_row($result_messages);
if ($new_msg>0){
///$tpl_temp .= "\n\t\t\t\t".'<li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['New messages'].'</a></strong></li>';
$tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php"> '.$lang_pms['New messages'].' ('. $new_msg . ')</a></strong></li></ul>';
т.к. $db->result дает не значение а переход к необходимой строке результата.
Добавлено спустя 10 минут 42 секунды:
несколько ошибок:
файл: message_send.php
найти:
$result = $db->query('SELECT posted FROM '.$db->prefix.'messages ORDER BY id DESC LIMIT 1') or error('Unable to fetch message time for flood protection', __FILE__, __LINE__, $db->error());
заменить:
$result = $db->query('SELECT posted FROM '.$db->prefix.'messages WHERE sender_id='.$pun_user['id'].' ORDER BY id DESC LIMIT 1') or error('Unable to fetch message time for flood protection', __FILE__, __LINE__, $db->error());
Добавлено спустя 40 минут 8 секунд:
(извиняюсь но пишу по мере проверки)
- Нет проверки над существованием получателя
- Ошибка проверки переполнения ящика.
Hotel sprositj. Bivalo shto chelovek napishit dljinnuju PM, possilajet, zhdjot atveta, no njepoluchajet. Potomushto PM njeposhlo. Dumal pochemu, - okazivajetsta - dostignut limit PM (u etova cheloveka bilo 40).
сообщение есть. Проверка есть. не с тем значением.
Редактировался trijin (2008-01-04 21:54:11)
А я пытался ночью прикрутить предварительный просмотр личных сообщений, но с сохранением содержимого полей ввода не разобрался и плюнул. Исходник такой:
<?php
/***********************************************************************
Copyright (C) 2002, 2003, 2004 Rickard Andersson ([email protected])
This file is part of PunBB.
PunBB is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
PunBB is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA
************************************************************************/
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
if(!$pun_config['o_pms_enabled'] || $pun_user['is_guest'] || $pun_user['g_pm'] == 0)
message($lang_common['No permission']);
// Load the post.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';
require PUN_ROOT.'lang/'.$pun_user['language'].'/post.php';
if (isset($_POST['form_sent']) && !isset($_POST['preview']))
{
confirm_referrer('message_send.php');
// Flood protection
if($pun_user['g_id'] > PUN_GUEST){
$result = $db->query('SELECT posted FROM '.$db->prefix.'messages WHERE sender_id='.$pun_user['id'].' ORDER BY id DESC LIMIT 1') or error('Unable to fetch message time for flood protection', __FILE__, __LINE__, $db->error());
if(list($last) = $db->fetch_row($result)){
if((time() - $last) < $pun_user['g_post_flood'])
message($lang_pms['Flood start'].' '.$pun_user['g_post_flood'].' '.$lang_pms['Flood end']);
}
}
////????????, ??? ??????? ?? ???????? ???? ?????
// Get userid
$result = $db->query('SELECT id FROM '.$db->prefix.'users WHERE id!=1 AND username=\''.addslashes($_POST['req_username']).'\'') or error('Unable to get user id', __FILE__, __LINE__, $db->error());
$user = $db->fetch_assoc($result);
$result = $db->query('SELECT messages_enable FROM '.$db->prefix.'users WHERE id='. $user['id']) or error('Unable to get message status for user'. $id, __FILE__, __LINE__, $db->error());
$result=$db->fetch_assoc($result);
if ($result['messages_enable'] == 0)
message($lang_pms['Receiver'].' '.$_POST['req_username'].' '.$lang_pms['Disable options']);
// Smileys
if (isset($_POST['hide_smilies']))
$smilies = 0;
else
$smilies = 1;
// Check subject
$subject = pun_trim($_POST['req_subject']);
if ($subject == '')
message($lang_post['No subject']);
else if (pun_strlen($subject) > 70)
message($lang_post['Too long subject']);
else if ($pun_config['p_subject_all_caps'] == '0' && strtoupper($subject) == $subject && $pun_user['g_id'] > PUN_GUEST)
$subject = ucwords(strtolower($subject));
// Clean up message from POST
$message = pun_linebreaks(pun_trim($_POST['req_message']));
// Check message
if ($message == '')
message($lang_post['No message']);
else if (strlen($message) > 65535)
message($lang_post['Too long message']);
else if ($pun_config['p_message_all_caps'] == '0' && strtoupper($message) == $message && $pun_user['g_id'] > PUN_GUEST)
$message = ucwords(strtolower($message));
// Validate BBCode syntax
if ($pun_config['p_message_bbcode'] == '1' && strpos($message, '[') !== false && strpos($message, ']') !== false)
{
require PUN_ROOT.'include/parser.php';
$message = preparse_bbcode($message, $errors);
}
if (isset($errors))
message($errors[0]);
// Get userid
// BEGIN FIX incorrectly compared to sender's message
//
//ORIGINAL
//$result = $db->query('SELECT id, username, group_id FROM '.$db->prefix.'users WHERE id!=1 AND username=\''.addslashes($_POST['req_username']).'\'') or error('Unable to get user id', __FILE__, __LINE__, $db->error());
$result = $db->query('SELECT u.id, u.username, u.group_id, g.g_pm_limit FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id WHERE u.id!=1 AND u.username=\''.addslashes($_POST['req_username']).'\'') or error('Unable to get user id', __FILE__, __LINE__, $db->error());
//END FIX
// Send message
// BEGIN FIX incorrectly compared to sender's message
//
//ORIGINAL
//if(list($id,$user,$status) = $db->fetch_row($result)){
if(list($id,$user,$status,$group_pm_limit) = $db->fetch_row($result)){
//END FIX
// Check inbox status
if($pun_user['g_pm_limit'] != 0 && $pun_user['g_id'] > PUN_GUEST && $status > PUN_GUEST)
{
$result = $db->query('SELECT count(*) FROM '.$db->prefix.'messages WHERE owner='.$id) or error('Unable to get message count for the receiver', __FILE__, __LINE__, $db->error());
list($count) = $db->fetch_row($result);
// BEGIN FIX incorrectly compared to sender's message
//
//ORIGINAL
//if($count >= $pun_user['g_pm_limit'])
if($count >= $group_pm_limit)
//END FIX
message($lang_pms['Inbox full']);
// Also check users own box
if(isset($_POST['savemessage']) && intval($_POST['savemessage']) == 1)
{
$result = $db->query('SELECT count(*) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to get message count the sender', __FILE__, __LINE__, $db->error());
list($count) = $db->fetch_row($result);
if($count >= $pun_user['g_pm_limit'])
message($lang_pms['Sent full']);
}
}
// "Send" message
$db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted, popup) VALUES(
\''.$id.'\',
\''.addslashes($subject).'\',
\''.addslashes($message).'\',
\''.addslashes($pun_user['username']).'\',
\''.$pun_user['id'].'\',
\''.get_remote_address().'\',
\''.$smilies.'\',
\'0\',
\'0\',
\''.time().'\',
\'0\'
)') or error('Unable to send message', __FILE__, __LINE__, $db->error());
// Save an own copy of the message
if(isset($_POST['savemessage'])){
$db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted, popup) VALUES(
\''.$pun_user['id'].'\',
\''.addslashes($subject).'\',
\''.addslashes($message).'\',
\''.addslashes($user).'\',
\''.$id.'\',
\''.get_remote_address().'\',
\''.$smilies.'\',
\'1\',
\'1\',
\''.time().'\',
\'1\'
)') or error('Unable to send message', __FILE__, __LINE__, $db->error());
}
}
else{
message($lang_pms['No user']);
}
$topic_redirect = intval($_POST['topic_redirect']);
$from_profile = isset($_POST['from_profile']) ? intval($_POST['from_profile']) : '';
if($from_profile != 0)
redirect('profile.php?id='.$from_profile, $lang_pms['Sent redirect']);
else if($topic_redirect != 0)
redirect('viewtopic.php?id='.$topic_redirect, $lang_pms['Sent redirect']);
else
redirect('message_list.php', $lang_pms['Sent redirect']);
}
else
{
if (isset($_GET['id']))
$id = intval($_GET['id']);
else
$id = 0;
if($id > 0){
$result = $db->query('SELECT username FROM '.$db->prefix.'users WHERE id='.$id) or error('Unable to fetch message info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
list($username) = $db->fetch_row($result);
}
if(isset($_GET['reply']) || isset($_GET['quote'])){
$r = isset($_GET['reply']) ? intval($_GET['reply']) : 0;
$q = isset($_GET['quote']) ? intval($_GET['quote']) : 0;
// Get message info
empty($r) ? $id = $q : $id = $r;
$result = $db->query('SELECT * FROM '.$db->prefix.'messages WHERE id='.$id.' AND owner='.$pun_user['id']) or error('Unable to fetch message info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
$message = $db->fetch_assoc($result);
// Quote the message
if(isset($_GET['quote']))
$quote = '[quote='.$message['sender'].']'.$message['message'].'[/quote]
';
// Add subject
$subject = "RE: " . $message['subject'];
}
$action = $lang_pms['Send a message'];
$form = '<form method="post" id="post" action="message_send.php?action=send" onsubmit="return process_form(this)">';
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$action;
$form_name = 'post';
$cur_index = 1;
if (!isset($username))
$username = '';
if (!isset($quote))
$quote = '';
if (!isset($subject))
$subject = '';
require PUN_ROOT.'header.php';
if ($pun_user['messages_enable'] != 1 )
{
message($lang_pms['PM disabled'] . ' <a href="message_list.php?&box=2">'. $lang_pms['Options PM'] .'</a>');
}
?>
<div class="block2col">
<div class="blockmenu">
<h2><span><?php echo $lang_pms['Private Messages'] ?></span></h2>
<div class="box">
<div class="inbox">
<ul>
<li ><a href="message_list.php?box=0"><?php echo $lang_pms['Inbox'] ?></a></li>
<li ><a href="message_list.php?box=1"><?php echo $lang_pms['Outbox'] ?></a></li>
<li ><a href="message_list.php?box=2"><?php echo $lang_pms['Options'] ?></a></li>
<li class="isactive"><a href="message_send.php"><?php echo $lang_pms['New message'] ?></a></li>
</ul>
</div>
</div>
</div>
<div class="blockform">
<?php if (isset($_POST['preview']))
{
require_once PUN_ROOT.'include/parser.php';
$preview_message = parse_message(pun_linebreaks(pun_trim($_POST['req_message'])), isset($_POST['hide_smilies']));
?>
<div id="postpreview" class="blockpost">
<h2><span><?php echo $lang_post['Post preview'] ?></span></h2>
<div class="box">
<div class="inbox">
<div class="postright">
<div class="postmsg">
<?php echo $preview_message."\n" ?>
</div>
</div>
</div>
</div>
</div>
<?php
}
?>
<h2><span><?php echo $action ?></span></h2>
<div class="box">
<?php echo $form."\n" ?>
<div class="inform">
<fieldset>
<legend><?php echo $lang_common['Write message legend'] ?></legend>
<div class="infldset txtarea">
<input type="hidden" name="form_sent" value="1"/>
<input type="hidden" name="topic_redirect" value="<?php echo isset($_GET['tid']) ? $_GET['tid'] : '' ?>"/>
<input type="hidden" name="topic_redirect" value="<?php echo isset($_POST['from_profile']) ? $_POST['from_profile'] : '' ?>"/>
<input type="hidden" name="form_user" value="<?php echo (!$pun_user['is_guest']) ? pun_htmlspecialchars($pun_user['username']) : 'Guest'; ?>"/>
<label ><strong><?php echo $lang_pms['Send to'] ?></strong><br/><?php echo '<input type="text" name="req_username" size="25" maxlength="25" value="'.pun_htmlspecialchars($username).'" tabindex="'.($cur_index++).'"/>'; ?><br/></label>
<label><strong><?php echo $lang_common['Subject'] ?></strong><br/><input class="longinput" type='text' name='req_subject' value='<?php echo $subject ?>' size="80" maxlength="70" tabindex='<?php echo $cur_index++ ?>'/><br/></label>
<label><strong><?php echo $lang_common['Message'] ?></strong><br/>
<?php require PUN_ROOT.'mod_modern_bbcode.php'; ?>
<label>
<textarea name="req_message" rows="20" cols="95" tabindex="<?php echo $cur_index++ ?>"><?php echo $quote ?></textarea><br/></label>
<ul class="bblinks">
<li><a href="help.php#bbcode" onclick="window.open(this.href); return false;"><?php echo $lang_common['BBCode'] ?></a>: <?php echo ($pun_config['p_message_bbcode'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
<li><a href="help.php#img" onclick="window.open(this.href); return false;"><?php echo $lang_common['img tag'] ?></a>: <?php echo ($pun_config['p_message_img_tag'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
<li><a href="help.php#smilies" onclick="window.open(this.href); return false;"><?php echo $lang_common['Smilies'] ?></a>: <?php echo ($pun_config['o_smilies'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
</ul>
</div>
</fieldset>
<?php
$checkboxes = array();
if ($pun_config['o_smilies'] == '1')
$checkboxes[] = '<label><input type="checkbox" name="hide_smilies" value="1" tabindex="'.($cur_index++).'"'.(isset($_POST['hide_smilies']) ? ' checked="checked"' : '').'/>'.$lang_post['Hide smilies'];
$checkboxes[] = '<label><input type="checkbox" name="savemessage" value="1" checked="checked" tabindex="'.($cur_index++).'"/>'.$lang_pms['Save message'];
if (!empty($checkboxes))
{
?>
</div>
<div class="inform">
<fieldset>
<legend><?php echo $lang_common['Options'] ?></legend>
<div class="infldset">
<div class="rbox">
<?php echo implode('<br/></label>'."\n\t\t\t\t", $checkboxes).'<br/></label>'."\n" ?>
</div>
</div>
</fieldset>
<?php
}
?>
</div>
<p><input type="submit" name="submit" value="<?php echo $lang_pms['Send'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="s"/><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p>
</form>
</div>
</div>
<div class="clearer"></div>
</div>
<?php
require PUN_ROOT.'footer.php';
}
Саму кнопку предварительного просмотра в сердцах удалил.
Не знаю, правильно ли удалось исправить вложение блоков, из-за которого в умолчательной сборке в списке личных сообщений строка "Страницы: №№" "висит". У меня теперь не висит.
http://trijin.ru/forum/upload/PMS_Mod_h … dition.rar
[li]полностью убраны popup (не люблю попапы)[/li][li]исправленны ошибки подсчета переполненого ящика у адресата[/li][li]Переработан принцип "сохранить в отправленых" (теперь не создается дубля сообщения)[/li][li]Исправлена ошибка проверки существования адресата[/li][li]Исправленна ошибка вывода непрочитаных писем[/li][li]Добавлено время прочтения в "отправленых" если еще не прочитано, то светится непрочитаным.[/li][li]и другие менее существенные мелочи[/li]
Из недостатков:
[li]в папке отправленные в списке все отправители - это Вы. (что собственно верно, но неудобно) доработано[/li]
P.S. Надеюсь ничего не забыл т.к. обычно редактирую прямо на форуме.
Редактировался trijin (2008-01-05 02:16:16)
trijin
тут на форуме мелькала ошибка переполненного ящика у админа, исправлено ли?
так понимаю для ее исправления у группы админ нужно в базе проставить лимит 0. (потому как из другого места этого не сделать)
Нет. У меня этого нет. Потестить негде столько сообщений (я на рабочем форуме это использую)
Добавлено спустя 1 час 29 минут 29 секунд:
Все же проверил (набить 40 постов, блин ) Были ошибки. Исправлено. Перезалио туда же пост #88
Админу и модератору можно отправить сколько угодно сообщний (=))))) Чертов флуд ) если твой ящик не переполнен, или если ты не будешь сохранять сообщения.
Админ&Модер может отправлять кому угодно и что угодно, даже тем у кого ящики переполнены.
Пользователь не может отправить на переполненый ящик.
Изменения:
[li]Регулирование кто кому и сколько может отослать (Админы и Модеры всемогущи)[/li][li]Исправление языковых файлов (там лишнии бекслеши были)[/li][li]Исправление ошибки отображения переполненого ящика[/li][li]Добавлено количество сообщений в папках[/li]
Обновленны файлы:
[li]./message_send.php[/li][li]./message_list.php[/li][li]lang/Russian/pms.php[/li][li]include/pms/header_new_messages.php[/li]
Примечание: Языковой файл в моей сборке в кодировке cp1251
Редактировался trijin (2008-01-05 22:38:09)
Деление "Входящие" на подпапки надо?
Деление "Входящие" на подпапки надо?
я думаю будет смысл только, если будет что-то типа опции "помещать в эту папку лс, следующих пользователей..."
Редактировался spycam (2008-01-10 09:00:56)
Важное обновление (для тех кто использует мой мод)
Для остальных желательно временно отключить ЛС у себя на форумах.
Для остальных желательно временно отключить ЛС у себя на форумах.
почему?:)
trijin пишет:Для остальных желательно временно отключить ЛС у себя на форумах.
почему?:)
не хочешь - не отключай
остальное позже.
ОФФ:
И как такую дырку в запросе не заметили раньше!?
Ужась
:ОФФ
Может хватит в шпионов играть, что за дырка?
Дырка есть, афишировать ее нельзя. Я сейчас латаю свою редакцию мода и сборку.
Мод в первом сообщении темы обновлен. Кроме исправления ошибки в безопасности исправлены различные ошибки озвученные в этой теме.
И как такую дырку в запросе не заметили раньше!?
Сам удивлен Моду наверно уже или скоро больше года будет...
Эх... ну извините что необходимости в нем раньше небыло...