Drupal 6 drupal 6和ubercart之间奇怪的$user变量混淆

Drupal 6 drupal 6和ubercart之间奇怪的$user变量混淆,drupal-6,Drupal 6,我已经设置了一个hook alter,它向webform提交链添加了一个提交函数。在该函数中,我添加了一些其他处理: function webform_checkout_form_alter(&$form, &$form_state, $form_id) { $form['#submit'][] = 'webformSubmitAlteration'; } function webformSubmitAlteration(&$form, &$form

我已经设置了一个hook alter,它向webform提交链添加了一个提交函数。在该函数中,我添加了一些其他处理:

function webform_checkout_form_alter(&$form, &$form_state, $form_id) {
    $form['#submit'][] = 'webformSubmitAlteration';   
}
function webformSubmitAlteration(&$form, &$form_state) {
    global $user;
    $user->last_submission = $sids[1];
    drupal_set_message('<pre> current user is: '. check_plain(print_r($user, TRUE)) .'</pre>');
}
然后,我通过checkout处理购物车,这将触发一个运行一些定制php的ubercart条件操作。基本上,当这个付款完成被捕获时,我想使用最后的提交值将提交的表单从草稿切换到完成,这样我的用户就可以知道哪些应用程序已经完成并清理完毕

在这段代码中,我添加了:

user is : stdClass Object
(
    [uid] => 1
    [name] => paul.dambra
    [last_submission] => 47
)
我知道47是处理相关表格之前的最后一次提交值。因此,即使当我提交表单时,我可以看到上次提交的正确值,但当我随后处理购物车时,我会看到一个旧值


任何关于我可能做错了什么的指点都是超级棒的

我必须编辑代码以:

它现在的工作方式和我预期的一样。希望能帮助别人

global $user; 
drupal_set_message('<pre> user is : '. check_plain(print_r($user, TRUE)) .'</pre>');
$sid = $user->last_submission;
drupal_set_message('<pre> sid is : '. check_plain(print_r($sid, TRUE)) .'</pre>');
user is : stdClass Object
(
    [uid] => 1
    [name] => paul.dambra
    [last_submission] => 47
)
    global $user;
    if ($user) {
      $array = array('last_submission' => $sids[1]);
      user_save($user, $array);       
    }