Хук content_list_filter и права доступа к контенту

#1 21 ноября 2016 в 11:24
Добрый день. В ходе реализации сообщения 19 из темы instantcms.ru/forum/thread25643-2.html столкнулся с ситуацией. Есть тип конента щенков. В него пользователи добавляют щенков. Сразу после добавления щенок скрывается с помощью простановки 1 в поле onmoderate и хука

  1. <?php
  2. class onCabinetContentDogsListFilter extends cmsAction {
  3. public function run($data){
  4. list($ctype, $model) = $data;
  5. $is_can_onmoderate = cmsUser::isAdmin() || cmsUser::isAllowed('view', 'onmoderate', 'all');
  6. if($is_can_onmoderate){return array($ctype, $model);}//раз у него права для просмотра всех собачек, то зачем ему фильтры
  7. if(cmsUser::isAllowed('view', 'onmoderate', 'own')){//тут для тех, кто может смотреть своих собачек
  8. //echo "<pre>заводчик ау</pre>";exit;
  9. //что тут написать?
  10. return array($ctype, $model);
  11. }
  12. $model->filterIsNull('onmoderate');
  13. return array($ctype, $model);
  14. }
  15. }
  16.  
1. Для тех, кто может смотреть всех собачек на модерации, т.е. $is_can_onmoderate, работает корректно.
2. Для гостей $model->filterIsNull('onmoderate'); тоже все хорошо.

Проблема встала с необходимостью добавить к показу собачек, чьим автором он является, для конкретного заводчика, т.е. того, кому разрешено только cmsUser::isAllowed('view', 'onmoderate', 'own')

Можно написать
  1. if(cmsUser::isAllowed('view', 'onmoderate', 'own')){//тут для тех, кто может смотреть своих собачек
  2. $model->resetFilters();
  3. $model->filterEqual('is_pub',1)->filterEqual('is_approved',1)->filterAnd()->filterStart()->filterIsNull('onmoderate')->filterOr()->filterEqual('user_id',cmsUser::get('id'))->filterEnd();
  4. return array($ctype, $model);
  5. }
но тогда не будут работать фильтры в типе контента...

Буду рад любым мыслям.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.