Создание контента только в группах

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Права доступа на создание контента

#1 4 декабря 2015 в 14:03
Приветствую друзья)
Есть у меня один тип контента, к примеру новости группы. Его можно создавать только в группах, стоит соответствующая галочка в админке. Но создавать его могут все пользователи состоящие в группе, если пользователь состоит в 10 группах, то он может в них создать новости, Нужно сделать так что бы этот тип контента могли создавать только админы группы. Этот /system/controllers/content/actions/item_add.php файлик отвечает за создание контента. есть там такой код

  1. // Если этот контент можно создавать в группах (сообществах) то получаем список групп
  2. $groups_list = array();
  3.  
  4. if ( (($ctype['is_in_groups'] || $ctype['is_in_groups_only'])) ){
  5.  
  6. $groups_model = cmsCore::getModel('groups');
  7. $groups = $groups_model->getUserGroups($user->id);
  8.  
  9. if (!$groups && $ctype['is_in_groups_only'] ){
  10. cmsUser::addSessionMessage(LANG_CONTENT_IS_IN_GROUPS_ONLY, 'error');
  11. $this->redirectBack();
  12. }
  13. //Нужно где то здесь запилить проверку, что бы выводились только те группы в которых пользователь является администратором, а не все в которых он состоит.
  14. $groups_list = ($ctype['is_in_groups_only']) ? array() : array('0'=>'');
  15. $groups_list = $groups_list + array_collection_to_list($groups, 'id', 'title');
  16.  
  17. }
  18.  
PHP знаю, не очень хорошо, а точнее плохо, по этому ХЕЛП!!!
#2 6 декабря 2015 в 21:55

Нужно сделать так что бы этот тип контента могли создавать только админы группы

TopDevice
В настройках же это есть.В графе "Доступ".Или я недопонял?
#3 6 декабря 2015 в 22:27


Нужно сделать так что бы этот тип контента могли создавать только админы группы

TopDevice
В настройках же это есть.В графе "Доступ".Или я недопонял?

Lora

В графе доступ задаются настройки для групп пользователей(может эта группа пользователей создать данный тип контента ), мне же нужно сделать, что бы определенный тип контента могли создавать только администраторы группы,
#4 7 декабря 2015 в 09:14
Что то я не как не въеду. В первом посте вы пишите что у вас есть определённый тип контента.Если он уже есть зачем его снова создавать? А здесь

В графе доступ задаются настройки для групп пользователей(может эта группа пользователей создать данный тип контента ),

TopDevice

мне же нужно сделать, что бы определенный тип контента могли создавать только администраторы группы

TopDevice
по моему одно и тоже написано.
И разве можно создать тип контента не из админки? Можно производить действия "внутри", т.е. добавлять посты, записи, редактировать и т.п.Но создавать сам тип контента, что то я не нашёл такого.
#5 7 декабря 2015 в 09:27


Что то я не как не въеду. В первом посте вы пишите что у вас есть определённый тип контента.Если он уже есть зачем его снова создавать? А здесь

В графе доступ задаются настройки для групп пользователей(может эта группа пользователей создать данный тип контента ),

TopDevice

мне же нужно сделать, что бы определенный тип контента могли создавать только администраторы группы

TopDevice
по моему одно и тоже написано.
И разве можно создать тип контента не из админки? Можно производить действия "внутри", т.е. добавлять посты, записи, редактировать и т.п.Но создавать сам тип контента, что то я не нашёл такого.

Lora

Попробую с самого начала)
Есть тип контента "Товар", в админке стоит галочка, создавать только в группах. нужно добавить еще одно условие, что бы это тип контента создавался только администраторами групп.
То есть идея в том, что человек заходит на сайт, создает свою группу, и эту группу наполняет товаром.
Сейчас товар может добавить любой человек состоящий в группе.
#6 7 декабря 2015 в 10:13

Сейчас товар может добавить любой человек состоящий в группе

TopDevice
Нет.Если в доступе стоит только администратор, то и добавлять запись может только тот член группы, кто является администратором.По крайней мере у меня так.
#7 7 декабря 2015 в 10:34
В настройках типа контента в вкладке доступ есть 4 группы пользователей(Новые, пользователи, модераторы, администраторы), человек который только пришел на сайт автоматически относится к группе пользователей "НОВЫЕ", Если он создал группу, он становится ее администратором, но для всего сайта он остается обычным пользователем, относящимся к группе "Новые". Группа пользователей администраторы в настройках типа контента, относится к администраторам всего сайта, а не к администраторам групп. В приведенном куске кода в первом посте, выводится список групп в которых состоит пользователь, мне нужно вывести список групп в которых пользователь является админом, Если сможете подсказать как это сделать, буду благодарен.
#8 7 декабря 2015 в 10:41
А что это за администратор группы? Знаю есть владелец или создатель, а кто ещё есть?
#9 7 декабря 2015 в 10:46


А что это за администратор группы? Знаю есть владелец или создатель, а кто ещё есть?

Lora

На скрине показал, в настройках группы создатель может назначить дополнительно администраторов.
Прикрепленный файл
_nvvtd.png 35 Кб
#10 7 декабря 2015 в 11:10
Хорошо, понятно.Но просто прописать условие не получится.Нужно найти файл где выполняется запрос и там править.Попробую найти, так как сам юзаю первую ветку.
#11 7 декабря 2015 в 11:14


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

Lora

У меня 2.3.0 /system/controllers/content/actions/item_add.php думаю ковырять нужно этот файл
#12 7 декабря 2015 в 11:41

У меня 2.3.0 /system/controllers/content/actions/item_add.php думаю ковырять нужно этот файл

TopDevice
Повторяю

Нужно найти файл где выполняется запрос в базу и там править

Lora
Принадлежность к группе администраторов задаёт переменая $groups['role'] равная 2, но задать условие нельзя, так как будут выводиться все группы в которых есть администраторы.
#13 8 декабря 2015 в 16:22
Проблема решина,
  1.  
  2. if ( (($ctype['is_in_groups'] || $ctype['is_in_groups_only'])) ){
  3.  
  4. $groups_model = cmsCore::getModel('groups');
  5. $groups = $groups_model->getUserGroups($user->id);
  6.  
  7. if (!$groups && $ctype['is_in_groups_only'] ){
  8. cmsUser::addSessionMessage(LANG_CONTENT_IS_IN_GROUPS_ONLY, 'error');
  9. $this->redirectBack();
  10. }
  11.  
  12.  
  13. $groups_model = cmsCore::getModel('groups');
  14. $groups_model->filterEqual('role', 2);
  15. $groups = $groups_model->getUserGroups($user->id);
  16.  
  17.  
  18. if( $group['owner_id'] != $user->id){
  19. $groups_list = ($ctype['is_in_groups_only']) ? array() : array('0'=>'');
  20. $groups_list = $groups_list + array_collection_to_list($groups, 'id', 'title');
  21.  
  22. }
  23. if (!$groups_list) {
  24. cmsUser::addSessionMessage(LANG_CONTENT_IS_IN_GROUPS_ONLY, 'error');
  25. $this->redirectBack();
  26. }
  27.  
  28.  
  29.  
  30. }
  31.  
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.