Advanced Reputation System

Автор shugart, 26 марта 2011, 22:27:17

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

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

shugart

Установил reputation_1-1-x_0-1-5.zip
Все вродибы норм, есть одно неудобство - чтобы посмотреть камменты к плюсам и минусам пользователя необходимо войти в профиль пользователя, потом Просмотр репутации...
А где и как добавить ссылку (со шкалы репутации под аватаркой) на Просмотр репутации данного пользователя

Заранее благодарен

human

В Themes/default/Display.template.php найти код echo '<img src="', $settings['images_url'], '/karma', $karma_bar['type'], '.gif" title="', $message['member']['name'], ' ', $karma_bar['desc'], '" alt="', $message['member']['name'], ' ', $karma_bar['desc'], '" />'; и заменить на echo '<a href="', $scripturl, '?action=profile;u=', $message['member']['id'],';sa=reputation"><img src="', $settings['images_url'], '/karma', $karma_bar['type'], '.gif" title="', $message['member']['name'], ' ', $karma_bar['desc'], '" alt="', $message['member']['name'], ' ', $karma_bar['desc'], '" /> </a>';
Правильно заданный вопрос - половина ответа..

shugart


alexys1975

Есть проблемка другова характера, вроде всё работает, но в логах появляется
Цитировать
http://forum.riaf.biz/index.php?action=profile;area=reputation;u=1
Применить фильтр: Показать ошибки только с теми сообщениями
8: Undefined variable: num_given
Применить фильтр: Отображать ошибки только этого файла
Файл: /var/www/alvik/data/www/forum.riaf.biz/Sources/Profile-View.php
Строка: 2164

2164 строка:

$context['page_index'] = constructPageIndex($scripturl . '?action=reputation', $_REQUEST['start'], $num_given, 50);

Есть у кого мысли?

GeorG

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

alexys1975

Вот и я так думаю, только вот толку. Что же может быть?

GeorG

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

alexys1975

Цитата: GeorG от 21 мая 2011, 21:28:57
Можно предположить, что ошибка выше (не в этой строке) :)

Вот это правильно, вот теперь всё понятно!

BIOHAZARD

там английским по плоскому написано: Undefined variable: num_given
у вас не объявлена переменная, которая используется в строке 2164
где она должна объявляться с ходу вряд ли кто подскажет, надо залезать в код по локоть
для начала проверьте, весь ли код мода установился в полном объёме
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Sjoker

Profile-View.php
// Construct the page index
$context['page_index'] = constructPageIndex($scripturl . '?action=reputation', $_REQUEST['start'], $num_given, 50);

заменить на
  // Construct the page index
$context['page_index'] = constructPageIndex($scripturl . '?action=profile;area=reputation;u=' . $memID, $_REQUEST['start'], $total_actions, $amount);

Karma.php

// Construct the page index
$context['page_index'] = constructPageIndex($scripturl . '?action=profile;area=reputation;u=' . $memID, $context['start'], $total_actions, $amount);

заменить на
  // Construct the page index
$context['page_index'] = constructPageIndex($scripturl . '?action=reputation', $_REQUEST['start'], $num_given, 50);
$context['start'] = isset($_REQUEST['start']) ? (int) $_REQUEST['start'] : 0;


alexys1975

Спасибо огромное, без болтавни и по делу!!!!  O0 Всё, ошибка ушла в небытие!

schta

Пытаясь поставить мод Advanced Reputation System v1.8.3 на smf2.0.1 (пусть и с эмуляцией 2.0.0), выскочило сообщение о настоятельной нерекомендации дальнейшей установки.

суть:
Цитировать10.    Изменение файла    ./Sources/Display.php    Неудачно
      1.    Добавить после    ./Sources/Display.php    Успешно
      2.    Заменить    ./Sources/Display.php    Неудачно
      3.    Добавить после    ./Sources/Display.php    Успешно

Тыкнув на блокностик - выскочило окошко с кодом найти
$messages_request = $smcFunc['db_query']('', '
SELECT
id_msg, icon, subject, poster_time, poster_ip, id_member, modified_time, modified_name, body,
smileys_enabled, poster_name, poster_email, approved,
id_msg_modified < {int:new_from} AS is_read
FROM {db_prefix}messages
WHERE id_msg IN ({array_int:message_list})
ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),
array(
'message_list' => $messages,
'new_from' => $topicinfo['new_from'],
)
);


и кодом заменить:
$messages_request = $smcFunc['db_query']('', '
SELECT
m.id_msg, m.icon, m.subject, m.poster_time, m.poster_ip, m.id_member, m.modified_time, m.modified_name, m.body,
m.smileys_enabled, m.poster_name, m.poster_email, m.approved,
m.id_msg_modified < {int:new_from} AS is_read, k.message AS is_repped
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}log_karma AS k ON (k.message = m.id_msg AND k.id_executor = {int:current_member})
WHERE m.id_msg IN ({array_int:message_list})
ORDER BY m.id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),
array(
'message_list' => $messages,
'new_from' => $topicinfo['new_from'],
'current_member' => $user_info['id'],
)
);

