Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/admin/classes/class.allegrowebapi.php
<?php

/***************************************************************************************************************
 * allegrowebapi-php-class v1.1
 *
 * Klasa została w całości wykonana przez firmę:
 *
 * NLDS-Group - Marketing & Promotion Agency
 * ul Potulicka 40/47, 70-234 Szczecinie
 * http://www.nlds-group.com
 * NIP: 9471841382, REGON: 320797634
 *
 *
 * Klasa PHP została wykonana na potrzeby nowej platformy obsługi sprzedaży allegro Sipoint.pl,
 * która jest właścicielem praw autorskich i udostępnia kod w serwisie http://code.google.com/p/allegrowebapi-php-class/
 * na licencji: Creative Commons - Attribution-ShareAlike 3.0 - CC BY-SA 3.0
 * http://creativecommons.org/licenses/by-sa/3.0/pl/
 *
 *
 + *************************************************************************************************************
 * WARUNKI KORZYSTANIA Z KLASY AllegroWebAPI.Class.PHP
 + *************************************************************************************************************
 *
 *   Wolno:
 * ---------------------------------
 * - kopiować, rozpowszechniać, odtwarzać i wykonywać utwór
 * - tworzyć utwory zależne
 *
 *
 *   Na następujących warunkach:
 * ---------------------------------
 * - Uznanie autorstwa - Utwór należy oznaczyć w sposób określony przez Twórcę lub Licencjodawcę.
 * - Na tych samych warunkach - Jeśli zmienia się lub przekształca niniejszy utwór, lub tworzy inny na jego podstawie,
 *   można rozpowszechniać powstały w ten sposób nowy utwór tylko na podstawie takiej samej licencji.
 *
 *
 *   Ze świadomością, że:
 * ---------------------------------
 * - Zrzeczenie - Każdy z tych warunków może zostać uchylony, jeśli uzyska się zezwolenie właściciela praw autorskich.
 * - Public Domain - Jeżeli utwór lub jakiekolwiek jego elementy, zgodnie z prawem właściwym, należą do domeny publicznej,
 *   to licencja w żaden sposób nie wpływa na ten status prawny.
 *   http://wiki.creativecommons.org/Public_domain
 *
 *
 *  Inne prawa - Licencja nie wpływa w żaden sposób na następujące prawa:
 * ---------------------------------
 *  * Uprawnienia wynikające z dozwolonego użytku ani innych obowiązujących ograniczeń lub wyjątków prawa autorskiego.
 *     http://wiki.creativecommons.org/Frequently_Asked_Questions#Do_Creative_Commons_licenses_affect_fair_use.2C_fair_dealing_or_other_exceptions_to_copyright.3F
 *  * Autorskie prawa osobiste autora;
 *     http://wiki.creativecommons.org/Frequently_Asked_Questions#I_don.E2.80.99t_like_the_way_a_person_has_used_my_work_in_a_derivative_work_or_included_it_in_a_collective_work.3B_what_can_I_do.3F
 *  * Ewentualne prawa osób trzecich do utworu lub sposobu wykorzystania utworu, takie jak prawo do wizerunku lub prawo do prywatności.
 *     http://wiki.creativecommons.org/Frequently_Asked_Questions#When_are_publicity_rights_relevant.3F
 *
 *
 + *************************************************************************************************************
 * Uwaga - W celu ponownego użycia utworu lub rozpowszechniania utworu należy wyjaśnić innym warunki licencji, na której udostępnia się utwór.
 + *************************************************************************************************************
 *
 * Klasa do obsługi Allegro.pl
 *
 * Dokumentacja oraz szczegółowe opisy
 * metod dostępnych w WebAPI: http://allegro.pl/webapi/
 *
 + *************************************************************************************************************
 *
 * Użycie:
 * Aby rozpocząć użytkowanie klasy należy stałe konfiguracyjne uzupełnić poprawnymi danymi.
 * Nazwy metod klasy AllegroWebAPI odpowiadają nazwom metod dostępnych w WebAPI bez przedrostka "do"
 * (aby uzyckać dostęp do metody "doLogin" należy posłużyć się metodą "Login").
 * Jeśli dana metoda wymaga podania takich parametrów jak: session-handle, country-id, webapi-key lub local-version
 * należy te parametry pominąć (zostaną przesłane automatycznie).
 *
 * Zalogowanie do systemu i wywłanie przykładowej metody:
 *
 * try {
 *		$allegro = new AllegroWebAPI();
 *		$allegro->Login();
 *		$cats_list = $allegro->GetCatsData();
 *		print_r($allegro->objectToArray($cats_list));
 * }
 * catch(SoapFault $fault) {
 *		print($fault->faultstring);
 * }
 *
 * W powyższym przykładzie oastąpiło logowanie do systemu oraz pobrana została lista wszystkich kategorii aukcji.
 * Ponieważ WebAPI w odpowiedzi zwraca obiekt w prosty sposób możemy go przekonwertować na tablicę dzięki
 * metodzie objectToArray(). Potrzebne parametry takie jak klucz WebAPI oraz kod kraju zostały pobrane automatycznie.
 *
 +*************************************************************************************************************/

class AllegroWebAPI {
	protected $_instance;
	protected $_config;
	protected $_session;
	protected $_client;
	protected $_local_version;

	/* Określenie kraju (1 = Polska) */
	const COUNTRY_CODE = ALLEGRO_COUNTRY;

	/**
	 * Zapis ustawień oraz połączenie z WebAPI
	 */
	public function __construct() {
		$this->_config = array(
			'allegro_id' => ALLEGRO_ID,
			'allegro_key' => ALLEGRO_KEY,
			'allegro_login' => ALLEGRO_LOGIN,
			'allegro_password' => ALLEGRO_PASSWORD
		);

		$this->_client = new SoapClient('http://webapi.allegro.pl/uploader.php?wsdl');
	}





	/**********************************************************************************************************
	 * Czarna lista (http://allegro.pl/webapi/documentation.php/theme/id,21)
	 *********************************************************************************************************/

	/**
	 *
	 * Metoda pozwala na dodanie wskazanych użytkowników do czarnej listy zalogowanego użytkownika.
	 * Użytkownicy dodani do czarnej listy nie mogą kupować żadnych przedmiotów od użytkownika,
	 * na którego czarnej liście się znajdują.
	 * (http://allegro.pl/webapi/documentation.php/show/id,21)
	 *
	 * @param array $Users
	 * @return array
	 */
	public function AddToBlackList($Users) {
		$this->checkConnection();
		return $this->_client->doAddToBlackList(
			$this->_session['session-handle-part'],
			$Users
		);
	}

