В общем столкнулся с такой бедой:
есть у меня такой rules награждает пользователя бонусами если он заполнил все поля в своем профиле.
Rules действует по событию After updating an existing user account но вот вопрос, очень странно что пользователю приходится дважды обновить свой профайл что бы сработал данный рулс.
Кто сталкивался?
Вот нагуглил есть такая беда с контентом http://drupal.org/node/1704290
Вот у человека та же беда http://drupal.stackexchange.com/questions/53413/why-is-my-rule-that-reac...
Сдается что первый раз user_save() используется где-то еще, а второй уже в моем рулсе.
Ваши мысли, может кто победил?
Комментарии
Используй hook_user_update
Возможно потому что рулес после всех манипуляций производит сохранение профиля и опять запускает себя?
Ты прав мой друг!
Забил я на Rules.
Написал мини модуль.
<?php
function custom_user_update(&$edit, $account, $category) {
// назначаю пользователю роль anketa_complete rid 3
db_insert('users_roles')
->fields(array('uid' => $account->uid, 'rid' => 3))
->execute();
// добавляю пользователю 50 баллов через userpoins api
userpoints_userpointsapi(50);
}
function
custom_form_alter(&$form, $form_state, $form_id) {if ($form_id == 'edit_profile_user_profile_form') {
global $user;
// отключаю sumbit если роль пользователя anketa_complete
if (in_array('anketa_complete', array_values($user->roles))) {
$form['actions']['submit']['#disabled'] = TRUE;
}
}
}
?>
Ах да совсем забыл, все поля в моей анкете обязательные - это сделано с целью получения всех данных от пользователя 1 раз и начисления ему бонусов 1 раз за полностью заполненную анкету.