Братцы, кто соображает в пхп коде, подскажите что это.

Хотя вот наличие русской локализации от товарища Ben K внушает оптимизм
Жизнь - это что? Жизнь - это как? Жизнь - это зачем?

.... И кто мне ответит???

0daliska

Запрос в БД, написанный на родном php
А вы что-то другое ожидали там увидеть? :)
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

schta

"О, богиня всех пэхэпэшников всея Руси, спаси и сохрани" - хотел я написать, но поскромничаю пожалуй)).
Вопрос тогда простой, прямой и искренний: Ставить или нет? И что будет если поставлю, игнорировав предупреждение smf?
Жизнь - это что? Жизнь - это как? Жизнь - это зачем?

.... И кто мне ответит???

BIOHAZARD

не будет работать и будет заваливать лог ошибками

нужно вручную найти данный фрагмент кода и подправить по образцу
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

schta

тоесть в файлике корень_форума/Sources/Display.php  просто найти предложенный форумом кусок кода и заменить его на предложенный им же? И потом ставить и надеяться что все будет хорошо? Я вас правильно понял?
Жизнь - это что? Жизнь - это как? Жизнь - это зачем?

.... И кто мне ответит???

schta

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

.... И кто мне ответит???

GeorG

ЦитироватьИ потом ставить и надеяться что все будет хорошо? Я вас правильно понял?
Сперва всё ж, лучше поставить, а потом заменить, хотя разницы особой, нет.

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

schta

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

.... И кто мне ответит???

0daliska

Вы вместо того, чтобы тупо копировать и вставлять и задавать вопросы, кто знает, а что это?
Привели бы код, который у Вас был прописан до установки мода, возможно и помогли бы вписать не тупо...
Возможно, что еще какой-то мод уже вписал свои запросы в этот кусок файла, а потому, скопировав кусок одного мода и вставив его, Вы испортили работу другого мода, который и выдавал ошибку в сообщениях..
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

schta

Код точно такой же, совпало все до последней запятушечки, я проверил перед заменой. хз
Жизнь - это что? Жизнь - это как? Жизнь - это зачем?

.... И кто мне ответит???

Roma

Обнаружилась досадная недоработка в моде. Если удалять репутацию не по одному пункту, а выделяя больше одного, то данные из таблицы smf_log_karma удаляются корректно, а вот поля karma_good и karma_bad в таблице smf_members, не обновляются правильно. Т.е., отнимается только первое значение, первого пункта.

Пример:

У человека 3 раза поднята репутация, по 20 единиц (общее 60), выделяем все три пункта, жмем удалить, 3 пункта удаляются, но значение остается 40, когда должно остаться 0.

Ошибка в этом отрезке кода (файл Profile-View.php):

// Are we deleting karma entries?
if(isset($_POST['deleteBoxes']))
{
is_not_guest();
isAllowedTo('delete_karma');
checkSession('request');

foreach($_POST['deleteBoxes'] as $value)
if(!preg_match('/[0-9]+\|[0-9]+\|[0-9]{10}/', $value))
die('Hacker!!!');
else
$delete[] = explode('|', $value);

foreach($delete as $value)
{
$request = $smcFunc['db_query']('', '
SELECT action, action_type
FROM {db_prefix}log_karma
WHERE id_executor = {int:executor}
AND log_time = {int:time}
LIMIT 1',
array(
'executor' => $value[1],
'time' => $value[2]
)
);

// Reverse prior actions
while($row = $smcFunc['db_fetch_assoc']($request))
{
loadMemberData($value[0]);
loadMemberContext($value[0], false);

if($row['action_type'] == 'karma_good')
updateMemberData($value[0], array('karma_good' => ($memberContext[$value[0]]['karma']['good'] - ((int) $row['action']))));
else if($row['action_type'] == 'karma_bad')
updateMemberData($value[0], array('karma_bad' => ($memberContext[$value[0]]['karma']['bad'] - ((int) $row['action']))));
}

$smcFunc['db_free_result']($request);

$smcFunc['db_query']('', '
DELETE
FROM {db_prefix}log_karma
WHERE id_executor = {int:executor}
AND log_time = {int:time}',
array(
'executor' => $value[1],
'time' => $value[2]
)
);
}
}

Вызов его происходит с файла Profile.template.php. Но там нет ошибок.
Бьюсь уже сутки, не могу исправить код, чтобы он корректно удалял все выделенные пункты (больше одного), ничего не получается wallbash
По одному, удаляет без ошибок.
Плиз помогите.

Roma

Я так понимаю - $memberContext[$value[0]]['karma']['good'] которое считывает значения из БД, не обновляет своё значения, потому переменная перезаписывается первым значением, которые уже было обработано (возможно, не срабатывает счётчик массива).

Как запустить этот счетчик, чтобы он работал корректно, или значения обновлялось? Может, есть какая функция, которая принудительно запрашивает значения из БД, но здесь она по недосмотру пропущена?

Roma

