X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fprimera_functions.php;h=baf88c8796b5bf106a82eef3da02119d7e957a9e;hp=c28da8cc79b7ab824036ffa20906419e044faf39;hb=0715fa7aa8e5e70bcf1d957fb09ae655c3896c4e;hpb=8127c0351f2fe329e72d9fd302ba3c5f30d1fab0 diff --git a/inc/libs/primera_functions.php b/inc/libs/primera_functions.php index c28da8cc79..baf88c8796 100644 --- a/inc/libs/primera_functions.php +++ b/inc/libs/primera_functions.php @@ -1,9 +1,9 @@ payPrimera($PayReceiver, $PayAmount, $PayDescription); * - * Wobei $PayReicer der Username des Empfängers bei + * Wobei $PayReicer der Username des Empf�ngers bei * Primusportal.de ist. $PayAmount ist der gerundete( !! ) Betrag an Primera, - * die der Empfänger erhalten soll. $PayDescription ist eine von Ihnen - * festgelegte kurze Beschreibung. Die Länge dieses Textes darf 100 Zeichen - * nicht überschreiten. Beispiel: - * $status = $Interface->payPrimera("garbage", 10000, "Auszahlung IhreSeite.de - ID: 12345"); - * 3. Überprüfung des Status (Rückgabecode): + * die der Empf�nger erhalten soll. $PayDescription ist eine von Ihnen + * festgelegte kurze Beschreibung. Die L�nge dieses Textes darf 100 Zeichen + * nicht �berschreiten. Beispiel: + * $status = $Interface->payPrimera("garbage", 10000, "Auszahlung IhreSeite.de - id: 12345"); + * 3. �berpr�fung des Status (R�ckgabecode): * CODE: * if (!$status) { * // Ein Fehler ist aufgetreten - * // Fehlerbehandlung hier einfügen... + * // Fehlerbehandlung hier einf�gen... * }else { - * // Auszahlung erfolgreich durchgeführt - * // Führen Sie hier Ihre Datenbankabfragen durch, um die Auszahlung zu - * // bestätigen... + * // Auszahlung erfolgreich durchgef�hrt + * // F�hren Sie hier Ihre Datenbankabfragen durch, um die Auszahlung zu + * // best�tigen... * } * - * Die komplette Rückgabe des Interfaces wird als assoziatives Array in der Klassen- + * Die komplette R�ckgabe des Interfaces wird als assoziatives Array in der Klassen- * variable __data gespeichert: - * __data => array("status" => Rückgabecode (PI_DONE, PI_SENDER_ERROR, ...), - * "statustext" => Status in Worten (z.B.: "Transaktion erfolgreich durchgeführt"), + * __data => array('status' => R�ckgabecode (PI_DONE, PI_SENDER_ERROR, ...), + * "statustext" => Status in Worten (z.B.: "Transaktion erfolgreich durchgef�hrt"), * ") * * @@ -55,6 +55,7 @@ * @version 1.0 - beta * @copyright (c) 2007 by Primusportal.de * @copyright (c) 2008 by Roland Haeder + * @copyright 2009, 2010 by Mailer Developer Team */ class PrimeraApi { /** @@ -63,7 +64,7 @@ class PrimeraApi { const PI_ERROR = -1; /** - * Statuscode für erfolgreich ausgeführte Transaktion + * Statuscode f�r erfolgreich ausgef�hrte Transaktion */ const PI_DONE = 200; @@ -103,52 +104,64 @@ class PrimeraApi { const PI_GET_PRIMERA_DONE = 701; /** - * URL für das Interface auf dem Primusserver: + * URL f�r das Interface auf dem Primusserver: */ - private $host = "www.primusportal.de"; - private $path = "/transfer.interface.2.0.php"; + var $host = "http://www.primusportal.de"; + var $path = "/transfer.interface.2.0.php"; - private $errno = 0; - private $err = ""; + var $errno = '0'; + var $err = ''; - private $seperator = ":"; + var $seperator = ':'; - private $username = ""; - private $password = ""; + var $username = ''; + var $password = ''; - private $data = array(); + var $data = array(); + + var $headers = ''; /** * Konstruktor */ - public function PrimeraApi ($PPUsername, $PPPassword) { + function PrimeraApi ($PPUsername, $PPPassword) { // Set data $this->username = $PPUsername; $this->password = $PPPassword; } /** - * Anfrage senden und Rückgabecode in Variable speichern + * Anfrage senden und R�ckgabecode in Variable speichern */ function queryApi ( $data = array() ) { - $data["PrimusInterface_Username"] = base64_encode($this->username); - $data["PrimusInterface_Password"] = base64_encode(md5($this->password)); + // Base64-encode username and password hash + $data['PrimusInterface_Username'] = base64_encode($this->username); + $data['PrimusInterface_Password'] = base64_encode($this->password); // Send POST request - $return = POST_URL($this->host.$this->path); + $return = sendPostRequest($this->host.$this->path, $data); + + // Convert the array into a full string + $returnStr = implode("\n", $return); + + // Extract the real content, strip header away + $content = explode('', $returnStr); - $content = explode("", $return); + // Store headers away for debugging + $this->headers = $content[0]; + + // Return the content return $content[1]; } /** - * Funktion parst die Rückgabe vom Transferskript: + * Funktion parst die R�ckgabe vom Transferskript: */ function parseContent ( $content ) { $x = explode("\n", $content); $return = array(); foreach($x as $currentLine) { - $line_exploded = explode(":", $currentLine,2); + $line_exploded = explode(':', $currentLine,2); if (count($line_exploded) > 1) { $return[$line_exploded[0]] = $line_exploded[1]; } @@ -157,42 +170,42 @@ class PrimeraApi { } /** - * @param int/string $Receiver UserID / Username des Empfängers + * @param int/string $Receiver UserID / Username des Empf�ngers * @param int $Amount Betrag in ganzzahligen Primera * @param string $Description Beschreibung (Sichtbar in Einzelauflistung) */ - public function payPrimera ($Receiver, $Amount, $Description = "") { + function payPrimera ($Receiver, $Amount, $Description = '') { $valid = false; - $PostData = array("PrimusInterface_Action" => "Pay", - "PrimusInterface_Receiver" => base64_encode($Receiver), - "PrimusInterface_Amount" => base64_encode($Amount), - "PrimusInterface_Description" => base64_encode($Description) ); + $postData = array('PrimusInterface_Action' => 'Pay', + 'PrimusInterface_Receiver' => base64_encode($Receiver), + 'PrimusInterface_Amount' => base64_encode($Amount), + 'PrimusInterface_Description' => base64_encode($Description) ); - $PostReturn = $this->parseContent( $this->queryApi($PostData) ); + $postReturn = $this->parseContent( $this->queryApi($postData) ); - $this->data = $PostReturn; - if ($PostReturn["status"] == "200") { + $this->data = $postReturn; + if ($postReturn['status'] == '200') { $valid = true; } return $valid; } /** - * Überprüft den Status eines Primus-Users + * �berpr�ft den Status eines Primus-Users * - existiert der User * - ist er aktiv * @param string/int $User Userid / Username */ function CheckPrimusUser($User) { $valid = false; - $PostData = array("PrimusInterface_Action"=> "CheckPrimusUser", - "PrimusInterface_CheckPrimusUser" => $User); + $postData = array('PrimusInterface_Action'=> 'CheckPrimusUser', + 'PrimusInterface_CheckPrimusUser' => $User); - $PostReturn = $this->parseContent( $this->queryApi($PostData) ); + $postReturn = $this->parseContent( $this->queryApi($postData) ); - $this->data = $PostReturn; + $this->data = $postReturn; - if ($PostReturn["status"] == self::PI_USER_CHECK_OK) { + if ($postReturn['status'] == self::PI_USER_CHECK_OK) { $valid = true; } return $valid; @@ -203,16 +216,65 @@ class PrimeraApi { */ function getPrimera() { $primera = false; - $PostData = array( "PrimusInterface_Action" => "GetPrimera" ); - $PostReturn = $this->parseContent( $this->queryApi($PostData) ); + $postData = array( 'PrimusInterface_Action' => 'GetPrimera' ); + $postReturn = $this->parseContent( $this->queryApi($postData) ); - $this->data = $PostReturn; - if ($PostReturn["status"] == self::PI_GET_PRIMERA_DONE) { - $primera = $PostReturn["primera"]; + $this->data = $postReturn; + if ($postReturn['status'] == self::PI_GET_PRIMERA_DONE) { + $primera = $postReturn['primera']; } return $primera; } + /** + * Getter fuer data + */ + function getData () { + return $this->data; + } +} + +// Function to test the Primera API by getting the amount. If the returned value +// is not false the API data is valid, else invalid +function testPrimeraApi () { + // Get new instance + $api = new PrimeraApi(postRequestParameter('primera_api_name'), postRequestParameter('primera_api_md5')); + + // Was that fine? + return ($api->getPrimera() !== false); +} + +// Execute the withdraw of a sponsor only! +function executePrimeraWithdraw ($primusNick, $userMd5, $amount) { + // Is the sponsor extension installed? + if (!isExtensionActive('sponsor')) { + // No, abort here + return false; + } elseif (!isSponsor()) { + // No sponsor, not allowed to withdraw! + return false; + } + + // Get new instance + $api = new PrimeraApi($primusNick, $userMd5); + + // Prepare purpose + eval('$purpose = "' . preCompileCode(getMaskedMessage('PRIMERA_API_PURPOSE_WITHDRAW', getSession('sponsorid'))) . '";'); + + // Pay the Primera + return $api->payPrimera($primusNick, $amount, $purpose); +} + +// Execute the payout +function executePrimeraPayout ($primusNick, $userMd5, $amount) { + // Get new instance + $api = new PrimeraApi(getConfig('primera_api_name'), getConfig('primera_api_md5')); + + // Prepare purpose + eval('$purpose = "' . preCompileCode(getMaskedMessage('PRIMERA_API_PURPOSE_PAYOUT', getMemberId())) . '";'); + + // Pay the Primera + return $api->payPrimera($primusNick, $amount, $purpose); } // [EOF] -?> \ No newline at end of file +?>