	/**
	 * Metoda pozwala na pobranie listy użytkowników, którzy znajdują się na czarnej liście zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,45)
	 *
	 * @return array
	 */
	public function GetBlackListUsers() {
		$this->checkConnection();
		return $this->_client->doGetBlackListUsers(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na usunięcie wskazanych użytkowników z czarnej listy zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,114)
	 *
	 * @param array $Users
	 * @return array
	 */
	public function RemoveFromBlackList($Users) {
		$this->checkConnection();
		return $this->_client->doRemoveFromBlackList(
			$this->_session['session-handle-part'],
			$Users
		);
	}





	/**********************************************************************************************************
	 * Dane kontrahentów (http://allegro.pl/webapi/documentation.php/theme/id,67)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie pełnych danych kontaktowych kontrahentów z danej aukcji.
	 * Metoda zwraca różne dane - w zależności od tego, czy zalogowany użytkownik był sprzedającym (user-data, user-sent-to-data),
	 * czy kupującym (user-data, user-bank-accounts, company-second-address) w danej aukcji.
	 * W przypadku podania niepoprawnego identyfikatora aukcji, zostanie dla niego zwrócona pusta struktura.
	 * (http://allegro.pl/webapi/documentation.php/show/id,89)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetPostBuyData($Options) {
		$this->checkConnection();
		return $this->_client->doGetPostBuyData(
			$this->_session['session-handle-part'],
			$Options['itemsArray'],
      $Options['buyerFilterArray']
		);
	}

	/**
	 * Metoda pozwala na pobranie wszystkich danych z wypełnionych przez kupujących formularzy pozakupowych.
	 * Metoda zwraca także szczegółowe informacje dot. płatności (realizowanych przez PzA),
	 * powiązanych ze wskazanymi transakcjami, informacje nt. wybranego punktu odbioru oraz dane identyfikacyjne
	 * dot. przesyłki zawierającej produkty składające się na wskazane transakcje.
	 * (http://allegro.pl/webapi/documentation.php/show/id,141)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetPostBuyFormsData($Options) {
		$this->checkConnection();
		return $this->objectToArray($this->_client->doGetPostBuyFormsData(
			$this->_session['session-handle-part'],
			$Options
		));
	}

	/**
	 * Metoda pozwala na pobranie wszystkich danych z wypełnionych przez kupujących (gdy metodę wywołuje sprzedający)
	 * lub zalogowanego użytkownika (gdy metodę wywołuje kupujący) Formularzy Opcji Dostawy.
	 * W przypadku gdy dla danej aukcji nie został wypełniony FOD - zwracana jest pusta struktura.
	 * (http://allegro.pl/webapi/documentation.php/show/id,96)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetShipmentOptionsFormData($Options) {
		$this->checkConnection();
		return $this->_client->doGetShipmentOptionsFormData(
			$this->_session['session-handle-part'],
			$Options['sof-user-type'],
			$Options['sof-items-id']
		);
	}

	/**
	 * Metoda pozwala na pobranie wartości identyfikatorów transakcji (zakupów sfinalizowanych wypełnieniem formularza
	 * pozakupowego przez kupującego) na podstawie przekazanych identyfikatorów aukcji. Uzyskane identyfikatory
	 * transakcji mogą być następnie wykorzystane np. do pobierania wypełnionych formularzy pozakupowych za pomocą
	 * metody doGetPostBuyFormsData. Metoda zwraca jedynie identyfikatory transakcji,
	 * dla których - w ramach danej aukcji - wypełnione zostały przez kupujących formularze pozakupowe
	 * (http://allegro.pl/webapi/documentation.php/show/id,121)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetTransactionsIDs($Options) {
		$this->checkConnection();
		return $this->_client->doGetTransactionsIDs(
			$this->_session['session-handle-part'],
			$Options['items-id-array'],
			$Options['user-role'],
      $Options['shipmentIdArray']
		);
	}

	/**
	 * Metoda pozwala na pobranie danych kontaktowych kupujących w aukcjach zalogowanego użytkownika.
	 * W przypadku podania błędnego identyfikatora aukcji, struktura jej odpowiadająca nie zostanie zwrócona.
	 * (http://allegro.pl/webapi/documentation.php/show/id,110)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyContact($Options) {
		$this->checkConnection();
		return $this->_client->doMyContact(
			$this->_session['session-handle-part'],
			$Options['auction-id-list'],
			$Options['offset']
		);
	}





	/**********************************************************************************************************
	 * Drzewo kategorii (http://allegro.pl/webapi/documentation.php/theme/id,43)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie pełnego drzewa kategorii dostępnych we wskazanym kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,46)
	 *
	 * @return array
	 */
	public function GetCatsData() {
		return $this->_client->doGetCatsData(
			self::COUNTRY_CODE,
			'0',
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie licznika kategorii dostępnych we wskazanym kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,47)
	 *
	 * @return array
	 */
	public function GetCatsDataCount() {
		return $this->_client->doGetCatsDataCount(
			self::COUNTRY_CODE,
			'0',
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie w porcjach pełnego drzewa kategorii dostępnych we wskazanym kraju.
	 * Domyślnie zwracanych jest 50 pierwszych kategorii. Rozmiar porcji pozwala regulować parametr package-element,
	 * a sterowanie pobieraniem kolejnych porcji danych umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,48)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetCatsDataLimit($Options) {
		return $this->_client->doGetCatsDataLimit(
			self::COUNTRY_CODE,
			'0',
			$this->_config['allegro_key'],
			$Options['offset'],
			$Options['package-element']
		);
	}





	/**********************************************************************************************************
	 * Dziennik zdarzeń (http://allegro.pl/webapi/documentation.php/theme/id,63)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie informacji z dziennika zdarzeń na temat zmian stanów (rozpoczęcie,
	 * zakończenie, złożenie oferty w aukcji z licytacją, zakup przez Kup Teraz!, zmiana w opisie)
	 * aukcji zalogowanego użytkownika lub wszystkich aukcji w serwisie. Zwracanych jest zawsze
	 * 100 najnowszych informacji o zmianach (zaczynając od punktu podanego w parametrze starting-point),
	 * posortowanych rosnąco po czasie ich wystąpienia. W przypadku przekazania w parametrze starting-point
	 * wartości 0, zwróconych zostanie 100 chronologicznie najwcześniejszych zmian, do których dostęp ma
	 * jeszcze dziennik zdarzeń (zazwyczaj są to dane z ostatnich 8-9 dni). Aby sterować pobieraniem kolejnych
	 * porcji danych (tak aby dotrzeć do danych najświeższych), należy w parametrze starting-point przekazywać
	 * wartość row-id ostatniego (setnego) elementu, zwracanego w ramach danego wywołania i robić to sukcesywnie,
	 * dopóki w wyniku wywołania nie otrzyma się porcji danych mniejszej niż 100 elementów (co będzie świadczyło,
	 * że otrzymane dane są danymi najświeższymi).
	 * (http://allegro.pl/webapi/documentation.php/show/id,65)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetSiteJournal($Options) {
		$this->checkConnection();
		return $this->_client->doGetSiteJournal(
			$this->_session['session-handle-part'],
			$Options['starting-point'],
			$Options['info-type']
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji z dziennika zdarzeń na temat liczby zmian w aukcjach zalogowanego
	 * użytkownika lub we wszystkich aukcjach w serwisie, od zdefiniowanego (w parametrze starting-point)
	 * momentu (bierze po uwagę chronologicznie najstarsze 10000 aukcji - zaczynając od podanego punktu startu).
	 * Aby sterować momentem rozpoczęcia pobierania informacji o liczbie zmian (tak aby dotrzeć do danych najświeższych),
	 * należy w parametrze starting-point przekazywać odpowiednią wartość row-id,
	 * zwracaną w ramach wywołania metody doGetSiteJournal.
	 * (http://allegro.pl/webapi/documentation.php/show/id,66)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetSiteJournalInfo($Options) {
		$this->checkConnection();
		return $this->_client->doGetSiteJournalInfo(
			$this->_session['session-handle-part'],
			$Options['starting-point'],
			$Options['info-type']
		);
	}
            
	public function GetSiteJournalDeals($Options) {
		$this->checkConnection();
		return $this->_client->doGetSiteJournalDeals(
			$this->_session['session-handle-part'],
			$Options['starting-point']
		);
	}




	/**********************************************************************************************************
	 * Informacje o użytkowniku (http://allegro.pl/webapi/documentation.php/theme/id,64)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie prywatnych danych (wraz z dodatkowymi danymi dla konta Firma)
	 * z konta zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,84)
	 *
	 * @return array
	 */
	public function GetMyData() {
		$this->checkConnection();
		return $this->_client->doGetMyData(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na sprawdzenie identyfikatora użytkownika za pomocą jego nazwy.
	 * (http://allegro.pl/webapi/documentation.php/show/id,102)
	 *
	 * @param string $Username
	 * @return array
	 */
	public function GetUserID($Username) {
		return $this->_client->doGetUserID(
			self::COUNTRY_CODE,
			$Username,
			'',
			$this->_config['allegro_key']
		);
	}
           
	/**
	 * Metoda pozwala na pobranie listingu wszystkich aukcji wystawianych obecnie przez danego użytkownika.
	 * Domyślnie zwracanych jest 25 aukcji posortowanych rosnąco po czasie zakończenia. Rozmiar porcji
	 * pozwala regulować parametr limit, a sterowanie pobieraniem kolejnych porcji danych umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,103)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetUserItems($Options) {
		return $this->_client->doGetUserItems(
			$this->_config['allegro_id'],
			$this->_config['allegro_key'],
			self::COUNTRY_CODE,
			$Options['offset'],
			$Options['limit']
		);
	}

	/**
	 * Metoda pozwala na sprawdzenie nazwy użytkownika za pomocą jego identyfikatora.
	 * (http://allegro.pl/webapi/documentation.php/show/id,104)
	 *
	 * @param int $UserID
	 * @return array
	 */
	public function GetUserLogin($UserID) {
		return $this->_client->doGetUserLogin(
			self::COUNTRY_CODE,
			$UserID,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie publicznie dostępnych informacji o dowolnym użytkowniku serwisu.
	 * Użytkownik może być wskazany za pomocą jego identyfikatora lub nazwy - w przypadku przekazania
	 * wartości w obu wymienionych parametrach, zwrócone zostaną informacje o użytkowniku wskazanym w parametrze user-id.
	 * (http://allegro.pl/webapi/documentation.php/show/id,341)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ShowUser($Options) {
		return $this->_client->doShowUser(
			$this->_config['allegro_key'],
			self::COUNTRY_CODE,
			$Options['user-id'],
			$Options['user-login']
		);
	}

	/**
	 * Metoda pozwala na podgląd zawartości strony "O mnie" dowolnego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,302)
	 *
	 * @param int $Username
	 * @return array
	 */
	public function ShowUserPage($UserID) {
		return $this->_client->doShowUserPage(
			$this->_config['allegro_key'],
			self::COUNTRY_CODE,
			$UserID
		);
	}





	/**********************************************************************************************************
	 * Komentarze i ocena sprzedaży (http://allegro.pl/webapi/documentation.php/theme/id,42)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na wystawienie komentarza użytkownikowi będącemu stroną transakcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,42)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function Feedback($Options) {
		$this->checkConnection();
		return $this->_client->doFeedback(
			$this->_session['session-handle-part'],
			$Options['fe-item-id'],
			$Options['fe-from-user-id'],
			$Options['fe-to-user-id'],
			$Options['fe-comment'],
			$Options['fe-comment-type'],
			$Options['fe-op'],
			$Options['fe-rating']
		);
	}

	/**
	 * Metoda pozwala na wystawienie wielu komentarzy na raz użytkownikom będącym stronami transakcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,43)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function FeedbackMany($Options) {
		$this->checkConnection();
		return $this->_client->doFeedbackMany(
			$this->_session['session-handle-part'],
			$Options
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji o komentarzach dowolnego użytkownika. Domyślnie zwracane
	 * są wszystkie komentarze (ew. ograniczone typem), posortowane malejąco po czasie ich dodania.
	 * Miejsce rozpoczęcia pobierania listy komentarzy pozwala regulować parametr feedback-offset.
	 * Należy podać identyfikator użytkownika tylko w jednym z parametrów: feedback-from lub feedback-to.
	 * W pierwszym - gdy pobrane mają zostać informacje o komentarzach, które wskazany użytkownik wystawił.
	 * W drugim - gdy pobrane mają zostać informacje o komentarzach, które wskazanemu użytkownikowi zostały wystawione.
	 * (http://allegro.pl/webapi/documentation.php/show/id,51)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetFeedback($Options) {
		$this->checkConnection();
		return $this->_client->doGetFeedback(
			$this->_session['session-handle-part'],
			$Options['feedback-from'],
			$Options['feedback-to'],
			$Options['feedback-offset'],
			$Options['feedback-kind-list']
		);
	}

	/**
	 * Metoda pozwala na pobranie szczegółowych informacji na temat oceny sprzedaży zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,422)
	 *
	 * @return array
	 */
	public function GetMySellRating() {
		$this->checkConnection();
		return $this->_client->doGetMySellRating(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy powodów niezadowolenia z transakcji oraz listy obszarów podlegających ocenie sprzedaży.
	 * (http://allegro.pl/webapi/documentation.php/show/id,442)
	 *
	 * @return array
	 */
	public function GetMySellRatingReasons() {
		$this->checkConnection();
		return $this->_client->doGetMySellRatingReasons(
			$this->_session['session-handle-part'],
			self::COUNTRY_CODE
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji o komentarzach oczekujących na wystawienie przez zalogowanego użytkownika.
	 * Domyślnie zwracanych jest 25 elementów. Rozmiar porcji danych pozwala regulować parametr package-size,
	 * a sterowanie pobieraniem kolejnych porcji umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,105)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetWaitingFeedbacks($Options) {
		$this->checkConnection();
		return $this->_client->doGetWaitingFeedbacks(
			$this->_session['session-handle-part'],
			$Options['offset'],
			$Options['package-size']
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji o liczbie komentarzy oczekujących na wystawienie przez zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,106)
	 *
	 * @return array
	 */
	public function GetWaitingFeedbacksCount() {
		$this->checkConnection();
		return $this->_client->doGetWaitingFeedbacksCount(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji o komentarzach zalogowanego użytkownika. Domyślnie zwracanych jest 25 ostatnich
	 * komentarzy (wystawionych lub otrzymanych), posortowanych malejąco po czasie ich dodania. Miejsce rozpoczęcia
	 * pobierania listy komentarzy pozwala regulować parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,111)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyFeedback2($Options) {
		$this->checkConnection();
		return $this->_client->doMyFeedback2(
			$this->_session['session-handle-part'],
			$Options['feedback-type'],
			$Options['offset'],
			$Options['desc'],
			$Options['items-array']
		);
	}

	/**
	 * Metoda pozwala na pobranie w porcjach informacji o komentarzach zalogowanego użytkownika.
	 * Domyślnie zwracana jest lista wszystkich (wystawionych lub otrzymanych) komentarzy, posortowanych malejąco
	 * po czasie ich dodania. Miejsce rozpoczęcia pobierania listy komentarzy pozwala regulować parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,112)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyFeedback2Limit($Options) {
		$this->checkConnection();
		return $this->_client->doMyFeedback2Limit(
			$this->_session['session-handle-part'],
			$Options['feedback-type'],
			$Options['offset'],
			$Options['desc'],
			$Options['items-array'],
			$Options['package-element']
		);
	}





	/**********************************************************************************************************
	 * Komponenty i klucze wersji (http://allegro.pl/webapi/documentation.php/theme/id,61)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie wartości wszystkich wersjonowanych komponentów oraz umożliwia
	 * podgląd kluczy wersji dla wszystkich krajów.
	 * (http://allegro.pl/webapi/documentation.php/show/id,62)
	 *
	 * @return array
	 */
	public function QueryAllSysStatus() {
		return $this->_client->doQueryAllSysStatus(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie wartości jednego z wersjonowanych komponentów (program, drzewo kategorii, usługa,
	 * parametry, pola formularza sprzedaży, serwisy) oraz umożliwia podgląd klucza wersji dla wskazanego krajów.
	 * (http://allegro.pl/webapi/documentation.php/show/id,61)
	 *
	 * @param int $Component
	 *		1 - usługa Allegro WebAPI,
	 *		2 - aplikacja,
	 *		3 - struktura drzewa kategorii,
	 *		4 - pola formularza sprzedaży,
	 *		5 - serwisy
	 *
	 * @return array
	 */
	public function QuerySysStatus($Component) {
		return $this->_client->doQuerySysStatus(
			$Component,
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}





	/**********************************************************************************************************
	 * Kupujący (http://allegro.pl/webapi/documentation.php/theme/id,101)
	 *********************************************************************************************************/

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na złożenie oferty kupna w aukcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,382)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function BidItem($Options) {
		$this->checkConnection();
		return $this->_client->doBidItem(
			$this->_session['session-handle-part'],
			$Options['bid-it-id'],
			$Options['bid-user-price'],
			$Options['bid-quantity'],
			$Options['bid-buy-now']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na wysłanie prośby o wycofanie oferty kupna złożonej
	 * w aukcji przez zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,304)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function RequestCancelBid($Options) {
		$this->checkConnection();
		return $this->_client->doRequestCancelBid(
			$this->_session['session-handle-part'],
			$Options['request-item-id'],
			$Options['request-cancel-reason']
		);
	}





	/**********************************************************************************************************
	 * Licencjonowanie (http://allegro.pl/webapi/documentation.php/theme/id,62)
	 *********************************************************************************************************/

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobranie przez właściciela klucza daty ważności licencji,
	 * udzielonej użytkownikowi o wskazanej nazwie.
	 * (http://allegro.pl/webapi/documentation.php/show/id,63)
	 *
	 * @param string $User
	 * @return array
	 */
	public function GetAdminUserLicenceDate($User) {
		$this->checkConnection();
		return $this->_client->doGetAdminUserLicenceDate(
			$this->_session['session-handle-part'],
			$User
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobranie przez zalogowanego użytkownika daty ważności licencji,
	 * która została mu udzielona dla klucza podanego przy logowaniu.
	 * (http://allegro.pl/webapi/documentation.php/show/id,161)
	 *
	 * @return array
	 */
	public function GetUserLicenceDate() {
		$this->checkConnection();
		return $this->_client->doGetUserLicenceDate(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na ustawienie przez właściciela klucza daty ważności licencji użytkownika o wskazanej nazwie.
	 * (http://allegro.pl/webapi/documentation.php/show/id,64)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SetUserLicenceDate($Options) {
		$this->checkConnection();
		return $this->_client->doSetUserLicenceDate(
			$this->_session['session-handle-part'],
			$Options['user-lic-login'],
			self::COUNTRY_CODE,
			$Options['user-lic-date']
		);
	}





	/**********************************************************************************************************
	 * Logowanie (http://allegro.pl/webapi/documentation.php/theme/id,22)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na uwierzytelnienie i autoryzację użytkownika za pomocą danych dostępowych do konta
	 * (podając hasło w postaci zakodowanej SHA-256 a następnie base64 lub hasło w wersji tekstowej).
	 * Po pomyślnym uwierzytelnieniu, użytkownik otrzymuje identyfikator sesji, którym następnie może
	 * posłużyć się przy wywoływaniu metod wymagających autoryzacji. Identyfikator sesji zachowuje
	 * ważność przez 3 godziny od momentu jego utworzenia.
	 * (http://allegro.pl/webapi/documentation.php/show/id,82)
	 *
	 * @param bool $Encode
	 */
	public function Login($Encode=false) {
		$version = $this->QuerySysStatus(1);
		$this->_local_version = $version['ver-key'];

		if (!$Encode) {
			$session = $this->_client->doLogin(
				$this->_config['allegro_login'],
				$this->_config['allegro_password'],
				self::COUNTRY_CODE,
				$this->_config['allegro_key'],
				$version['ver-key']
			);
		} else {
			if (function_exists('hash') && in_array('sha256', hash_algos())) {
				$pass = hash('sha256', $this->_config['allegro_password'], true);
			} else if (function_exists('mhash') && is_int(MHASH_SHA256)) {
				$pass = mhash(MHASH_SHA256, $this->_config['allegro_password']);
			}

			$password = base64_encode($pass);

			$session = $this->_client->doLoginEnc(
				$this->_config['allegro_login'],
				$password,
				self::COUNTRY_CODE,
				$this->_config['allegro_key'],
				$version['ver-key']
			);
		}

		$this->_session = $session;

		unset($password);
		unset($this->_config['allegro_password']);
	}





	/**********************************************************************************************************
	 * Modyfikacja aukcji (http://allegro.pl/webapi/documentation.php/theme/id,1)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na dodanie wspólnego, dodatkowego tekstu do opisów aukcji wystawionych przez zalogowanego
	 * użytkownika. Treść dodanego tekstu pojawi się pod właściwym opisem, z przypisem Dodano oraz datą i godziną jego dodania.
	 * (http://allegro.pl/webapi/documentation.php/show/id,1)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function AddDescToItems($Options) {
		$this->checkConnection();
		return $this->_client->doAddDescToItems(
			$this->_session['session-handle-part'],
			$Options['items-id-array'],
			$Options['it-description']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na odwołanie ofert kupna złożonych w aukcji zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,303)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function CancelBidItem($Options) {
		$this->checkConnection();
		return $this->_client->doCancelBidItem(
			$this->_session['session-handle-part'],
			$Options['cancel-item-id'],
			$Options['cancel-bids-array'],
			$Options['cancel-bids-reason'],
			$Options['cancel-add-to-black-list']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na zmianę cen dostępnych w aukcji. Konieczne jest podanie oczekiwanych wartości
	 * wszystkich trzech cen (nawet jeżeli np. tylko jedna ma ulec zmianie, w parametrach reprezentujących
	 * pozostałe dwie ceny znaleźć powinna się ich aktualna wartość). Przekazanie wartości 0
	 * w danym parametrze dezaktywuje wskazana cenę w aukcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,223)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ChangePriceItem($Options) {
		$this->checkConnection();
		return $this->_client->doChangePriceItem(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['new-starting-price'],
			$Options['new-reserve-price'],
			$Options['new-buy-now-price']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na zmianę liczby przedmiotów dostępnych na aukcji zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,222)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ChangeQuantityItem($Options) {
		$this->checkConnection();
		return $this->_client->doChangeQuantityItem(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['new-item-quantity']
		);
	}

	/**
	 * Metoda pozwala na kończenie przed czasem (z lub bez odwołania ofert) aukcji zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,221)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function FinishItem($Options) {
		$this->checkConnection();
		return $this->_client->doFinishItem(
			$this->_session['session-handle-part'],
			$Options['finish-item-id'],
			$Options['finish-cancel-all-bids'],
			$Options['finish-cancel-reason']
		);
	}

	/**
	 * Metoda pozwala na kończenie przed czasem (bez lub z odwołaniem ofert) wielu aukcji zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,623)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function FinishItems($Options) {
		$this->checkConnection();
		return $this->_client->doFinishItems(
			$this->_session['session-handle-part'],
			$Options
		);
	}





	/**********************************************************************************************************
	 * Moje Allegro (http://allegro.pl/webapi/documentation.php/theme/id,44)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie listy ulubionych kategorii zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,49)
	 *
	 * @return array
	 */
	public function GetFavouriteCategories() {
		$this->checkConnection();
		return $this->_client->doGetFavouriteCategories(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy ulubionych sprzedających zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,50)
	 *
	 * @return array
	 */
	public function GetFavouriteSellers() {
		$this->checkConnection();
		return $this->_client->doGetFavouriteSellers(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy aukcji z poszczególnych zakładek Mojego Allegro (licytowane, kupione, niekupione,
	 * obserwowane: trwające, obserwowane: zakończone, sprzedawane, sprzedane, niesprzedane, do wystawienia)
	 * zalogowanego użytkownika. Domyślnie zwracanych jest pierwszych 25 aukcji z danej zakładki, posortowanych
	 * malejąco po czasie ich zakończenia. Możliwe jest także pobranie informacji o wskazanych aukcjach z danej
	 * zakładki (items-array). Pełen podgląd nazw oraz identyfikatorów kupujących możliwy jest tylko dla zakładek typu
	 * 'sell' i 'sold' - dla pozostałych typów wspomniane dane zwrócone zostaną w formie zanonimizowanej.
	 * (http://allegro.pl/webapi/documentation.php/show/id,107)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyAccount2($Options) {
		$this->checkConnection();
		return $this->_client->doMyAccount2(
			$this->_session['session-handle-part'],
			$Options['account-type'],
			$Options['offset'],
			$Options['items-array'],
			$Options['limit']
		);
	}

	/**
	 * Metoda pozwala na pobranie informacji o liczbie aukcji z poszczególnych zakładek Mojego Allegro
	 * (licytowane, kupione, niekupione, obserwowane: trwające, obserwowane: zakończone, sprzedawane, sprzedane,
	 * niesprzedane, do wystawienia) zalogowanego użytkownika. Możliwe jest także pobranie informacji
	 * o liczbie aukcji znajdujących się we wskazanej zakładce, z listy przekazanej w items-array.
	 * (http://allegro.pl/webapi/documentation.php/show/id,108)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyAccountItemsCount($Options) {
		$this->checkConnection();
		return $this->_client->doMyAccountItemsCount(
			$this->_session['session-handle-part'],
			$Options['account-type'],
			$Options['items-array']
		);
	} 
  
  
	/**
	 * Metoda odtwarza pełną funkcjonalność zakładki "Sprzedane" w Moim Allegro. 
	 * Dodatkowo umożliwia sortowanie oraz filtrowanie ofert a także wyszukiwanie ofert po nazwie.
	 * (http://allegro.pl/webapi/documentation.php/show/id,108)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetPostBuyFormsDataForSellers($Options) {
		$this->checkConnection();
		return $this->_client->doGetPostBuyFormsDataForSellers(
			$this->_session['session-handle-part'],
       $Options
      );
	}      
  
  
	public function GetPostBuyFormsDataForBuyers($Options) {
		$this->checkConnection();
		return $this->_client->doGetPostBuyFormsDataForBuyersr(
			$this->_session['session-handle-part'],
       $Options
      );
	}

	/**
	 * Metoda pozwala na usuwanie wskazanych aukcji z listingu aukcji obserwowanych
	 * (trwających oraz zakończonych) zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,115)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function RemoveFromWatchList($Options) {
		$this->checkConnection();
		return $this->_client->doRemoveFromWatchList(
			$this->_session['session-handle-part'],
			$Options['items-id-array']
		);
	}





	/**********************************************************************************************************
	 * Nowości i komunikaty (http://allegro.pl/webapi/documentation.php/theme/id,69)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie listy komunikatów serwisowych ze strony Nowości i komunikaty dla wskazanego kraju.
	 * Zwróconych może być maks. 50 ostatnich komunikatów dla danej kategorii - ich lista posortowana
	 * jest malejąco po czasie dodania. W przypadku nie podania daty (an-it-date) lub identyfikatora (ani-it-id)
	 * komunikatu, zwrócony zostanie jeden najnowszy komunikat ze wskazanej kategorii.
	 * (http://allegro.pl/webapi/documentation.php/show/id,93)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetServiceInfo($Options) {
		return $this->_client->doGetServiceInfo(
			self::COUNTRY_CODE,
			$Options['an-cat-id'],
			$Options['an-it-date'],
			$Options['an-it-id'],
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy kategorii komunikatów serwisowych ze strony Nowości i komunikaty dla wskazanego kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,94)
	 *
	 * @return array
	 */
	public function GetServiceInfoCategories() {
		return $this->_client->doGetServiceInfoCategories(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}





	/**********************************************************************************************************
	 * Opłaty i prowizje (http://allegro.pl/webapi/documentation.php/theme/id,66)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie informacji o opłatach związanych z korzystaniem z serwisu odpowiedniego dla wskazanego kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,88)
	 *
	 * @return array
	 */
	public function GetPaymentData() {
		return $this->_client->doGetPaymentData(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie bieżącego salda z konta zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,109)
	 *
	 * @return array
	 */
	public function MyBilling() {
		return $this->_client->doMyBilling(
			self::COUNTRY_CODE
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na sprawdzenie kosztów związanych z wystawieniem aukcji oraz prowizją za zrealizowaną
	 * w jej ramach sprzedaż. Sprawdzenie kosztów możliwe jest jedynie dla aukcji zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,301)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MyBillingItem($Options) {
		$this->checkConnection();
		return $this->_client->doMyBillingItem(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['option']
		);
	}





	/**********************************************************************************************************
	 * Płacę z Allegro (http://allegro.pl/webapi/documentation.php/theme/id,65)
	 *********************************************************************************************************/
	
	/**
	 * Metoda pozwala na pobranie listy wpłat od kupujących (dokonanych za pośrednictwem PzA) za transakcje
	 * w ramach aukcji zalogowanego użytkownika. Domyślnie (w przypadku nie zdefiniowana zakresu czasu)
	 * pobierana jest lista wpłat z przeciągu ostatniego tygodnia (domyślnie 25 ostatnio dokonanych wpłat),
	 * posortowana malejąco po czasie ich realizacji. Listę można filtrować po użytkowniku dokonującym wpłaty
	 * (buyer-id), po aukcji której wpłaty dotyczą (item-id) oraz po zakresie czasu, w którym wpłaty zostały
	 * dokonane. W przypadku gdy za datę początkową zakresu czasu (trans-recv-date-from) podstawiona zostanie
	 * konkretna wartość, a dla daty końcowej zakresu czasu (trans-recv-date-to) przekazane zostanie 0, zwrócona
	 * zostanie lista wpłat od daty podanej do daty podanej + 7 dni. W przypadku odwrotnym (gdy dla daty początkowej
	 * zakresu czasu przekazane zostanie 0, a dla daty końcowej zakresu czasu podstawiona zostanie konkretna wartość),
	 * zwrócona zostanie lista wpłat od daty podanej - 7 dni do daty podanej. Przy podaniu konkretnych wartości
	 * zakresu czasu zarówno dla daty początkowej, jak i dla daty końcowej, zwrócona zostanie lista wpłat zrealizowanych
	 * w podanym zakresie (ustalony zakres nie może jednak przekraczać 90 dni). Poszczególne filtry można ze sobą łączyć.
	 * (http://allegro.pl/webapi/documentation.php/show/id,85)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMyIncomingPayments($Options) {
		$this->checkConnection();
		return $this->_client->doGetMyIncomingPayments(
			$this->_session['session-handle-part'],
			$Options['buyer-id'],
			$Options['item-id'],
			$Options['trans-recv-date-from'],
			$Options['trans-recv-date-to'],
			$Options['trans-page-limit'],
			$Options['trans-offset']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy zwrotów (wycofanych wpłat dokonanych za pośrednictwem PzA)
	 * za transakcje zrealizowane przez kupujących w ramach aukcji zalogowanego użytkownika.
	 * Okres czasu, dla jakiego metoda zwraca dane to ok. 90 dni.
	 * (http://allegro.pl/webapi/documentation.php/show/id,522)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMyIncomingPaymentsRefunds($Options) {
		$this->checkConnection();
		return $this->_client->doGetMyIncomingPaymentsRefunds(
			$this->_session['session-handle-part'],
			$Options['buyer-id'],
			$Options['item-id'],
			$Options['limit'],
			$Options['offset']
		);
	}   
    
	public function AddPackageInfoToPostBuyForm($Options) {
		$this->checkConnection();
		return $this->_client->doAddPackageInfoToPostBuyForm(
			$this->_session['session-handle-part'],
			$Options['transactionId'],
			$Options['packageInfo']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy wpłat (dokonanych za pośrednictwem PzA) za transakcje
	 * zrealizowane przez zalogowanego użytkownika. Domyślnie (w przypadku nie zdefiniowana zakresu czasu)
	 * pobierana jest lista wpłat z przeciągu ostatniego tygodnia (domyślnie 25 ostatnio dokonanych wpłat),
	 * posortowana malejąco po czasie ich realizacji. Listę można filtrować po użytkowniku, któremu
	 * dokonywane były wpłaty (seller-id), po aukcji której wpłaty dotyczą (item-id) oraz po zakresie czasu,
	 * w którym wpłaty zostały dokonane. W przypadku gdy za datę początkową zakresu czasu (trans-create-date-from)
	 * podstawiona zostanie konkretna wartość, a dla daty końcowej zakresu czasu (trans-create-date-to)
	 * przekazane zostanie 0, zwrócona zostanie lista wpłat od daty podanej do daty podanej + 7 dni.
	 * W przypadku odwrotnym (gdy dla daty początkowej zakresu czasu przekazane zostanie 0, a dla daty końcowej
	 * zakresu czasu podstawiona zostanie konkretna wartość), zwrócona zostanie lista wpłat od daty
	 * podanej - 7 dni do daty podanej. Przy podaniu konkretnych wartości zakresu czasu zarówno dla daty początkowej,
	 * jak i dla daty końcowej, zwrócona zostanie lista wpłat zrealizowanych w podanym zakresie (ustalony zakres
	 * nie może jednak przekraczać 90 dni). Poszczególne filtry można ze sobą łączyć.
	 * (http://allegro.pl/webapi/documentation.php/show/id,86)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMySoldItems($Options) {
		$this->checkConnection();
		return $this->_client->doGetMySoldItems(
			$this->_session['session-handle-part']
		);
	}
	/**
	 * Metoda pozwala na pobranie listy wpłat (dokonanych za pośrednictwem PzA) za transakcje
	 * zrealizowane przez zalogowanego użytkownika. Domyślnie (w przypadku nie zdefiniowana zakresu czasu)
	 * pobierana jest lista wpłat z przeciągu ostatniego tygodnia (domyślnie 25 ostatnio dokonanych wpłat),
	 * posortowana malejąco po czasie ich realizacji. Listę można filtrować po użytkowniku, któremu
	 * dokonywane były wpłaty (seller-id), po aukcji której wpłaty dotyczą (item-id) oraz po zakresie czasu,
	 * w którym wpłaty zostały dokonane. W przypadku gdy za datę początkową zakresu czasu (trans-create-date-from)
	 * podstawiona zostanie konkretna wartość, a dla daty końcowej zakresu czasu (trans-create-date-to)
	 * przekazane zostanie 0, zwrócona zostanie lista wpłat od daty podanej do daty podanej + 7 dni.
	 * W przypadku odwrotnym (gdy dla daty początkowej zakresu czasu przekazane zostanie 0, a dla daty końcowej
	 * zakresu czasu podstawiona zostanie konkretna wartość), zwrócona zostanie lista wpłat od daty
	 * podanej - 7 dni do daty podanej. Przy podaniu konkretnych wartości zakresu czasu zarówno dla daty początkowej,
	 * jak i dla daty końcowej, zwrócona zostanie lista wpłat zrealizowanych w podanym zakresie (ustalony zakres
	 * nie może jednak przekraczać 90 dni). Poszczególne filtry można ze sobą łączyć.
	 * (http://allegro.pl/webapi/documentation.php/show/id,86)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMyPayments($Options) {
		$this->checkConnection();
		return $this->_client->doGetMyPayments(
			$this->_session['session-handle-part'],
			$Options['seller-id'],
			$Options['item-id'],
			$Options['trans-create-date-from'],
			$Options['trans-create-date-to'],
			$Options['trans-page-limit'],
			$Options['trans-offset']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy zwrotów (wycofanych wpłat dokonanych za pośrednictwem PzA) za transakcje
	 * zrealizowane przez zalogowanego użytkownika. Okres czasu, dla jakiego metoda zwraca dane to ok. 90 dni.
	 * (http://allegro.pl/webapi/documentation.php/show/id,502)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMyPaymentsRefunds($Options) {
		$this->checkConnection();
		return $this->_client->doGetMyPaymentsRefunds(
			$this->_session['session-handle-part'],
			$Options['seller-id'],
			$Options['item-id'],
			$Options['limit'],
			$Options['offset']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy wypłat środków (wpłaconych przez kupujących za pośrednictwem PzA) za transakcje
	 * w ramach aukcji zalogowanego użytkownika. Domyślnie (w przypadku nie zdefiniowana zakresu czasu) pobierana
	 * jest lista wypłat z przeciągu ostatniego tygodnia (domyślnie 50 ostatnio dokonanych wypłat), posortowana
	 * malejąco po czasie ich realizacji. Listę można filtrować po zakresie czasu, w którym wypłaty zostały dokonane.
	 * W przypadku gdy za datę początkową zakresu czasu (trans-create-date-from) podstawiona zostanie konkretna wartość,
	 * a dla daty końcowej zakresu czasu (trans-create-date-to) przekazane zostanie 0, zwrócona zostanie lista wypłat
	 * od daty podanej do daty podanej + 7 dni. W przypadku odwrotnym (gdy dla daty początkowej zakresu czasu przekazane
	 * zostanie 0, a dla daty końcowej zakresu czasu podstawiona zostanie konkretna wartość), zwrócona zostanie lista
	 * wypłat od daty podanej - 7 dni do daty podanej. Przy podaniu konkretnych wartości zakresu czasu zarówno dla
	 * daty początkowej, jak i dla daty końcowej, zwrócona zostanie lista wypłat zrealizowanych w podanym zakresie
	 * (ustalony zakres nie może jednak przekraczać 30 dni).
	 * (http://allegro.pl/webapi/documentation.php/show/id,87)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetMyPayouts($Options) {
		$this->checkConnection();
		return $this->_client->doGetMyPayouts(
			$this->_session['session-handle-part'],
			$Options['trans-create-date-from'],
			$Options['trans-create-date-to'],
			$Options['trans-page-limit'],
			$Options['trans-offset']
		);
	}

	/**
	 * Metoda pozwala na wnioskowanie o dopłatę do transakcji, za którą płatność jest niekompletna.
	 * Dla każdej transakcji można wysłać tylko jeden wniosek o dopłatę.
	 * (http://allegro.pl/webapi/documentation.php/show/id,662)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function RequestSurcharge($Options) {
		$this->checkConnection();
		return $this->_client->doRequestSurcharge(
			$this->_session['session-handle-part'],
			$Options['surcharge-trans-id'],
			$Options['surcharge-value'],
			$Options['surcharge-message']
		);
	}





	/**********************************************************************************************************
	 * Produkty w Allegro (http://allegro.pl/webapi/documentation.php/theme/id,141)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala obsłużyć mechanizm wyszukiwarki Produktów w Allegro i wyszukać produkty po kodzie EAN
	 * (ISBN/ISSN/etc.). Podczas wywoływania metody możliwe jest określenie kategorii, do której ma być
	 * zawężone wyszukiwanie, dzięki czemu zostanie zwiększona celność wyników. Metoda zwraca: ID znalezionego
	 * produktu, jego nazwę, opis, zdjęcia oraz parametry. Część tych danych można potem wykorzystać podczas
	 * wystawiania nowej aukcji za pomocą metody doNewAuctionExt.
	 * (http://allegro.pl/webapi/documentation.php/show/id,643)
	 *
	 * @param string $Code
	 * @return array
	 */
	public function FindProductByCode($Code) {
		$this->checkConnection();
		return $this->_client->doFindProductByCode(
			$this->_session['session-handle-part'],
			$Code
		);
	}

	/**
	 * Metoda pozwala obsłużyć mechanizm wyszukiwarki Produktów Allegro i wyszukać produkty po ich nazwie
	 * lub części nazwy. Podczas wywoływania metody możliwe jest określenie kategorii, do której ma
	 * być zawężone wyszukiwanie, dzięki czemu zostanie zwiększona celność wyników.
	 * Metoda zwraca: ID znalezionych produktów, ich nazwę, opis, zdjęcia oraz parametry.
	 * Część tych danych można potem wykorzystać podczas wystawiania nowej aukcji za pomocą metody doNewAuctionExt.
	 * (http://allegro.pl/webapi/documentation.php/show/id,642)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function FindProductByName($Options) {
		$this->checkConnection();
		return $this->_client->doFindProductByName(
			$this->_session['session-handle-part'],
			$Options['product-name'],
			$Options['category-id']
		);
	}

	/**
	 * Metoda pozwala na pobranie danych na temat konkretnego produktu z katalogu Produktów w Allegro.
	 * Do wywołania metody wymagany jest identyfikator produktu oraz hash - obie wartości mogą być
	 * pobrane za pomocą metod doShowItemInfoExt oraz doGetItemsInfo (dla aukcji zintegrowanych z produktem).
	 * (http://allegro.pl/webapi/documentation.php/show/id,644)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ShowProductInfo($Options) {
		$this->checkConnection();
		return $this->_client->doShowProductInfo(
			$this->_session['session-handle-part'],
			$Options['product-id'],
			$Options['category-hash']
		);
	}





	/**********************************************************************************************************
	 * Rabaty (http://allegro.pl/webapi/documentation.php/theme/id,121)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie pojedynczych aktów zakupowych zrealizowanych przez danego kupującego we
	 * wskazanej aukcji (w której sprzedającym był zalogowany użytkownik). Uzyskane dane mogą być następnie
	 * wykorzystane np. do udzielania rabatów za pomocą metody doMakeDiscount. Metoda zwraca tylko te akty zakupowe,
	 * na które w chwili jej wywołania jest możliwość nałożenia rabatu (nie są one jeszcze opłacone).
	 * Wyjątkiem od powyższego jest sytuacja, w której akt zakupowy został opłacony, ale płatność została
	 * anulowana - jest on wtedy traktowany jak nieopłacony i informacja o nim zostanie zwrócona.
	 * (http://allegro.pl/webapi/documentation.php/show/id,462)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetDeals($Options) {
		$this->checkConnection();
		return $this->_client->doGetDeals(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['buyer-id']
		);
	}

	/**
	 * Metoda pozwala na udzielenie rabatu kupującemu w ramach danego aktu zakupowego.
	 * Możliwe jest udzielenie naraz tylko jednego rodzaju rabatu - albo kwotowego, albo procentowego
	 * (wyjątkiem jest możliwość wyzerowania obu parametrów w celu zdjęcia istniejącego rabatu).
	 * Każde kolejne wywołanie metody dla tego samego aktu zakupowego nadpisuje rabat ustawiony wcześniej.
	 * Za każdym razem rabat jest udzielany od kwoty pierwotnej (bez rabatu) za dany akt zakupowy,
	 * nie zaś od kwoty uprzednio "zrabatowanej". Nałożony rabat obniża pierwotną kwotę do zapłacenia za
	 * dany akt zakupowy, proporcjonalnie obniżając kwotę jednostkową do zapłacenia za każdy
	 * z przedmiotów zakupionych w ramach danego aktu zakupowego.
	 * (http://allegro.pl/webapi/documentation.php/show/id,482)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function MakeDiscount($Options) {
		$this->checkConnection();
		return $this->_client->doMakeDiscount(
			$this->_session['session-handle-part'],
			$Options['deal-it'],
			$Options['discount-amount'],
			$Options['discount-percentage']
		);
	}





	/**********************************************************************************************************
	 * Różne (http://allegro.pl/webapi/documentation.php/theme/id,25)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na sprawdzenie czy hash weryfikujący poprawność odnośnika, wysłanego do danego
	 * kupującego w danej aukcji jest poprawny (został faktycznie wygenerowany za pomocą taga [EXT_LINK_xxx]).
	 * Odpowiednie odnośniki wygenerować można na podstawie trzech unikalnych tagów, dostępnych dla każdego
	 * użytkownika usługi na stronie: Moje Allegro > WebAPI, w bloku Konfiguracja zewnętrznych linków.
	 * (http://allegro.pl/webapi/documentation.php/show/id,23)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function CheckExternalKey($Options) {
		return $this->_client->doCheckExternalKey(
			$this->_config['allegro_key'],
			$Options['user-id'],
			$Options['item-id'],
			$Options['hash-key']
		);
	}

	/**
	 * Metoda pozwala na sprawdzenie jaka jest wartość identyfikatora wystawionej aukcji za pomocą
	 * identyfikatora aukcji planowanej do wystawienia. W przypadku przekazania numeru planowanej
	 * aukcji, która jeszcze się nie rozpoczęła, metoda zwróci 0.
	 * (http://allegro.pl/webapi/documentation.php/show/id,24)
	 *
	 * @param int $Auction
	 * @return array
	 */
	public function CheckItemIdByFutureItemId($Auction) {
		return $this->_client->doCheckItemIdByFutureItemId(
			$this->_config['allegro_key'],
			self::COUNTRY_CODE,
			$Auction
		);
	}

	/**
	 * Metoda pozwala na pobranie listy wszystkich krajów dostępnych w serwisie.
	 * (http://allegro.pl/webapi/documentation.php/show/id,25)
	 *
	 * @return array
	 */
	public function GetCountries() {
		return $this->_client->doGetCountries(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy graficznych, systemowych szablonów aukcji dostępnych dla wskazanego kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,95)
	 *
	 * @return array
	 */
	public function GetServiceTemplates() {
		return $this->_client->doGetServiceTemplates(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie pełnej listy sposobów dostawy dostępnych we wskazanym kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,624)
	 *
	 * @return array
	 */
	public function GetShipmentData() {
		return $this->_client->doGetShipmentData(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie szczegółowych informacji (nazwa, adres WWW, kod kraju,
	 * używana strona kodowa, logo, flaga kraju) o dostępnych serwisach aukcyjnych.
	 * (http://allegro.pl/webapi/documentation.php/show/id,98)
	 *
	 * @return array
	 */
	public function GetSitesFlagInfo() {
		return $this->_client->doGetSitesFlagInfo(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie szczegółowych informacji (nazwa, adres WWW, kod kraju,
	 * używana strona kodowa, logo) o dostępnych serwisach aukcyjnych.
	 * (http://allegro.pl/webapi/documentation.php/show/id,99)
	 *
	 * @return array
	 */
	public function GetSitesInfo() {
		return $this->_client->doGetSitesInfo(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie listy regionów (dla Polski - województw) dla danego kraju.
	 * (http://allegro.pl/webapi/documentation.php/show/id,101)
	 *
	 * @return array
	 */
	public function GetStatesInfo() {
		return $this->_client->doGetStatesInfo(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie aktualnego (dla danego kraju) czasu z serwera Allegro.
	 * (http://allegro.pl/webapi/documentation.php/show/id,81)
	 *
	 * @return array
	 */
	public function GetSystemTime() {
		return $this->_client->doGetSystemTime(
			self::COUNTRY_CODE,
			$this->_config['allegro_key']
		);
	}





	/**********************************************************************************************************
	 * Sklepy Allegro (http://allegro.pl/webapi/documentation.php/theme/id,70)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie pełnego drzewa kategorii utworzonych przez zalogowanego użytkownika w jego Sklepie Allegro.
	 * (http://allegro.pl/webapi/documentation.php/show/id,97)
	 *
	 * @return array
	 */
	public function GetShopCatsData() {
		$this->checkConnection();
		return $this->_client->doGetShopCatsData(
			$this->_session['session-handle-part']
		);
	}

	/**
	 * Metoda pozwala na wystawienie aukcji w Sklepie Allegro na podstawie aukcji istniejących.
	 * Z uwagi na specyfikę działania mechanizmu ponownego wystawiania aukcji - identyfikatory aukcji
	 * zwracane na wyjściu, to identyfikatory aukcji na podstawie których nowe aukcje zostały/miały zostać
	 * wystawione - nie identyfikatory nowo wystawionych aukcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,322)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SellSomeAgainInShop($Options) {
		return $this->_client->doSellSomeAgainInShop(
			$this->_config['allegro_key'],
			$Options['sell-items-array'],
			$Options['sell-starting-time'],
			$Options['sell-ahop-duration'],
			$Options['sell-shop-options'],
			$Options['sell-prolong-options'],
			$Options['sell-shop-category']
		);
	}





	/**********************************************************************************************************
	 * System zwrotu prowizji (http://allegro.pl/webapi/documentation.php/theme/id,81)
	 *********************************************************************************************************/

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na anulowanie procedury zwrotu prowizji. Po anulowaniu procedury zwrotu dot.
	 * danej transakcji, nie ma możliwości ponownego wystąpienia o zwrot prowizji dla niej.
	 * (http://allegro.pl/webapi/documentation.php/show/id,263)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function CancelRefundForms($Options) {
		$this->checkConnection();
		return $this->_client->doCancelRefundForms(
			$this->_session['session-handle-part'],
			$Options
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na anulowanie ostrzeżeń. Po anulowaniu ostrzeżenia dot. danej transakcji,
	 * nie ma możliwości ponownego wystąpienia o zwrot prowizji dla niej. Anulowanie ostrzeżenia
	 * jest równoznaczne z ponownym naliczeniem prowizji za sprzedany przedmiot.
	 * (http://allegro.pl/webapi/documentation.php/show/id,264)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function CancelRefundWarnings($Options) {
		$this->checkConnection();
		return $this->_client->doCancelRefundWarnings(
			$this->_session['session-handle-part'],
			$Options
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobieranie statusów formularzy zwrotu prowizji dla transakcji,
	 * w których sprzedaż nastąpiła z konta zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,262)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetRefundFormsStatuses($Options) {
		$this->checkConnection();
		return $this->_client->doGetRefundFormsStatuses(
			$this->_session['session-handle-part'],
			$Options
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobranie listy dostępnych w danym kraju powodów ubiegania się o zwrot prowizji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,202)
	 *
	 * @return array
	 */
	public function GetRefundReasons() {
		return $this->_client->doGetRefundReasons(
			$this->_config['allegro_key'],
			self::COUNTRY_CODE
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobranie listy transakcji dla których trwa lub może trwać procedura zwrotu
	 * prowizji (listing zawiera aukcje, nieprzeniesione do archiwum, z zakładek Sprzedane oraz Sprzedaję).
	 * Domyślnie pobierana jest lista wszystkich dostępnych transakcji, posortowana rosnąco po czasie
	 * zakończenia aukcji. Rozmiar porcji danych pozwala regulować parametr limit, a sterowanie pobieraniem
	 * kolejnych porcji danych umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,261)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetRefundTransactions($Options) {
		$this->checkConnection();
		return $this->_client->doGetRefundTransactions(
			$this->_session['session-handle-part'],
			$Options['offset'],
			$Options['limit']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na wysłanie formularzy zwrotu prowizji (wypełniać je można nie wcześniej niż 7 dni
	 * i nie później niż 45 dni od dnia zakończenia sprzedaży), dot. niezrealizowanych przez
	 * kupujących transakcji na aukcjach zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,201)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SendRefundForms($Options) {
		$this->checkConnection();
		return $this->_client->doSendRefundForms(
			$this->_session['session-handle-part'],
			$Options
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na wysłanie przypomnień o zawarciu transakcji (wypełniać je można nie wcześniej
	 * niż 3 dni i nie później niż 30 dni od dnia zakończenia sprzedaży), do kupujących którzy
	 * dokonali zakupu na aukcjach zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,241)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SendReminderMessages($Options) {
		$this->checkConnection();
		return $this->_client->doSendReminderMessages(
			$this->_session['session-handle-part'],
			$Options
		);
	}





	/**********************************************************************************************************
	 * Widok i opcje aukcji (http://allegro.pl/webapi/documentation.php/theme/id,23)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na dodanie wskazanych aukcji do listingu aukcji obserwowanych zalogowanego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,22)
	 *
	 * @param array $Items
	 * @return array
	 */
	public function AddWatchList($Items) {
		$this->checkConnection();
		return $this->_client->doAddWatchList(
			$this->_session['session-handle-part'],
			$Items
		);
	}

	/**
	 * Metoda pozwala na pobranie publicznie dostępnych informacji na temat wszystkich użytkowników,
	 * którzy dokonali zakupu w danej aukcji. Pełen podgląd nazw oraz identyfikatorów użytkowników
	 * możliwy jest tylko dla użytkowników, którzy wystawili daną aukcję - pozostali użytkownicy
	 * otrzymają wspomniane dane w formie zanonimizowanej.
	 * (http://allegro.pl/webapi/documentation.php/show/id,44)
	 *
	 * @param int $Auction
	 * @return array
	 */
	public function GetBidItem2($Auction) {
		$this->checkConnection();
		return $this->objectToArray($this->_client->doGetBidItem2(
			$this->_session['session-handle-part'],
			$Auction
		));
	}

	/**
	 * Metoda pozwala na pobranie wszystkich dostępnych informacji (m.in. opis, kategoria,
	 * zdjęcia, parametry, dostępne sposoby dostawy i formy płatności, etc.) o wskazanych aukcjach.
	 * (http://allegro.pl/webapi/documentation.php/show/id,52)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetItemsInfo($Options) {
		$this->checkConnection();
		return $this->_client->doGetItemsInfo(
			$this->_session['session-handle-part'],
			$Options['items-id-array'],
			$Options['get-desc'],
			$Options['get-image-url'],
			$Options['get-attribs'],
			$Options['get-postage-options'],
			$Options['get-company-info']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na pobranie kompletnych informacji o aukcji - wraz z listą i danymi kupujących.
	 * (http://allegro.pl/webapi/documentation.php/show/id,402)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetItemTransaction($Options) {
		$this->checkConnection();
		return $this->_client->doGetItemTransaction(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['item-options']
		);
	}

	/**
	 * Tylko w pakiecie Profesjonalnym!
	 *
	 * Metoda pozwala na wysłanie określonego rodzaju wiadomości do wybranego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,281)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SendEmailToUser($Options) {
		$this->checkConnection();
		return $this->_client->doSendEmailToUser(
			$this->_session['session-handle-part'],
			$Options['mail-to-user-item-id'],
			$Options['mail-to-user-receiver-id'],
			$Options['mail-to-user-subject-id'],
			$Options['mail-to-user-option'],
			$Options['mail-to-user-message']
		);
	}

	/**
	 * Metoda pozwala na pobranie wszystkich dostępnych informacji (m.in. opis, kategoria, zdjęcia,
	 * parametry, dostępne sposoby dostawy i formy płatności, etc.) o wskazanej aukcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,342)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ShowItemInfoExt($Options) {
		$this->checkConnection();
		return $this->_client->doShowItemInfoExt(
			$this->_session['session-handle-part'],
			$Options['item-id'],
			$Options['get-desc'],
			$Options['get-image-url'],
			$Options['get-attribs'],
			$Options['get-postage-options'],
			$Options['get-company-info']
		);
	}





	/**********************************************************************************************************
	 * Wystawianie aukcji (http://allegro.pl/webapi/documentation.php/theme/id,41)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na sprawdzenie ogólnych oraz szczegółowych kosztów związanych z wystawieniem
	 * aukcji przed jej faktycznym wystawieniem. Metoda może służyć także jako symulator poprawności
	 * wystawienia aukcji, ponieważ struktura pól jaką przyjmuje jako jeden z parametrów jest
	 * identyczną z tą przyjmowaną przez doNewAuctionExt.
	 * (http://allegro.pl/webapi/documentation.php/show/id,41)
	 *
	 * @param array $Fields
	 * @return array
	 */
	public function CheckNewAuctionExt($Fields) {
		$this->checkConnection();
		return $this->_client->doCheckNewAuctionExt(
			$this->_session['session-handle-part'],
			$Fields
		);
	}

	/**
	 * Metoda pozwala na pobranie listy pól formularza sprzedaży dostępnych we wskazanym kraju.
	 * Wybrane pola mogą następnie posłużyć np. do zbudowania i wypełnienia formularza
	 * wystawienia nowej aukcji z poziomu metody doNewAuctionExt.
	 * (http://allegro.pl/webapi/documentation.php/show/id,91)
	 *
	 * @return array
	 */
	public function GetSellFormFieldsExt() {
		return $this->_client->doGetSellFormFieldsExt(
			self::COUNTRY_CODE,
			'0',
			$this->_config['allegro_key']
		);
	}

	/**
	 * Metoda pozwala na pobranie w porcjach listy pól formularza sprzedaży dostępnych we wskazanym kraju.
	 * Wybrane pola mogą następnie posłużyć np. do zbudowania i wypełnienia formularza wystawienia
	 * nowej aukcji z poziomu metody doNewAuctionExt. Domyślnie zwracanych jest 50 pierwszych pól.
	 * Rozmiar porcji pozwala regulować parametr package-element, a sterowanie pobieraniem
	 * kolejnych porcji danych umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,92)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetSellFormFieldsExtLimit($Options) {
		return $this->_client->doGetSellFormFieldsExtLimit(
			self::COUNTRY_CODE,
			'0',
			$this->_config['allegro_key'],
			$Options['offset'],
			$Options['package-element']
		);
	}

	/**
	 * Metoda pozwala na wystawienie nowej aukcji w serwisie. Aby sprawdzić poprawność wystawienia aukcji,
	 * należy nadać jej dodatkowy, lokalny identyfikator (local-id), a następnie zweryfikować aukcję za
	 * pomocą metody doVerifyItem (wartość local-id jest zawsze unikalna w ramach konta danego użytkownika).
	 * Aby przetestować poprawność wypełnienia kolejnych pól formularza sprzedaży i/lub sprawdzić koszta związane
	 * z wystawieniem aukcji, bez jej faktycznego wystawiania w serwisie, należy skorzystać z metody doCheckNewAuctionExt.
	 * (http://allegro.pl/webapi/documentation.php/show/id,113)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function NewAuctionExt($Options) {
		$this->checkConnection();
		return $this->_client->doNewAuctionExt(
			$this->_session['session-handle-part'],
			$Options['fields'],
			$Options['private'],
			$Options['local-id']
		);
	}

	/**
	 * Metoda pozwala na wystawienie aukcji w serwisie na podstawie aukcji istniejących. Z uwagi na specyfikę
	 * działania mechanizmu ponownego wystawiania aukcji - identyfikatory aukcji zwracane na wyjściu, to identyfikatory
	 * aukcji na podstawie których nowe aukcje zostały/miały zostać wystawione - nie identyfikatory nowo wystawionych aukcji.
	 * (http://allegro.pl/webapi/documentation.php/show/id,321)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function SellSomeAgain($Options) {
		$this->checkConnection();
		return $this->_client->doSellSomeAgain(
			$this->_session['session-handle-part'],
			$Options['sell-items-array'],
			$Options['sell-starting-time'],
			$Options['sell-auction-duration'],
			$Options['sell-option']
		);
	}

	/**
	 * Metoda pozwala na sprawdzenie poprawności wystawienia aukcji (utworzonej za pomocą metody
	 * doNewAuctionExt, w przypadku gdy przekazano przy jej wywołaniu wartość w parametrze local-id)
	 * z konta zalogowanego użytkownika. Wartość local-id jest zawsze unikalna w ramach konta danego użytkownika.
	 * (http://allegro.pl/webapi/documentation.php/show/id,181)
	 *
	 * @param int $LocalID
	 * @return array
	 */
	public function VerifyItem($LocalID) {
		$this->checkConnection();
		return $this->_client->doVerifyItem(
			$this->_session['session-handle-part'],
			$LocalID
		);
	}





	/**********************************************************************************************************
	 * Wyszukiwarka i listingi (http://allegro.pl/webapi/documentation.php/theme/id,68)
	 *********************************************************************************************************/

	/**
	 * Metoda pozwala na pobranie listy parametrów dostępnych dla danej kategorii we wskazanym kraju.
	 * Wybrane parametry mogą następnie posłużyć np. do budowy filtra przy listowaniu
	 * zawartości kategorii z poziomu metody doShowCat.
	 * (http://allegro.pl/webapi/documentation.php/show/id,90)
	 *
	 * @param int $Cat
	 * @return array
	 */
	public function GetSellFormAttribs($Cat) {
		return $this->_client->doGetSellFormAttribs(
			self::COUNTRY_CODE,
			$this->_config['allegro_key'],
			'0',
			$Cat
		);
	}

	/**
	 * Metoda pozwala na pobranie listingu wszystkich aukcji promowanych obecnie w kategoriach specjalnych
	 * (1000 najnowszych, kończące się, promowane na stronie głównej serwisu, promowane na stronach
	 * poszczególnych kategorii, aukcje Eko-Użytkowników). Zwracanych jest zawsze 50 aukcji posortowanych
	 * rosnąco po czasie zakończenia. Sterowanie pobieraniem kolejnych porcji danych umożliwia parametr offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,100)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function GetSpecialItems($Options) {
		$this->checkConnection();
		return $this->_client->doGetSpecialItems(
			$this->_session['session-handle-part'],
			$Options['special-type'],
			$Options['special-group'],
			$Options['offset']
		);
	}

	/**
	 * Metoda pozwala na obsługę mechanizmu wyszukiwarki (wraz z opcjami wyszukiwarki zaawansowanej).
	 * Domyślnie zwracanych jest 50 pasujących do zapytania aukcji, posortowanych rosnąco po czasie
	 * zakończenia (najpierw listowane są przedmioty z wykupioną opcją promowania, następnie te niepromowane).
	 * Dodatkowo zwracana jest również informacja o łącznej liczbie znalezionych aukcji. Rozmiar porcji
	 * pozwala regulować parametr search-limit, a sterowanie pobieraniem kolejnych porcji danych umożliwia
	 * parametr search-offset. Metoda zapewnia także obsługę mechanizmu słów pomijanych przez
	 * wyszukiwarkę - w przypadku gdy słowo takie będzie częścią zapytania, informacja o tym zwrócona
	 * zostanie w tablicy search-excluded-words.
	 * (http://allegro.pl/webapi/documentation.php/show/id,116)
	 *
	 * @param array $Query
	 * @return array
	 */
	public function Search($Query) {
		$this->checkConnection();
		return $this->_client->doSearch(
			$this->_session['session-handle-part'],
			$Query
		);
	}

	/**
	 * Metoda pozwala na pobranie listingu wszystkich aukcji trwających obecnie we wskazanej kategorii
	 * (wraz z dodatkowymi informacjami o kategoriach spokrewnionych z daną kategorią). Domyślnie zwracanych
	 * jest 50 aukcji posortowanych rosnąco po czasie zakończenia (najpierw listowane są przedmioty z
	 * wykupioną opcją promowania, następnie te niepromowane). Rozmiar porcji pozwala regulować parametr
	 * cat-items-limit, a sterowanie pobieraniem kolejnych porcji danych umożliwia parametr cats-items-offset.
	 * (http://allegro.pl/webapi/documentation.php/show/id,362)
	 *
	 * @param array $Options
	 * @return array
	 */
	public function ShowCat($Options) {
		$this->checkConnection();
		return $this->_client->doShowCat(
			$this->_session['session-handle-part'],
			$Options['cat-id'],
			$Options['cat-item-state'],
			$Options['cat-item-option'],
			$Options['cat-item-duration-option'],
			$Options['cat-attrib-fields'],
			$Options['cat-sort-options'],
			$Options['cat-items-price'],
			$Options['cat-items-offset'],
			$Options['cat-items-limit']
		);
	}


	
	
	
	/**********************************************************************************************************
	 * Przydatne funkcje
	 *********************************************************************************************************/

	/**
	 * Sprawdzanie połączenia oraz poprawnego zalogowania do allegro
	 */
	private function checkConnection() {
		if (!$this->_session) {
			throw new userException('Nie utworzono połączenia z kontem allegro. Należy użyć metody <strong>Login()</strong>');
		}
	}

	/**
	 * Wywołanie dowolnej metody przez SOAP
	 *
	 * @param string $Method
	 * @param string/int/array $Data
	 * @return array
	 */
	public function getMethod($Method, $Data=array()) {
		return $this->_client->__soapCall($Method, $Data);
	}
	
	/**
	 * Metoda pozwala na pobranie identyfikatora sesji po zalogowaniu.
	 * Do wykorzystania z metodą getMethod
	 *
	 * @return string
	 */
	public function getSession() {
		$this->checkConnection();
		return $this->_session['session-handle-part'];
	}

	/**
	 * Metoda pozwala na pobranie używanego kodu kraju.
	 * Do wykorzystania z metodą getMethod
	 *
	 * @return int
	 */
	public function getCountry() {
		return self::COUNTRY_CODE;
	}

	/**
	 * Metoda pozwala na pobranie aktualnie uzywanego klucza WebAPI
	 * Do wykorzystania z metodą getMethod
	 *
	 * @return string
	 */
	public function getKey() {
		return $this->_config['allegro_key'];
	}

	/**
	 * Metoda pozwala na pobranie klucza wersji WebAPI
	 *
	 * @return int
	 */
	public function getVersion() {
		$version = $this->QuerySysStatus(1);
		return $version['ver-key'];
	}

	/**
	 * Metoda pozwala na pobranie wszystkich aktualnie używanych
	 * danych konfiguracyjnych
	 *
	 * @return array
	 */
	public function getConfig() {
		return $this->_config;
	}

	/**
	 * Konwersja obietu na tablicę
	 *
	 * @param object $object
	 * @return array
	 */
	public function objectToArray($object) {
		if(!is_object( $object ) && !is_array( $object )) return $object;
			if(is_object($object)) $object = get_object_vars( $object );
		return array_map(array('AllegroWebAPI','objectToArray'), $object );
	}

	/**
	 * Konwertowanie sekund na czas
	 *
	 * @param int $Secounds
	 * @return string
	 */
	public function Sec2Time($Secounds) {
		$Time = new DateTime('@'.$Secounds, new DateTimeZone('UTC'));
		$GetTime = array('dni'			=> $Time->format('z'),
								'godzin'		=> $Time->format('G'),
								'minut'		=> $Time->format('i'),
								'sekund'		=> $Time->format('s')
						);
		if ($GetTime['dni'] > 1) {
			$TimeLeft = $GetTime['dni']." dni";
		} else if ($GetTime['dni'] == 1) {
			$TimeLeft = $GetTime['dni']." dzień";
		} else if ($GetTime['godzin'] > 1) {
			$TimeLeft = $GetTime['godzin']." godzin";
		} else if ($GetTime['godzin'] == 1) {
			$TimeLeft = $GetTime['godzin']." godzina";
		} else if ($GetTime['minut'] > 1) {
			$TimeLeft = $GetTime['minut']." minut";
		} else if ($GetTime['minut'] == 1) {
			$TimeLeft = $GetTime['minut']." minuta";
		} else if ($GetTime['sekund'] > 1) {
			$TimeLeft = $GetTime['sekund']." sekund";
		} else if ($GetTime['sekund'] == 1) {
			$TimeLeft = $GetTime['sekund']." sekunda";
		}
		return $TimeLeft;
	}

	/**
	 * Pozostały czas do końca aukcji
	 *
	 * @param int $Secounds
	 * @return string
	 */
	public function EndDate($Secounds) {
		$GetDay = date("N", time() + $Secounds);
		$num = array("1","2","3","4","5","6","7");
		$pl = array("Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota","Niedziela");
		$GetDay = str_replace($num, $pl, $GetDay);
		$GetDate = date("d-m-Y, H:i:s", time() + $Secounds);
		return $GetDay." ".$GetDate;
	}

	/**
	 * Punktacja użytkowników
	 *
	 * @param int $Stars
	 * @return string
	 */
	public function UserStars($Stars) {
		$IconHost = "http://static.allegrostatic.pl/site_images/1/0/stars/";

		if ($Stars > 12500) {$Star = "star3125";$While = 4;}
		elseif ($Stars > 12499) {$Star = "star3125";$While = 4;}
		elseif ($Stars > 9374) {$Star = "star3125";$While = 3;}
		elseif ($Stars > 6249) {$Star = "star3125";$While = 2;}
		elseif ($Stars > 3124) {$Star = "star3125";$While = 1;}

		elseif ($Stars > 2499) {$Star = "star625";$While = 4;}
		elseif ($Stars > 1874) {$Star = "star625";$While = 3;}
		elseif ($Stars > 1249) {$Star = "star625";$While = 2;}
		elseif ($Stars > 624) {$Star = "star625";$While = 1;}

		elseif ($Stars > 499) {$Star = "star125";$While = 4;}
		elseif ($Stars > 374) {$Star = "star125";$While = 3;}
		elseif ($Stars > 249) {$Star = "star125";$While = 2;}
		elseif ($Stars > 124) {$Star = "star125";$While = 1;}

		elseif ($Stars > 99) {$Star = "star25";$While = 4;}
		elseif ($Stars > 74) {$Star = "star25";$While = 3;}
		elseif ($Stars > 49) {$Star = "star25";$While = 2;}
		elseif ($Stars > 24) {$Star = "star25";$While = 1;}

		elseif ($Stars > 19) {$Star = "star5";$While = 4;}
		elseif ($Stars > 14) {$Star = "star5";$While = 3;}
		elseif ($Stars > 9) {$Star = "star5";$While = 2;}
		elseif ($Stars > 4) {$Star = "star5";$While = 1;}

		elseif ($Stars > 3) {$Star = "star1";$While = 4;}
		elseif ($Stars > 2) {$Star = "star1";$While = 3;}
		elseif ($Stars > 1) {$Star = "star1";$While = 2;}
		elseif ($Stars > 0) {$Star = "star1";$While = 1;}
		elseif ($Stars > -1) {$Star = "star1";$While = 0;}

		for($i=1; $i<=$While; $i++) {
			$GetStars .= "<img src='".$IconHost.$Star.".gif' title='".$Stars." pkt. allegro' style='vertical-align:middle' alt='' />";
		}
		return $GetStars;
	}
}
?>