X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Flibs%2Fprimera_functions.php;h=1d19c960a73467df51e8830c879fd9120f4c96ec;hb=49f1879ae5ed8d46035bbb1ddf84c4207bfaacb0;hp=c28da8cc79b7ab824036ffa20906419e044faf39;hpb=8127c0351f2fe329e72d9fd302ba3c5f30d1fab0;p=mailer.git diff --git a/inc/libs/primera_functions.php b/inc/libs/primera_functions.php index c28da8cc79..1d19c960a7 100644 --- a/inc/libs/primera_functions.php +++ b/inc/libs/primera_functions.php @@ -1,6 +1,6 @@ payPrimera($PayReceiver, $PayAmount, $PayDescription); @@ -105,23 +105,25 @@ class PrimeraApi { /** * 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; @@ -131,13 +133,23 @@ class PrimeraApi { * Anfrage senden und Rückgabecode in Variable speichern */ function queryApi ( $data = array() ) { + // Base64-encode username and password hash $data["PrimusInterface_Username"] = base64_encode($this->username); - $data["PrimusInterface_Password"] = base64_encode(md5($this->password)); + $data["PrimusInterface_Password"] = base64_encode($this->password); // Send POST request - $return = POST_URL($this->host.$this->path); + $return = POST_URL($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]; } @@ -161,17 +173,17 @@ class PrimeraApi { * @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", + $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; @@ -185,14 +197,14 @@ class PrimeraApi { */ function CheckPrimusUser($User) { $valid = false; - $PostData = array("PrimusInterface_Action"=> "CheckPrimusUser", + $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 +215,68 @@ 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 PRIMERA_TEST_API () { + // Get new instance + $api = new PrimeraApi($_POST['primera_api_name'], $_POST['primera_api_md5']); + + // Was that fine? + return ($api->getPrimera() !== false); } +// Execute the withdraw of a sponsor only! +function PRIMERA_EXECUTE_WITHDRAW ($primusNick, $userMd5, $amount) { + global $_CONFIG; + // Is the sponsor extension installed? + if (!EXT_IS_ACTIVE("sponsor")) { + // No, abort here + return false; + } elseif (!IS_SPONSOR()) { + // No sponsor, not allowed to withdraw! + return false; + } + + // Get new instance + $api = new PrimeraApi($primusNick, $userMd5); + + // Prepare purpose + $eval = "\$purpose = \"".COMPILE_CODE(sprintf(PRIMERA_API_PURPOSE_WITHDRAW, $_COOKIE['sponsorid']))."\";"; + eval($eval); + + // Pay the Primera + return $api->payPrimera($primusNick, $amount, $purpose); +} +// Execute the payout +function PRIMERA_EXECUTE_PAYOUT ($primusNick, $userMd5, $amount) { + global $_CONFIG; + + // Get new instance + $api = new PrimeraApi($_CONFIG['primera_api_name'], $_CONFIG['primera_api_md5']); + + // Prepare purpose + $eval = "\$purpose = \"".COMPILE_CODE(sprintf(PRIMERA_API_PURPOSE_PAYOUT, $GLOBALS['userid']))."\";"; + eval($eval); + + // Pay the Primera + return $api->payPrimera($primusNick, $amount, $purpose); +} // [EOF] -?> \ No newline at end of file +?>