2013-07-22 2 views
0

У меня есть (в настоящее время работающий) плагин, который создает пользователя в сторонней системе, когда пользователь регистрируется. Пока это работает.user-> setParam in onUserAfterSave плагин не имеет эффекта

Я пытаюсь теперь добавить параметры пользователя, чтобы сохранить идентификатор третьей стороны, но это, кажется, не работает:

function onUserAfterSave($user,$isNew,$success,$msg=''){ 
     if(!$isNew || ! $success){ 
      return; 
     } 
     jimport('joomla.log.log'); 
     $res = someThirdPartyCall(); 
     //Res is valid here 
     JLog::add("Res ".print_r($res,true), JLog::WARNING, 'jerror'); 


     $userOb = JUser::getInstance($user['id']); 
     $userOb->setParam('sugarid', $res['id']); 
     //User ob is valid here 
     JLog::add("UserOb ".print_r($userOb,true), JLog::WARNING, 'jerror'); 
     $saveRes = $userOb->save(); 

     //Result is true. Error array is empty. 
     JLog::add("Result ".print_r($saveRes,true), JLog::WARNING, 'jerror'); 
     JLog::add("Errors ".print_r($userOb->getErrors(),true), JLog::WARNING, 'jerror'); 

    } 

Все выглядит отлично, никаких ошибок или тому подобные. Единственное, что не работает, это то, что параметры не заданы в db. Это потому, что я пытаюсь сохранить пользователя в onUserAfterSave?

ответ

0

Вы забыли импорт пользовательская библиотека в ваш плагин для использования setParam. Итак, в начале вашего файла не забудьте включить библиотеку пользователя. Используйте эту строку кода.

jimport('joomla.user.user'); 

Надеюсь, это поможет.

+1

JUser autoloads. Единственная часть, которая не является JAuthenticate, и вы должны сделать JLoader для этого на данный момент, поскольку она не устарела. – Elin

0

Если сохранение завершено, вы не можете вернуться и добавить к нему, сохранение закончено и дверь закрыта. Вам нужно настроить настройки, когда вы настраиваете параметры, создавая плагин формы, чтобы добавить другое поле в параметры. Тогда вам не нужно ничего экономить, потому что параметры просто сохраняются как часть обычного процесса. Я предполагаю, что это не то, что нужно зашифровать, не так ли? Это просто имя пользователя?

Также следует упомянуть, что есть Juser :: defParam ($ key, $ value), который позволяет добавлять параметры через код.