Модераторы контента и неуникальность никнейма

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 11 сентября 2016 в 20:44
В процессе написания компонента весь день ищу вариант, где хранить список модераторов.
Решил сделать также, как в типах контента. Поковырял метод add() в \system\controllers\admin\actions\ctypes_moderators.php

И удивился. В него передается nickname. А в двойке, как мы знаем, никнеймы не уникальны. И уже по никнейму ищется id пользователя… Получается, если у нас на сайте два Васи, мы никогда не сможем второго Васю сделать модератором… Так?

  1. private function add(){
  2.  
  3. if (!$this->request->isAjax()) { cmsCore::error404(); }
  4.  
  5. $name = $this->request->get('name');
  6.  
  7. if (!$name) { cmsCore::error404(); }
  8.  
  9. $template = cmsTemplate::getInstance();
  10.  
  11. $users_model = cmsCore::getModel('users');
  12.  
  13. /* тут бяда... */$user = $users_model->filterEqual('nickname', $name)->getUser();
  14.  
  15. if ($user===false){
  16. return $template->renderJSON(array(
  17. 'error' => true,
  18. 'message' => sprintf(LANG_CP_USER_NOT_FOUND, $name)
  19. ));
  20. }
  21.  
  22. $moderators = $this->content_model->getContentTypeModerators($this->ctype['name']);
  23.  
  24. if (isset($moderators[$user['id']])){
  25. return $template->renderJSON(array(
  26. 'error' => true,
  27. 'message' => sprintf(LANG_MODERATOR_ALREADY, $name)
  28. ));
  29. }
  30.  
  31. $moderator = $this->content_model->addContentTypeModerator($this->ctype['name'], $user['id']);
  32.  
  33. if (!$moderator){
  34. return $template->renderJSON(array(
  35. 'error' => true,
  36. 'message' => LANG_ERROR
  37. ));
  38. }
  39.  
  40. return $template->renderJSON(array(
  41. 'error' => false,
  42. 'name' => $name,
  43. 'html' => $template->render('ctypes_moderator', array(
  44. 'moderator' => $moderator,
  45. 'ctype' => $this->ctype
  46. ), new cmsRequest(array(), cmsRequest::CTX_INTERNAL)),
  47. 'id' => $user['id'],
  48. ));
  49.  
  50. }
#2 11 сентября 2016 в 21:01
Так ведь в форму добавления модератора к типу контента вы вводите никнейм. Поэтому фильтрация идёт по никнейму, и если Васей много, то сработает первый в списке.
#3 11 сентября 2016 в 21:03

Поэтому фильтрация идёт по никнейму, и если Васей много, то сработает первый в списке.

Loadырь
Если Васей 2. Их в списке автокомплита и будет 2. И админ сайта подумает, что если выбрать второго Васю, то модератором станет второй Вася. А на самом деле у второго Васи нет шансов...

Так?

Zau4man
Loadырь, получается, что проблема таки есть?..
#4 11 сентября 2016 в 21:10

получается, что проблема таки есть?

Zau4man
Да, id пользователя не передаётся.
#5 11 сентября 2016 в 21:36
На гитхабе 2.5 месяца github.com/instantsoft/icms2/issues/268
#7 13 сентября 2016 в 22:14
Казалось бы, маленькая задачка. А сделана сотня правок аж в 15 файлах!
Спасибо, Fuze!
#8 13 сентября 2016 в 22:28
Fuze, Спасибо большое. Оперативно.
#9 13 сентября 2016 в 22:28
Закрыто
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.