"Различное" изменение кармы, как сделать?

Автор Snifer, 10 апреля 2012, 15:16:32

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Snifer

Как сделать, чтобы юзер если прибавляет карму другому пользователю, то прибавлялось +1, а если минусовал, то -5 например.
В каком файле можно поправить число?

GeorG

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Snifer

Цитата: GeorG от 10 апреля 2012, 22:07:36Смотрите файл - ../Sources/Karma.php
да смотрю...

вот только понять не могу, как его изменить... по идее, это здесь:


// Change by one.
updateMemberData($_REQUEST['uid'], array($dir == 1 ? 'karma_good' : 'karma_bad' => '+'));

Но вот как сделать... Вложеным запросом к бд?

trora

updateMemberData($_REQUEST['uid'], array($dir == 1 ? 'karma_good'   => '+'));
updateMemberData($_REQUEST['uid'], array($dir == 5 ? 'karma_bad'  => '-'));
.
както вот так наверное
я не доллар чтоб всем нравиться

Snifer

Цитата: trora от 11 апреля 2012, 08:06:14updateMemberData($_REQUEST['uid'], array($dir == 1 ? 'karma_good'   => '+'));updateMemberData($_REQUEST['uid'], array($dir == 5 ? 'karma_bad'  => '-'));. както вот так наверное

Нет, там все выходит немного сложнее.

В файле Subs.php вот этот код отвечает за инкремент значения:

// Doing an increment?
if ($type == 'int' && ($val === '+' || $val === '-'))
{
$val = $var . ' ' . $val . ' 1';
$type = 'raw';
}

Загвоздка вся заключается в том, что если вот здесь ". $val . ' 1';" поменять единичку на 10, то инкремент буде и в + карму и в минус и в колличество сообщений.

Вот собственно, сейчас задумался сделать так:

// Doing an increment?
if ($type == 'int' && ($val === '+' || $val === $test))
{
$val = $var . ' ' . $val . $test;
$type = 'raw';
}

И в зависимости от действия, назначать этой переменной значение. Если отнимаешь карму, то значение 10, если прибавляешь карму и пост - то 1.

Как то так... Но не могу себе представить как отследить, какое действие производится...

GeorG

Вместо этого:
updateMemberData($_REQUEST['uid'], array($dir == 1 ? 'karma_good' : 'karma_bad' => '+'));

Вот это:

if($dir == 1){
$smcFunc['db_query']('', '
UPDATE {db_prefix}members
SET karma_good = karma_good + {int:newkarma}
WHERE id_member = {int:memberid}',
array(
'newkarma' => 1,
'memberid' => $_REQUEST['uid']
)
);
}
else {

$smcFunc['db_query']('', '
UPDATE {db_prefix}members
SET karma_bad = karma_bad + {int:newkarma}
WHERE id_member = {int:memberid}',
array(
'newkarma' => 5,
'memberid' => $_REQUEST['uid']
)
);
}
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

maestrosite.ru

Но здесь есть маленький нюанс. А именно ситуация, когда сначала поставил плюс, а потом меняешь мнение на минус.

То есть в Subs.php надо выносить кармические параметры из массива $knownInts, и смотреть чертыре варианта (в скобках исходное - результат):
1. Только плюс (0/0 -> +1/0)
2. Только минус (0/0 -> 0/-5)
3. Убрать плюс и добавить минус (+1/0 -> 0/-5)
4. Убрать минус и добавить плюс (-5/0 -> +1/0)

PS А чего не хотите при выводе (выборке) значений множитель поставить? Думаете, сильно нагрузка возрастёт?
При загрузке свойств одного пользователя - изменить строку, а при загрузке списка пользователей  добавить строку с множителем.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

Nitro

Прошу прощения, а кто нибудь реализовал в итоге эту функцию так, чтобы можно было задавать при выставлении кол-во прибавляемой или отнимаемой кармы?

trora

никому это не надо. проще задать вопрос на офф сайте в разделе форума- посвященного этому моду
я не доллар чтоб всем нравиться

Nitro

Цитата: trora от 14 августа 2012, 11:35:29
никому это не надо. проще задать вопрос на офф сайте в разделе форума- посвященного этому моду
я лично использую немного кастомизированный Karma_Description_Mod ...

maestrosite.ru

Цитата: Nitro от 14 августа 2012, 10:38:04
Прошу прощения, а кто нибудь реализовал в итоге эту функцию так, чтобы можно было задавать при выставлении кол-во прибавляемой или отнимаемой кармы?
То есть, захочу 5 прибавлю, а захочу 2?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

Nitro

Цитата: maestrosite.ru от 14 августа 2012, 12:19:17
То есть, захочу 5 прибавлю, а захочу 2?
Все верно. И чтобы это делалось через имеющуюся форму Karma_Description_Mod, где указывается обязательно причина и все это записывается в лог... Вот там бы и добавить поле с кол-вом баллов, было бы идеально. Странно, если я действительно первый кто об этом спросил, я так думаю добавить туда поле для ввода и дополнительно передавать кол-во баллов, вместо стандартного +1 не так сложно для мастеров...