Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Dlaczego funkcja wykonuje się 4 razy.


Rekomendowane odpowiedzi

Opublikowano

Mam hooka, który ustawia mi limit tworzenia klubów oraz tworzenie klubu za punkty, mam problem z aktualizacją salda punktów, ponieważ funkcja create() wykonuje się 4 razy co w efekcie zamiast zabrać użytkownikowi 10 punktów zabiera ich 40.

Poniżej załączam zawartość hooka:

//<?php

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	exit;
}

class hook187 extends _HOOK_CLASS_
{
	protected function create()
	{
		try
		{
			try
			{
				try
				{
					try
					{
						if( \IPS\Settings::i()->clubLimitCreate > 0 )
						{
							$totalClubs = \IPS\Db::i()->select( 'count(*)', 'core_clubs', array( "owner=?", \IPS\Member::loggedIn()->member_id ) )->first();
		
							if( $totalClubs >= \IPS\Settings::i()->clubLimitCreate )
							{
								\IPS\Output::i()->error( 'clubError', 'Clubs Enhancements/12', 403, '' );
							}
						}
						
						if( \IPS\Settings::i()->clubCreatePoints > 0 )
						{
							$totalPoints = \IPS\Db::i()->select( 'points', 'points_members', array( "member_id=?", \IPS\Member::loggedIn()->member_id ), NULL, 1 )->first();
		
							if( $totalPoints >= \IPS\Settings::i()->clubCreatePoints )
							{
								$newPoints = $totalPoints - \IPS\Settings::i()->clubCreatePoints;
								try
								{
									\IPS\Db::i()->update( 'points_members', array( 'points' => $newPoints ), array( 'member_id=?', \IPS\Member::loggedIn()->member_id ) );
								}
								catch( \UnderflowException $ex )
								{
									\IPS\Output::i()->error( 'clubError', 'Clubs Enhancements/12', 403, '' );
								}
								
							}
						}
		
						parent::create();
					}
					catch ( \RuntimeException $e )
					{
						if ( method_exists( get_parent_class(), __FUNCTION__ ) )
						{
							return call_user_func_array( 'parent::' . __FUNCTION__, func_get_args() );
						}
						else
						{
							throw $e;
						}
					}
				}
				catch ( \RuntimeException $e )
				{
					if ( method_exists( get_parent_class(), __FUNCTION__ ) )
					{
						return call_user_func_array( 'parent::' . __FUNCTION__, func_get_args() );
					}
					else
					{
						throw $e;
					}
				}
			}
			catch ( \RuntimeException $e )
			{
				if ( method_exists( get_parent_class(), __FUNCTION__ ) )
				{
					return call_user_func_array( 'parent::' . __FUNCTION__, func_get_args() );
				}
				else
				{
					throw $e;
				}
			}
		}
		catch ( \RuntimeException $e )
		{
			if ( method_exists( get_parent_class(), __FUNCTION__ ) )
			{
				return call_user_func_array( 'parent::' . __FUNCTION__, func_get_args() );
			}
			else
			{
				throw $e;
			}
		}
	}


}

Poratuje mnie ktoś i naprowadzi na właściwy tor? :P

 

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.