«Поле, русское поле...»
Счётчик комментариев
devlog, sed_build_comments() mod, Seditio 130
Плагин для подсчёта и вывода пользовательских комментариев, с хранением значения счётчика в одном из пользовательских экстра полей на выбор.

Работает с модифицированной функцией sed_build_comments() - туда добавлен перехват при удалении комментария, выборка доп полей при создании листинга комментариев, новые теги.


1. новый перехват

Код:
// начало вставки
/* == Hook for the plugins == */
$extp = sed_getextplugins('comments.delete');
if (is_array($extp))
{ foreach($extp as $k => $pl) { include('plugins/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } }
/* ===== */
// конец вставки


2. добавка выборки доп полей в sql запросе

Код:
// тут добавлено: u.user_extra1, u.user_extra2, u.user_extra3, u.user_extra4, u.user_extra5


3. Новые теги для comments.tpl:

Код:
"COMMENTS_ROW_EXTRA1" => sed_cc($row['user_extra1']), // новое
"COMMENTS_ROW_EXTRA2" => sed_cc($row['user_extra2']), // новое
"COMMENTS_ROW_EXTRA3" => sed_cc($row['user_extra3']), // новое
"COMMENTS_ROW_EXTRA4" => sed_cc($row['user_extra4']), // новое
"COMMENTS_ROW_EXTRA5" => sed_cc($row['user_extra5']), // новое





Код который подключается к перехвату comments.send.new

Код:
$sql = sed_sql_query("SELECT COUNT(*) FROM $db_com WHERE com_authorid='".$usr['id']."'");

$res['total_u_comments'] = sed_sql_result($sql, 0, 'COUNT(*)');

$sql = sed_sql_query("UPDATE $db_users SET ".$cfg['plugin']['comcounter']['counterfield']."=".$res['total_u_comments']." WHERE user_id='".$usr['id']."'");


Код который подключается к перехвату comments.delete

Код:
$sql = sed_sql_query("SELECT COUNT(*) FROM $db_com WHERE com_authorid='".$row['com_authorid']."'");

$res['total_u_comments'] = sed_sql_result($sql, 0, 'COUNT(*)');

$sql = sed_sql_query("UPDATE $db_users SET ".$cfg['plugin']['comcounter']['counterfield']."=".$res['total_u_comments']." WHERE user_id='".$row['com_authorid']."'");


Опция в настройках плагина:

Код:
[BEGIN_SED_EXTPLUGIN_CONFIG]
counterfield=01:select:user_extra1,user_extra2,user_extra3,user_extra4,user_extra5:user_extra1:Field in sed_users for comments counter
[END_SED_EXTPLUGIN_CONFIG]




Админ инструмент для пересчёта комментариев по всем пользователям:

Код:
$plugin_body .= "<h4>Пересчитать пользовательские комментарии :</h4>";
$plugin_body .= "<form id=\"search\" action=\"admin.php?m=tools&amp;p=comcounter&amp;a=count&amp;".sed_xg()."\" method=\"post\">";
$plugin_body .= "<input type=\"submit\" class=\"submit\" value=\"Пересчитать\" /></form>";

if ($a=='count')
{
sed_check_xg();

$sql = sed_sql_query("SELECT user_id, user_name, ".$cfg['plugin']['comcounter']['counterfield']." FROM $db_users ");

$plugin_body .= "<ul>";

while ($row = sed_sql_fetcharray($sql))
{
$sql0 = sed_sql_query("SELECT COUNT(*) FROM $db_com WHERE com_authorid='".$row['user_id']."'");

$res['total_u_comments'] = sed_sql_result($sql0, 0, 'COUNT(*)');

$sql1 = sed_sql_query("UPDATE $db_users SET ".$cfg['plugin']['comcounter']['counterfield']."=".$res['total_u_comments']." WHERE user_id='".$row['user_id']."'");

$plugin_body .= "<li>".sed_build_user($row['user_id'], sed_cc($row['user_name']))." | Было: ".$row[$cfg['plugin']['comcounter']['counterfield']]." | Стало: ".$res['total_u_comments']."</li>";
}
$plugin_body .= "</ul>";
}





Инициатор доработки: портал crysis-russia.com

Превью результата:

Скачать : Счётчик комментариев   [ размер: 5.6KB, загружено 639 раз ]


[ написать отзыв ]
Ноябрь →
2011
вт
8
пн
7
вс
сб
пт
чт
ср
2
вт
1
Октябрь →
2011
пн
31
вс
сб
пт
28
чт
27
ср
26
вт
пн
вс
23
сб
22
пт
чт
20
ср
19