Renamed 'seperator' to 'separator'
[core.git] / inc / classes / third_party / api / primusportal / class_PrimeraApi.php
index 1f7036e935da2eff22abf71c1bb44e64ef931463..a265c479f6468a032b1cf95ae6d6da80d58b42d5 100644 (file)
@@ -1,60 +1,73 @@
 <?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 {
        /**
@@ -102,16 +115,21 @@ 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 = '';
 
-       private $seperator = ':';
+       private $separator = ':';
 
        private $username = '';
        private $password = '';
@@ -121,60 +139,59 @@ class PrimeraApi extends BaseFrameworkSystem {
        /**
         * Konstruktor
         */
-       public function __construct ($PPUsername, $PPPassword) {
+       public function __construct ($primusUsername, $primusPassword) {
                // Call parent constructor
                parent::__construct();
 
-               // Clean up a little
-               $this->removeSystemArray();
-               $this->removeNumberFormaters();
-
-               // Set data (DEPRECATED!)
-               $this->username = $PPUsername;
-               $this->password = $PPPassword;
+               // Set data
+               $this->username = $primusUsername;
+               $this->password = $primusPassword;
        }
 
        /**
-        * Anfrage senden und Rückgabecode in Variable speichern
+        * 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 übermitteln:
-               $data = http_build_query($data, '', '&');
+               // POST-Daten uebermitteln:
+               $queryData = http_build_query($data, '', '&');
 
-               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);
+               $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, $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);
+                       $line_exploded = explode($this->separator, $currentLine,2);
                        if (count($line_exploded) > 1) {
                                $return[$line_exploded[0]] = $line_exploded[1];
-                       }
-               }
+                       } // END - if
+               } // END - foreach
                return $return;
        }
 
@@ -185,18 +202,19 @@ class PrimeraApi extends BaseFrameworkSystem {
         */
        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;
        }
 
@@ -206,37 +224,40 @@ class PrimeraApi extends BaseFrameworkSystem {
         * - 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
+?>