Например в своем компоненте?
Пользователь обновил данные и хук выполнился.
Посмотрел по cmsEventsManager::hook в юзерах там про обновление нет ничего… для удаления юзеров средств выполнения хуков полно… а для обновления нет ничего… как быть?
$is_allowed = cmsEventsManager::hookAll('user_profile_update', $profile, true);
<?php class onUsersUserProfileUpdate extends cmsAction { public function run($item){ // Группа в которую переносим $group_to_id = 4; // Если автор еще не в нужной группе // Добавляем нужную группу $user['groups'][] = $group_to_id; // Удаляем повторения в массиве // Обновляем группы в профиле автора 'groups' => $user['groups'], 'date_group' => null )); } return $item; } }
Если return $item; выдает ошибку
Notice: Array to string conversion in templates/default/assets/ui/form_fields.tpl.php on line 93
Array
Но работу выполняет..
А если return; то ничего не происходит.
Что я делаю не так?
Что делать-то? Как мне при заполнении одного из обязательных полей перевести пользователя в другую группу?
Может есть решение другое, например стандартными методами???
Кстати неплохо бы было в "Профили пользователей" где переводы, типа зависимые от времени добавить фигню какую-нибудь… по заполнению каких-то полей или выполнению каких=то действий… Время это просто время, а вот стимул это выполнение действия.
Смотреть почему в строке 93 у файла templates/default/assets/ui/form_fields.tpl.php приходит массив, а не строкаЧто делать-то?
( [normal] => 000/u2/000/33aee11d.jpg [small] => 000/u2/000/3c70a9cb.jpg [micro] => 000/u2/000/5f9e66a8.jpg )
Сначала надо определить, в каком хуке идет изменение данных. Для это надо по очереди отключать события в Админка — Компоненты — Управление событиями и смотреть на проявление ошибки. И начать надо со своих или измененных событий. После этого уже можно будет более детально разбираться в ситуации.А где копать
все стандартно, за исключением того что я написал выше. кроме этого хука ничего нет. значит надо искать в системных событиях?
Сначала надо определить, в каком хуке идет изменение данных. Для это надо по очереди отключать события в Админка — Компоненты — Управление событиями и смотреть на проявление ошибки. И начать надо со своих или измененных событий. После этого уже можно будет более детально разбираться в ситуации.
И что вот теперь делать?
Так Вы же скрываете, что хотите сделать.В итоге у меня нифига не выходит. Я не понимаю в чем проблема… Никто не может помочь
Скажите открытым текстом, что должно произойти при обновлении пользователя и Вам сразу помогут.
Я например помогу.
Как же скрываю-то? Я написал что после Заполнения определенного поля профиля его необходимо проверить это поле и при удачном ответе пользователь перейдёт в другую группу.Так Вы же скрываете, что хотите сделать.
Изначально все пользователи в группе Новые. Если он добавит в поле информацию и она будет правильной, то его переведёт в группу Пользователи. Хук выше по идее должен это сделать… Но что-то идёт не так.
Из вашего хука непонятно, при каком условии обновляется группа юзера.
Но всё равно, попробуйте так:
<?php class onUsersUserProfileUpdate extends cmsAction { public function run($profile){ // Группа в которую переносим $group_to_id = 4; // Если автор еще не в нужной группе // Добавляем нужную группу $user['groups'][] = $group_to_id; // Удаляем повторения в массиве // Обновляем группы в профиле автора 'groups' => $user['groups'], 'date_group' => null )); } if ($this->cms_user->is_admin) { return $success; } if (!$this->isEmailAllowed($profile['email'])){ } if (!$this->isNameAllowed($profile['nickname'])){ } return $success; } }
Вставьте туда что угодно и результата не будет.