Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Запрет изменения репутации пользователям

Опубликовано:

Немогу понять, как реализовать идею запрета изменять репутацию другим пользователям в теме, если у желающего изменить репутация ниже определенного количества (общая)... Точнее, немогу определить условие для переменной, определяющую общую репутацию не автора темы/ответа, а авторизованного пользователя.

 

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

 

Прописываю в repButtons -

 

<div <if test="$member['pp_reputation_points'] < -10">{parse replacement="rep_up_all_off"}</if>
<div <if test="$member['pp_reputation_points'] < -10">style="visibility:hidden;</if>">

 

И получается что pp_reputation_points выводит/подтягивает общую репутацию автора ответа/темы, а не авторизованного пользователя, т.е. условие некорректно.

Рекомендованные сообщения

Опубликовано:

У текущего пользователя (авторизованного или нет) всегда "супер массив" $this->memberData

$this->memberData['pp_reputation_points']

 

В шаблоне это конечно хорошо, но вы понимаете что кулхацкер свободно сможет отправить запрос в обход спрятанной кнопки. На самом деле это можно сделать проще http://ipbskins.ru/forum/topic9138.html?do=findComment&comment=66741, вместо $this->memberData['posts'] - $this->memberData['pp_reputation_points']. Ну и да.. Проверить что именно минусует можно при помощи переменной $rating - минус 0

Опубликовано:
  • Автор

1. Открыть файл admin/sources/classes/class_reputation_cache.php

2. Найти функцию addRate:

 

public function addRate( $type, $type_id, $rating, $message='', $member_id=0, $app='' )

 

 

3. Добавить в нее

 

if( $this->memberData['posts'] < 10 )

{

$this->error_message = 'Сообщение';

return false;

}

 

Хотел поэлегантней сделать, чтобы вместо обычных значков изменения репутации появлялись блеклые, если недопустимый балл репутации...

Опубликовано:
  • Автор

С другой стороны, эти два способа можно и совместить...

Опубликовано:
  • Автор

Я так понимаю, что запрос сделан неверно... не выполняется условие <if test="$this->memberData['pp_reputation_points']<-5">

 

   <td style="border-right:1px solid #fff;">
   <div <if test="$this->memberData['pp_reputation_points']<-5">{parse replacement="rep_up_all_off"}</if>
   <div <if test="$this->memberData['pp_reputation_points']<-5">style="visibility:hidden;"</if>>

<if test="canGiveRep:|:IPSMember::canGiveRep( $data, $member ) !== false">	
<div class="ipsList_inline" <if test="giveRepUp:|:IPSMember::canRepUp( $data, $member ) === false">style="display:none"</if>>		
					    <a href='{$this->settings['base_url']}app=core&module=global&section=reputation&do=add_rating&app_rate={$data['app']}&type={$data['type']}&type_id={$data['primaryId']}&rating=1&secure_key={$this->member->form_hash}&post_return={$data['primaryId']}' class='rep_up' title='{$this->lang->words['reputation_up']}'>{parse replacement="rep_up_all"}</a></div>
                           </if></div></div>
                           </td>

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.