ea3840079e516a1162d0db17721d7642e1db9c16
[mailer.git] / inc / libs / wernis_functions.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 10/19/2003 *
4  * ===============                              Last change: 08/12/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : what-points.php                                  *
8  * -------------------------------------------------------------------- *
9  * Short description : All your collected points...                     *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Alle Ihrer gesammelten Punkte                    *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  * -------------------------------------------------------------------- *
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
16  * For more information visit: http://www.mxchange.org                  *
17  *                                                                      *
18  * This program is free software; you can redistribute it and/or modify *
19  * it under the terms of the GNU General Public License as published by *
20  * the Free Software Foundation; either version 2 of the License, or    *
21  * (at your option) any later version.                                  *
22  *                                                                      *
23  * This program is distributed in the hope that it will be useful,      *
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
26  * GNU General Public License for more details.                         *
27  *                                                                      *
28  * You should have received a copy of the GNU General Public License    *
29  * along with this program; if not, write to the Free Software          *
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
31  * MA  02110-1301  USA                                                  *
32  ************************************************************************/
33
34 // Some security stuff...
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) {
36         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
37         require($INC);
38 }
39
40 // Sets a status message and code
41 function WERNIS_STATUS_MESSAGE ($msg, $status) {
42         global $WERNIS;
43         $WERNIS['message'] = $msg;
44         $WERNIS['status'] = $status;
45 }
46
47 // Get the status message
48 function WERNIS_ERROR_MESSAGE () {
49         global $WERNIS;
50         if (isset($WERNIS['message'])) {
51                 // Use raw message
52                 return $WERNIS['message'];
53         } elseif (isset($WERNIS['status'])) {
54                 // Fall-back to status
55                 return sprintf(WERNIS_ERROR_STATUS, $WERNIS['status']);
56         } else {
57                 // Something bad happend
58                 return WERNIS_UNKNOWN_ERROR;
59         }
60 }
61
62 // Sends out a request to the API and returns it's result
63 function WERNIS_SEND_REQUEST ($scriptName, $requestData =  array()) {
64         global $CONFIG;
65
66         // Is the requestData an array?
67         if (!is_array($requestData)) {
68                 // Then abort here!
69                 return array(
70                         'status'  => "failed_general",
71                         'message' => WERNIS_API_REQUEST_DATA_INVALID
72                 );
73         }
74
75         // Is the API id and MD5 hash there?
76         if ((empty($CONFIG['wernis_api_id'])) || (empty($CONFIG['wernis_api_md5']))) {
77                 // Abort here...
78                 return array(
79                         'status'  => "failed_general",
80                         'message' => WERNIS_API_REQUEST_DATA_MISSING
81                 );
82         }
83
84         // Construct the request string
85         $requestString = $CONFIG['wernis_api_url'] . $scriptName."?api_id=".$CONFIG['wernis_api_id']."&api_key=".$CONFIG['wernis_api_md5'];
86         foreach ($requestData as $key=>$value) {
87                 $requestString .= "&".$key."=".$value;
88         }
89
90         // Get the raw response from the lower function
91         $response = MXCHANGE_OPEN($requestString);
92
93         // Check the response header if all is fine
94         if (strpos($response[0], "200") === false) {
95                 // Something bad happend... :(
96                 return array(
97                         'status'  => "request_eror",
98                         'message' => sprintf(WERNIS_API_REQUEST_ERROR, $response[0])
99                 );
100         }
101
102         // All (maybe) fine so remove the response header from server
103         $response = $response[(count($response) - 1)];
104
105         // Prepare the returning result for higher functions
106         if (substr($response, 0, 1) == "&") {
107                 // Remove the leading & (which can be used in Flash)
108                 $response = substr($response, 1);
109         }
110
111         // Bring back the response
112         $data = explode("=", $response);
113
114         // Default return array (should not stay empty)
115         $return = array();
116
117         // We use only the first two entries (which shall be fine)
118         if ($data[0] == "error") {
119                 // The request has failed... :(
120                 switch ($data[1]) {
121                         case "AUTH": // Authorization has failed
122                                 $return = array(
123                                         'status'  => "auth_failed",
124                                         'message' => WERNIS_API_REQUEST_FAILED_AUTH
125                                 );
126                                 break;
127
128                         default: // Unknown error (maybe new?)
129                                 $return = array(
130                                         'status'  => "request_failed",
131                                         'message' => sprintf(WERNIS_API_REQUEST_FAILED, $data[1])
132                                 );
133                                 break;
134                 }
135         } else {
136                 // All fine here
137                 $return = array(
138                         'status'   => "OK",
139                         'response' => $response
140                 );
141         }
142
143         // Return the result
144         return $return;
145 }
146
147 // Tests the function by calling balance.php on the API
148 function WERNIS_TEST_API () {
149         // Get config first
150         global $CONFIG;
151         $result = false;
152
153         // Return the result from the lower functions
154         $return = WERNIS_SEND_REQUEST("balance.php");
155
156         if ($return['status'] == "OK") {
157                 // All fine!
158                 $result = true;
159         } else {
160                 // Status failture text
161                 WERNIS_STATUS_MESSAGE($return['message'], $return['status']);
162         }
163
164         // Return result
165         return $result;
166 }
167
168 //
169 ?>