Неужели никто не скажет ничего?

Roma

Ну помогите, плиз... Ведь не я один использую этот мод. Неужели не интересно разобраться с багом?

GeorG

И правда не корректно удаляется, но только тогда, когда удаляются пункты репутации, которые поставил один человек, если удалять репутацию от разных юзеров, то всё в порядке.

Вот исправленный вариант, тут все удаляется корректно:

    // Are we deleting karma entries?
    if(isset($_POST['deleteBoxes']))
    {
        is_not_guest();
        isAllowedTo('delete_karma');
        checkSession('request');

        foreach($_POST['deleteBoxes'] as $value)
            if(!preg_match('/[0-9]+\|[0-9]+\|[0-9]{10}/', $value))
                die('Hacker!!!');
            else
                $delete[] = explode('|', $value);

        foreach($delete as $value)
        {
            $request = $smcFunc['db_query']('', '
                SELECT action, action_type
                FROM {db_prefix}log_karma
                WHERE id_executor = {int:executor}
                AND log_time = {int:time}
                LIMIT 1',
                array(
                    'executor' => $value[1],
                    'time' => $value[2]
                )
            );

// Reverse prior actions
while($row = $smcFunc['db_fetch_assoc']($request))
{
loadMemberData($value[0]);
loadMemberContext($value[0], false);

if($row['action_type'] == 'karma_good'){

$smcFunc['db_query']('', '
UPDATE {db_prefix}members
SET karma_good = karma_good - {int:newkarma}
WHERE id_member = {int:memberid}',
array(
'newkarma' => (int) $row['action'],
'memberid' => $value[0]
)
);
}
else if($row['action_type'] == 'karma_bad'){
$smcFunc['db_query']('', '
UPDATE {db_prefix}members
SET karma_bad = karma_bad - {int:newkarma}
WHERE id_member = {int:memberid}',
array(
'newkarma' => (int) $row['action'],
'memberid' => $value[0]
)
);
}
}

            $smcFunc['db_free_result']($request);

            $smcFunc['db_query']('', '
                DELETE
                FROM {db_prefix}log_karma
                WHERE id_executor = {int:executor}
                AND log_time = {int:time}',
                array(
                    'executor' => $value[1],
                    'time' => $value[2]
                )
            );
        }
    }
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Roma

Спасибо, все работает O0

germik

Проблема такая - почему-то модераторы не могут редактировать репутацию в профиле пользователей. То есть полей, где пишутся цифры репутации, просто нет. У администратора они есть. Плюс модераторы не могут удалять пункты репутации.
Версия форума 2.0.1. Недавно перешел с 1.1.11
С чем может быть связано?

Скрин страницы с правами модератора


Скрин страницы профиля

GeorG

Цитата: germik от 05 ноября 2011, 01:11:27То есть полей, где пишутся цифры репутации, просто нет
Для того чтобы правили модераторы карму, должно быть включено "Администрирование форума и базы данных" (графа - "Администрирование форума" в правах), но не каждый такое, доверяет модераторам :)
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

germik

Цитата: GeorG от 05 ноября 2011, 02:21:48
Для того чтобы правили модераторы карму, должно быть включено "Администрирование форума и базы данных" (графа - "Администрирование форума" в правах), но не каждый такое, доверяет модераторам :)

Шойтан! И правда!  O0

Вот и я не стал доверять модераторам и отключил. Спасибо!  :)

germik

В догонку еще вопрос. Вдруг он также быстро решается :)

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

P.S. если вопрос поднимался уже, прошу прощения. Не нашел в поиске.

Макар

Цитата: germik от 05 ноября 2011, 08:13:51Никто не пробовал вывести лог изменений репутации для всех пользователей с возможностью удаления каких-либо пунктов.

http://custom.simplemachines.org/mods/index.php?action=search;basic_search=karma;bool=and;asc;start=0

три мода в той или иной мере могут соответствовать запросу
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

germik

Цитата: Макар от 05 ноября 2011, 15:39:48
http://custom.simplemachines.org/mods/index.php?action=search;basic_search=karma;bool=and;asc;start=0

три мода в той или иной мере могут соответствовать запросу


По описанию, вроде, этот подходит Log Karma Actions. Но настораживает то, что мод больше не поддерживается и нет скриншотов и демо.
Надо будет попробовать на тестовой площадке установить предварительно.
Отпишусь по результатам.

GeorG

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

sgtWhite

Насколько я понимаю в сабже не предусмотрена рассылка с уведомлением об изменении репутации в ЛС ?

kak2z

Цитата: sgtWhite от 27 июня 2016, 18:13:36Насколько я понимаю в сабже не предусмотрена рассылка с уведомлением об изменении репутации в ЛС ?
если не предусмотрена, то сделать не сложно.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

sgtWhite

kak2z, в моем случае овчинка выделки не стоит. Меня в данном моде привлекла только одна функция - "вес голоса", чего нет ни в стандартной карме ни в Karma Description (если бы он работал в паре с Weighted Karma то было бы замечательно, ан фигушки).