<?php
/**
- * PrimusInterface
+ * PrimeraApi
* -------------------------------------------
* Mit dieser Klasse ist ein einfacher Primeratransfer von Ihrem Account
* zu dem Account eines bei Primusportal.de registrierten Mitglieds möglich.
*
- *------------------ Aenderungen durch Roland Haeder 09.08.2008 ----------------
+ * ----------------- Aenderungen durch Roland Haeder 09.08.2008 ---------------
* Klasse umbenannt nach PrimeraApi, damit sie in das Framework besser passt.
* Zudem sind alle oeffentlichen Attribute nun privat, der Konstruktor hat den
* neuen "magischen" Namen __construct() und "normale" Konstanten sind nach
* Klassenkonstanten umbenannt. Unsinnige else-Bloecke sind noch umgewandelt.
* Methodennamen fangen nun immer mit einem kleinen Buchstaben an. Zudem sind
* die Methoden Pay,Query und Parse umbenannt.
- *------------------ Aenderungen durch Roland Haeder 09.08.2008 ----------------
+ * ----------------- Aenderungen durch Roland Haeder 09.08.2008 ---------------
+ *
+ * ----------------- Aenderungen durch Roland Haeder 19.04.2011 ---------------
+ * Es ist nun bei allen Methoden- und Feldnamen der erste Buchstabe
+ * kleingeschrieben, damit es besser in meine Namenskonvention passt. Noch mehr
+ * doppelte Anfuehrungszeichen in einfache umgewandelt, damit die Klasse
+ * performanter (wegen sonst doppeltes Parsen) wird.
+ * ----------------- Aenderungen durch Roland Haeder 19.04.2011 ---------------
+ *
+ * ------------ Achtung! Bitte zuerst lesen, bevor Sie weiterlesen: -----------
+ * Das meiste aus der unteren Anleitung sollte auf die hier verwendeten Namen
+ * portiert sein. Falls Sie Fragen haben, bitte melden Sie sich bei Roland
+ * Haeder. Funktionell wurde hier aber nichts geaendert.
+ * ------------ Achtung! Bitte zuerst lesen, bevor Sie weiterlesen: -----------
*
* Die Einbindung des Interfaces geschieht folgendermaßen:
* 1. Einbindung der Klasse in Ihr PHP-Auszahlungsskript:
* CODE:
- * require( "PFAD/ZU/DER/KLASSE/PrimusInterface.class.php" );
- * $PPUsername = "username"; // Ihr Username bei Primusportal
- * $PPPassword = "passwort"; // Ihr Passwort bei Primusportal
+ * $primusUsername = 'username'; // Ihr Username bei Primusportal
+ * $primusPassword = 'passwort'; // Ihr Passwort bei Primusportal
*
- * $Interface = new PrimusInterface($PPUsername, $PPPassword);
+ * $apiInstance = ObjectFactory::createObjectByName('PrimeraApi', array($primusUsername, $primusPassword));
* 2. Durchführen einer Auszahlung:
* CODE:
- * $Status = $Interface->payPrimera($PayReceiver, $PayAmount, $PayDescription);
+ * $Status = $apiInstance->payPrimera($PayReceiver, $PayAmount, $PayDescription);
*
* 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");
+ * $status = $apiInstance->payPrimera('garbage', 10000, 'Auszahlung IhreSeite.de - ID: 12345');
* 3. Überprüfung des Status (Rückgabecode):
* CODE:
- * if (!$status) {
+ * if ($status === false) {
* // Ein Fehler ist aufgetreten
* // Fehlerbehandlung hier einfügen...
- * }else {
+ * } else {
* // 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-
- * variable __data gespeichert:
- * __data => array('status' => Rückgabecode (PI_DONE, PI_SENDER_ERROR, ...),
- * "statustext" => Status in Worten (z.B.: "Transaktion erfolgreich durchgeführt"),
- * ")
+ * variable $data gespeichert:
+ * $data = array(
+ * 'status' => Rückgabecode (PI_DONE, PI_SENDER_ERROR, ...),
+ * 'statustext' => Status in Worten (z.B.: 'Transaktion erfolgreich durchgeführt'),
+ * );
*
*
* @author Andreas Schmidt <xxgarbagexx@web.de>
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster.ship-simu.org>
* @version 1.0 - beta
* @copyright (c) 2007 by Primusportal.de
- * @copyright (c) 2008 by Roland Haeder
+ * @copyright (c) 2008, 2011 by Roland Haeder
*/
class PrimeraApi extends BaseFrameworkSystem {
/**
*/
const PI_GET_PRIMERA_DONE = 701;
+ /**
+ * HTTP-EOL
+ */
+ const HTTP_EOL = "\r\n";
+
/**
* URL für das Interface auf dem Primusserver:
*/
- private $host = "www.primusportal.de";
- private $path = "/transfer.interface.2.0.php";
+ private $host = 'www.primusportal.de';
+ private $path = '/transfer.interface.2.0.php';
private $errno = 0;
private $err = '';
/**
* Konstruktor
*/
- public function __construct ($PPUsername, $PPPassword) {
+ public function __construct ($primusUsername, $primusPassword) {
// Call parent constructor
parent::__construct();
- // Set data (DEPRECATED!)
- $this->username = $PPUsername;
- $this->password = $PPPassword;
+ // Set data
+ $this->username = $primusUsername;
+ $this->password = $primusPassword;
}
/**
* Anfrage senden und Rueckgabecode in Variable speichern
*/
- function queryApi ( $data = array() ) {
+ private function queryApi ( $data = array() ) {
$fp = fsockopen($this->host, 80, $this->errno, $this->_err);
if (!$fp) return false;
- $data["PrimusInterface_Username"] = base64_encode($this->username);
- $data["PrimusInterface_Password"] = base64_encode(md5($this->password));
+ $data['PrimusInterface_Username'] = base64_encode($this->username);
+ $data['PrimusInterface_Password'] = base64_encode(md5($this->password));
// POST-Daten uebermitteln:
- $data = http_build_query($data, '', '&');
+ $queryData = http_build_query($data, '', '&');
+
+ $request .= 'POST ' . $this->path . 'HTTP/1.1' . self::HTTP_EOL;
+ $request .= 'Host: ' . $this->host . self::HTTP_EOL;
+ $request .= 'Content-type: application/x-www-form-urlencoded' . self::HTTP_EOL;
+ $request .= 'Content-length: '. strlen($queryData) . self::HTTP_EOL;
+ $request .= 'Connection: close' . self::HTTP_EOL;
+ $request .= self::HTTP_EOL;
+ $request .= $queryData;
- fputs($fp, "POST {$this->path}HTTP/1.1\r\n");
- fputs($fp, "Host: {$this->host}\r\n");
- fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
- fputs($fp, "Content-length: ". strlen($data) ."\r\n");
- fputs($fp, "Connection: close\r\n\r\n");
- fputs($fp, $data);
+ fputs($fp, $request);
$return = '';
while (!feof($fp)) {
- $return.=fgets($fp,128);
- }
+ $return .= fgets($fp, 128);
+ } // END - while
- $content = explode("<!-- return-start -->", $return);
+ $content = explode('<!-- return-start -->', $return);
return $content[1];
}
/**
* Funktion parst die Rückgabe vom Transferskript:
*/
- function parseContent ( $content ) {
+ private function parseContent ( $content ) {
$x = explode("\n", $content);
$return = array();
foreach($x as $currentLine) {
$line_exploded = explode($this->seperator, $currentLine,2);
if (count($line_exploded) > 1) {
$return[$line_exploded[0]] = $line_exploded[1];
- }
- }
+ } // END - if
+ } // END - foreach
return $return;
}
*/
public function payPrimera ($Receiver, $Amount, $Description = '') {
$valid = false;
- $PostData = array(
+ $postData = array(
'PrimusInterface_Action' => 'Pay',
'PrimusInterface_Receiver' => base64_encode($Receiver),
'PrimusInterface_Amount' => base64_encode($Amount),
- 'PrimusInterface_Description' => base64_encode($Description) );
+ '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;
- }
+ } // END - if
return $valid;
}
* - ist er aktiv
* @param string/int $User Userid / Username
*/
- function CheckPrimusUser ($User) {
+ public function checkPrimusUser ($userName) {
$valid = false;
- $PostData = array(
+ $postData = array(
'PrimusInterface_Action' => 'CheckPrimusUser',
- 'PrimusInterface_CheckPrimusUser' => $User);
+ 'PrimusInterface_CheckPrimusUser' => $userName
+ );
- $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;
- }
+ } // END - if
return $valid;
}
/**
* Die Funktion liefer den aktuellen Primerastand
*/
- function getPrimera() {
+ public function getPrimera() {
$primera = false;
- $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"];
- }
+ $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'];
+ } // END - if
return $primera;
}
}
// [EOF]
-?>
\ No newline at end of file
+?>