Как реализовать чтобы пользователь в админке мог редактировать только определенные доп. поля?

rofl

Приватовец
Приватовец
Регистрация
22 Фев 2017
Сообщения
548
Реакции
141
Баллы
43
Привет. На DLE 12.1 нужно как-то сделать так, чтобы пользователи в админке могли видеть и редактировать только те доп поля, которые им разрешены. В DLE, в настройки доп полей уже есть пункт
"Разрешить добавление для следующих групп", если там выставить нужную группу и в эту группу занести пользователей, то они видят только разрешенные доп поля и текст полной новости / краткой новости, но если они отредактируют что-то и новость сохранят, то все доп. поля которые от них были скрыты станут пустыми и вся информация в них пропадет. Может у кого-то есть решение как сделать, чтобы скрытые доп поля не становились пустыми и текст полной/краткой новости был скрыт?
 

rofl

Приватовец
Приватовец
Регистрация
22 Фев 2017
Сообщения
548
Реакции
141
Баллы
43
up
Готов оплатить написание хака
 

Var

Новичок
Регистрация
3 Мар 2017
Сообщения
45
Реакции
19
Баллы
8
Присоединяюсь к ТС, интересует данный хак, так же готов скинуться.
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
@rofl, если такая пьянка, могу реализовать тогда уж.
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
Вот решение получше
Открываем /engine/inc/xfields.php находим
PHP:
case "init":
Ниже вставляем
PHP:
$xf_perm = $db->super_query("SELECT xfields FROM " . PREFIX . "_post WHERE id='{$id}'");
$xf_perm = xfieldsdataload($xf_perm['xfields']);
$arrayXfGroup = [];
Чуть ниже найти
PHP:
if( $value[19][0] AND !in_array( $member_id['user_group'], $value[19] ) ) {
   continue;
}
Заменить на
PHP:
if( $value[19][0] AND !in_array( $member_id['user_group'], $value[19] ) ) {
   $arrayXfGroup[] = $value[0];
}
Далее найти
PHP:
$postedxfields = $newpostedxfields;
Ниже вставить
PHP:
foreach($arrayXfGroup as $xfPName) {
   if ($xf_perm[$xfPName]) {
       $postedxfields[$xfPName] = stripslashes($xf_perm[$xfPName]);
   }
}
 
Сверху Снизу