onAfterUserUpdate non lancé à l'édition d'utilisateur Hikamarket

  • Posts: 453
  • Thank you received: 31
  • Hikamarket Multivendor Hikashop Business
2 years 3 months ago #343841

Bonjour,

je rencontre un souci similaire au précédent, mon plugin ne se lance pas lorsque j'édite un utilisateur dans hikamarket, je précise qu'il fonctionne très bien lorsque j'édite l'utilisateur dans le backend joomla.

J'ai appliqué la solution de la dernière fois, à savoir que j'ai créé mon plugin en system et non en hikamarket ou hikashop.
J'ai testé aussi avec le trigger onBeforeCompileHead, il se lance bien depuis hikamarket, mais pas le trigger onAfterUserUpdate.

Ce plugin fait juste la liaison entre un champ personnalisé user_group pour gérer le groupe utilisateur depuis l'édition par le vendeur.

Merci d'avance pour votre réponse.

Voici mon code :

<?php
defined('_JEXEC') or die;

class plgSystemUser_group extends JPlugin
{
	
	function setUserGroup($user){
		
		$db = JFactory::getDbo();
		
		$query = $db->getQuery(true);
		$conditions = array(
			$db->quoteName('user_id').' = '.$db->quote(self::getUserCmsId($user->user_id)),
			$db->quoteName('group_id').' != '.$db->quote(8),
			$db->quoteName('group_id').' != '.$db->quote(2),
		);
		$query->delete($db->quoteName('#__user_usergroup_map'));
		$query->where($conditions);
		$db->setQuery($query);
		$result = $db->execute();
		
		$query = $db->getQuery(true);
		$columns = array(
			'user_id',
			'group_id',
		);
		$values = array(
			$db->quote(self::getUserCmsId($user->user_id)),
			$db->quote($user->user_group),
		);
		$query
			->insert($db->quoteName('#__user_usergroup_map'))
			->columns($db->quoteName($columns))
			->values(implode(',', $values));
		$db->setQuery($query);
		$db->execute();
		
	}
	
	function getUserCmsId($user_id){
		
		$db = JFactory::getDbo();
		
		$db->setQuery('SELECT user_cms_id FROM #__hikashop_user WHERE user_id = '.$user_id);
		$user_cms_id = $db->loadResult();
		
		return $user_cms_id;

	}
	
	public function onAfterUserCreate($user){
		self::setUserGroup($user);
	}
	
	public function onAfterUserUpdate($user){
		// echo'<pre>';var_dump($user);echo'</pre>';exit;
		self::setUserGroup($user);
	}
	
	
	public function onBeforeCompileHead(){
		
	}
	
}

Please Log in or Create an account to join the conversation.

  • Posts: 26156
  • Thank you received: 4028
  • MODERATOR
2 years 3 months ago #343847

Bonjour,

Effectivement, la classe User d'HikaMarket passe via son système internet et non via la classe d'HikaShop (qui s'occupe des triggers).
Il faut que je regarde plus en détails les répercussion, mais vous pouvez éditer la classe d'HikaMarket pour changer la ligne

		$ret = $this->save($user);
Par
		JPluginHelper::importPlugin('hikamarket');
		$userClass = hikamarket::get('shop.class.user');
		$ret = $userClass->save($user);

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 453
  • Thank you received: 31
  • Hikamarket Multivendor Hikashop Business
2 years 3 months ago #343851

Bonjour,

ca fonctionne nickel comme ca :)

merci beaucoup pour la réponse rapide !

Please Log in or Create an account to join the conversation.

Moderators: Obsidev
Time to create page: 0.057 seconds
Powered by Kunena Forum