Добрый день, у меня программно создаётся/обновляется пользователь на сайте, и по ходу создания заполняются дополнительные поля. Когда поле имеет одно значение всё достаточно просто
Create user
'field_user_title_subdepartment' => array(LANGUAGE_NONE => array(array('value' => $data->title_subdepartment))),
'field_user_phone' => array(LANGUAGE_NONE => array(array('value' => $data->phone))),
'field_user_hash' => array(LANGUAGE_NONE => array(array('value' => $data->hash))),
Update user
$user_fields->field_user_title_subdepartment['und'][0]['value'] = $data->title_subdepartment;
$user_fields->field_user_phone['und'][0]['value'] = $data->phone;
$user_fields->field_user_hash['und'][0]['value'] = $data->hash;
А теперь стала задача программно заполнить поле Роли (текстовое поле с неограниченным количеством значений)
Причём у меня задача состоит из двух подзадач, данные которые приходят для заполнения представляют собой большую строку, где значение разделяются символом | , т.е. например на входе:
Администратор|Модератор|Эксперт
Мне нужно его разбить как бы в перечень значений, и занести их при создании или изменении пользователя (в случае изменения, нужно старые значения все удалить и просто вставить новые)
Строку на входе получается я explode-ю, а дальше как то циклом нужно поместить в поле
$input_roles = 'Администратор|Модератор|Эксперт';
$array_roles = explode('|', $input_roles);
foreach ($array_roles as $role)
{
...
}
Ответы
Пример кода:
// id пользователя, которому назначаются роли.
$uid = 3;
$role_names = array(
'Администратор',
'Модератор',
'Эксперт',
);
foreach ($role_names as $role_name) {
$role = user_role_load_by_name($role_name);
if ($role) {
user_multiple_role_edit(array($uid), 'add_role', $role->rid);
}
}