Rules и двойное сохранение профайла [Решено]

Главные вкладки

Аватар пользователя dkslalkasdlsa dkslalkasdlsa 16 мая 2013 в 21:55

В общем столкнулся с такой бедой:
есть у меня такой 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() используется где-то еще, а второй уже в моем рулсе.

Ваши мысли, может кто победил?

Комментарии

Аватар пользователя aa2007 aa2007 17 мая 2013 в 10:10

Возможно потому что рулес после всех манипуляций производит сохранение профиля и опять запускает себя?

Аватар пользователя dkslalkasdlsa dkslalkasdlsa 17 мая 2013 в 16:51

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Используй 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 раз за полностью заполненную анкету.