Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Не знаю, как самому прям вот так сделать, но я знаю чуваков, которые платят символическую сумму какому-нить гуру-фрилансеру и он им потом сам делает, а у чуваков зато голова не болит и никаких заморочек - а то тут ошиба выскочит, там выскочит, да и вообще, кривые коды эти, разбираться в них - сам черт ногу сломит. Нах надо. А как по-другому я даж не знаю, не знаю как сделать.... В качестве альтернативы поиск могу предложить...
2 hcs: помнится, дискуссия о разделе платной помощи поднималась - будут желающие или нет. Будут, имхо, и не один. А вот будут ли помошники? Ведь понадобятся железные нервы...
Проблема с кодировкой, все что касается репутации пишет вот так �������
Добавлено спустя 25 минут 13 секунд:
hcs, помогите мне пожалуйста
Скорее всего нужно просто пересохранить файлы мода в нужной кодировке (в той, в которой твой форум). Воспользуйся "правильным" текстовым редактором, например Akelpad.
я их заливал напрямую в панель ISPmanager кодировка базы и файлов в панеле стоит по умолчанию cp1251, проверил файл lang/reputation.php там все нормально, а с IE вот так вот все видит Х鲨�a> : 0
Добавлено спустя 28 минут 41 секунду:
с IE еще пишет когда пытаюсь зайти посмотреть на комменты к репе вот это /полный_путь/forum/reputation.php on line 245
стоит последняя версия репы с этого форума-жму ВСЕ (там где номера сраниц с комментариями) скидывает на первую.
готов заплатить 10$ на wmz за помощь
когда же этот мод прикрутят к сборке?...
Народ у меня проблема....
пишет,там где ну по аватаром...Notice: Undefined index: reputation_enable in /www/rifo.net/m/u/munecabrava/home/site/include/reputation/rep_viewtopic.php on line 28
я этот файл,не изменял..не знаю в чем проблема...
Такая же проблема .... Подскажите чего нать творить
Отключи нотисы в common.php
Народ, а как всё-таки лучше сделать рейтинг? Анонимным? Полностью или частично открытым? Что лучше? На моем форуме столько флейма по этому поводу...
Отключи нотисы в common.php
Будь любезен поподробнее, с php несильно дружу .....
Заранее благодарен ...
Народ, а как всё-таки лучше сделать рейтинг? Анонимным? Полностью или частично открытым? Что лучше? На моем форуме столько флейма по этому поводу...
Флейм почитать и выяснить, чего хотят пользователи. Тут точно не скажешь - смотря какой форум и какой народ
подскажите плиз как выключить нотисы в комон.пхп
include\common.php
найти строки
error_reporting(E_ALL);
ini_set('display_errors', 1);
заменить на
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
Здравствуйте!
Я установил данный мод поверх сборки форума (rev87) и проблема в том, что при указании причины изменения репутации движок форума выдает ошибку, если причина указана в кириллице:
File: C:\Projects\www\punBB\reputation.php
Line: 142
PunBB reported: Unable to add reputation info
Database reported: Incorrect string value: '\xD0\x9F\xD1\x80\xD0\xBE...' for column 'reason' at row 1 (Errno: 1366)
Специально для проверки ввел значение в латинице и все нормально прошло. В чем может быть причина?
P.S.: Да, и еще тут писалось, что мод виден в администраторской панели, но я его там не вижу... Хотелось бы настроить временной интервал, через который пользователь может выставить оценку повторно.
P.P.S.: Все, с проблемой номер один разобрался - коллэйшн (сравнение) у меня стоял не utf8_general_ci, а latin1_swedish_ci.
Редактировался shba (2008-07-22 23:19:55)
чуть моск не сломал пока его установил на punbb 1.2.17.
ошибка Notice: Undefined index: reputation_enable in /www/rifo.net/m/u/munecabrava/home/site/include/reputation/rep_viewtopic.php on line 28
типо переменная не объявлена. косяк в том что ридми не под эту версию.
#
#---------[ 7. FIND (line:186) ]---------------------------------------------------
#
u.num_posts, u.registered, u.admin_note,
#
#---------[ 8. AFTER ADD ]---------------------------------------------------
#
u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus, u.reputation_enable,
делал поиск и вставку, оказалось что вставил в закоментированную строку а ниже две анналогичные, в них и надо добавить переменные.
канечно номера строк не совпадают.
отключать ошибки это мне кажется не верное. убрать нотисы можно заменив error_reporting(E_ALL); на error_reporting(E_ALL ^ E_NOTICE);
p.s. и файл локализации надо пересохранить в другую кодировку, если у вас не 1251.
Редактировался 40k (2008-08-04 12:21:15)
Просьба: дайте плиз ссылку на файл Reputation mod 2.0.4.
Просто на: http://www.punres.org/files.php?pid=184
Ее нет. Спасибо.
а 2.2.3 не устраивает?
у меня в 2.2.3 выдает в теме после айпи:
Notice: Undefined index: reputation_enable in /forum/include/reputation/rep_viewtopic.php on line 28
Вы админке там где управление плагином репутация выдает:
Notice: Undefined index: o_reputation_enabled in /forum/plugins/AP_Reputation.php on line 282
/> Yes
Notice: Undefined index: o_reputation_enabled in /forum/plugins/AP_Reputation.php on line 282
/> No
Редактировался vvsh (2008-08-15 18:57:19)
Как мне от них избавится?
В админке все исправил, дайте плиз кто-нить файл reputation.php от Reputation mod 2.0.4, спасибо.
Вот какой у меня заголовок в файле репутатион.php:
<br /> <b>Notice</b>: Undefined variable: page_title in <b>/полный_путь/forum/header.php</b> on line <b>88</b><br />
И внизу файла пишет:
Notice: Undefined variable: paging_links in /полный_путь/forum/reputation.php on line 242
Notice: Undefined variable: is_admmod in /полный_путь/forum/reputation.php on line 243
как это все исправить?
Редактировался vvsh (2008-08-18 08:20:54)
<?php
/******************************************************************************************************
Reputation Plugin for PunBB
----------------------------
-- Version 2.2.4
-- (c) Copyright 2006-2008 hcs hcs---mail.ru
-- GPL:
This software 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.
This software 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';
require PUN_ROOT.'include/parser.php';
require PUN_ROOT.'lang/'.$pun_user['language'].'/reputation.php';
if ($pun_user['g_rep_enable'] == 0)
message($lang_reputation['Group Disabled']);
if ($pun_user['reputation_enable_adm'] == 0)
message($lang_reputation['Individual Disabled']);
if ($pun_config['o_reputation_enabled'] == 0)
message($lang_reputation['Disabled']);
if ($pun_user['reputation_enable'] == 0)
message($lang_reputation['Your Disabled']);
$page_title = $lang_reputation['Reputation'];
$is_admmod = ($pun_user['g_id'] == PUN_ADMIN || $pun_user['g_id'] == PUN_MOD) ? true : false;
if (isset($_POST['form_sent']))
{
if (isset($_POST['delete_rep_id']))
{
if ($pun_user['g_id'] == PUN_ADMIN || $pun_user['g_id'] == PUN_MOD) {
$uid = intval($_GET['uid']);
$p = intval($_GET['p']);
if ($uid<2)
message($lang_common['Bad request']);
$idlist = implode(',', array_map('intval', array_values($_POST['delete_rep_id'])));
confirm_referrer('reputation.php');
// Delete reputation
$db->query('DELETE FROM '.$db->prefix.'reputation WHERE id IN('.$idlist.')') or error('Unable to delete reputation data.', __FILE__, __LINE__, $db->error());
$result = $db->query('SELECT SUM(rep_plus) AS plus, SUM(rep_minus) AS minus FROM '.$db->prefix.'reputation WHERE user_id='. $uid.' GROUP BY user_id ') or error('Unable to counting rep', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result)) {
$rep['plus'] = 0;
$rep['minus'] = 0;
} else
$rep =$db->fetch_assoc($result);
$db->query('UPDATE '.$db->prefix.'users SET rep_plus='.$rep['plus'].',rep_minus='.$rep['minus'].' WHERE id='.$uid) or error('Unable to update rep fo user', __FILE__, __LINE__, $db->error());
redirect('reputation.php?uid='.$uid.'&p='.$p, $lang_reputation['Deleted redirect']);
}
else
{
message($lang_common['No permission']);
}
}
if ($pun_user['is_guest'] && $pun_config['o_rep_guest_enabled'] == 0)
message($lang_common['No permission']);
$pid = isset($_POST['pid']) ? intval($_POST['pid']) : message($lang_common['Bad request']);
$poster = isset($_POST['poster']) ? $_POST['poster'] : message($lang_common['Bad request']);
$method = isset($_POST['method']) ? intval($_POST['method']) : message($lang_common['Bad request']);
if ($method!=2 && $method!=1)
message($lang_common['Bad request']);
$result = $db->query('SELECT p.poster, p.poster_id, p.posted, p.id, p.topic_id, t.subject, u.reputation_enable, r.time FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'topics AS t ON p.topic_id=t.id INNER JOIN '.$db->prefix.'users AS u ON p.poster_id = u.id LEFT JOIN '.$db->prefix.'reputation AS r ON (r.from_user_id ='.$pun_user["id"] .' AND r.user_id = u.id) WHERE p.id='.$pid.' AND p.poster="'. $db->escape($poster) .'" ORDER BY r.time DESC LIMIT 0 , 1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
$target = $db->fetch_assoc($result);
//Check last reputation point given timestamp
if ($target['time'])
{
if($pun_config['o_reputation_timeout']*60 > (time()-$target['time']))
message($lang_reputation['Timeout 1'].$pun_config['o_reputation_timeout'].$lang_reputation['Timeout 2']);
}
if ($target['reputation_enable']!=1)
message($lang_reputation['User Disable']);
// Prevent people from voting for themselves via URL hacking.
if ($pun_user["id"] == $target["poster_id"])
message($lang_reputation['Silly user']);
if ((($pun_user['g_rep_minus_min'] > $pun_user['num_posts']) && ($method=2) ) || (($pun_user['g_rep_plus_min'] > $pun_user['num_posts']) && ($method=1) ))
message($lang_reputation['Small Number of post']);
// Clean up message from POST
$message = pun_linebreaks(pun_trim($_POST['req_message']));
// Check message
if ($message == '')
message($lang_reputation['No message']);
else if (strlen($message) > 400)
message($lang_reputation['Too long message']);
else if ($pun_config['p_message_all_caps'] == '0' && pun_strtoupper($message) == $message && $pun_user['g_id'] > PUN_GUEST)
$message = ucwords(pun_strtolower($message));
// Validate BBCode syntax
if ($pun_config['p_message_bbcode'] == '1' && strpos($message, '[') !== false && strpos($message, ']') !== false)
$message = preparse_bbcode($message, $errors);
$message = addslashes($message);
if (isset($errors))
message($errors[0]);
if($method == 1)
{ $rep_column="rep_plus";}
else
{$rep_column="rep_minus";}
//Add voice
$db->query("INSERT INTO ".$db->prefix."reputation (user_id, from_user_id, time, post_id, reason, topics_id, ". $rep_column .") Values ('". $target['poster_id'] . "', '" . $pun_user["id"] ."', '" . mktime() . "', '" . $target['id'] ."', '" . $message . "', '". $target['topic_id'] . "', '1' )") or error('Unable to add reputation info', __FILE__, __LINE__, $db->error());
$db->query('UPDATE '.$db->prefix.'users SET '.$rep_column.'='.$rep_column.'+1 WHERE id='.$target['poster_id']);
redirect('viewtopic.php?&pid=' .$pid .'#p' .$pid , $lang_reputation['Redirect Message']);
}
if ( isset($_GET['uid']) && !isset($_GET['method']))
{
require PUN_ROOT.'header.php';
$uid = intval($_GET['uid']);
if ($uid<2)
message($lang_common['Bad request']);
$result = $db->query('SELECT u.username, u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'reputation as r ON r.user_id=u.id WHERE u.id='.$uid.' GROUP by u.id') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
$user_rep =$db->fetch_assoc($result);
$result = $db->query('SELECT COUNT(*) FROM '.$db->prefix.'reputation WHERE user_id='.$uid) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
list($num_rows) = $db->fetch_row($result);
if ($num_rows>0)
{
$num_pages = ceil(($num_rows + 1) / $pun_user['disp_posts']);
$p = (!isset($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $num_pages) ? 1 : $_GET['p'];
$start_from = $pun_user['disp_posts'] * ($p - 1);
$paging_links = $lang_common['Pages'].': '.paginate($num_pages, $p, 'reputation.php?uid='.$uid);
$result = $db->query('SELECT r.id, r.time, r.reason, r.post_id, r.rep_plus, r.rep_minus, r.user_id, t.subject, u2.username as from_user_name, u2.id as from_user_id FROM '.$db->prefix.'reputation AS r LEFT JOIN '.$db->prefix.'users AS u ON r.user_id = u.id LEFT JOIN '.$db->prefix.'topics AS t ON t.id=r.topics_id LEFT JOIN '.$db->prefix.'users AS u2 ON r.from_user_id = u2.id WHERE u.id='.$uid.' ORDER BY r.time DESC LIMIT '.$start_from.','.$pun_user['disp_posts']) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
$form_del = "\t\t\t\t".'<form action="reputation.php?p='.$p.'&uid='.$uid.'" method="post" name="del_rep">';
$form_end = "\t\t\t\t".'</form>';
if ($is_admmod)
echo $form_del . "\n". "\t\t\t\t".'<input type="hidden" name="form_sent" value="1" />'."\n";
?>
<div class="postlinksb">
<div class="inbox">
<p class="pagelink conl"><?php echo $paging_links ?></p>
<div class="clearer"></div>
</div>
</div>
<div class="blockform">
<h2><span><?php echo $lang_reputation['User reputation']. pun_htmlspecialchars($user_rep['username']) . ' <strong>[+'. $user_rep['count_rep_plus'] . ' / -' . $user_rep['count_rep_minus'] .'] </strong>' ?></span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0">
<thead>
<tr>
<th class="tc3" style="width:15%"><?php echo $lang_reputation['From user'] ?></th>
<th class="tc3" style="width:15%"><?php echo $lang_reputation['For topic'] ?></th>
<th class="tc3" style="width:<?php if ($is_admmod){ echo '35'; }else {echo '45';} ?>%"><?php echo $lang_reputation['Reason'] ?></th>
<th class="tc3" style="width:10%; text-align:center;"><?php echo $lang_reputation['Estimation'] ?></th>
<th class="tc3" style="width:15%"><?php echo $lang_reputation['Date'] ?></th>
<?php if ($is_admmod) echo '<th class="tc3" style="width:10%">'.$lang_reputation['Delete'].'</th>'; ?>
</tr>
<tbody>
<?php
while ($cur_rep = $db->fetch_assoc($result))
{
$cur_rep['reason']= parse_message($cur_rep['reason'], 0);
?>
<tr>
<td><?php echo $cur_rep['from_user_name'] ? '<a href="reputation.php?uid=' . $cur_rep['from_user_id'] . '">'. pun_htmlspecialchars($cur_rep['from_user_name']).'</a>' : $lang_reputation['Profile deleted'] ?></td>
<td><?php echo $cur_rep['subject'] ? '<a href="viewtopic.php?pid=' . $cur_rep['post_id'] . '#p'. $cur_rep['post_id'] . '">'.pun_htmlspecialchars($cur_rep['subject']).'</a>' : $lang_reputation['Removed or deleted'] ?></td>
<td><?php echo $cur_rep['reason'] ?></td>
<td style="text-align:center;"><?php echo $cur_rep['rep_plus']==1 ? '<img src="./img/warn_add.gif" alt="+" border="0">' : '<img src="./img/warn_minus.gif" alt="-" border="0">'; ?></td>
<td><?php echo format_time($cur_rep['time']) ?></td>
<?php if ($is_admmod) echo '<td style="text-align:center;"><input type="checkbox" name="delete_rep_id[]" value="'.$cur_rep['id'].'"></td>'; ?>
</tr>
<?php
}
}
else
{
?>
<div class="blockform">
<h2><span><?php echo $lang_reputation['User reputation']. pun_htmlspecialchars($user_rep['username']) . ' <strong>[+'. $user_rep['count_rep_plus'] . ' / -' . $user_rep['count_rep_minus'] .'] </strong>' ?></span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0" style="table-layout:fixed">
<tbody>
<tr><td ><?php echo $lang_reputation['No reputation'] ?></td></tr>
<?php
}
if ($pun_user['is_guest']) echo "\t\t\t\t\t".'<tr><td colspan="5" style="text-align:right;">'.base64_decode('PGEgaHJlZj0iaHR0cDovL3B1bmJiLnJ1Ij5SZXB1dGF0aW9uIHN5c3RlbSBmb3IgUHVuQkI8L2E+').'</td></tr>'."\n";
?>
</tbody>
</table>
</div>
</div>
</div>
<div class="clearer"></div>
<div class="postlinksb">
<div class="inbox">
<?php if ($num_rows>0) :?>
<p class="pagelink conl"><?php echo $paging_links ?></p>
<?php if ($is_admmod) { ?>
<p class="postlink conr"><input type="submit" name="del_rep" value="Delete" onclick="return confirm('<?php echo $lang_reputation['Are you sure']; ?>')" /></p>
<?php } ?>
<?php endif; ?>
<div class="clearer"></div>
</div>
</div>
<?php
require PUN_ROOT.'footer.php';
}
else
{
if (empty($_GET['pid']) || empty($_GET['method']) || empty($_GET['uid']) )
message($lang_common['Bad request']);
if ($pun_user['is_guest'])
message($lang_common['No permission']);
$pid = intval($_GET['pid']);
$method = intval($_GET['method']);
$uid = intval($_GET['uid']);
// Prevent people from voting for themselves via URL hacking.
if ($pun_user['id'] == $uid)
message($lang_reputation['Silly user']);
if (($method!=1) && ($method!=2))
message($lang_common['Bad request']);
$result = $db->query('SELECT r.time, u.username FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'reputation AS r ON ( r.user_id='.$uid.' AND r.from_user_id='.$pun_user["id"].' ) WHERE u.id='.$uid.' ORDER BY r.time DESC LIMIT 0 , 1') or error('Unable to fetch time last voice info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
$target = $db->fetch_assoc($result);
//Check last reputation point given timestamp
if ($target['time'])
{
if($pun_config['o_reputation_timeout']*60 > (time()-$target['time']))
message($lang_reputation['Timeout 1'].$pun_config['o_reputation_timeout'].$lang_reputation['Timeout 2']);
}
// Prevent people from voting for themselves via URL hacking.
if ($pun_user["id"] == $uid)
message($lang_reputation['Silly user']);
if ((($pun_user['g_rep_minus_min'] > $pun_user['num_posts']) && ($method=2) ) || (($pun_user['g_rep_plus_min'] > $pun_user['num_posts']) && ($method=1) ))
message($lang_reputation['Small Number of post']);
$poster=pun_htmlspecialchars($target['username']);
require PUN_ROOT.'header.php';
$form = '<form action="reputation.php?" method="post" name="Reput" onSubmit="return Validate()">';
?>
<script language="javascript">
<!--
function Validate() {
var Max = 100;
Length = document.Reput.req_message.value.length;
if (( Length > Max) && ( Max > 0 )) {
alert("<?php echo $lang_reputation['Max length of message'] ?> " + Max + " <?php echo $lang_reputation['You already of use'] ?> " + Length + " <?php echo $lang_reputation['Of symbol'] ?>");
return false;
} else {
document.Reput.go.disabled = true;
return true;
}
}
// -->
</script>
<?php echo $form."\n" ?>
<div class="blockform">
<h2><span><?php echo $lang_reputation['Form header'] ?></span></h2>
<div class="box">
<div class="inbox">
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="pid" value="<?php echo $pid ?>" />
<input type="hidden" name="poster" value="<?php echo $poster ?>" />
<input type="hidden" name="method" value="<?php echo $method ?>" />
<table cellspacing="0">
<tr>
<td class="tc4" width="30%"><?php echo $lang_reputation['Form your name'] ?>:</td>
<td class="tc4" width="70%"><?php echo pun_htmlspecialchars($pun_user['username']) ?></td>
</tr>
<tr>
<td class="tc4" width="30%"><?php echo $lang_reputation['Form to name'] ?>:</td>
<td class="tc4" width="70%"><?php echo pun_htmlspecialchars($poster) ?></td>
</tr>
<tr>
<td class="tc4" width="30%"><?php echo $lang_reputation['Form reason'] ?>:</td>
<td class="tc4" width="70%"><textarea cols='60' rows='10' wrap='soft' name="req_message" class='textinput'></textarea></td>
</tr>
<tr>
<td class="tc4" width="30%"><?php echo $lang_reputation['Form method'] ?>:</td>
<td class="tc4" width="70%"><?php echo ($method==1) ? $lang_reputation['Plus'] : $lang_reputation['Minus']; ?></td>
</tr>
</table>
<table cellspacing="0">
<tr>
<td class="tc4" style="text-align:center;"><input type="submit" name="submit" value="<?php echo $lang_common['Submit'] ?>"> : <a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></td>
</tr>
</table>
</div>
</div>
</div>
</form>
<?php
require PUN_ROOT.'footer.php';
}
?>
Спасибо вам огромное, все супер.
У меня ошибочно работает определение количества постов для выставления рейтинга.
Берется наибольшее. Если я ставлю 5 сообщения для возможности выставить минус и 1 для положительного рейтинга, то положительный выставить возможно только после 5 постов, а не одного.
Лечение здесь:
http://punbb.ru/viewtopic.php?pid=16340#p16340
Странно, что не исправлено в моде 2.2.4
Редактировался coordinator (2008-10-19 13:11:50)
А в профиле должен указываться рейтинг? Я ставил 2.2.4 но в профиле у человека не указывается рейтинг.