Completed
Push — 1.10.x ( 25211a...2f974c )
by Yannick
209:43 queued 168:30
created
main/inc/lib/nanogong.lib.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@
 block discarded – undo
38 38
     }
39 39
 
40 40
     /**
41
-     * @return bool
41
+     * @return false|null
42 42
      */
43 43
     public function create_user_folder()
44 44
     {
Please login to merge, or discard this patch.
Indentation   +240 added lines, -240 removed lines patch added patch discarded remove patch
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
         ) {
72 72
             mkdir($this->store_path.$this->session_id.'/'.$this->exercise_id.'/'.$this->question_id.'/'.$this->user_id, $directoryPermissions);
73 73
         }
74
-	}
74
+    }
75 75
 
76 76
     /**
77 77
      * Setting parameters: course id, session id, etc
@@ -119,24 +119,24 @@  discard block
 block discarded – undo
119 119
             $this->question_id = 0;
120 120
         }
121 121
 
122
-		$this->can_edit = false;
122
+        $this->can_edit = false;
123 123
 
124
-		if (api_is_allowed_to_edit()) {
125
-			$this->can_edit = true;
126
-		} else {
127
-			if ($this->user_id ==  api_get_user_id()) {
128
-				$this->can_edit = true;
129
-			}
130
-		}
124
+        if (api_is_allowed_to_edit()) {
125
+            $this->can_edit = true;
126
+        } else {
127
+            if ($this->user_id ==  api_get_user_id()) {
128
+                $this->can_edit = true;
129
+            }
130
+        }
131 131
 
132
-		// Settings the params array
133
-		$this->params = $params;
134
-		$this->store_path = api_get_path(SYS_COURSE_PATH).$this->course_info['path'].'/exercises/';
135
-		$this->create_user_folder();
136
-		$this->store_path = $this->store_path.implode('/', array($this->session_id, $this->exercise_id, $this->question_id, $this->user_id)).'/';
137
-		$this->filename = $this->generate_filename();
138
-		$this->store_filename = $this->store_path.$this->filename;
139
-	}
132
+        // Settings the params array
133
+        $this->params = $params;
134
+        $this->store_path = api_get_path(SYS_COURSE_PATH).$this->course_info['path'].'/exercises/';
135
+        $this->create_user_folder();
136
+        $this->store_path = $this->store_path.implode('/', array($this->session_id, $this->exercise_id, $this->question_id, $this->user_id)).'/';
137
+        $this->filename = $this->generate_filename();
138
+        $this->store_filename = $this->store_path.$this->filename;
139
+    }
140 140
 
141 141
     /**
142 142
      * Generates the filename with the next format:
@@ -187,30 +187,30 @@  discard block
 block discarded – undo
187 187
         return $delete_found;
188 188
     }
189 189
 
190
-	/**
191
-	 *
192
-	 * Tricky stuff to deal with the feedback = 0 in exercises (all question per page)
190
+    /**
191
+     *
192
+     * Tricky stuff to deal with the feedback = 0 in exercises (all question per page)
193 193
      * @param int $exe_id
194
-	 */
194
+     */
195 195
     public function replace_with_real_exe($exe_id)
196 196
     {
197
-		$filename = null;
198
-		//@ugly fix
199
-		foreach($this->available_extensions as $extension) {
200
-			$items = explode('-', $this->filename);
201
-			$items[5] = 'temp_exe';
202
-			$filename = implode('-', $items);
203
-			if (is_file($this->store_path.$filename.'.'.$extension)) {
204
-				$old_name = $this->store_path.$filename.'.'.$extension;
205
-				$items = explode('-', $this->filename);
206
-				$items[5] = $exe_id;
207
-				$filename = $filename = implode('-', $items);
208
-				$new_name = $this->store_path.$filename.'.'.$extension;
209
-				rename($old_name, $new_name);
210
-				break;
211
-			}
212
-		}
213
-	}
197
+        $filename = null;
198
+        //@ugly fix
199
+        foreach($this->available_extensions as $extension) {
200
+            $items = explode('-', $this->filename);
201
+            $items[5] = 'temp_exe';
202
+            $filename = implode('-', $items);
203
+            if (is_file($this->store_path.$filename.'.'.$extension)) {
204
+                $old_name = $this->store_path.$filename.'.'.$extension;
205
+                $items = explode('-', $this->filename);
206
+                $items[5] = $exe_id;
207
+                $filename = $filename = implode('-', $items);
208
+                $new_name = $this->store_path.$filename.'.'.$extension;
209
+                rename($old_name, $new_name);
210
+                break;
211
+            }
212
+        }
213
+    }
214 214
 
215 215
     /**
216 216
      * @param bool $load_from_database
@@ -218,24 +218,24 @@  discard block
 block discarded – undo
218 218
      */
219 219
     public function load_filename_if_exists($load_from_database = false)
220 220
     {
221
-		$filename = null;
222
-		//@ugly fix
223
-		foreach($this->available_extensions as $extension) {
224
-			if (is_file($this->store_path.$this->filename.'.'.$extension)) {
225
-				$filename = $this->filename.'.'.$extension;
226
-				break;
227
-			}
228
-		}
221
+        $filename = null;
222
+        //@ugly fix
223
+        foreach($this->available_extensions as $extension) {
224
+            if (is_file($this->store_path.$this->filename.'.'.$extension)) {
225
+                $filename = $this->filename.'.'.$extension;
226
+                break;
227
+            }
228
+        }
229 229
 
230
-		// temp_exe
231
-		if ($load_from_database) {
230
+        // temp_exe
231
+        if ($load_from_database) {
232 232
 
233
-			//Load the real filename just if exists
234
-			if (isset($this->params['exe_id']) && isset($this->params['user_id']) &&
233
+            //Load the real filename just if exists
234
+            if (isset($this->params['exe_id']) && isset($this->params['user_id']) &&
235 235
                 isset($this->params['question_id']) && isset($this->params['session_id']) && isset($this->params['course_id'])
236 236
             ) {
237
-				$attempt_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
238
-				$sql = "SELECT filename FROM $attempt_table
237
+                $attempt_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
238
+                $sql = "SELECT filename FROM $attempt_table
239 239
                         WHERE
240 240
                             exe_id = ".$this->params['exe_id']." AND
241 241
                             user_id = ".$this->params['user_id']." AND
@@ -243,107 +243,107 @@  discard block
 block discarded – undo
243 243
                             session_id 	= ".$this->params['session_id']." AND
244 244
                             course_code = '".$this->course_info['code']."'
245 245
                         LIMIT 1";
246
-				$result = Database::query($sql);
247
-				$result = Database::fetch_row($result,'ASSOC');
246
+                $result = Database::query($sql);
247
+                $result = Database::fetch_row($result,'ASSOC');
248 248
 
249
-				if (isset($result) && isset($result[0]) && !empty($result[0])) {
250
-					$filename = $result[0];
251
-				}
252
-			}
253
-		}
249
+                if (isset($result) && isset($result[0]) && !empty($result[0])) {
250
+                    $filename = $result[0];
251
+                }
252
+            }
253
+        }
254 254
 
255
-		if (is_file($this->store_path.$filename)) {
256
-			return $this->store_path.$filename;
257
-		}
255
+        if (is_file($this->store_path.$filename)) {
256
+            return $this->store_path.$filename;
257
+        }
258 258
 
259
-		return null;
260
-	}
259
+        return null;
260
+    }
261 261
 
262
-	/**
263
-	 *
264
-	 * Get the URL of the file
265
-	 * path courses/XXX/exercises/(session_id)/(exercise_id)/(question_id)/(user_id)/
262
+    /**
263
+     *
264
+     * Get the URL of the file
265
+     * path courses/XXX/exercises/(session_id)/(exercise_id)/(question_id)/(user_id)/
266 266
      * @param int $force_download
267
-	 *
268
-	 * @return string
269
-	 */
267
+     *
268
+     * @return string
269
+     */
270 270
     public function get_public_url($force_download = 0)
271 271
     {
272
-		$params = $this->get_params();
273
-		$filename = basename($this->load_filename_if_exists());
272
+        $params = $this->get_params();
273
+        $filename = basename($this->load_filename_if_exists());
274 274
         $url = api_get_path(WEB_COURSE_PATH).$this->course_info['path'].'/exercises/'.$params['session_id'].'/'.$params['exercise_id'].'/'.$params['question_id'].'/'.$params['user_id'].'/'.$filename;
275
-		return $url;
276
-	}
275
+        return $url;
276
+    }
277 277
 
278
-	/**
279
-	 * Uploads the nanogong wav file
278
+    /**
279
+     * Uploads the nanogong wav file
280 280
      * @param bool
281
-	 */
282
-	public function upload_file($is_nano = false)
283
-	{
284
-		if (!empty($_FILES)) {
285
-			$upload_ok = process_uploaded_file($_FILES['file'], false);
286
-
287
-			if (!is_uploaded_file($_FILES['file']['tmp_name'])) {
288
-				return 0;
289
-			}
281
+     */
282
+    public function upload_file($is_nano = false)
283
+    {
284
+        if (!empty($_FILES)) {
285
+            $upload_ok = process_uploaded_file($_FILES['file'], false);
290 286
 
291
-			if ($upload_ok) {
292
-				// Check if there is enough space to save the file
293
-				if (!DocumentManager::enough_space($_FILES['file']['size'], DocumentManager::get_course_quota())) {
294
-					return 0;
295
-				}
287
+            if (!is_uploaded_file($_FILES['file']['tmp_name'])) {
288
+                return 0;
289
+            }
296 290
 
297
-				//first we delete everything before uploading the file
298
-				$this->delete_files();
291
+            if ($upload_ok) {
292
+                // Check if there is enough space to save the file
293
+                if (!DocumentManager::enough_space($_FILES['file']['size'], DocumentManager::get_course_quota())) {
294
+                    return 0;
295
+                }
299 296
 
300
-				//Reload the filename variable
301
-				$file_name = add_ext_on_mime($_FILES['file']['name'], $_FILES['file']['type']);
302
-				$file_name = strtolower($file_name);
303
-				$file_info = pathinfo($file_name);
297
+                //first we delete everything before uploading the file
298
+                $this->delete_files();
304 299
 
305
-				if ($is_nano == true) {
306
-					$file_info['extension'] = 'wav';
307
-				}
300
+                //Reload the filename variable
301
+                $file_name = add_ext_on_mime($_FILES['file']['name'], $_FILES['file']['type']);
302
+                $file_name = strtolower($file_name);
303
+                $file_info = pathinfo($file_name);
308 304
 
309
-				$file_name = $this->filename.'.'.$file_info['extension'];
305
+                if ($is_nano == true) {
306
+                    $file_info['extension'] = 'wav';
307
+                }
310 308
 
311
-				if (in_array($file_info['extension'], $this->available_extensions)) {
312
-					if (move_uploaded_file($_FILES['file']['tmp_name'], $this->store_path.$file_name)) {
313
-						$this->store_filename = $this->store_path.$file_name;
314
-						return 1;
315
-					}
316
-				}
317
-			}
318
-		}
309
+                $file_name = $this->filename.'.'.$file_info['extension'];
310
+
311
+                if (in_array($file_info['extension'], $this->available_extensions)) {
312
+                    if (move_uploaded_file($_FILES['file']['tmp_name'], $this->store_path.$file_name)) {
313
+                        $this->store_filename = $this->store_path.$file_name;
314
+                        return 1;
315
+                    }
316
+                }
317
+            }
318
+        }
319 319
 
320
-		return 0;
321
-	}
320
+        return 0;
321
+    }
322 322
 
323
-	/**
324
-	 * Show the audio file + a button to download
323
+    /**
324
+     * Show the audio file + a button to download
325 325
      * @param bool
326
-	 */
327
-	public function show_audio_file($show_delete_button = false)
328
-	{
329
-		$html = '';
330
-		$file_path = $this->load_filename_if_exists();
331
-
332
-		if (!empty($file_path)) {
333
-			$url = $this->get_public_url(true);
334
-			$actions = Display::url(Display::return_icon('save.png', get_lang('Download'), array(), ICON_SIZE_SMALL), $url, array('target'=>'_blank'));
335
-			$download_button = Display::url(get_lang('Download'), $url, array('class' =>'btn btn-default'));
336
-
337
-			if ($show_delete_button) {
338
-				$actions .= ' '.Display::url(Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL), "#", array('onclick'=>'delete_file();'));
339
-			}
326
+     */
327
+    public function show_audio_file($show_delete_button = false)
328
+    {
329
+        $html = '';
330
+        $file_path = $this->load_filename_if_exists();
331
+
332
+        if (!empty($file_path)) {
333
+            $url = $this->get_public_url(true);
334
+            $actions = Display::url(Display::return_icon('save.png', get_lang('Download'), array(), ICON_SIZE_SMALL), $url, array('target'=>'_blank'));
335
+            $download_button = Display::url(get_lang('Download'), $url, array('class' =>'btn btn-default'));
340 336
 
341
-			$basename = basename($file_path);
342
-			$path_info = pathinfo($basename);
337
+            if ($show_delete_button) {
338
+                $actions .= ' '.Display::url(Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL), "#", array('onclick'=>'delete_file();'));
339
+            }
343 340
 
344
-			if ($path_info['extension'] == 'wav') {
341
+            $basename = basename($file_path);
342
+            $path_info = pathinfo($basename);
345 343
 
346
-				$html .= '<script>
344
+            if ($path_info['extension'] == 'wav') {
345
+
346
+                $html .= '<script>
347 347
 				$(document).ready( function() {
348 348
 					var java_enabled = navigator.javaEnabled();
349 349
 
@@ -357,56 +357,56 @@  discard block
 block discarded – undo
357 357
 				});
358 358
 				</script>';
359 359
 
360
-				$html .= '<div id="nanogong_player_id" class="nanogong_player_container">';
361
-					$html .= '<div class="action_player">'.$actions.'</div>';
362
-					$html .= '<div class="nanogong_player">';
363
-						$html .= '<applet id="nanogong_player" archive="'.api_get_path(WEB_LIBRARY_PATH).'nanogong/nanogong.jar" code="gong.NanoGong" width="250" height="95" ALIGN="middle">';
364
-						$html .= '<param name="ShowRecordButton" value="false" />'; // default true
365
-						$html .= '<param name="ShowSaveButton" value="false" />'; //you can save in local computer | (default true)
366
-						//echo '<param name="ShowAudioLevel" value="false" />'; //  it displays the audiometer | (default true)
367
-						$html .= '<param name="ShowTime" value="true" />'; // default false
368
-						$html .= '<param name="Color" value="#FFFFFF" />';
360
+                $html .= '<div id="nanogong_player_id" class="nanogong_player_container">';
361
+                    $html .= '<div class="action_player">'.$actions.'</div>';
362
+                    $html .= '<div class="nanogong_player">';
363
+                        $html .= '<applet id="nanogong_player" archive="'.api_get_path(WEB_LIBRARY_PATH).'nanogong/nanogong.jar" code="gong.NanoGong" width="250" height="95" ALIGN="middle">';
364
+                        $html .= '<param name="ShowRecordButton" value="false" />'; // default true
365
+                        $html .= '<param name="ShowSaveButton" value="false" />'; //you can save in local computer | (default true)
366
+                        //echo '<param name="ShowAudioLevel" value="false" />'; //  it displays the audiometer | (default true)
367
+                        $html .= '<param name="ShowTime" value="true" />'; // default false
368
+                        $html .= '<param name="Color" value="#FFFFFF" />';
369 369
                         $html .= '<param name="ShowSpeedButton" value="false" />';
370
-						//echo '<param name="StartTime" value="10.5" />';
371
-						//echo '<param name="EndTime" value="65" />';
372
-						$html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
373
-						//$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
374
-						//Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
375
-						//echo '<param name="SamplingRate" value="32000" />';
376
-						//echo '<param name="MaxDuration" value="60" />';
377
-						$html .=  '<param name="SoundFileURL" value="'.$url.'" />';//load a file |(default "")
378
-						$html .= '</applet>';
379
-					$html .= '</div>';
380
-				$html .= '</div>';
370
+                        //echo '<param name="StartTime" value="10.5" />';
371
+                        //echo '<param name="EndTime" value="65" />';
372
+                        $html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
373
+                        //$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
374
+                        //Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
375
+                        //echo '<param name="SamplingRate" value="32000" />';
376
+                        //echo '<param name="MaxDuration" value="60" />';
377
+                        $html .=  '<param name="SoundFileURL" value="'.$url.'" />';//load a file |(default "")
378
+                        $html .= '</applet>';
379
+                    $html .= '</div>';
380
+                $html .= '</div>';
381 381
                 $html .= '<div id="nanogong_warning">'.Display::return_message(get_lang('BrowserDoesNotSupportNanogongPlayer'), 'warning').$download_button.'</div>';
382 382
 
383
-			} elseif(in_array($path_info['extension'],array('mp3', 'ogg','wav'))) {
384
-				$js_path = api_get_path(WEB_LIBRARY_PATH).'javascript/';
385
-				$html .= '<link rel="stylesheet" href="'.$js_path.'jquery-jplayer/skin/blue.monday/css/jplayer.blue.monday.css" type="text/css">';
386
-				$html .= '<script type="text/javascript" src="'.$js_path.'jquery-jplayer/jplayer/jquery.jplayer.min.js"></script>';
383
+            } elseif(in_array($path_info['extension'],array('mp3', 'ogg','wav'))) {
384
+                $js_path = api_get_path(WEB_LIBRARY_PATH).'javascript/';
385
+                $html .= '<link rel="stylesheet" href="'.$js_path.'jquery-jplayer/skin/blue.monday/css/jplayer.blue.monday.css" type="text/css">';
386
+                $html .= '<script type="text/javascript" src="'.$js_path.'jquery-jplayer/jplayer/jquery.jplayer.min.js"></script>';
387 387
 
388
-				$html .= '<div class="nanogong_player"></div>';
389
-				$html .= '<br /><div class="action_player">'.$actions.'</div><br /><br /><br />';
388
+                $html .= '<div class="nanogong_player"></div>';
389
+                $html .= '<br /><div class="action_player">'.$actions.'</div><br /><br /><br />';
390 390
 
391 391
                 $params = array(
392 392
                     'url' => $url,
393 393
                     'extension' =>$path_info['extension'],
394 394
                     'count'=> 1
395
-                 );
395
+                    );
396 396
                 $jquery = DocumentManager::generate_jplayer_jquery($params);
397
-				$html .= '<script>
397
+                $html .= '<script>
398 398
 				$(document).ready( function() {
399 399
 				    //Experimental changes to preview mp3, ogg files
400 400
 				     '.$jquery.'
401 401
 				});
402 402
 				</script>';
403
-				$html .= DocumentManager::generate_media_preview(1, 'advanced');
404
-			}
405
-		}
403
+                $html .= DocumentManager::generate_media_preview(1, 'advanced');
404
+            }
405
+        }
406 406
         return $html;
407
-	}
407
+    }
408 408
 
409
-	/*
409
+    /*
410 410
 	var filename = document.getElementById("audio_title").value+".wav";
411 411
 	var filename = filename.replace(/\s/g, "_");//replace spaces by _
412 412
 	var filename = encodeURIComponent(filename);
@@ -416,19 +416,19 @@  discard block
 block discarded – undo
416 416
 	var urlnanogong="'.$url.'?filename="+filename+"&filepath="+filepath+"&dir="+dir+"&course_code="+course_code;
417 417
 	*/
418 418
 
419
-	/**
420
-	 * Returns the nanogong javascript code
421
-	 * @return string
422
-	 */
419
+    /**
420
+     * Returns the nanogong javascript code
421
+     * @return string
422
+     */
423 423
     public function return_js()
424 424
     {
425
-		$params = $this->get_params(true);
426
-		$url = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=save_file&'.$params.'&is_nano=1';
427
-		$url_load_file = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=show_audio&'.$params;
425
+        $params = $this->get_params(true);
426
+        $url = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=save_file&'.$params.'&is_nano=1';
427
+        $url_load_file = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=show_audio&'.$params;
428 428
 
429
-		$url_delete = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=delete&'.$params;
429
+        $url_delete = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=delete&'.$params;
430 430
 
431
-		$js =  '<script language="javascript">
431
+        $js =  '<script language="javascript">
432 432
 
433 433
 			//lang vars
434 434
 
@@ -544,77 +544,77 @@  discard block
 block discarded – undo
544 544
 				return false;
545 545
 			}
546 546
 			</script>';
547
-		return $js;
548
-	}
547
+        return $js;
548
+    }
549 549
 
550
-	/**
551
-	 * Returns the HTML form to upload a nano file or upload a file
550
+    /**
551
+     * Returns the HTML form to upload a nano file or upload a file
552 552
      * @param string
553
-	 */
554
-	public function return_form($message = null)
553
+     */
554
+    public function return_form($message = null)
555 555
     {
556 556
 
557
-		$params = $this->get_params(true);
558
-		$url = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=save_file&'.$params;
557
+        $params = $this->get_params(true);
558
+        $url = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=save_file&'.$params;
559 559
 
560
-		//check browser support and load form
561
-		$array_browser = api_browser_support('check_browser');
560
+        //check browser support and load form
561
+        $array_browser = api_browser_support('check_browser');
562 562
 
563
-		$preview_file = $this->show_audio_file(true, true);
563
+        $preview_file = $this->show_audio_file(true, true);
564 564
 
565 565
         $preview_file = Display::div(
566 566
             $preview_file,
567 567
             array('id' => 'preview', 'style' => 'text-align:center; padding-left: 25px;')
568 568
         );
569 569
 
570
-		$html = '<center>';
570
+        $html = '<center>';
571 571
 
572
-		//Use normal upload file
573
-		$html .= Display::return_icon('microphone.png', get_lang('PressRecordButton'),'', ICON_SIZE_BIG);
574
-		$html .='<br />';
572
+        //Use normal upload file
573
+        $html .= Display::return_icon('microphone.png', get_lang('PressRecordButton'),'', ICON_SIZE_BIG);
574
+        $html .='<br />';
575 575
 
576
-		$html .= '<div id="nanogong_div">';
576
+        $html .= '<div id="nanogong_div">';
577 577
 
578
-		$html .= '<applet id="nanogong" archive="'.api_get_path(WEB_LIBRARY_PATH).'nanogong/nanogong.jar" code="gong.NanoGong" width="250" height="95" align="middle">';
579
-		//echo '<param name="ShowRecordButton" value="false" />'; // default true
580
-		// echo '<param name="ShowSaveButton" value="false" />'; //you can save in local computer | (default true)
578
+        $html .= '<applet id="nanogong" archive="'.api_get_path(WEB_LIBRARY_PATH).'nanogong/nanogong.jar" code="gong.NanoGong" width="250" height="95" align="middle">';
579
+        //echo '<param name="ShowRecordButton" value="false" />'; // default true
580
+        // echo '<param name="ShowSaveButton" value="false" />'; //you can save in local computer | (default true)
581 581
         $html .= '<param name="ShowSpeedButton" value="false" />'; // default true
582
-		//echo '<param name="ShowAudioLevel" value="false" />'; //  it displays the audiometer | (default true)
583
-		$html .= '<param name="ShowTime" value="true" />'; // default false
584
-		$html .= '<param name="Color" value="#FFFFFF" />'; // default #FFFFFF
585
-		//echo '<param name="StartTime" value="10.5" />';
586
-		//echo '<param name="EndTime" value="65" />';
587
-		$html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
588
-		//$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
582
+        //echo '<param name="ShowAudioLevel" value="false" />'; //  it displays the audiometer | (default true)
583
+        $html .= '<param name="ShowTime" value="true" />'; // default false
584
+        $html .= '<param name="Color" value="#FFFFFF" />'; // default #FFFFFF
585
+        //echo '<param name="StartTime" value="10.5" />';
586
+        //echo '<param name="EndTime" value="65" />';
587
+        $html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
588
+        //$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
589 589
 
590
-		//echo '<param name="SamplingRate" value="32000" />';//Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
591
-		//echo '<param name="MaxDuration" value="60" />';
592
-		//echo '<param name="SoundFileURL" value="http://somewhere.com/mysoundfile.wav" />';//load a file |(default "")
593
-		$html .= '</applet>';
590
+        //echo '<param name="SamplingRate" value="32000" />';//Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
591
+        //echo '<param name="MaxDuration" value="60" />';
592
+        //echo '<param name="SoundFileURL" value="http://somewhere.com/mysoundfile.wav" />';//load a file |(default "")
593
+        $html .= '</applet>';
594 594
 
595
-		$html .= '<br /><br /><br />';
595
+        $html .= '<br /><br /><br />';
596 596
 
597 597
         $html .= '<form name="form_nanogong_advanced">';
598
-		$html .= '<input type="hidden" name="is_nano" value="1">';
599
-		$html .= '<a href="#" class="btn btn-default"  onclick="send_voice()" />'.get_lang('SendRecord').'</a>';
600
-		$html .= '</form></div>';
598
+        $html .= '<input type="hidden" name="is_nano" value="1">';
599
+        $html .= '<a href="#" class="btn btn-default"  onclick="send_voice()" />'.get_lang('SendRecord').'</a>';
600
+        $html .= '</form></div>';
601 601
 
602 602
         $html .= Display::url(get_lang('ProblemsRecordingUploadYourOwnAudioFile'), 'javascript:void(0)', array('onclick' => 'show_simple_upload_form();'));
603 603
 
604
-		$html .= '<br /><br /><div id="no_nanogong_div">';
605
-		//$html .= Display::return_message(get_lang('BrowserNotSupportNanogongSend'), 'warning');
606
-		$html .= '<form id="form_nanogong_simple" class="form-search" action="'.$url.'" name="form_nanogong" method="POST" enctype="multipart/form-data">';
607
-		$html .= '<input type="file" name="file">';
608
-		$html .= '<a href="#" class="btn btn-default"  onclick="upload_file()" /><em class="fa fa-upload"></em> '.get_lang('UploadFile').'</a>';
609
-		$html .= '</form>';
604
+        $html .= '<br /><br /><div id="no_nanogong_div">';
605
+        //$html .= Display::return_message(get_lang('BrowserNotSupportNanogongSend'), 'warning');
606
+        $html .= '<form id="form_nanogong_simple" class="form-search" action="'.$url.'" name="form_nanogong" method="POST" enctype="multipart/form-data">';
607
+        $html .= '<input type="file" name="file">';
608
+        $html .= '<a href="#" class="btn btn-default"  onclick="upload_file()" /><em class="fa fa-upload"></em> '.get_lang('UploadFile').'</a>';
609
+        $html .= '</form>';
610 610
         $html .= '</div>';
611
-		$html .= '</center>';
612
-		$html .= '<div style="display:none" id="status_ok" class="confirmation-message"></div><div style="display:none" id="status_warning" class="warning-message"></div>';
613
-		$html .= '<div id="messages">'.$message.'</div>';
614
-		$html .= $preview_file;
611
+        $html .= '</center>';
612
+        $html .= '<div style="display:none" id="status_ok" class="confirmation-message"></div><div style="display:none" id="status_warning" class="warning-message"></div>';
613
+        $html .= '<div id="messages">'.$message.'</div>';
614
+        $html .= $preview_file;
615 615
 
616
-		return $html;
617
-	}
616
+        return $html;
617
+    }
618 618
 
619 619
     /**
620 620
      * @param bool $return_as_query
@@ -622,15 +622,15 @@  discard block
 block discarded – undo
622 622
      */
623 623
     public function get_params($return_as_query = false)
624 624
     {
625
-		if (empty($this->params)) {
626
-			return false;
627
-		}
628
-		if ($return_as_query) {
629
-			return http_build_query($this->params);
630
-		}
625
+        if (empty($this->params)) {
626
+            return false;
627
+        }
628
+        if ($return_as_query) {
629
+            return http_build_query($this->params);
630
+        }
631 631
 
632
-		return $this->params;
633
-	}
632
+        return $this->params;
633
+    }
634 634
 
635 635
     /**
636 636
      * @param $attribute
@@ -638,18 +638,18 @@  discard block
 block discarded – undo
638 638
      */
639 639
     public function get_param_value($attribute)
640 640
     {
641
-		if (isset($this->params[$attribute])) {
642
-			return $this->params[$attribute];
643
-		}
644
-	}
645
-
646
-	/**
647
-	 * Show a button to load the form
648
-	 * @return string
649
-	 */
641
+        if (isset($this->params[$attribute])) {
642
+            return $this->params[$attribute];
643
+        }
644
+    }
645
+
646
+    /**
647
+     * Show a button to load the form
648
+     * @return string
649
+     */
650 650
     public function show_button()
651 651
     {
652
-		$params_string = $this->get_params(true);
652
+        $params_string = $this->get_params(true);
653 653
 
654 654
         $url = api_get_path(WEB_AJAX_PATH)
655 655
             . 'nanogong.ajax.php?a=show_form&'
@@ -664,7 +664,7 @@  discard block
 block discarded – undo
664 664
                 'data-title' => get_lang('RecordAnswer')
665 665
             ]
666 666
         );
667
-		$html .= '<br /><br />'.Display::return_message(get_lang('UseTheMessageBelowToAddSomeComments'));
668
-		return $html;
669
-	}
667
+        $html .= '<br /><br />'.Display::return_message(get_lang('UseTheMessageBelowToAddSomeComments'));
668
+        return $html;
669
+    }
670 670
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 		if (api_is_allowed_to_edit()) {
125 125
 			$this->can_edit = true;
126 126
 		} else {
127
-			if ($this->user_id ==  api_get_user_id()) {
127
+			if ($this->user_id == api_get_user_id()) {
128 128
 				$this->can_edit = true;
129 129
 			}
130 130
 		}
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
     {
197 197
 		$filename = null;
198 198
 		//@ugly fix
199
-		foreach($this->available_extensions as $extension) {
199
+		foreach ($this->available_extensions as $extension) {
200 200
 			$items = explode('-', $this->filename);
201 201
 			$items[5] = 'temp_exe';
202 202
 			$filename = implode('-', $items);
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
     {
221 221
 		$filename = null;
222 222
 		//@ugly fix
223
-		foreach($this->available_extensions as $extension) {
223
+		foreach ($this->available_extensions as $extension) {
224 224
 			if (is_file($this->store_path.$this->filename.'.'.$extension)) {
225 225
 				$filename = $this->filename.'.'.$extension;
226 226
 				break;
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
                             course_code = '".$this->course_info['code']."'
245 245
                         LIMIT 1";
246 246
 				$result = Database::query($sql);
247
-				$result = Database::fetch_row($result,'ASSOC');
247
+				$result = Database::fetch_row($result, 'ASSOC');
248 248
 
249 249
 				if (isset($result) && isset($result[0]) && !empty($result[0])) {
250 250
 					$filename = $result[0];
@@ -369,18 +369,18 @@  discard block
 block discarded – undo
369 369
                         $html .= '<param name="ShowSpeedButton" value="false" />';
370 370
 						//echo '<param name="StartTime" value="10.5" />';
371 371
 						//echo '<param name="EndTime" value="65" />';
372
-						$html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
372
+						$html .= '<param name="AudioFormat" value="ImaADPCM" />'; // ImaADPCM (more speed), Speex (more compression)|(default Speex)
373 373
 						//$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
374 374
 						//Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
375 375
 						//echo '<param name="SamplingRate" value="32000" />';
376 376
 						//echo '<param name="MaxDuration" value="60" />';
377
-						$html .=  '<param name="SoundFileURL" value="'.$url.'" />';//load a file |(default "")
377
+						$html .= '<param name="SoundFileURL" value="'.$url.'" />'; //load a file |(default "")
378 378
 						$html .= '</applet>';
379 379
 					$html .= '</div>';
380 380
 				$html .= '</div>';
381 381
                 $html .= '<div id="nanogong_warning">'.Display::return_message(get_lang('BrowserDoesNotSupportNanogongPlayer'), 'warning').$download_button.'</div>';
382 382
 
383
-			} elseif(in_array($path_info['extension'],array('mp3', 'ogg','wav'))) {
383
+			} elseif (in_array($path_info['extension'], array('mp3', 'ogg', 'wav'))) {
384 384
 				$js_path = api_get_path(WEB_LIBRARY_PATH).'javascript/';
385 385
 				$html .= '<link rel="stylesheet" href="'.$js_path.'jquery-jplayer/skin/blue.monday/css/jplayer.blue.monday.css" type="text/css">';
386 386
 				$html .= '<script type="text/javascript" src="'.$js_path.'jquery-jplayer/jplayer/jquery.jplayer.min.js"></script>';
@@ -428,7 +428,7 @@  discard block
 block discarded – undo
428 428
 
429 429
 		$url_delete = api_get_path(WEB_AJAX_PATH).'nanogong.ajax.php?a=delete&'.$params;
430 430
 
431
-		$js =  '<script language="javascript">
431
+		$js = '<script language="javascript">
432 432
 
433 433
 			//lang vars
434 434
 
@@ -570,8 +570,8 @@  discard block
 block discarded – undo
570 570
 		$html = '<center>';
571 571
 
572 572
 		//Use normal upload file
573
-		$html .= Display::return_icon('microphone.png', get_lang('PressRecordButton'),'', ICON_SIZE_BIG);
574
-		$html .='<br />';
573
+		$html .= Display::return_icon('microphone.png', get_lang('PressRecordButton'), '', ICON_SIZE_BIG);
574
+		$html .= '<br />';
575 575
 
576 576
 		$html .= '<div id="nanogong_div">';
577 577
 
@@ -584,7 +584,7 @@  discard block
 block discarded – undo
584 584
 		$html .= '<param name="Color" value="#FFFFFF" />'; // default #FFFFFF
585 585
 		//echo '<param name="StartTime" value="10.5" />';
586 586
 		//echo '<param name="EndTime" value="65" />';
587
-		$html .= '<param name="AudioFormat" value="ImaADPCM" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
587
+		$html .= '<param name="AudioFormat" value="ImaADPCM" />'; // ImaADPCM (more speed), Speex (more compression)|(default Speex)
588 588
 		//$html .= '<param name="AudioFormat" value="Speex" />';// ImaADPCM (more speed), Speex (more compression)|(default Speex)
589 589
 
590 590
 		//echo '<param name="SamplingRate" value="32000" />';//Quality for ImaADPCM (low 8000, medium 11025, normal 22050, hight 44100) OR Quality for Speex (low 8000, medium 16000, normal 32000, hight 44100) | (default 44100)
Please login to merge, or discard this patch.
main/inc/lib/notification.lib.php 2 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -219,7 +219,7 @@
 block discarded – undo
219 219
      * @param array	    $user_list recipients: user list of ids
220 220
      * @param string	$title
221 221
      * @param string	$content
222
-     * @param array	    $sender_info
222
+     * @param array	    $senderInfo
223 223
      * result of api_get_user_info() or GroupPortalManager:get_group_data()
224 224
      */
225 225
     public function save_notification(
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -355,7 +355,7 @@  discard block
 block discarded – undo
355 355
                 $newMessageText = '';
356 356
                 $linkToNewMessage = Display::url(
357 357
                     get_lang('SeeMessage'),
358
-                    api_get_path(WEB_CODE_PATH) . 'messages/inbox.php'
358
+                    api_get_path(WEB_CODE_PATH).'messages/inbox.php'
359 359
                 );
360 360
                 break;
361 361
             case self::NOTIFICATION_TYPE_MESSAGE:
@@ -370,7 +370,7 @@  discard block
 block discarded – undo
370 370
                 }
371 371
                 $linkToNewMessage = Display::url(
372 372
                     get_lang('SeeMessage'),
373
-                    api_get_path(WEB_CODE_PATH) . 'messages/inbox.php'
373
+                    api_get_path(WEB_CODE_PATH).'messages/inbox.php'
374 374
                 );
375 375
                 break;
376 376
             case self::NOTIFICATION_TYPE_INVITATION:
@@ -385,7 +385,7 @@  discard block
 block discarded – undo
385 385
                 }
386 386
                 $linkToNewMessage = Display::url(
387 387
                     get_lang('SeeInvitation'),
388
-                    api_get_path(WEB_CODE_PATH) . 'social/invitations.php'
388
+                    api_get_path(WEB_CODE_PATH).'social/invitations.php'
389 389
                 );
390 390
                 break;
391 391
             case self::NOTIFICATION_TYPE_GROUP:
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.nusoap_base.php 3 patches
Doc Comments   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -306,7 +306,7 @@  discard block
 block discarded – undo
306 306
 	/**
307 307
 	* gets the current debug data for this instance
308 308
 	*
309
-	* @return   debug data
309
+	* @return   string data
310 310
 	* @access   public
311 311
 	*/
312 312
 	function &getDebug() {
@@ -319,7 +319,7 @@  discard block
 block discarded – undo
319 319
 	* gets the current debug data for this instance as an XML comment
320 320
 	* this may change the contents of the debug data
321 321
 	*
322
-	* @return   debug data as an XML comment
322
+	* @return   string data as an XML comment
323 323
 	* @access   public
324 324
 	*/
325 325
 	function &getDebugAsXMLComment() {
@@ -352,7 +352,7 @@  discard block
 block discarded – undo
352 352
 	/**
353 353
 	* returns error string if present
354 354
 	*
355
-	* @return   mixed error string or false
355
+	* @return   string|false error string or false
356 356
 	* @access   public
357 357
 	*/
358 358
 	function getError(){
@@ -365,7 +365,7 @@  discard block
 block discarded – undo
365 365
 	/**
366 366
 	* sets error string
367 367
 	*
368
-	* @return   boolean $string error string
368
+	* @return   boolean|null $string error string
369 369
 	* @access   private
370 370
 	*/
371 371
 	function setError($str){
@@ -801,7 +801,7 @@  discard block
 block discarded – undo
801 801
     * returns false, if not prefixed
802 802
     *
803 803
     * @param string $str The prefixed string
804
-    * @return mixed The prefix or false if there is no prefix
804
+    * @return string|false The prefix or false if there is no prefix
805 805
     * @access public
806 806
     */
807 807
 	function getPrefix($str){
@@ -832,7 +832,7 @@  discard block
 block discarded – undo
832 832
     * or false if no prefixes registered for the given namespace
833 833
     *
834 834
     * @param string $ns The namespace
835
-    * @return mixed The prefix, false if the namespace has no prefixes
835
+    * @return string The prefix, false if the namespace has no prefixes
836 836
     * @access public
837 837
     */
838 838
 	function getPrefixFromNamespace($ns) {
@@ -898,7 +898,7 @@  discard block
 block discarded – undo
898 898
 *
899 899
 * @param    int $timestamp Unix time stamp
900 900
 * @param	boolean $utc Whether the time stamp is UTC or local
901
-* @return	mixed ISO 8601 date string or false
901
+* @return	string|false ISO 8601 date string or false
902 902
 * @access   public
903 903
 */
904 904
 function timestamp_to_iso8601($timestamp,$utc=true){
Please login to merge, or discard this patch.
Indentation   +846 added lines, -846 removed lines patch added patch discarded remove patch
@@ -83,810 +83,810 @@  discard block
 block discarded – undo
83 83
 * @access   public
84 84
 */
85 85
 class nusoap_base {
86
-	/**
87
-	 * Identification for HTTP headers.
88
-	 *
89
-	 * @var string
90
-	 * @access private
91
-	 */
92
-	var $title = 'NuSOAP';
93
-	/**
94
-	 * Version for HTTP headers.
95
-	 *
96
-	 * @var string
97
-	 * @access private
98
-	 */
99
-	var $version = '0.9.5';
100
-	/**
101
-	 * CVS revision for HTTP headers.
102
-	 *
103
-	 * @var string
104
-	 * @access private
105
-	 */
106
-	var $revision = '$Revision: 1.56 $';
86
+    /**
87
+     * Identification for HTTP headers.
88
+     *
89
+     * @var string
90
+     * @access private
91
+     */
92
+    var $title = 'NuSOAP';
93
+    /**
94
+     * Version for HTTP headers.
95
+     *
96
+     * @var string
97
+     * @access private
98
+     */
99
+    var $version = '0.9.5';
100
+    /**
101
+     * CVS revision for HTTP headers.
102
+     *
103
+     * @var string
104
+     * @access private
105
+     */
106
+    var $revision = '$Revision: 1.56 $';
107 107
     /**
108 108
      * Current error string (manipulated by getError/setError)
109
-	 *
110
-	 * @var string
111
-	 * @access private
112
-	 */
113
-	var $error_str = '';
109
+     *
110
+     * @var string
111
+     * @access private
112
+     */
113
+    var $error_str = '';
114 114
     /**
115 115
      * Current debug string (manipulated by debug/appendDebug/clearDebug/getDebug/getDebugAsXMLComment)
116
-	 *
117
-	 * @var string
118
-	 * @access private
119
-	 */
116
+     *
117
+     * @var string
118
+     * @access private
119
+     */
120 120
     var $debug_str = '';
121 121
     /**
122
-	 * toggles automatic encoding of special characters as entities
123
-	 * (should always be true, I think)
124
-	 *
125
-	 * @var boolean
126
-	 * @access private
127
-	 */
128
-	var $charencoding = true;
129
-	/**
130
-	 * the debug level for this instance
131
-	 *
132
-	 * @var	integer
133
-	 * @access private
134
-	 */
135
-	var $debugLevel;
136
-
137
-    /**
138
-	* set schema version
139
-	*
140
-	* @var      string
141
-	* @access   public
142
-	*/
143
-	var $XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema';
144
-
145
-    /**
146
-	* charset encoding for outgoing messages
147
-	*
148
-	* @var      string
149
-	* @access   public
150
-	*/
122
+     * toggles automatic encoding of special characters as entities
123
+     * (should always be true, I think)
124
+     *
125
+     * @var boolean
126
+     * @access private
127
+     */
128
+    var $charencoding = true;
129
+    /**
130
+     * the debug level for this instance
131
+     *
132
+     * @var	integer
133
+     * @access private
134
+     */
135
+    var $debugLevel;
136
+
137
+    /**
138
+     * set schema version
139
+     *
140
+     * @var      string
141
+     * @access   public
142
+     */
143
+    var $XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema';
144
+
145
+    /**
146
+     * charset encoding for outgoing messages
147
+     *
148
+     * @var      string
149
+     * @access   public
150
+     */
151 151
     var $soap_defencoding = 'ISO-8859-1';
152
-	//var $soap_defencoding = 'UTF-8';
153
-
154
-	/**
155
-	* namespaces in an array of prefix => uri
156
-	*
157
-	* this is "seeded" by a set of constants, but it may be altered by code
158
-	*
159
-	* @var      array
160
-	* @access   public
161
-	*/
162
-	var $namespaces = array(
163
-		'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
164
-		'xsd' => 'http://www.w3.org/2001/XMLSchema',
165
-		'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
166
-		'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/'
167
-		);
168
-
169
-	/**
170
-	* namespaces used in the current context, e.g. during serialization
171
-	*
172
-	* @var      array
173
-	* @access   private
174
-	*/
175
-	var $usedNamespaces = array();
176
-
177
-	/**
178
-	* XML Schema types in an array of uri => (array of xml type => php type)
179
-	* is this legacy yet?
180
-	* no, this is used by the nusoap_xmlschema class to verify type => namespace mappings.
181
-	* @var      array
182
-	* @access   public
183
-	*/
184
-	var $typemap = array(
185
-	'http://www.w3.org/2001/XMLSchema' => array(
186
-		'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
187
-		'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
188
-		'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
189
-		// abstract "any" types
190
-		'anyType'=>'string','anySimpleType'=>'string',
191
-		// derived datatypes
192
-		'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
193
-		'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
194
-		'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
195
-		'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
196
-	'http://www.w3.org/2000/10/XMLSchema' => array(
197
-		'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
198
-		'float'=>'double','dateTime'=>'string',
199
-		'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
200
-	'http://www.w3.org/1999/XMLSchema' => array(
201
-		'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
202
-		'float'=>'double','dateTime'=>'string',
203
-		'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
204
-	'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
205
-	'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
152
+    //var $soap_defencoding = 'UTF-8';
153
+
154
+    /**
155
+     * namespaces in an array of prefix => uri
156
+     *
157
+     * this is "seeded" by a set of constants, but it may be altered by code
158
+     *
159
+     * @var      array
160
+     * @access   public
161
+     */
162
+    var $namespaces = array(
163
+        'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
164
+        'xsd' => 'http://www.w3.org/2001/XMLSchema',
165
+        'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
166
+        'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/'
167
+        );
168
+
169
+    /**
170
+     * namespaces used in the current context, e.g. during serialization
171
+     *
172
+     * @var      array
173
+     * @access   private
174
+     */
175
+    var $usedNamespaces = array();
176
+
177
+    /**
178
+     * XML Schema types in an array of uri => (array of xml type => php type)
179
+     * is this legacy yet?
180
+     * no, this is used by the nusoap_xmlschema class to verify type => namespace mappings.
181
+     * @var      array
182
+     * @access   public
183
+     */
184
+    var $typemap = array(
185
+    'http://www.w3.org/2001/XMLSchema' => array(
186
+        'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
187
+        'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
188
+        'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
189
+        // abstract "any" types
190
+        'anyType'=>'string','anySimpleType'=>'string',
191
+        // derived datatypes
192
+        'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
193
+        'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
194
+        'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
195
+        'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
196
+    'http://www.w3.org/2000/10/XMLSchema' => array(
197
+        'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
198
+        'float'=>'double','dateTime'=>'string',
199
+        'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
200
+    'http://www.w3.org/1999/XMLSchema' => array(
201
+        'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
202
+        'float'=>'double','dateTime'=>'string',
203
+        'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
204
+    'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
205
+    'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
206 206
     'http://xml.apache.org/xml-soap' => array('Map')
207
-	);
208
-
209
-	/**
210
-	* XML entities to convert
211
-	*
212
-	* @var      array
213
-	* @access   public
214
-	* @deprecated
215
-	* @see	expandEntities
216
-	*/
217
-	var $xmlEntities = array('quot' => '"','amp' => '&',
218
-		'lt' => '<','gt' => '>','apos' => "'");
219
-
220
-	/**
221
-	* constructor
222
-	*
223
-	* @access	public
224
-	*/
225
-	function nusoap_base() {
226
-		$this->debugLevel = $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
227
-	}
228
-
229
-	/**
230
-	* gets the global debug level, which applies to future instances
231
-	*
232
-	* @return	integer	Debug level 0-9, where 0 turns off
233
-	* @access	public
234
-	*/
235
-	function getGlobalDebugLevel() {
236
-		return $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
237
-	}
238
-
239
-	/**
240
-	* sets the global debug level, which applies to future instances
241
-	*
242
-	* @param	int	$level	Debug level 0-9, where 0 turns off
243
-	* @access	public
244
-	*/
245
-	function setGlobalDebugLevel($level) {
246
-		$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = $level;
247
-	}
248
-
249
-	/**
250
-	* gets the debug level for this instance
251
-	*
252
-	* @return	int	Debug level 0-9, where 0 turns off
253
-	* @access	public
254
-	*/
255
-	function getDebugLevel() {
256
-		return $this->debugLevel;
257
-	}
258
-
259
-	/**
260
-	* sets the debug level for this instance
261
-	*
262
-	* @param	int	$level	Debug level 0-9, where 0 turns off
263
-	* @access	public
264
-	*/
265
-	function setDebugLevel($level) {
266
-		$this->debugLevel = $level;
267
-	}
268
-
269
-	/**
270
-	* adds debug data to the instance debug string with formatting
271
-	*
272
-	* @param    string $string debug data
273
-	* @access   private
274
-	*/
275
-	function debug($string){
276
-		if ($this->debugLevel > 0) {
277
-			$this->appendDebug($this->getmicrotime().' '.get_class($this).": $string\n");
278
-		}
279
-	}
280
-
281
-	/**
282
-	* adds debug data to the instance debug string without formatting
283
-	*
284
-	* @param    string $string debug data
285
-	* @access   public
286
-	*/
287
-	function appendDebug($string){
288
-		if ($this->debugLevel > 0) {
289
-			// it would be nice to use a memory stream here to use
290
-			// memory more efficiently
291
-			$this->debug_str .= $string;
292
-		}
293
-	}
294
-
295
-	/**
296
-	* clears the current debug data for this instance
297
-	*
298
-	* @access   public
299
-	*/
300
-	function clearDebug() {
301
-		// it would be nice to use a memory stream here to use
302
-		// memory more efficiently
303
-		$this->debug_str = '';
304
-	}
305
-
306
-	/**
307
-	* gets the current debug data for this instance
308
-	*
309
-	* @return   debug data
310
-	* @access   public
311
-	*/
312
-	function &getDebug() {
313
-		// it would be nice to use a memory stream here to use
314
-		// memory more efficiently
315
-		return $this->debug_str;
316
-	}
317
-
318
-	/**
319
-	* gets the current debug data for this instance as an XML comment
320
-	* this may change the contents of the debug data
321
-	*
322
-	* @return   debug data as an XML comment
323
-	* @access   public
324
-	*/
325
-	function &getDebugAsXMLComment() {
326
-		// it would be nice to use a memory stream here to use
327
-		// memory more efficiently
328
-		while (strpos($this->debug_str, '--')) {
329
-			$this->debug_str = str_replace('--', '- -', $this->debug_str);
330
-		}
331
-		$ret = "<!--\n" . $this->debug_str . "\n-->";
332
-    	return $ret;
333
-	}
334
-
335
-	/**
336
-	* expands entities, e.g. changes '<' to '&lt;'.
337
-	*
338
-	* @param	string	$val	The string in which to expand entities.
339
-	* @access	private
340
-	*/
341
-	function expandEntities($val) {
342
-		if ($this->charencoding) {
343
-	    	$val = str_replace('&', '&amp;', $val);
344
-	    	$val = str_replace("'", '&apos;', $val);
345
-	    	$val = str_replace('"', '&quot;', $val);
346
-	    	$val = str_replace('<', '&lt;', $val);
347
-	    	$val = str_replace('>', '&gt;', $val);
348
-	    }
349
-	    return $val;
350
-	}
351
-
352
-	/**
353
-	* returns error string if present
354
-	*
355
-	* @return   mixed error string or false
356
-	* @access   public
357
-	*/
358
-	function getError(){
359
-		if($this->error_str != ''){
360
-			return $this->error_str;
361
-		}
362
-		return false;
363
-	}
364
-
365
-	/**
366
-	* sets error string
367
-	*
368
-	* @return   boolean $string error string
369
-	* @access   private
370
-	*/
371
-	function setError($str){
372
-		$this->error_str = $str;
373
-	}
374
-
375
-	/**
376
-	* detect if array is a simple array or a struct (associative array)
377
-	*
378
-	* @param	mixed	$val	The PHP array
379
-	* @return	string	(arraySimple|arrayStruct)
380
-	* @access	private
381
-	*/
382
-	function isArraySimpleOrStruct($val) {
207
+    );
208
+
209
+    /**
210
+     * XML entities to convert
211
+     *
212
+     * @var      array
213
+     * @access   public
214
+     * @deprecated
215
+     * @see	expandEntities
216
+     */
217
+    var $xmlEntities = array('quot' => '"','amp' => '&',
218
+        'lt' => '<','gt' => '>','apos' => "'");
219
+
220
+    /**
221
+     * constructor
222
+     *
223
+     * @access	public
224
+     */
225
+    function nusoap_base() {
226
+        $this->debugLevel = $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
227
+    }
228
+
229
+    /**
230
+     * gets the global debug level, which applies to future instances
231
+     *
232
+     * @return	integer	Debug level 0-9, where 0 turns off
233
+     * @access	public
234
+     */
235
+    function getGlobalDebugLevel() {
236
+        return $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
237
+    }
238
+
239
+    /**
240
+     * sets the global debug level, which applies to future instances
241
+     *
242
+     * @param	int	$level	Debug level 0-9, where 0 turns off
243
+     * @access	public
244
+     */
245
+    function setGlobalDebugLevel($level) {
246
+        $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = $level;
247
+    }
248
+
249
+    /**
250
+     * gets the debug level for this instance
251
+     *
252
+     * @return	int	Debug level 0-9, where 0 turns off
253
+     * @access	public
254
+     */
255
+    function getDebugLevel() {
256
+        return $this->debugLevel;
257
+    }
258
+
259
+    /**
260
+     * sets the debug level for this instance
261
+     *
262
+     * @param	int	$level	Debug level 0-9, where 0 turns off
263
+     * @access	public
264
+     */
265
+    function setDebugLevel($level) {
266
+        $this->debugLevel = $level;
267
+    }
268
+
269
+    /**
270
+     * adds debug data to the instance debug string with formatting
271
+     *
272
+     * @param    string $string debug data
273
+     * @access   private
274
+     */
275
+    function debug($string){
276
+        if ($this->debugLevel > 0) {
277
+            $this->appendDebug($this->getmicrotime().' '.get_class($this).": $string\n");
278
+        }
279
+    }
280
+
281
+    /**
282
+     * adds debug data to the instance debug string without formatting
283
+     *
284
+     * @param    string $string debug data
285
+     * @access   public
286
+     */
287
+    function appendDebug($string){
288
+        if ($this->debugLevel > 0) {
289
+            // it would be nice to use a memory stream here to use
290
+            // memory more efficiently
291
+            $this->debug_str .= $string;
292
+        }
293
+    }
294
+
295
+    /**
296
+     * clears the current debug data for this instance
297
+     *
298
+     * @access   public
299
+     */
300
+    function clearDebug() {
301
+        // it would be nice to use a memory stream here to use
302
+        // memory more efficiently
303
+        $this->debug_str = '';
304
+    }
305
+
306
+    /**
307
+     * gets the current debug data for this instance
308
+     *
309
+     * @return   debug data
310
+     * @access   public
311
+     */
312
+    function &getDebug() {
313
+        // it would be nice to use a memory stream here to use
314
+        // memory more efficiently
315
+        return $this->debug_str;
316
+    }
317
+
318
+    /**
319
+     * gets the current debug data for this instance as an XML comment
320
+     * this may change the contents of the debug data
321
+     *
322
+     * @return   debug data as an XML comment
323
+     * @access   public
324
+     */
325
+    function &getDebugAsXMLComment() {
326
+        // it would be nice to use a memory stream here to use
327
+        // memory more efficiently
328
+        while (strpos($this->debug_str, '--')) {
329
+            $this->debug_str = str_replace('--', '- -', $this->debug_str);
330
+        }
331
+        $ret = "<!--\n" . $this->debug_str . "\n-->";
332
+        return $ret;
333
+    }
334
+
335
+    /**
336
+     * expands entities, e.g. changes '<' to '&lt;'.
337
+     *
338
+     * @param	string	$val	The string in which to expand entities.
339
+     * @access	private
340
+     */
341
+    function expandEntities($val) {
342
+        if ($this->charencoding) {
343
+            $val = str_replace('&', '&amp;', $val);
344
+            $val = str_replace("'", '&apos;', $val);
345
+            $val = str_replace('"', '&quot;', $val);
346
+            $val = str_replace('<', '&lt;', $val);
347
+            $val = str_replace('>', '&gt;', $val);
348
+        }
349
+        return $val;
350
+    }
351
+
352
+    /**
353
+     * returns error string if present
354
+     *
355
+     * @return   mixed error string or false
356
+     * @access   public
357
+     */
358
+    function getError(){
359
+        if($this->error_str != ''){
360
+            return $this->error_str;
361
+        }
362
+        return false;
363
+    }
364
+
365
+    /**
366
+     * sets error string
367
+     *
368
+     * @return   boolean $string error string
369
+     * @access   private
370
+     */
371
+    function setError($str){
372
+        $this->error_str = $str;
373
+    }
374
+
375
+    /**
376
+     * detect if array is a simple array or a struct (associative array)
377
+     *
378
+     * @param	mixed	$val	The PHP array
379
+     * @return	string	(arraySimple|arrayStruct)
380
+     * @access	private
381
+     */
382
+    function isArraySimpleOrStruct($val) {
383 383
         $keyList = array_keys($val);
384
-		foreach ($keyList as $keyListValue) {
385
-			if (!is_int($keyListValue)) {
386
-				return 'arrayStruct';
387
-			}
388
-		}
389
-		return 'arraySimple';
390
-	}
391
-
392
-	/**
393
-	* serializes PHP values in accordance w/ section 5. Type information is
394
-	* not serialized if $use == 'literal'.
395
-	*
396
-	* @param	mixed	$val	The value to serialize
397
-	* @param	string	$name	The name (local part) of the XML element
398
-	* @param	string	$type	The XML schema type (local part) for the element
399
-	* @param	string	$name_ns	The namespace for the name of the XML element
400
-	* @param	string	$type_ns	The namespace for the type of the element
401
-	* @param	array	$attributes	The attributes to serialize as name=>value pairs
402
-	* @param	string	$use	The WSDL "use" (encoded|literal)
403
-	* @param	boolean	$soapval	Whether this is called from soapval.
404
-	* @return	string	The serialized element, possibly with child elements
405
-    * @access	public
406
-	*/
407
-	function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded',$soapval=false) {
408
-		$this->debug("in serialize_val: name=$name, type=$type, name_ns=$name_ns, type_ns=$type_ns, use=$use, soapval=$soapval");
409
-		$this->appendDebug('value=' . $this->varDump($val));
410
-		$this->appendDebug('attributes=' . $this->varDump($attributes));
411
-
412
-    	if (is_object($val) && get_class($val) == 'soapval' && (! $soapval)) {
413
-    		$this->debug("serialize_val: serialize soapval");
414
-        	$xml = $val->serialize($use);
415
-			$this->appendDebug($val->getDebug());
416
-			$val->clearDebug();
417
-			$this->debug("serialize_val of soapval returning $xml");
418
-			return $xml;
384
+        foreach ($keyList as $keyListValue) {
385
+            if (!is_int($keyListValue)) {
386
+                return 'arrayStruct';
387
+            }
419 388
         }
420
-		// force valid name if necessary
421
-		if (is_numeric($name)) {
422
-			$name = '__numeric_' . $name;
423
-		} elseif (! $name) {
424
-			$name = 'noname';
425
-		}
426
-		// if name has ns, add ns prefix to name
427
-		$xmlns = '';
389
+        return 'arraySimple';
390
+    }
391
+
392
+    /**
393
+     * serializes PHP values in accordance w/ section 5. Type information is
394
+     * not serialized if $use == 'literal'.
395
+     *
396
+     * @param	mixed	$val	The value to serialize
397
+     * @param	string	$name	The name (local part) of the XML element
398
+     * @param	string	$type	The XML schema type (local part) for the element
399
+     * @param	string	$name_ns	The namespace for the name of the XML element
400
+     * @param	string	$type_ns	The namespace for the type of the element
401
+     * @param	array	$attributes	The attributes to serialize as name=>value pairs
402
+     * @param	string	$use	The WSDL "use" (encoded|literal)
403
+     * @param	boolean	$soapval	Whether this is called from soapval.
404
+     * @return	string	The serialized element, possibly with child elements
405
+     * @access	public
406
+     */
407
+    function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded',$soapval=false) {
408
+        $this->debug("in serialize_val: name=$name, type=$type, name_ns=$name_ns, type_ns=$type_ns, use=$use, soapval=$soapval");
409
+        $this->appendDebug('value=' . $this->varDump($val));
410
+        $this->appendDebug('attributes=' . $this->varDump($attributes));
411
+
412
+        if (is_object($val) && get_class($val) == 'soapval' && (! $soapval)) {
413
+            $this->debug("serialize_val: serialize soapval");
414
+            $xml = $val->serialize($use);
415
+            $this->appendDebug($val->getDebug());
416
+            $val->clearDebug();
417
+            $this->debug("serialize_val of soapval returning $xml");
418
+            return $xml;
419
+        }
420
+        // force valid name if necessary
421
+        if (is_numeric($name)) {
422
+            $name = '__numeric_' . $name;
423
+        } elseif (! $name) {
424
+            $name = 'noname';
425
+        }
426
+        // if name has ns, add ns prefix to name
427
+        $xmlns = '';
428 428
         if($name_ns){
429
-			$prefix = 'nu'.rand(1000,9999);
430
-			$name = $prefix.':'.$name;
431
-			$xmlns .= " xmlns:$prefix=\"$name_ns\"";
432
-		}
433
-		// if type is prefixed, create type prefix
434
-		if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
435
-			// need to fix this. shouldn't default to xsd if no ns specified
436
-		    // w/o checking against typemap
437
-			$type_prefix = 'xsd';
438
-		} elseif($type_ns){
439
-			$type_prefix = 'ns'.rand(1000,9999);
440
-			$xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
441
-		}
442
-		// serialize attributes if present
443
-		$atts = '';
444
-		if($attributes){
445
-			foreach($attributes as $k => $v){
446
-				$atts .= " $k=\"".$this->expandEntities($v).'"';
447
-			}
448
-		}
449
-		// serialize null value
450
-		if (is_null($val)) {
451
-    		$this->debug("serialize_val: serialize null");
452
-			if ($use == 'literal') {
453
-				// TODO: depends on minOccurs
454
-				$xml = "<$name$xmlns$atts/>";
455
-				$this->debug("serialize_val returning $xml");
456
-	        	return $xml;
457
-        	} else {
458
-				if (isset($type) && isset($type_prefix)) {
459
-					$type_str = " xsi:type=\"$type_prefix:$type\"";
460
-				} else {
461
-					$type_str = '';
462
-				}
463
-				$xml = "<$name$xmlns$type_str$atts xsi:nil=\"true\"/>";
464
-				$this->debug("serialize_val returning $xml");
465
-	        	return $xml;
466
-        	}
467
-		}
429
+            $prefix = 'nu'.rand(1000,9999);
430
+            $name = $prefix.':'.$name;
431
+            $xmlns .= " xmlns:$prefix=\"$name_ns\"";
432
+        }
433
+        // if type is prefixed, create type prefix
434
+        if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
435
+            // need to fix this. shouldn't default to xsd if no ns specified
436
+            // w/o checking against typemap
437
+            $type_prefix = 'xsd';
438
+        } elseif($type_ns){
439
+            $type_prefix = 'ns'.rand(1000,9999);
440
+            $xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
441
+        }
442
+        // serialize attributes if present
443
+        $atts = '';
444
+        if($attributes){
445
+            foreach($attributes as $k => $v){
446
+                $atts .= " $k=\"".$this->expandEntities($v).'"';
447
+            }
448
+        }
449
+        // serialize null value
450
+        if (is_null($val)) {
451
+            $this->debug("serialize_val: serialize null");
452
+            if ($use == 'literal') {
453
+                // TODO: depends on minOccurs
454
+                $xml = "<$name$xmlns$atts/>";
455
+                $this->debug("serialize_val returning $xml");
456
+                return $xml;
457
+            } else {
458
+                if (isset($type) && isset($type_prefix)) {
459
+                    $type_str = " xsi:type=\"$type_prefix:$type\"";
460
+                } else {
461
+                    $type_str = '';
462
+                }
463
+                $xml = "<$name$xmlns$type_str$atts xsi:nil=\"true\"/>";
464
+                $this->debug("serialize_val returning $xml");
465
+                return $xml;
466
+            }
467
+        }
468 468
         // serialize if an xsd built-in primitive type
469 469
         if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){
470
-    		$this->debug("serialize_val: serialize xsd built-in primitive type");
471
-        	if (is_bool($val)) {
472
-        		if ($type == 'boolean') {
473
-	        		$val = $val ? 'true' : 'false';
474
-	        	} elseif (! $val) {
475
-	        		$val = 0;
476
-	        	}
477
-			} else if (is_string($val)) {
478
-				$val = $this->expandEntities($val);
479
-			}
480
-			if ($use == 'literal') {
481
-				$xml = "<$name$xmlns$atts>$val</$name>";
482
-				$this->debug("serialize_val returning $xml");
483
-	        	return $xml;
484
-        	} else {
485
-				$xml = "<$name$xmlns xsi:type=\"xsd:$type\"$atts>$val</$name>";
486
-				$this->debug("serialize_val returning $xml");
487
-	        	return $xml;
488
-        	}
470
+            $this->debug("serialize_val: serialize xsd built-in primitive type");
471
+            if (is_bool($val)) {
472
+                if ($type == 'boolean') {
473
+                    $val = $val ? 'true' : 'false';
474
+                } elseif (! $val) {
475
+                    $val = 0;
476
+                }
477
+            } else if (is_string($val)) {
478
+                $val = $this->expandEntities($val);
479
+            }
480
+            if ($use == 'literal') {
481
+                $xml = "<$name$xmlns$atts>$val</$name>";
482
+                $this->debug("serialize_val returning $xml");
483
+                return $xml;
484
+            } else {
485
+                $xml = "<$name$xmlns xsi:type=\"xsd:$type\"$atts>$val</$name>";
486
+                $this->debug("serialize_val returning $xml");
487
+                return $xml;
488
+            }
489 489
         }
490
-		// detect type and serialize
491
-		$xml = '';
492
-		switch(true) {
493
-			case (is_bool($val) || $type == 'boolean'):
494
-		   		$this->debug("serialize_val: serialize boolean");
495
-        		if ($type == 'boolean') {
496
-	        		$val = $val ? 'true' : 'false';
497
-	        	} elseif (! $val) {
498
-	        		$val = 0;
499
-	        	}
500
-				if ($use == 'literal') {
501
-					$xml .= "<$name$xmlns$atts>$val</$name>";
502
-				} else {
503
-					$xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>";
504
-				}
505
-				break;
506
-			case (is_int($val) || is_long($val) || $type == 'int'):
507
-		   		$this->debug("serialize_val: serialize int");
508
-				if ($use == 'literal') {
509
-					$xml .= "<$name$xmlns$atts>$val</$name>";
510
-				} else {
511
-					$xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
512
-				}
513
-				break;
514
-			case (is_float($val)|| is_double($val) || $type == 'float'):
515
-		   		$this->debug("serialize_val: serialize float");
516
-				if ($use == 'literal') {
517
-					$xml .= "<$name$xmlns$atts>$val</$name>";
518
-				} else {
519
-					$xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>";
520
-				}
521
-				break;
522
-			case (is_string($val) || $type == 'string'):
523
-		   		$this->debug("serialize_val: serialize string");
524
-				$val = $this->expandEntities($val);
525
-				if ($use == 'literal') {
526
-					$xml .= "<$name$xmlns$atts>$val</$name>";
527
-				} else {
528
-					$xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>";
529
-				}
530
-				break;
531
-			case is_object($val):
532
-		   		$this->debug("serialize_val: serialize object");
533
-		    	if (get_class($val) == 'soapval') {
534
-		    		$this->debug("serialize_val: serialize soapval object");
535
-		        	$pXml = $val->serialize($use);
536
-					$this->appendDebug($val->getDebug());
537
-					$val->clearDebug();
538
-		        } else {
539
-					if (! $name) {
540
-						$name = get_class($val);
541
-						$this->debug("In serialize_val, used class name $name as element name");
542
-					} else {
543
-						$this->debug("In serialize_val, do not override name $name for element name for class " . get_class($val));
544
-					}
545
-					foreach(get_object_vars($val) as $k => $v){
546
-						$pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
547
-					}
548
-				}
549
-				if(isset($type) && isset($type_prefix)){
550
-					$type_str = " xsi:type=\"$type_prefix:$type\"";
551
-				} else {
552
-					$type_str = '';
553
-				}
554
-				if ($use == 'literal') {
555
-					$xml .= "<$name$xmlns$atts>$pXml</$name>";
556
-				} else {
557
-					$xml .= "<$name$xmlns$type_str$atts>$pXml</$name>";
558
-				}
559
-				break;
560
-			break;
561
-			case (is_array($val) || $type):
562
-				// detect if struct or array
563
-				$valueType = $this->isArraySimpleOrStruct($val);
490
+        // detect type and serialize
491
+        $xml = '';
492
+        switch(true) {
493
+            case (is_bool($val) || $type == 'boolean'):
494
+                   $this->debug("serialize_val: serialize boolean");
495
+                if ($type == 'boolean') {
496
+                    $val = $val ? 'true' : 'false';
497
+                } elseif (! $val) {
498
+                    $val = 0;
499
+                }
500
+                if ($use == 'literal') {
501
+                    $xml .= "<$name$xmlns$atts>$val</$name>";
502
+                } else {
503
+                    $xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>";
504
+                }
505
+                break;
506
+            case (is_int($val) || is_long($val) || $type == 'int'):
507
+                   $this->debug("serialize_val: serialize int");
508
+                if ($use == 'literal') {
509
+                    $xml .= "<$name$xmlns$atts>$val</$name>";
510
+                } else {
511
+                    $xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
512
+                }
513
+                break;
514
+            case (is_float($val)|| is_double($val) || $type == 'float'):
515
+                   $this->debug("serialize_val: serialize float");
516
+                if ($use == 'literal') {
517
+                    $xml .= "<$name$xmlns$atts>$val</$name>";
518
+                } else {
519
+                    $xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>";
520
+                }
521
+                break;
522
+            case (is_string($val) || $type == 'string'):
523
+                   $this->debug("serialize_val: serialize string");
524
+                $val = $this->expandEntities($val);
525
+                if ($use == 'literal') {
526
+                    $xml .= "<$name$xmlns$atts>$val</$name>";
527
+                } else {
528
+                    $xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>";
529
+                }
530
+                break;
531
+            case is_object($val):
532
+                   $this->debug("serialize_val: serialize object");
533
+                if (get_class($val) == 'soapval') {
534
+                    $this->debug("serialize_val: serialize soapval object");
535
+                    $pXml = $val->serialize($use);
536
+                    $this->appendDebug($val->getDebug());
537
+                    $val->clearDebug();
538
+                } else {
539
+                    if (! $name) {
540
+                        $name = get_class($val);
541
+                        $this->debug("In serialize_val, used class name $name as element name");
542
+                    } else {
543
+                        $this->debug("In serialize_val, do not override name $name for element name for class " . get_class($val));
544
+                    }
545
+                    foreach(get_object_vars($val) as $k => $v){
546
+                        $pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
547
+                    }
548
+                }
549
+                if(isset($type) && isset($type_prefix)){
550
+                    $type_str = " xsi:type=\"$type_prefix:$type\"";
551
+                } else {
552
+                    $type_str = '';
553
+                }
554
+                if ($use == 'literal') {
555
+                    $xml .= "<$name$xmlns$atts>$pXml</$name>";
556
+                } else {
557
+                    $xml .= "<$name$xmlns$type_str$atts>$pXml</$name>";
558
+                }
559
+                break;
560
+            break;
561
+            case (is_array($val) || $type):
562
+                // detect if struct or array
563
+                $valueType = $this->isArraySimpleOrStruct($val);
564 564
                 if($valueType=='arraySimple' || preg_match('/^ArrayOf/',$type)){
565
-			   		$this->debug("serialize_val: serialize array");
566
-					$i = 0;
567
-					if(is_array($val) && count($val)> 0){
568
-						foreach($val as $v){
569
-	                    	if(is_object($v) && get_class($v) ==  'soapval'){
570
-								$tt_ns = $v->type_ns;
571
-								$tt = $v->type;
572
-							} elseif (is_array($v)) {
573
-								$tt = $this->isArraySimpleOrStruct($v);
574
-							} else {
575
-								$tt = gettype($v);
576
-	                        }
577
-							$array_types[$tt] = 1;
578
-							// TODO: for literal, the name should be $name
579
-							$xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
580
-							++$i;
581
-						}
582
-						if(count($array_types) > 1){
583
-							$array_typename = 'xsd:anyType';
584
-						} elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
585
-							if ($tt == 'integer') {
586
-								$tt = 'int';
587
-							}
588
-							$array_typename = 'xsd:'.$tt;
589
-						} elseif(isset($tt) && $tt == 'arraySimple'){
590
-							$array_typename = 'SOAP-ENC:Array';
591
-						} elseif(isset($tt) && $tt == 'arrayStruct'){
592
-							$array_typename = 'unnamed_struct_use_soapval';
593
-						} else {
594
-							// if type is prefixed, create type prefix
595
-							if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){
596
-								 $array_typename = 'xsd:' . $tt;
597
-							} elseif ($tt_ns) {
598
-								$tt_prefix = 'ns' . rand(1000, 9999);
599
-								$array_typename = "$tt_prefix:$tt";
600
-								$xmlns .= " xmlns:$tt_prefix=\"$tt_ns\"";
601
-							} else {
602
-								$array_typename = $tt;
603
-							}
604
-						}
605
-						$array_type = $i;
606
-						if ($use == 'literal') {
607
-							$type_str = '';
608
-						} else if (isset($type) && isset($type_prefix)) {
609
-							$type_str = " xsi:type=\"$type_prefix:$type\"";
610
-						} else {
611
-							$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\"";
612
-						}
613
-					// empty array
614
-					} else {
615
-						if ($use == 'literal') {
616
-							$type_str = '';
617
-						} else if (isset($type) && isset($type_prefix)) {
618
-							$type_str = " xsi:type=\"$type_prefix:$type\"";
619
-						} else {
620
-							$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:anyType[0]\"";
621
-						}
622
-					}
623
-					// TODO: for array in literal, there is no wrapper here
624
-					$xml = "<$name$xmlns$type_str$atts>".$xml."</$name>";
625
-				} else {
626
-					// got a struct
627
-			   		$this->debug("serialize_val: serialize struct");
628
-					if(isset($type) && isset($type_prefix)){
629
-						$type_str = " xsi:type=\"$type_prefix:$type\"";
630
-					} else {
631
-						$type_str = '';
632
-					}
633
-					if ($use == 'literal') {
634
-						$xml .= "<$name$xmlns$atts>";
635
-					} else {
636
-						$xml .= "<$name$xmlns$type_str$atts>";
637
-					}
638
-					foreach($val as $k => $v){
639
-						// Apache Map
640
-						if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') {
641
-							$xml .= '<item>';
642
-							$xml .= $this->serialize_val($k,'key',false,false,false,false,$use);
643
-							$xml .= $this->serialize_val($v,'value',false,false,false,false,$use);
644
-							$xml .= '</item>';
645
-						} else {
646
-							$xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
647
-						}
648
-					}
649
-					$xml .= "</$name>";
650
-				}
651
-				break;
652
-			default:
653
-		   		$this->debug("serialize_val: serialize unknown");
654
-				$xml .= 'not detected, got '.gettype($val).' for '.$val;
655
-				break;
656
-		}
657
-		$this->debug("serialize_val returning $xml");
658
-		return $xml;
659
-	}
660
-
661
-    /**
662
-    * serializes a message
663
-    *
664
-    * @param string $body the XML of the SOAP body
665
-    * @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
666
-    * @param array $namespaces optional the namespaces used in generating the body and headers
667
-    * @param string $style optional (rpc|document)
668
-    * @param string $use optional (encoded|literal)
669
-    * @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
670
-    * @return string the message
671
-    * @access public
672
-    */
565
+                        $this->debug("serialize_val: serialize array");
566
+                    $i = 0;
567
+                    if(is_array($val) && count($val)> 0){
568
+                        foreach($val as $v){
569
+                            if(is_object($v) && get_class($v) ==  'soapval'){
570
+                                $tt_ns = $v->type_ns;
571
+                                $tt = $v->type;
572
+                            } elseif (is_array($v)) {
573
+                                $tt = $this->isArraySimpleOrStruct($v);
574
+                            } else {
575
+                                $tt = gettype($v);
576
+                            }
577
+                            $array_types[$tt] = 1;
578
+                            // TODO: for literal, the name should be $name
579
+                            $xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
580
+                            ++$i;
581
+                        }
582
+                        if(count($array_types) > 1){
583
+                            $array_typename = 'xsd:anyType';
584
+                        } elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
585
+                            if ($tt == 'integer') {
586
+                                $tt = 'int';
587
+                            }
588
+                            $array_typename = 'xsd:'.$tt;
589
+                        } elseif(isset($tt) && $tt == 'arraySimple'){
590
+                            $array_typename = 'SOAP-ENC:Array';
591
+                        } elseif(isset($tt) && $tt == 'arrayStruct'){
592
+                            $array_typename = 'unnamed_struct_use_soapval';
593
+                        } else {
594
+                            // if type is prefixed, create type prefix
595
+                            if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){
596
+                                    $array_typename = 'xsd:' . $tt;
597
+                            } elseif ($tt_ns) {
598
+                                $tt_prefix = 'ns' . rand(1000, 9999);
599
+                                $array_typename = "$tt_prefix:$tt";
600
+                                $xmlns .= " xmlns:$tt_prefix=\"$tt_ns\"";
601
+                            } else {
602
+                                $array_typename = $tt;
603
+                            }
604
+                        }
605
+                        $array_type = $i;
606
+                        if ($use == 'literal') {
607
+                            $type_str = '';
608
+                        } else if (isset($type) && isset($type_prefix)) {
609
+                            $type_str = " xsi:type=\"$type_prefix:$type\"";
610
+                        } else {
611
+                            $type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\"";
612
+                        }
613
+                    // empty array
614
+                    } else {
615
+                        if ($use == 'literal') {
616
+                            $type_str = '';
617
+                        } else if (isset($type) && isset($type_prefix)) {
618
+                            $type_str = " xsi:type=\"$type_prefix:$type\"";
619
+                        } else {
620
+                            $type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:anyType[0]\"";
621
+                        }
622
+                    }
623
+                    // TODO: for array in literal, there is no wrapper here
624
+                    $xml = "<$name$xmlns$type_str$atts>".$xml."</$name>";
625
+                } else {
626
+                    // got a struct
627
+                        $this->debug("serialize_val: serialize struct");
628
+                    if(isset($type) && isset($type_prefix)){
629
+                        $type_str = " xsi:type=\"$type_prefix:$type\"";
630
+                    } else {
631
+                        $type_str = '';
632
+                    }
633
+                    if ($use == 'literal') {
634
+                        $xml .= "<$name$xmlns$atts>";
635
+                    } else {
636
+                        $xml .= "<$name$xmlns$type_str$atts>";
637
+                    }
638
+                    foreach($val as $k => $v){
639
+                        // Apache Map
640
+                        if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') {
641
+                            $xml .= '<item>';
642
+                            $xml .= $this->serialize_val($k,'key',false,false,false,false,$use);
643
+                            $xml .= $this->serialize_val($v,'value',false,false,false,false,$use);
644
+                            $xml .= '</item>';
645
+                        } else {
646
+                            $xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
647
+                        }
648
+                    }
649
+                    $xml .= "</$name>";
650
+                }
651
+                break;
652
+            default:
653
+                   $this->debug("serialize_val: serialize unknown");
654
+                $xml .= 'not detected, got '.gettype($val).' for '.$val;
655
+                break;
656
+        }
657
+        $this->debug("serialize_val returning $xml");
658
+        return $xml;
659
+    }
660
+
661
+    /**
662
+     * serializes a message
663
+     *
664
+     * @param string $body the XML of the SOAP body
665
+     * @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
666
+     * @param array $namespaces optional the namespaces used in generating the body and headers
667
+     * @param string $style optional (rpc|document)
668
+     * @param string $use optional (encoded|literal)
669
+     * @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
670
+     * @return string the message
671
+     * @access public
672
+     */
673 673
     function serializeEnvelope($body,$headers=false,$namespaces=array(),$style='rpc',$use='encoded',$encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'){
674 674
     // TODO: add an option to automatically run utf8_encode on $body and $headers
675 675
     // if $this->soap_defencoding is UTF-8.  Not doing this automatically allows
676 676
     // one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1
677 677
 
678
-	$this->debug("In serializeEnvelope length=" . strlen($body) . " body (max 1000 characters)=" . substr($body, 0, 1000) . " style=$style use=$use encodingStyle=$encodingStyle");
679
-	$this->debug("headers:");
680
-	$this->appendDebug($this->varDump($headers));
681
-	$this->debug("namespaces:");
682
-	$this->appendDebug($this->varDump($namespaces));
678
+    $this->debug("In serializeEnvelope length=" . strlen($body) . " body (max 1000 characters)=" . substr($body, 0, 1000) . " style=$style use=$use encodingStyle=$encodingStyle");
679
+    $this->debug("headers:");
680
+    $this->appendDebug($this->varDump($headers));
681
+    $this->debug("namespaces:");
682
+    $this->appendDebug($this->varDump($namespaces));
683 683
 
684
-	// serialize namespaces
684
+    // serialize namespaces
685 685
     $ns_string = '';
686
-	foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
687
-		$ns_string .= " xmlns:$k=\"$v\"";
688
-	}
689
-	if($encodingStyle) {
690
-		$ns_string = " SOAP-ENV:encodingStyle=\"$encodingStyle\"$ns_string";
691
-	}
692
-
693
-	// serialize headers
694
-	if($headers){
695
-		if (is_array($headers)) {
696
-			$xml = '';
697
-			foreach ($headers as $k => $v) {
698
-				if (is_object($v) && get_class($v) == 'soapval') {
699
-					$xml .= $this->serialize_val($v, false, false, false, false, false, $use);
700
-				} else {
701
-					$xml .= $this->serialize_val($v, $k, false, false, false, false, $use);
702
-				}
703
-			}
704
-			$headers = $xml;
705
-			$this->debug("In serializeEnvelope, serialized array of headers to $headers");
706
-		}
707
-		$headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>";
708
-	}
709
-	// serialize envelope
710
-	return
711
-	'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
712
-	'<SOAP-ENV:Envelope'.$ns_string.">".
713
-	$headers.
714
-	"<SOAP-ENV:Body>".
715
-		$body.
716
-	"</SOAP-ENV:Body>".
717
-	"</SOAP-ENV:Envelope>";
718
-    }
719
-
720
-	/**
721
-	 * formats a string to be inserted into an HTML stream
722
-	 *
723
-	 * @param string $str The string to format
724
-	 * @return string The formatted string
725
-	 * @access public
726
-	 * @deprecated
727
-	 */
686
+    foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
687
+        $ns_string .= " xmlns:$k=\"$v\"";
688
+    }
689
+    if($encodingStyle) {
690
+        $ns_string = " SOAP-ENV:encodingStyle=\"$encodingStyle\"$ns_string";
691
+    }
692
+
693
+    // serialize headers
694
+    if($headers){
695
+        if (is_array($headers)) {
696
+            $xml = '';
697
+            foreach ($headers as $k => $v) {
698
+                if (is_object($v) && get_class($v) == 'soapval') {
699
+                    $xml .= $this->serialize_val($v, false, false, false, false, false, $use);
700
+                } else {
701
+                    $xml .= $this->serialize_val($v, $k, false, false, false, false, $use);
702
+                }
703
+            }
704
+            $headers = $xml;
705
+            $this->debug("In serializeEnvelope, serialized array of headers to $headers");
706
+        }
707
+        $headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>";
708
+    }
709
+    // serialize envelope
710
+    return
711
+    '<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
712
+    '<SOAP-ENV:Envelope'.$ns_string.">".
713
+    $headers.
714
+    "<SOAP-ENV:Body>".
715
+        $body.
716
+    "</SOAP-ENV:Body>".
717
+    "</SOAP-ENV:Envelope>";
718
+    }
719
+
720
+    /**
721
+     * formats a string to be inserted into an HTML stream
722
+     *
723
+     * @param string $str The string to format
724
+     * @return string The formatted string
725
+     * @access public
726
+     * @deprecated
727
+     */
728 728
     function formatDump($str){
729
-		$str = htmlspecialchars($str);
730
-		return nl2br($str);
731
-    }
732
-
733
-	/**
734
-	* contracts (changes namespace to prefix) a qualified name
735
-	*
736
-	* @param    string $qname qname
737
-	* @return	string contracted qname
738
-	* @access   private
739
-	*/
740
-	function contractQname($qname){
741
-		// get element namespace
742
-		//$this->xdebug("Contract $qname");
743
-		if (strrpos($qname, ':')) {
744
-			// get unqualified name
745
-			$name = substr($qname, strrpos($qname, ':') + 1);
746
-			// get ns
747
-			$ns = substr($qname, 0, strrpos($qname, ':'));
748
-			$p = $this->getPrefixFromNamespace($ns);
749
-			if ($p) {
750
-				return $p . ':' . $name;
751
-			}
752
-			return $qname;
753
-		} else {
754
-			return $qname;
755
-		}
756
-	}
757
-
758
-	/**
759
-	* expands (changes prefix to namespace) a qualified name
760
-	*
761
-	* @param    string $qname qname
762
-	* @return	string expanded qname
763
-	* @access   private
764
-	*/
765
-	function expandQname($qname){
766
-		// get element prefix
767
-		if(strpos($qname,':') && !preg_match('/^http:\/\//',$qname)){
768
-			// get unqualified name
769
-			$name = substr(strstr($qname,':'),1);
770
-			// get ns prefix
771
-			$prefix = substr($qname,0,strpos($qname,':'));
772
-			if(isset($this->namespaces[$prefix])){
773
-				return $this->namespaces[$prefix].':'.$name;
774
-			} else {
775
-				return $qname;
776
-			}
777
-		} else {
778
-			return $qname;
779
-		}
780
-	}
781
-
782
-    /**
783
-    * returns the local part of a prefixed string
784
-    * returns the original string, if not prefixed
785
-    *
786
-    * @param string $str The prefixed string
787
-    * @return string The local part
788
-    * @access public
789
-    */
790
-	function getLocalPart($str){
791
-		if($sstr = strrchr($str,':')){
792
-			// get unqualified name
793
-			return substr( $sstr, 1 );
794
-		} else {
795
-			return $str;
796
-		}
797
-	}
798
-
799
-	/**
800
-    * returns the prefix part of a prefixed string
801
-    * returns false, if not prefixed
802
-    *
803
-    * @param string $str The prefixed string
804
-    * @return mixed The prefix or false if there is no prefix
805
-    * @access public
806
-    */
807
-	function getPrefix($str){
808
-		if($pos = strrpos($str,':')){
809
-			// get prefix
810
-			return substr($str,0,$pos);
811
-		}
812
-		return false;
813
-	}
814
-
815
-	/**
816
-    * pass it a prefix, it returns a namespace
817
-    *
818
-    * @param string $prefix The prefix
819
-    * @return mixed The namespace, false if no namespace has the specified prefix
820
-    * @access public
821
-    */
822
-	function getNamespaceFromPrefix($prefix){
823
-		if (isset($this->namespaces[$prefix])) {
824
-			return $this->namespaces[$prefix];
825
-		}
826
-		//$this->setError("No namespace registered for prefix '$prefix'");
827
-		return false;
828
-	}
829
-
830
-	/**
831
-    * returns the prefix for a given namespace (or prefix)
832
-    * or false if no prefixes registered for the given namespace
833
-    *
834
-    * @param string $ns The namespace
835
-    * @return mixed The prefix, false if the namespace has no prefixes
836
-    * @access public
837
-    */
838
-	function getPrefixFromNamespace($ns) {
839
-		foreach ($this->namespaces as $p => $n) {
840
-			if ($ns == $n || $ns == $p) {
841
-			    $this->usedNamespaces[$p] = $n;
842
-				return $p;
843
-			}
844
-		}
845
-		return false;
846
-	}
847
-
848
-	/**
849
-    * returns the time in ODBC canonical form with microseconds
850
-    *
851
-    * @return string The time in ODBC canonical form with microseconds
852
-    * @access public
853
-    */
854
-	function getmicrotime() {
855
-		if (function_exists('gettimeofday')) {
856
-			$tod = gettimeofday();
857
-			$sec = $tod['sec'];
858
-			$usec = $tod['usec'];
859
-		} else {
860
-			$sec = time();
861
-			$usec = 0;
862
-		}
863
-		return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
864
-	}
865
-
866
-	/**
867
-	 * Returns a string with the output of var_dump
868
-	 *
869
-	 * @param mixed $data The variable to var_dump
870
-	 * @return string The output of var_dump
871
-	 * @access public
872
-	 */
729
+        $str = htmlspecialchars($str);
730
+        return nl2br($str);
731
+    }
732
+
733
+    /**
734
+     * contracts (changes namespace to prefix) a qualified name
735
+     *
736
+     * @param    string $qname qname
737
+     * @return	string contracted qname
738
+     * @access   private
739
+     */
740
+    function contractQname($qname){
741
+        // get element namespace
742
+        //$this->xdebug("Contract $qname");
743
+        if (strrpos($qname, ':')) {
744
+            // get unqualified name
745
+            $name = substr($qname, strrpos($qname, ':') + 1);
746
+            // get ns
747
+            $ns = substr($qname, 0, strrpos($qname, ':'));
748
+            $p = $this->getPrefixFromNamespace($ns);
749
+            if ($p) {
750
+                return $p . ':' . $name;
751
+            }
752
+            return $qname;
753
+        } else {
754
+            return $qname;
755
+        }
756
+    }
757
+
758
+    /**
759
+     * expands (changes prefix to namespace) a qualified name
760
+     *
761
+     * @param    string $qname qname
762
+     * @return	string expanded qname
763
+     * @access   private
764
+     */
765
+    function expandQname($qname){
766
+        // get element prefix
767
+        if(strpos($qname,':') && !preg_match('/^http:\/\//',$qname)){
768
+            // get unqualified name
769
+            $name = substr(strstr($qname,':'),1);
770
+            // get ns prefix
771
+            $prefix = substr($qname,0,strpos($qname,':'));
772
+            if(isset($this->namespaces[$prefix])){
773
+                return $this->namespaces[$prefix].':'.$name;
774
+            } else {
775
+                return $qname;
776
+            }
777
+        } else {
778
+            return $qname;
779
+        }
780
+    }
781
+
782
+    /**
783
+     * returns the local part of a prefixed string
784
+     * returns the original string, if not prefixed
785
+     *
786
+     * @param string $str The prefixed string
787
+     * @return string The local part
788
+     * @access public
789
+     */
790
+    function getLocalPart($str){
791
+        if($sstr = strrchr($str,':')){
792
+            // get unqualified name
793
+            return substr( $sstr, 1 );
794
+        } else {
795
+            return $str;
796
+        }
797
+    }
798
+
799
+    /**
800
+     * returns the prefix part of a prefixed string
801
+     * returns false, if not prefixed
802
+     *
803
+     * @param string $str The prefixed string
804
+     * @return mixed The prefix or false if there is no prefix
805
+     * @access public
806
+     */
807
+    function getPrefix($str){
808
+        if($pos = strrpos($str,':')){
809
+            // get prefix
810
+            return substr($str,0,$pos);
811
+        }
812
+        return false;
813
+    }
814
+
815
+    /**
816
+     * pass it a prefix, it returns a namespace
817
+     *
818
+     * @param string $prefix The prefix
819
+     * @return mixed The namespace, false if no namespace has the specified prefix
820
+     * @access public
821
+     */
822
+    function getNamespaceFromPrefix($prefix){
823
+        if (isset($this->namespaces[$prefix])) {
824
+            return $this->namespaces[$prefix];
825
+        }
826
+        //$this->setError("No namespace registered for prefix '$prefix'");
827
+        return false;
828
+    }
829
+
830
+    /**
831
+     * returns the prefix for a given namespace (or prefix)
832
+     * or false if no prefixes registered for the given namespace
833
+     *
834
+     * @param string $ns The namespace
835
+     * @return mixed The prefix, false if the namespace has no prefixes
836
+     * @access public
837
+     */
838
+    function getPrefixFromNamespace($ns) {
839
+        foreach ($this->namespaces as $p => $n) {
840
+            if ($ns == $n || $ns == $p) {
841
+                $this->usedNamespaces[$p] = $n;
842
+                return $p;
843
+            }
844
+        }
845
+        return false;
846
+    }
847
+
848
+    /**
849
+     * returns the time in ODBC canonical form with microseconds
850
+     *
851
+     * @return string The time in ODBC canonical form with microseconds
852
+     * @access public
853
+     */
854
+    function getmicrotime() {
855
+        if (function_exists('gettimeofday')) {
856
+            $tod = gettimeofday();
857
+            $sec = $tod['sec'];
858
+            $usec = $tod['usec'];
859
+        } else {
860
+            $sec = time();
861
+            $usec = 0;
862
+        }
863
+        return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
864
+    }
865
+
866
+    /**
867
+     * Returns a string with the output of var_dump
868
+     *
869
+     * @param mixed $data The variable to var_dump
870
+     * @return string The output of var_dump
871
+     * @access public
872
+     */
873 873
     function varDump($data) {
874
-		ob_start();
875
-		var_dump($data);
876
-		$ret_val = ob_get_contents();
877
-		ob_end_clean();
878
-		return $ret_val;
879
-	}
880
-
881
-	/**
882
-	* represents the object as a string
883
-	*
884
-	* @return	string
885
-	* @access   public
886
-	*/
887
-	function __toString() {
888
-		return $this->varDump($this);
889
-	}
874
+        ob_start();
875
+        var_dump($data);
876
+        $ret_val = ob_get_contents();
877
+        ob_end_clean();
878
+        return $ret_val;
879
+    }
880
+
881
+    /**
882
+     * represents the object as a string
883
+     *
884
+     * @return	string
885
+     * @access   public
886
+     */
887
+    function __toString() {
888
+        return $this->varDump($this);
889
+    }
890 890
 }
891 891
 
892 892
 // XML Schema Datatype Helper Functions
@@ -902,35 +902,35 @@  discard block
 block discarded – undo
902 902
 * @access   public
903 903
 */
904 904
 function timestamp_to_iso8601($timestamp,$utc=true){
905
-	$datestr = date('Y-m-d\TH:i:sO',$timestamp);
906
-	$pos = strrpos($datestr, "+");
907
-	if ($pos === FALSE) {
908
-		$pos = strrpos($datestr, "-");
909
-	}
910
-	if ($pos !== FALSE) {
911
-		if (strlen($datestr) == $pos + 5) {
912
-			$datestr = substr($datestr, 0, $pos + 3) . ':' . substr($datestr, -2);
913
-		}
914
-	}
915
-	if($utc){
916
-		$pattern = '/'.
917
-		'([0-9]{4})-'.	// centuries & years CCYY-
918
-		'([0-9]{2})-'.	// months MM-
919
-		'([0-9]{2})'.	// days DD
920
-		'T'.			// separator T
921
-		'([0-9]{2}):'.	// hours hh:
922
-		'([0-9]{2}):'.	// minutes mm:
923
-		'([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
924
-		'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
925
-		'/';
926
-
927
-		if(preg_match($pattern,$datestr,$regs)){
928
-			return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
929
-		}
930
-		return false;
931
-	} else {
932
-		return $datestr;
933
-	}
905
+    $datestr = date('Y-m-d\TH:i:sO',$timestamp);
906
+    $pos = strrpos($datestr, "+");
907
+    if ($pos === FALSE) {
908
+        $pos = strrpos($datestr, "-");
909
+    }
910
+    if ($pos !== FALSE) {
911
+        if (strlen($datestr) == $pos + 5) {
912
+            $datestr = substr($datestr, 0, $pos + 3) . ':' . substr($datestr, -2);
913
+        }
914
+    }
915
+    if($utc){
916
+        $pattern = '/'.
917
+        '([0-9]{4})-'.	// centuries & years CCYY-
918
+        '([0-9]{2})-'.	// months MM-
919
+        '([0-9]{2})'.	// days DD
920
+        'T'.			// separator T
921
+        '([0-9]{2}):'.	// hours hh:
922
+        '([0-9]{2}):'.	// minutes mm:
923
+        '([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
924
+        '(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
925
+        '/';
926
+
927
+        if(preg_match($pattern,$datestr,$regs)){
928
+            return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
929
+        }
930
+        return false;
931
+    } else {
932
+        return $datestr;
933
+    }
934 934
 }
935 935
 
936 936
 /**
@@ -941,35 +941,35 @@  discard block
 block discarded – undo
941 941
 * @access   public
942 942
 */
943 943
 function iso8601_to_timestamp($datestr){
944
-	$pattern = '/'.
945
-	'([0-9]{4})-'.	// centuries & years CCYY-
946
-	'([0-9]{2})-'.	// months MM-
947
-	'([0-9]{2})'.	// days DD
948
-	'T'.			// separator T
949
-	'([0-9]{2}):'.	// hours hh:
950
-	'([0-9]{2}):'.	// minutes mm:
951
-	'([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
952
-	'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
953
-	'/';
954
-	if(preg_match($pattern,$datestr,$regs)){
955
-		// not utc
956
-		if($regs[8] != 'Z'){
957
-			$op = substr($regs[8],0,1);
958
-			$h = substr($regs[8],1,2);
959
-			$m = substr($regs[8],strlen($regs[8])-2,2);
960
-			if($op == '-'){
961
-				$regs[4] = $regs[4] + $h;
962
-				$regs[5] = $regs[5] + $m;
963
-			} elseif($op == '+'){
964
-				$regs[4] = $regs[4] - $h;
965
-				$regs[5] = $regs[5] - $m;
966
-			}
967
-		}
968
-		return gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
944
+    $pattern = '/'.
945
+    '([0-9]{4})-'.	// centuries & years CCYY-
946
+    '([0-9]{2})-'.	// months MM-
947
+    '([0-9]{2})'.	// days DD
948
+    'T'.			// separator T
949
+    '([0-9]{2}):'.	// hours hh:
950
+    '([0-9]{2}):'.	// minutes mm:
951
+    '([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
952
+    '(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
953
+    '/';
954
+    if(preg_match($pattern,$datestr,$regs)){
955
+        // not utc
956
+        if($regs[8] != 'Z'){
957
+            $op = substr($regs[8],0,1);
958
+            $h = substr($regs[8],1,2);
959
+            $m = substr($regs[8],strlen($regs[8])-2,2);
960
+            if($op == '-'){
961
+                $regs[4] = $regs[4] + $h;
962
+                $regs[5] = $regs[5] + $m;
963
+            } elseif($op == '+'){
964
+                $regs[4] = $regs[4] - $h;
965
+                $regs[5] = $regs[5] - $m;
966
+            }
967
+        }
968
+        return gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
969 969
 //		return strtotime("$regs[1]-$regs[2]-$regs[3] $regs[4]:$regs[5]:$regs[6]Z");
970
-	} else {
971
-		return false;
972
-	}
970
+    } else {
971
+        return false;
972
+    }
973 973
 }
974 974
 
975 975
 /**
@@ -981,15 +981,15 @@  discard block
 block discarded – undo
981 981
 */
982 982
 function usleepWindows($usec)
983 983
 {
984
-	$start = gettimeofday();
985
-
986
-	do
987
-	{
988
-		$stop = gettimeofday();
989
-		$timePassed = 1000000 * ($stop['sec'] - $start['sec'])
990
-		+ $stop['usec'] - $start['usec'];
991
-	}
992
-	while ($timePassed < $usec);
984
+    $start = gettimeofday();
985
+
986
+    do
987
+    {
988
+        $stop = gettimeofday();
989
+        $timePassed = 1000000 * ($stop['sec'] - $start['sec'])
990
+        + $stop['usec'] - $start['usec'];
991
+    }
992
+    while ($timePassed < $usec);
993 993
 }
994 994
 
995 995
 
Please login to merge, or discard this patch.
Spacing   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -183,26 +183,26 @@  discard block
 block discarded – undo
183 183
 	*/
184 184
 	var $typemap = array(
185 185
 	'http://www.w3.org/2001/XMLSchema' => array(
186
-		'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
187
-		'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
188
-		'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
186
+		'string'=>'string', 'boolean'=>'boolean', 'float'=>'double', 'double'=>'double', 'decimal'=>'double',
187
+		'duration'=>'', 'dateTime'=>'string', 'time'=>'string', 'date'=>'string', 'gYearMonth'=>'',
188
+		'gYear'=>'', 'gMonthDay'=>'', 'gDay'=>'', 'gMonth'=>'', 'hexBinary'=>'string', 'base64Binary'=>'string',
189 189
 		// abstract "any" types
190
-		'anyType'=>'string','anySimpleType'=>'string',
190
+		'anyType'=>'string', 'anySimpleType'=>'string',
191 191
 		// derived datatypes
192
-		'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
193
-		'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
194
-		'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
195
-		'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
192
+		'normalizedString'=>'string', 'token'=>'string', 'language'=>'', 'NMTOKEN'=>'', 'NMTOKENS'=>'', 'Name'=>'', 'NCName'=>'', 'ID'=>'',
193
+		'IDREF'=>'', 'IDREFS'=>'', 'ENTITY'=>'', 'ENTITIES'=>'', 'integer'=>'integer', 'nonPositiveInteger'=>'integer',
194
+		'negativeInteger'=>'integer', 'long'=>'integer', 'int'=>'integer', 'short'=>'integer', 'byte'=>'integer', 'nonNegativeInteger'=>'integer',
195
+		'unsignedLong'=>'', 'unsignedInt'=>'', 'unsignedShort'=>'', 'unsignedByte'=>'', 'positiveInteger'=>''),
196 196
 	'http://www.w3.org/2000/10/XMLSchema' => array(
197
-		'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
198
-		'float'=>'double','dateTime'=>'string',
199
-		'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
197
+		'i4'=>'', 'int'=>'integer', 'boolean'=>'boolean', 'string'=>'string', 'double'=>'double',
198
+		'float'=>'double', 'dateTime'=>'string',
199
+		'timeInstant'=>'string', 'base64Binary'=>'string', 'base64'=>'string', 'ur-type'=>'array'),
200 200
 	'http://www.w3.org/1999/XMLSchema' => array(
201
-		'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
202
-		'float'=>'double','dateTime'=>'string',
203
-		'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
201
+		'i4'=>'', 'int'=>'integer', 'boolean'=>'boolean', 'string'=>'string', 'double'=>'double',
202
+		'float'=>'double', 'dateTime'=>'string',
203
+		'timeInstant'=>'string', 'base64Binary'=>'string', 'base64'=>'string', 'ur-type'=>'array'),
204 204
 	'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
205
-	'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
205
+	'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string', 'array'=>'array', 'Array'=>'array'),
206 206
     'http://xml.apache.org/xml-soap' => array('Map')
207 207
 	);
208 208
 
@@ -214,8 +214,8 @@  discard block
 block discarded – undo
214 214
 	* @deprecated
215 215
 	* @see	expandEntities
216 216
 	*/
217
-	var $xmlEntities = array('quot' => '"','amp' => '&',
218
-		'lt' => '<','gt' => '>','apos' => "'");
217
+	var $xmlEntities = array('quot' => '"', 'amp' => '&',
218
+		'lt' => '<', 'gt' => '>', 'apos' => "'");
219 219
 
220 220
 	/**
221 221
 	* constructor
@@ -272,7 +272,7 @@  discard block
 block discarded – undo
272 272
 	* @param    string $string debug data
273 273
 	* @access   private
274 274
 	*/
275
-	function debug($string){
275
+	function debug($string) {
276 276
 		if ($this->debugLevel > 0) {
277 277
 			$this->appendDebug($this->getmicrotime().' '.get_class($this).": $string\n");
278 278
 		}
@@ -284,7 +284,7 @@  discard block
 block discarded – undo
284 284
 	* @param    string $string debug data
285 285
 	* @access   public
286 286
 	*/
287
-	function appendDebug($string){
287
+	function appendDebug($string) {
288 288
 		if ($this->debugLevel > 0) {
289 289
 			// it would be nice to use a memory stream here to use
290 290
 			// memory more efficiently
@@ -328,7 +328,7 @@  discard block
 block discarded – undo
328 328
 		while (strpos($this->debug_str, '--')) {
329 329
 			$this->debug_str = str_replace('--', '- -', $this->debug_str);
330 330
 		}
331
-		$ret = "<!--\n" . $this->debug_str . "\n-->";
331
+		$ret = "<!--\n".$this->debug_str."\n-->";
332 332
     	return $ret;
333 333
 	}
334 334
 
@@ -355,8 +355,8 @@  discard block
 block discarded – undo
355 355
 	* @return   mixed error string or false
356 356
 	* @access   public
357 357
 	*/
358
-	function getError(){
359
-		if($this->error_str != ''){
358
+	function getError() {
359
+		if ($this->error_str != '') {
360 360
 			return $this->error_str;
361 361
 		}
362 362
 		return false;
@@ -368,7 +368,7 @@  discard block
 block discarded – undo
368 368
 	* @return   boolean $string error string
369 369
 	* @access   private
370 370
 	*/
371
-	function setError($str){
371
+	function setError($str) {
372 372
 		$this->error_str = $str;
373 373
 	}
374 374
 
@@ -404,12 +404,12 @@  discard block
 block discarded – undo
404 404
 	* @return	string	The serialized element, possibly with child elements
405 405
     * @access	public
406 406
 	*/
407
-	function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded',$soapval=false) {
407
+	function serialize_val($val, $name = false, $type = false, $name_ns = false, $type_ns = false, $attributes = false, $use = 'encoded', $soapval = false) {
408 408
 		$this->debug("in serialize_val: name=$name, type=$type, name_ns=$name_ns, type_ns=$type_ns, use=$use, soapval=$soapval");
409
-		$this->appendDebug('value=' . $this->varDump($val));
410
-		$this->appendDebug('attributes=' . $this->varDump($attributes));
409
+		$this->appendDebug('value='.$this->varDump($val));
410
+		$this->appendDebug('attributes='.$this->varDump($attributes));
411 411
 
412
-    	if (is_object($val) && get_class($val) == 'soapval' && (! $soapval)) {
412
+    	if (is_object($val) && get_class($val) == 'soapval' && (!$soapval)) {
413 413
     		$this->debug("serialize_val: serialize soapval");
414 414
         	$xml = $val->serialize($use);
415 415
 			$this->appendDebug($val->getDebug());
@@ -419,30 +419,30 @@  discard block
 block discarded – undo
419 419
         }
420 420
 		// force valid name if necessary
421 421
 		if (is_numeric($name)) {
422
-			$name = '__numeric_' . $name;
423
-		} elseif (! $name) {
422
+			$name = '__numeric_'.$name;
423
+		} elseif (!$name) {
424 424
 			$name = 'noname';
425 425
 		}
426 426
 		// if name has ns, add ns prefix to name
427 427
 		$xmlns = '';
428
-        if($name_ns){
429
-			$prefix = 'nu'.rand(1000,9999);
428
+        if ($name_ns) {
429
+			$prefix = 'nu'.rand(1000, 9999);
430 430
 			$name = $prefix.':'.$name;
431 431
 			$xmlns .= " xmlns:$prefix=\"$name_ns\"";
432 432
 		}
433 433
 		// if type is prefixed, create type prefix
434
-		if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
434
+		if ($type_ns != '' && $type_ns == $this->namespaces['xsd']) {
435 435
 			// need to fix this. shouldn't default to xsd if no ns specified
436 436
 		    // w/o checking against typemap
437 437
 			$type_prefix = 'xsd';
438
-		} elseif($type_ns){
439
-			$type_prefix = 'ns'.rand(1000,9999);
438
+		} elseif ($type_ns) {
439
+			$type_prefix = 'ns'.rand(1000, 9999);
440 440
 			$xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
441 441
 		}
442 442
 		// serialize attributes if present
443 443
 		$atts = '';
444
-		if($attributes){
445
-			foreach($attributes as $k => $v){
444
+		if ($attributes) {
445
+			foreach ($attributes as $k => $v) {
446 446
 				$atts .= " $k=\"".$this->expandEntities($v).'"';
447 447
 			}
448 448
 		}
@@ -466,12 +466,12 @@  discard block
 block discarded – undo
466 466
         	}
467 467
 		}
468 468
         // serialize if an xsd built-in primitive type
469
-        if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){
469
+        if ($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])) {
470 470
     		$this->debug("serialize_val: serialize xsd built-in primitive type");
471 471
         	if (is_bool($val)) {
472 472
         		if ($type == 'boolean') {
473 473
 	        		$val = $val ? 'true' : 'false';
474
-	        	} elseif (! $val) {
474
+	        	} elseif (!$val) {
475 475
 	        		$val = 0;
476 476
 	        	}
477 477
 			} else if (is_string($val)) {
@@ -489,12 +489,12 @@  discard block
 block discarded – undo
489 489
         }
490 490
 		// detect type and serialize
491 491
 		$xml = '';
492
-		switch(true) {
492
+		switch (true) {
493 493
 			case (is_bool($val) || $type == 'boolean'):
494 494
 		   		$this->debug("serialize_val: serialize boolean");
495 495
         		if ($type == 'boolean') {
496 496
 	        		$val = $val ? 'true' : 'false';
497
-	        	} elseif (! $val) {
497
+	        	} elseif (!$val) {
498 498
 	        		$val = 0;
499 499
 	        	}
500 500
 				if ($use == 'literal') {
@@ -511,7 +511,7 @@  discard block
 block discarded – undo
511 511
 					$xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
512 512
 				}
513 513
 				break;
514
-			case (is_float($val)|| is_double($val) || $type == 'float'):
514
+			case (is_float($val) || is_double($val) || $type == 'float'):
515 515
 		   		$this->debug("serialize_val: serialize float");
516 516
 				if ($use == 'literal') {
517 517
 					$xml .= "<$name$xmlns$atts>$val</$name>";
@@ -536,17 +536,17 @@  discard block
 block discarded – undo
536 536
 					$this->appendDebug($val->getDebug());
537 537
 					$val->clearDebug();
538 538
 		        } else {
539
-					if (! $name) {
539
+					if (!$name) {
540 540
 						$name = get_class($val);
541 541
 						$this->debug("In serialize_val, used class name $name as element name");
542 542
 					} else {
543
-						$this->debug("In serialize_val, do not override name $name for element name for class " . get_class($val));
543
+						$this->debug("In serialize_val, do not override name $name for element name for class ".get_class($val));
544 544
 					}
545
-					foreach(get_object_vars($val) as $k => $v){
546
-						$pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
545
+					foreach (get_object_vars($val) as $k => $v) {
546
+						$pXml = isset($pXml) ? $pXml.$this->serialize_val($v, $k, false, false, false, false, $use) : $this->serialize_val($v, $k, false, false, false, false, $use);
547 547
 					}
548 548
 				}
549
-				if(isset($type) && isset($type_prefix)){
549
+				if (isset($type) && isset($type_prefix)) {
550 550
 					$type_str = " xsi:type=\"$type_prefix:$type\"";
551 551
 				} else {
552 552
 					$type_str = '';
@@ -561,12 +561,12 @@  discard block
 block discarded – undo
561 561
 			case (is_array($val) || $type):
562 562
 				// detect if struct or array
563 563
 				$valueType = $this->isArraySimpleOrStruct($val);
564
-                if($valueType=='arraySimple' || preg_match('/^ArrayOf/',$type)){
564
+                if ($valueType == 'arraySimple' || preg_match('/^ArrayOf/', $type)) {
565 565
 			   		$this->debug("serialize_val: serialize array");
566 566
 					$i = 0;
567
-					if(is_array($val) && count($val)> 0){
568
-						foreach($val as $v){
569
-	                    	if(is_object($v) && get_class($v) ==  'soapval'){
567
+					if (is_array($val) && count($val) > 0) {
568
+						foreach ($val as $v) {
569
+	                    	if (is_object($v) && get_class($v) == 'soapval') {
570 570
 								$tt_ns = $v->type_ns;
571 571
 								$tt = $v->type;
572 572
 							} elseif (is_array($v)) {
@@ -576,26 +576,26 @@  discard block
 block discarded – undo
576 576
 	                        }
577 577
 							$array_types[$tt] = 1;
578 578
 							// TODO: for literal, the name should be $name
579
-							$xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
579
+							$xml .= $this->serialize_val($v, 'item', false, false, false, false, $use);
580 580
 							++$i;
581 581
 						}
582
-						if(count($array_types) > 1){
582
+						if (count($array_types) > 1) {
583 583
 							$array_typename = 'xsd:anyType';
584
-						} elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
584
+						} elseif (isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
585 585
 							if ($tt == 'integer') {
586 586
 								$tt = 'int';
587 587
 							}
588 588
 							$array_typename = 'xsd:'.$tt;
589
-						} elseif(isset($tt) && $tt == 'arraySimple'){
589
+						} elseif (isset($tt) && $tt == 'arraySimple') {
590 590
 							$array_typename = 'SOAP-ENC:Array';
591
-						} elseif(isset($tt) && $tt == 'arrayStruct'){
591
+						} elseif (isset($tt) && $tt == 'arrayStruct') {
592 592
 							$array_typename = 'unnamed_struct_use_soapval';
593 593
 						} else {
594 594
 							// if type is prefixed, create type prefix
595
-							if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){
596
-								 $array_typename = 'xsd:' . $tt;
595
+							if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']) {
596
+								 $array_typename = 'xsd:'.$tt;
597 597
 							} elseif ($tt_ns) {
598
-								$tt_prefix = 'ns' . rand(1000, 9999);
598
+								$tt_prefix = 'ns'.rand(1000, 9999);
599 599
 								$array_typename = "$tt_prefix:$tt";
600 600
 								$xmlns .= " xmlns:$tt_prefix=\"$tt_ns\"";
601 601
 							} else {
@@ -625,7 +625,7 @@  discard block
 block discarded – undo
625 625
 				} else {
626 626
 					// got a struct
627 627
 			   		$this->debug("serialize_val: serialize struct");
628
-					if(isset($type) && isset($type_prefix)){
628
+					if (isset($type) && isset($type_prefix)) {
629 629
 						$type_str = " xsi:type=\"$type_prefix:$type\"";
630 630
 					} else {
631 631
 						$type_str = '';
@@ -635,15 +635,15 @@  discard block
 block discarded – undo
635 635
 					} else {
636 636
 						$xml .= "<$name$xmlns$type_str$atts>";
637 637
 					}
638
-					foreach($val as $k => $v){
638
+					foreach ($val as $k => $v) {
639 639
 						// Apache Map
640 640
 						if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') {
641 641
 							$xml .= '<item>';
642
-							$xml .= $this->serialize_val($k,'key',false,false,false,false,$use);
643
-							$xml .= $this->serialize_val($v,'value',false,false,false,false,$use);
642
+							$xml .= $this->serialize_val($k, 'key', false, false, false, false, $use);
643
+							$xml .= $this->serialize_val($v, 'value', false, false, false, false, $use);
644 644
 							$xml .= '</item>';
645 645
 						} else {
646
-							$xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
646
+							$xml .= $this->serialize_val($v, $k, false, false, false, false, $use);
647 647
 						}
648 648
 					}
649 649
 					$xml .= "</$name>";
@@ -670,12 +670,12 @@  discard block
 block discarded – undo
670 670
     * @return string the message
671 671
     * @access public
672 672
     */
673
-    function serializeEnvelope($body,$headers=false,$namespaces=array(),$style='rpc',$use='encoded',$encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'){
673
+    function serializeEnvelope($body, $headers = false, $namespaces = array(), $style = 'rpc', $use = 'encoded', $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/') {
674 674
     // TODO: add an option to automatically run utf8_encode on $body and $headers
675 675
     // if $this->soap_defencoding is UTF-8.  Not doing this automatically allows
676 676
     // one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1
677 677
 
678
-	$this->debug("In serializeEnvelope length=" . strlen($body) . " body (max 1000 characters)=" . substr($body, 0, 1000) . " style=$style use=$use encodingStyle=$encodingStyle");
678
+	$this->debug("In serializeEnvelope length=".strlen($body)." body (max 1000 characters)=".substr($body, 0, 1000)." style=$style use=$use encodingStyle=$encodingStyle");
679 679
 	$this->debug("headers:");
680 680
 	$this->appendDebug($this->varDump($headers));
681 681
 	$this->debug("namespaces:");
@@ -683,15 +683,15 @@  discard block
 block discarded – undo
683 683
 
684 684
 	// serialize namespaces
685 685
     $ns_string = '';
686
-	foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
686
+	foreach (array_merge($this->namespaces, $namespaces) as $k => $v) {
687 687
 		$ns_string .= " xmlns:$k=\"$v\"";
688 688
 	}
689
-	if($encodingStyle) {
689
+	if ($encodingStyle) {
690 690
 		$ns_string = " SOAP-ENV:encodingStyle=\"$encodingStyle\"$ns_string";
691 691
 	}
692 692
 
693 693
 	// serialize headers
694
-	if($headers){
694
+	if ($headers) {
695 695
 		if (is_array($headers)) {
696 696
 			$xml = '';
697 697
 			foreach ($headers as $k => $v) {
@@ -708,7 +708,7 @@  discard block
 block discarded – undo
708 708
 	}
709 709
 	// serialize envelope
710 710
 	return
711
-	'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
711
+	'<?xml version="1.0" encoding="'.$this->soap_defencoding.'"?'.">".
712 712
 	'<SOAP-ENV:Envelope'.$ns_string.">".
713 713
 	$headers.
714 714
 	"<SOAP-ENV:Body>".
@@ -725,7 +725,7 @@  discard block
 block discarded – undo
725 725
 	 * @access public
726 726
 	 * @deprecated
727 727
 	 */
728
-    function formatDump($str){
728
+    function formatDump($str) {
729 729
 		$str = htmlspecialchars($str);
730 730
 		return nl2br($str);
731 731
     }
@@ -737,7 +737,7 @@  discard block
 block discarded – undo
737 737
 	* @return	string contracted qname
738 738
 	* @access   private
739 739
 	*/
740
-	function contractQname($qname){
740
+	function contractQname($qname) {
741 741
 		// get element namespace
742 742
 		//$this->xdebug("Contract $qname");
743 743
 		if (strrpos($qname, ':')) {
@@ -747,7 +747,7 @@  discard block
 block discarded – undo
747 747
 			$ns = substr($qname, 0, strrpos($qname, ':'));
748 748
 			$p = $this->getPrefixFromNamespace($ns);
749 749
 			if ($p) {
750
-				return $p . ':' . $name;
750
+				return $p.':'.$name;
751 751
 			}
752 752
 			return $qname;
753 753
 		} else {
@@ -762,14 +762,14 @@  discard block
 block discarded – undo
762 762
 	* @return	string expanded qname
763 763
 	* @access   private
764 764
 	*/
765
-	function expandQname($qname){
765
+	function expandQname($qname) {
766 766
 		// get element prefix
767
-		if(strpos($qname,':') && !preg_match('/^http:\/\//',$qname)){
767
+		if (strpos($qname, ':') && !preg_match('/^http:\/\//', $qname)) {
768 768
 			// get unqualified name
769
-			$name = substr(strstr($qname,':'),1);
769
+			$name = substr(strstr($qname, ':'), 1);
770 770
 			// get ns prefix
771
-			$prefix = substr($qname,0,strpos($qname,':'));
772
-			if(isset($this->namespaces[$prefix])){
771
+			$prefix = substr($qname, 0, strpos($qname, ':'));
772
+			if (isset($this->namespaces[$prefix])) {
773 773
 				return $this->namespaces[$prefix].':'.$name;
774 774
 			} else {
775 775
 				return $qname;
@@ -787,10 +787,10 @@  discard block
 block discarded – undo
787 787
     * @return string The local part
788 788
     * @access public
789 789
     */
790
-	function getLocalPart($str){
791
-		if($sstr = strrchr($str,':')){
790
+	function getLocalPart($str) {
791
+		if ($sstr = strrchr($str, ':')) {
792 792
 			// get unqualified name
793
-			return substr( $sstr, 1 );
793
+			return substr($sstr, 1);
794 794
 		} else {
795 795
 			return $str;
796 796
 		}
@@ -804,10 +804,10 @@  discard block
 block discarded – undo
804 804
     * @return mixed The prefix or false if there is no prefix
805 805
     * @access public
806 806
     */
807
-	function getPrefix($str){
808
-		if($pos = strrpos($str,':')){
807
+	function getPrefix($str) {
808
+		if ($pos = strrpos($str, ':')) {
809 809
 			// get prefix
810
-			return substr($str,0,$pos);
810
+			return substr($str, 0, $pos);
811 811
 		}
812 812
 		return false;
813 813
 	}
@@ -819,7 +819,7 @@  discard block
 block discarded – undo
819 819
     * @return mixed The namespace, false if no namespace has the specified prefix
820 820
     * @access public
821 821
     */
822
-	function getNamespaceFromPrefix($prefix){
822
+	function getNamespaceFromPrefix($prefix) {
823 823
 		if (isset($this->namespaces[$prefix])) {
824 824
 			return $this->namespaces[$prefix];
825 825
 		}
@@ -860,7 +860,7 @@  discard block
 block discarded – undo
860 860
 			$sec = time();
861 861
 			$usec = 0;
862 862
 		}
863
-		return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
863
+		return strftime('%Y-%m-%d %H:%M:%S', $sec).'.'.sprintf('%06d', $usec);
864 864
 	}
865 865
 
866 866
 	/**
@@ -901,31 +901,31 @@  discard block
 block discarded – undo
901 901
 * @return	mixed ISO 8601 date string or false
902 902
 * @access   public
903 903
 */
904
-function timestamp_to_iso8601($timestamp,$utc=true){
905
-	$datestr = date('Y-m-d\TH:i:sO',$timestamp);
904
+function timestamp_to_iso8601($timestamp, $utc = true) {
905
+	$datestr = date('Y-m-d\TH:i:sO', $timestamp);
906 906
 	$pos = strrpos($datestr, "+");
907 907
 	if ($pos === FALSE) {
908 908
 		$pos = strrpos($datestr, "-");
909 909
 	}
910 910
 	if ($pos !== FALSE) {
911 911
 		if (strlen($datestr) == $pos + 5) {
912
-			$datestr = substr($datestr, 0, $pos + 3) . ':' . substr($datestr, -2);
912
+			$datestr = substr($datestr, 0, $pos + 3).':'.substr($datestr, -2);
913 913
 		}
914 914
 	}
915
-	if($utc){
915
+	if ($utc) {
916 916
 		$pattern = '/'.
917
-		'([0-9]{4})-'.	// centuries & years CCYY-
918
-		'([0-9]{2})-'.	// months MM-
919
-		'([0-9]{2})'.	// days DD
920
-		'T'.			// separator T
921
-		'([0-9]{2}):'.	// hours hh:
922
-		'([0-9]{2}):'.	// minutes mm:
923
-		'([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
924
-		'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
917
+		'([0-9]{4})-'.// centuries & years CCYY-
918
+		'([0-9]{2})-'.// months MM-
919
+		'([0-9]{2})'.// days DD
920
+		'T'.// separator T
921
+		'([0-9]{2}):'.// hours hh:
922
+		'([0-9]{2}):'.// minutes mm:
923
+		'([0-9]{2})(\.[0-9]*)?'.// seconds ss.ss...
924
+		'(Z|[+\-][0-9]{2}:?[0-9]{2})?'.// Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
925 925
 		'/';
926 926
 
927
-		if(preg_match($pattern,$datestr,$regs)){
928
-			return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
927
+		if (preg_match($pattern, $datestr, $regs)) {
928
+			return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ', $regs[1], $regs[2], $regs[3], $regs[4], $regs[5], $regs[6]);
929 929
 		}
930 930
 		return false;
931 931
 	} else {
@@ -940,27 +940,27 @@  discard block
 block discarded – undo
940 940
 * @return	mixed Unix timestamp (int) or false
941 941
 * @access   public
942 942
 */
943
-function iso8601_to_timestamp($datestr){
943
+function iso8601_to_timestamp($datestr) {
944 944
 	$pattern = '/'.
945
-	'([0-9]{4})-'.	// centuries & years CCYY-
946
-	'([0-9]{2})-'.	// months MM-
947
-	'([0-9]{2})'.	// days DD
948
-	'T'.			// separator T
949
-	'([0-9]{2}):'.	// hours hh:
950
-	'([0-9]{2}):'.	// minutes mm:
951
-	'([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
952
-	'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
945
+	'([0-9]{4})-'.// centuries & years CCYY-
946
+	'([0-9]{2})-'.// months MM-
947
+	'([0-9]{2})'.// days DD
948
+	'T'.// separator T
949
+	'([0-9]{2}):'.// hours hh:
950
+	'([0-9]{2}):'.// minutes mm:
951
+	'([0-9]{2})(\.[0-9]+)?'.// seconds ss.ss...
952
+	'(Z|[+\-][0-9]{2}:?[0-9]{2})?'.// Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
953 953
 	'/';
954
-	if(preg_match($pattern,$datestr,$regs)){
954
+	if (preg_match($pattern, $datestr, $regs)) {
955 955
 		// not utc
956
-		if($regs[8] != 'Z'){
957
-			$op = substr($regs[8],0,1);
958
-			$h = substr($regs[8],1,2);
959
-			$m = substr($regs[8],strlen($regs[8])-2,2);
960
-			if($op == '-'){
956
+		if ($regs[8] != 'Z') {
957
+			$op = substr($regs[8], 0, 1);
958
+			$h = substr($regs[8], 1, 2);
959
+			$m = substr($regs[8], strlen($regs[8]) - 2, 2);
960
+			if ($op == '-') {
961 961
 				$regs[4] = $regs[4] + $h;
962 962
 				$regs[5] = $regs[5] + $m;
963
-			} elseif($op == '+'){
963
+			} elseif ($op == '+') {
964 964
 				$regs[4] = $regs[4] - $h;
965 965
 				$regs[5] = $regs[5] - $m;
966 966
 			}
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.soap_fault.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -43,7 +43,7 @@
 block discarded – undo
43 43
     * @param string $faultcode (SOAP-ENV:Client | SOAP-ENV:Server)
44 44
     * @param string $faultactor only used when msg routed between multiple actors
45 45
     * @param string $faultstring human readable error message
46
-    * @param mixed $faultdetail detail, typically a string or array of string
46
+    * @param string $faultdetail detail, typically a string or array of string
47 47
 	*/
48 48
 	function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
49 49
 		parent::nusoap_base();
Please login to merge, or discard this patch.
Indentation   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -12,72 +12,72 @@
 block discarded – undo
12 12
 * @access public
13 13
 */
14 14
 class nusoap_fault extends nusoap_base {
15
-	/**
16
-	 * The fault code (client|server)
17
-	 * @var string
18
-	 * @access private
19
-	 */
20
-	var $faultcode;
21
-	/**
22
-	 * The fault actor
23
-	 * @var string
24
-	 * @access private
25
-	 */
26
-	var $faultactor;
27
-	/**
28
-	 * The fault string, a description of the fault
29
-	 * @var string
30
-	 * @access private
31
-	 */
32
-	var $faultstring;
33
-	/**
34
-	 * The fault detail, typically a string or array of string
35
-	 * @var mixed
36
-	 * @access private
37
-	 */
38
-	var $faultdetail;
15
+    /**
16
+     * The fault code (client|server)
17
+     * @var string
18
+     * @access private
19
+     */
20
+    var $faultcode;
21
+    /**
22
+     * The fault actor
23
+     * @var string
24
+     * @access private
25
+     */
26
+    var $faultactor;
27
+    /**
28
+     * The fault string, a description of the fault
29
+     * @var string
30
+     * @access private
31
+     */
32
+    var $faultstring;
33
+    /**
34
+     * The fault detail, typically a string or array of string
35
+     * @var mixed
36
+     * @access private
37
+     */
38
+    var $faultdetail;
39 39
 
40
-	/**
41
-	* constructor
42
-    *
43
-    * @param string $faultcode (SOAP-ENV:Client | SOAP-ENV:Server)
44
-    * @param string $faultactor only used when msg routed between multiple actors
45
-    * @param string $faultstring human readable error message
46
-    * @param mixed $faultdetail detail, typically a string or array of string
47
-	*/
48
-	function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
49
-		parent::nusoap_base();
50
-		$this->faultcode = $faultcode;
51
-		$this->faultactor = $faultactor;
52
-		$this->faultstring = $faultstring;
53
-		$this->faultdetail = $faultdetail;
54
-	}
40
+    /**
41
+     * constructor
42
+     *
43
+     * @param string $faultcode (SOAP-ENV:Client | SOAP-ENV:Server)
44
+     * @param string $faultactor only used when msg routed between multiple actors
45
+     * @param string $faultstring human readable error message
46
+     * @param mixed $faultdetail detail, typically a string or array of string
47
+     */
48
+    function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
49
+        parent::nusoap_base();
50
+        $this->faultcode = $faultcode;
51
+        $this->faultactor = $faultactor;
52
+        $this->faultstring = $faultstring;
53
+        $this->faultdetail = $faultdetail;
54
+    }
55 55
 
56
-	/**
57
-	* serialize a fault
58
-	*
59
-	* @return	string	The serialization of the fault instance.
60
-	* @access   public
61
-	*/
62
-	function serialize(){
63
-		$ns_string = '';
64
-		foreach($this->namespaces as $k => $v){
65
-			$ns_string .= "\n  xmlns:$k=\"$v\"";
66
-		}
67
-		$return_msg =
68
-			'<?xml version="1.0" encoding="'.$this->soap_defencoding.'"?>'.
69
-			'<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"'.$ns_string.">\n".
70
-				'<SOAP-ENV:Body>'.
71
-				'<SOAP-ENV:Fault>'.
72
-					$this->serialize_val($this->faultcode, 'faultcode').
73
-					$this->serialize_val($this->faultactor, 'faultactor').
74
-					$this->serialize_val($this->faultstring, 'faultstring').
75
-					$this->serialize_val($this->faultdetail, 'detail').
76
-				'</SOAP-ENV:Fault>'.
77
-				'</SOAP-ENV:Body>'.
78
-			'</SOAP-ENV:Envelope>';
79
-		return $return_msg;
80
-	}
56
+    /**
57
+     * serialize a fault
58
+     *
59
+     * @return	string	The serialization of the fault instance.
60
+     * @access   public
61
+     */
62
+    function serialize(){
63
+        $ns_string = '';
64
+        foreach($this->namespaces as $k => $v){
65
+            $ns_string .= "\n  xmlns:$k=\"$v\"";
66
+        }
67
+        $return_msg =
68
+            '<?xml version="1.0" encoding="'.$this->soap_defencoding.'"?>'.
69
+            '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"'.$ns_string.">\n".
70
+                '<SOAP-ENV:Body>'.
71
+                '<SOAP-ENV:Fault>'.
72
+                    $this->serialize_val($this->faultcode, 'faultcode').
73
+                    $this->serialize_val($this->faultactor, 'faultactor').
74
+                    $this->serialize_val($this->faultstring, 'faultstring').
75
+                    $this->serialize_val($this->faultdetail, 'detail').
76
+                '</SOAP-ENV:Fault>'.
77
+                '</SOAP-ENV:Body>'.
78
+            '</SOAP-ENV:Envelope>';
79
+        return $return_msg;
80
+    }
81 81
 }
82 82
 
83 83
 /**
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -45,7 +45,7 @@  discard block
 block discarded – undo
45 45
     * @param string $faultstring human readable error message
46 46
     * @param mixed $faultdetail detail, typically a string or array of string
47 47
 	*/
48
-	function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
48
+	function nusoap_fault($faultcode, $faultactor = '', $faultstring = '', $faultdetail = '') {
49 49
 		parent::nusoap_base();
50 50
 		$this->faultcode = $faultcode;
51 51
 		$this->faultactor = $faultactor;
@@ -59,9 +59,9 @@  discard block
 block discarded – undo
59 59
 	* @return	string	The serialization of the fault instance.
60 60
 	* @access   public
61 61
 	*/
62
-	function serialize(){
62
+	function serialize() {
63 63
 		$ns_string = '';
64
-		foreach($this->namespaces as $k => $v){
64
+		foreach ($this->namespaces as $k => $v) {
65 65
 			$ns_string .= "\n  xmlns:$k=\"$v\"";
66 66
 		}
67 67
 		$return_msg =
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.soap_server.php 3 patches
Doc Comments   +8 added lines, -7 removed lines patch added patch discarded remove patch
@@ -843,7 +843,7 @@  discard block
 block discarded – undo
843 843
 	*
844 844
 	* @param	array	$headers	The HTTP headers
845 845
 	* @param	string	$data		unprocessed request data from client
846
-	* @return	mixed	value of the message, decoded into a PHP type
846
+	* @return	false|null	value of the message, decoded into a PHP type
847 847
 	* @access   private
848 848
 	*/
849 849
     function parseRequest($headers, $data) {
@@ -951,10 +951,10 @@  discard block
 block discarded – undo
951 951
 	* @param    string $name the name of the PHP function, class.method or class..method
952 952
 	* @param    array $in assoc array of input values: key = param name, value = param type
953 953
 	* @param    array $out assoc array of output values: key = param name, value = param type
954
-	* @param	mixed $namespace the element namespace for the method or false
955
-	* @param	mixed $soapaction the soapaction for the method or false
956
-	* @param	mixed $style optional (rpc|document) or false Note: when 'document' is specified, parameter and return wrappers are created for you automatically
957
-	* @param	mixed $use optional (encoded|literal) or false
954
+	* @param	string $namespace the element namespace for the method or false
955
+	* @param	string $soapaction the soapaction for the method or false
956
+	* @param	string $style optional (rpc|document) or false Note: when 'document' is specified, parameter and return wrappers are created for you automatically
957
+	* @param	string $use optional (encoded|literal) or false
958 958
 	* @param	string $documentation optional Description to include in WSDL
959 959
 	* @param	string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
960 960
 	* @access   public
@@ -1041,11 +1041,12 @@  discard block
 block discarded – undo
1041 1041
     * Acts as a flag to enable internal WSDL generation
1042 1042
     *
1043 1043
     * @param string $serviceName, name of the service
1044
-    * @param mixed $namespace optional 'tns' service namespace or false
1044
+    * @param string $namespace optional 'tns' service namespace or false
1045 1045
     * @param mixed $endpoint optional URL of service endpoint or false
1046 1046
     * @param string $style optional (rpc|document) WSDL style (also specified by operation)
1047 1047
     * @param string $transport optional SOAP transport
1048
-    * @param mixed $schemaTargetNamespace optional 'types' targetNamespace for service schema or false
1048
+    * @param mixed $schemaTargetNamespace optional 'types' targetNamespace for service schema or false
1049
+    * @param string $serviceName
1049 1050
     */
1050 1051
     function configureWSDL($serviceName,$namespace = false,$endpoint = false,$style='rpc', $transport = 'http://schemas.xmlsoap.org/soap/http', $schemaTargetNamespace = false)
1051 1052
     {
Please login to merge, or discard this patch.
Indentation   +1023 added lines, -1023 removed lines patch added patch discarded remove patch
@@ -14,1076 +14,1076 @@  discard block
 block discarded – undo
14 14
 * @access   public
15 15
 */
16 16
 class nusoap_server extends nusoap_base {
17
-	/**
18
-	 * HTTP headers of request
19
-	 * @var array
20
-	 * @access private
21
-	 */
22
-	var $headers = array();
23
-	/**
24
-	 * HTTP request
25
-	 * @var string
26
-	 * @access private
27
-	 */
28
-	var $request = '';
29
-	/**
30
-	 * SOAP headers from request (incomplete namespace resolution; special characters not escaped) (text)
31
-	 * @var string
32
-	 * @access public
33
-	 */
34
-	var $requestHeaders = '';
35
-	/**
36
-	 * SOAP Headers from request (parsed)
37
-	 * @var mixed
38
-	 * @access public
39
-	 */
40
-	var $requestHeader = NULL;
41
-	/**
42
-	 * SOAP body request portion (incomplete namespace resolution; special characters not escaped) (text)
43
-	 * @var string
44
-	 * @access public
45
-	 */
46
-	var $document = '';
47
-	/**
48
-	 * SOAP payload for request (text)
49
-	 * @var string
50
-	 * @access public
51
-	 */
52
-	var $requestSOAP = '';
53
-	/**
54
-	 * requested method namespace URI
55
-	 * @var string
56
-	 * @access private
57
-	 */
58
-	var $methodURI = '';
59
-	/**
60
-	 * name of method requested
61
-	 * @var string
62
-	 * @access private
63
-	 */
64
-	var $methodname = '';
65
-	/**
66
-	 * method parameters from request
67
-	 * @var array
68
-	 * @access private
69
-	 */
70
-	var $methodparams = array();
71
-	/**
72
-	 * SOAP Action from request
73
-	 * @var string
74
-	 * @access private
75
-	 */
76
-	var $SOAPAction = '';
77
-	/**
78
-	 * character set encoding of incoming (request) messages
79
-	 * @var string
80
-	 * @access public
81
-	 */
82
-	var $xml_encoding = '';
83
-	/**
84
-	 * toggles whether the parser decodes element content w/ utf8_decode()
85
-	 * @var boolean
86
-	 * @access public
87
-	 */
17
+    /**
18
+     * HTTP headers of request
19
+     * @var array
20
+     * @access private
21
+     */
22
+    var $headers = array();
23
+    /**
24
+     * HTTP request
25
+     * @var string
26
+     * @access private
27
+     */
28
+    var $request = '';
29
+    /**
30
+     * SOAP headers from request (incomplete namespace resolution; special characters not escaped) (text)
31
+     * @var string
32
+     * @access public
33
+     */
34
+    var $requestHeaders = '';
35
+    /**
36
+     * SOAP Headers from request (parsed)
37
+     * @var mixed
38
+     * @access public
39
+     */
40
+    var $requestHeader = NULL;
41
+    /**
42
+     * SOAP body request portion (incomplete namespace resolution; special characters not escaped) (text)
43
+     * @var string
44
+     * @access public
45
+     */
46
+    var $document = '';
47
+    /**
48
+     * SOAP payload for request (text)
49
+     * @var string
50
+     * @access public
51
+     */
52
+    var $requestSOAP = '';
53
+    /**
54
+     * requested method namespace URI
55
+     * @var string
56
+     * @access private
57
+     */
58
+    var $methodURI = '';
59
+    /**
60
+     * name of method requested
61
+     * @var string
62
+     * @access private
63
+     */
64
+    var $methodname = '';
65
+    /**
66
+     * method parameters from request
67
+     * @var array
68
+     * @access private
69
+     */
70
+    var $methodparams = array();
71
+    /**
72
+     * SOAP Action from request
73
+     * @var string
74
+     * @access private
75
+     */
76
+    var $SOAPAction = '';
77
+    /**
78
+     * character set encoding of incoming (request) messages
79
+     * @var string
80
+     * @access public
81
+     */
82
+    var $xml_encoding = '';
83
+    /**
84
+     * toggles whether the parser decodes element content w/ utf8_decode()
85
+     * @var boolean
86
+     * @access public
87
+     */
88 88
     var $decode_utf8 = true;
89 89
 
90
-	/**
91
-	 * HTTP headers of response
92
-	 * @var array
93
-	 * @access public
94
-	 */
95
-	var $outgoing_headers = array();
96
-	/**
97
-	 * HTTP response
98
-	 * @var string
99
-	 * @access private
100
-	 */
101
-	var $response = '';
102
-	/**
103
-	 * SOAP headers for response (text or array of soapval or associative array)
104
-	 * @var mixed
105
-	 * @access public
106
-	 */
107
-	var $responseHeaders = '';
108
-	/**
109
-	 * SOAP payload for response (text)
110
-	 * @var string
111
-	 * @access private
112
-	 */
113
-	var $responseSOAP = '';
114
-	/**
115
-	 * method return value to place in response
116
-	 * @var mixed
117
-	 * @access private
118
-	 */
119
-	var $methodreturn = false;
120
-	/**
121
-	 * whether $methodreturn is a string of literal XML
122
-	 * @var boolean
123
-	 * @access public
124
-	 */
125
-	var $methodreturnisliteralxml = false;
126
-	/**
127
-	 * SOAP fault for response (or false)
128
-	 * @var mixed
129
-	 * @access private
130
-	 */
131
-	var $fault = false;
132
-	/**
133
-	 * text indication of result (for debugging)
134
-	 * @var string
135
-	 * @access private
136
-	 */
137
-	var $result = 'successful';
90
+    /**
91
+     * HTTP headers of response
92
+     * @var array
93
+     * @access public
94
+     */
95
+    var $outgoing_headers = array();
96
+    /**
97
+     * HTTP response
98
+     * @var string
99
+     * @access private
100
+     */
101
+    var $response = '';
102
+    /**
103
+     * SOAP headers for response (text or array of soapval or associative array)
104
+     * @var mixed
105
+     * @access public
106
+     */
107
+    var $responseHeaders = '';
108
+    /**
109
+     * SOAP payload for response (text)
110
+     * @var string
111
+     * @access private
112
+     */
113
+    var $responseSOAP = '';
114
+    /**
115
+     * method return value to place in response
116
+     * @var mixed
117
+     * @access private
118
+     */
119
+    var $methodreturn = false;
120
+    /**
121
+     * whether $methodreturn is a string of literal XML
122
+     * @var boolean
123
+     * @access public
124
+     */
125
+    var $methodreturnisliteralxml = false;
126
+    /**
127
+     * SOAP fault for response (or false)
128
+     * @var mixed
129
+     * @access private
130
+     */
131
+    var $fault = false;
132
+    /**
133
+     * text indication of result (for debugging)
134
+     * @var string
135
+     * @access private
136
+     */
137
+    var $result = 'successful';
138 138
 
139
-	/**
140
-	 * assoc array of operations => opData; operations are added by the register()
141
-	 * method or by parsing an external WSDL definition
142
-	 * @var array
143
-	 * @access private
144
-	 */
145
-	var $operations = array();
146
-	/**
147
-	 * wsdl instance (if one)
148
-	 * @var mixed
149
-	 * @access private
150
-	 */
151
-	var $wsdl = false;
152
-	/**
153
-	 * URL for WSDL (if one)
154
-	 * @var mixed
155
-	 * @access private
156
-	 */
157
-	var $externalWSDLURL = false;
158
-	/**
159
-	 * whether to append debug to response as XML comment
160
-	 * @var boolean
161
-	 * @access public
162
-	 */
163
-	var $debug_flag = false;
139
+    /**
140
+     * assoc array of operations => opData; operations are added by the register()
141
+     * method or by parsing an external WSDL definition
142
+     * @var array
143
+     * @access private
144
+     */
145
+    var $operations = array();
146
+    /**
147
+     * wsdl instance (if one)
148
+     * @var mixed
149
+     * @access private
150
+     */
151
+    var $wsdl = false;
152
+    /**
153
+     * URL for WSDL (if one)
154
+     * @var mixed
155
+     * @access private
156
+     */
157
+    var $externalWSDLURL = false;
158
+    /**
159
+     * whether to append debug to response as XML comment
160
+     * @var boolean
161
+     * @access public
162
+     */
163
+    var $debug_flag = false;
164 164
 
165 165
 
166
-	/**
167
-	* constructor
168
-    * the optional parameter is a path to a WSDL file that you'd like to bind the server instance to.
169
-	*
170
-    * @param mixed $wsdl file path or URL (string), or wsdl instance (object)
171
-	* @access   public
172
-	*/
173
-	function nusoap_server($wsdl=false){
174
-		parent::nusoap_base();
175
-		// turn on debugging?
176
-		global $debug;
177
-		global $HTTP_SERVER_VARS;
166
+    /**
167
+     * constructor
168
+     * the optional parameter is a path to a WSDL file that you'd like to bind the server instance to.
169
+     *
170
+     * @param mixed $wsdl file path or URL (string), or wsdl instance (object)
171
+     * @access   public
172
+     */
173
+    function nusoap_server($wsdl=false){
174
+        parent::nusoap_base();
175
+        // turn on debugging?
176
+        global $debug;
177
+        global $HTTP_SERVER_VARS;
178 178
 
179
-		if (isset($_SERVER)) {
180
-			$this->debug("_SERVER is defined:");
181
-			$this->appendDebug($this->varDump($_SERVER));
182
-		} elseif (isset($HTTP_SERVER_VARS)) {
183
-			$this->debug("HTTP_SERVER_VARS is defined:");
184
-			$this->appendDebug($this->varDump($HTTP_SERVER_VARS));
185
-		} else {
186
-			$this->debug("Neither _SERVER nor HTTP_SERVER_VARS is defined.");
187
-		}
179
+        if (isset($_SERVER)) {
180
+            $this->debug("_SERVER is defined:");
181
+            $this->appendDebug($this->varDump($_SERVER));
182
+        } elseif (isset($HTTP_SERVER_VARS)) {
183
+            $this->debug("HTTP_SERVER_VARS is defined:");
184
+            $this->appendDebug($this->varDump($HTTP_SERVER_VARS));
185
+        } else {
186
+            $this->debug("Neither _SERVER nor HTTP_SERVER_VARS is defined.");
187
+        }
188 188
 
189
-		if (isset($debug)) {
190
-			$this->debug("In nusoap_server, set debug_flag=$debug based on global flag");
191
-			$this->debug_flag = $debug;
192
-		} elseif (isset($_SERVER['QUERY_STRING'])) {
193
-			$qs = explode('&', $_SERVER['QUERY_STRING']);
194
-			foreach ($qs as $v) {
195
-				if (substr($v, 0, 6) == 'debug=') {
196
-					$this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #1");
197
-					$this->debug_flag = substr($v, 6);
198
-				}
199
-			}
200
-		} elseif (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
201
-			$qs = explode('&', $HTTP_SERVER_VARS['QUERY_STRING']);
202
-			foreach ($qs as $v) {
203
-				if (substr($v, 0, 6) == 'debug=') {
204
-					$this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #2");
205
-					$this->debug_flag = substr($v, 6);
206
-				}
207
-			}
208
-		}
189
+        if (isset($debug)) {
190
+            $this->debug("In nusoap_server, set debug_flag=$debug based on global flag");
191
+            $this->debug_flag = $debug;
192
+        } elseif (isset($_SERVER['QUERY_STRING'])) {
193
+            $qs = explode('&', $_SERVER['QUERY_STRING']);
194
+            foreach ($qs as $v) {
195
+                if (substr($v, 0, 6) == 'debug=') {
196
+                    $this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #1");
197
+                    $this->debug_flag = substr($v, 6);
198
+                }
199
+            }
200
+        } elseif (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
201
+            $qs = explode('&', $HTTP_SERVER_VARS['QUERY_STRING']);
202
+            foreach ($qs as $v) {
203
+                if (substr($v, 0, 6) == 'debug=') {
204
+                    $this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #2");
205
+                    $this->debug_flag = substr($v, 6);
206
+                }
207
+            }
208
+        }
209 209
 
210
-		// wsdl
211
-		if($wsdl){
212
-			$this->debug("In nusoap_server, WSDL is specified");
213
-			if (is_object($wsdl) && (get_class($wsdl) == 'wsdl')) {
214
-				$this->wsdl = $wsdl;
215
-				$this->externalWSDLURL = $this->wsdl->wsdl;
216
-				$this->debug('Use existing wsdl instance from ' . $this->externalWSDLURL);
217
-			} else {
218
-				$this->debug('Create wsdl from ' . $wsdl);
219
-				$this->wsdl = new wsdl($wsdl);
220
-				$this->externalWSDLURL = $wsdl;
221
-			}
222
-			$this->appendDebug($this->wsdl->getDebug());
223
-			$this->wsdl->clearDebug();
224
-			if($err = $this->wsdl->getError()){
225
-				die('WSDL ERROR: '.$err);
226
-			}
227
-		}
228
-	}
210
+        // wsdl
211
+        if($wsdl){
212
+            $this->debug("In nusoap_server, WSDL is specified");
213
+            if (is_object($wsdl) && (get_class($wsdl) == 'wsdl')) {
214
+                $this->wsdl = $wsdl;
215
+                $this->externalWSDLURL = $this->wsdl->wsdl;
216
+                $this->debug('Use existing wsdl instance from ' . $this->externalWSDLURL);
217
+            } else {
218
+                $this->debug('Create wsdl from ' . $wsdl);
219
+                $this->wsdl = new wsdl($wsdl);
220
+                $this->externalWSDLURL = $wsdl;
221
+            }
222
+            $this->appendDebug($this->wsdl->getDebug());
223
+            $this->wsdl->clearDebug();
224
+            if($err = $this->wsdl->getError()){
225
+                die('WSDL ERROR: '.$err);
226
+            }
227
+        }
228
+    }
229 229
 
230
-	/**
231
-	* processes request and returns response
232
-	*
233
-	* @param    string $data usually is the value of $HTTP_RAW_POST_DATA
234
-	* @access   public
235
-	*/
236
-	function service($data){
237
-		global $HTTP_SERVER_VARS;
230
+    /**
231
+     * processes request and returns response
232
+     *
233
+     * @param    string $data usually is the value of $HTTP_RAW_POST_DATA
234
+     * @access   public
235
+     */
236
+    function service($data){
237
+        global $HTTP_SERVER_VARS;
238 238
 
239
-		if (isset($_SERVER['REQUEST_METHOD'])) {
240
-			$rm = $_SERVER['REQUEST_METHOD'];
241
-		} elseif (isset($HTTP_SERVER_VARS['REQUEST_METHOD'])) {
242
-			$rm = $HTTP_SERVER_VARS['REQUEST_METHOD'];
243
-		} else {
244
-			$rm = '';
245
-		}
239
+        if (isset($_SERVER['REQUEST_METHOD'])) {
240
+            $rm = $_SERVER['REQUEST_METHOD'];
241
+        } elseif (isset($HTTP_SERVER_VARS['REQUEST_METHOD'])) {
242
+            $rm = $HTTP_SERVER_VARS['REQUEST_METHOD'];
243
+        } else {
244
+            $rm = '';
245
+        }
246 246
 
247
-		if (isset($_SERVER['QUERY_STRING'])) {
248
-			$qs = $_SERVER['QUERY_STRING'];
249
-		} elseif (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
250
-			$qs = $HTTP_SERVER_VARS['QUERY_STRING'];
251
-		} else {
252
-			$qs = '';
253
-		}
254
-		$this->debug("In service, request method=$rm query string=$qs strlen(\$data)=" . strlen($data));
247
+        if (isset($_SERVER['QUERY_STRING'])) {
248
+            $qs = $_SERVER['QUERY_STRING'];
249
+        } elseif (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
250
+            $qs = $HTTP_SERVER_VARS['QUERY_STRING'];
251
+        } else {
252
+            $qs = '';
253
+        }
254
+        $this->debug("In service, request method=$rm query string=$qs strlen(\$data)=" . strlen($data));
255 255
 
256
-		if ($rm == 'POST') {
257
-			$this->debug("In service, invoke the request");
258
-			$this->parse_request($data);
259
-			if (! $this->fault) {
260
-				$this->invoke_method();
261
-			}
262
-			if (! $this->fault) {
263
-				$this->serialize_return();
264
-			}
265
-			$this->send_response();
266
-		} elseif (preg_match('/wsdl/', $qs) ){
267
-			$this->debug("In service, this is a request for WSDL");
268
-			if ($this->externalWSDLURL){
269
-              if (strpos($this->externalWSDLURL, "http://") !== false) { // assume URL
270
-				$this->debug("In service, re-direct for WSDL");
271
-				header('Location: '.$this->externalWSDLURL);
272
-              } else { // assume file
273
-				$this->debug("In service, use file passthru for WSDL");
256
+        if ($rm == 'POST') {
257
+            $this->debug("In service, invoke the request");
258
+            $this->parse_request($data);
259
+            if (! $this->fault) {
260
+                $this->invoke_method();
261
+            }
262
+            if (! $this->fault) {
263
+                $this->serialize_return();
264
+            }
265
+            $this->send_response();
266
+        } elseif (preg_match('/wsdl/', $qs) ){
267
+            $this->debug("In service, this is a request for WSDL");
268
+            if ($this->externalWSDLURL){
269
+                if (strpos($this->externalWSDLURL, "http://") !== false) { // assume URL
270
+                $this->debug("In service, re-direct for WSDL");
271
+                header('Location: '.$this->externalWSDLURL);
272
+                } else { // assume file
273
+                $this->debug("In service, use file passthru for WSDL");
274 274
                 header("Content-Type: text/xml\r\n");
275
-				$pos = strpos($this->externalWSDLURL, "file://");
276
-				if ($pos === false) {
277
-					$filename = $this->externalWSDLURL;
278
-				} else {
279
-					$filename = substr($this->externalWSDLURL, $pos + 7);
280
-				}
275
+                $pos = strpos($this->externalWSDLURL, "file://");
276
+                if ($pos === false) {
277
+                    $filename = $this->externalWSDLURL;
278
+                } else {
279
+                    $filename = substr($this->externalWSDLURL, $pos + 7);
280
+                }
281 281
                 $fp = fopen($this->externalWSDLURL, 'r');
282 282
                 fpassthru($fp);
283
-              }
284
-			} elseif ($this->wsdl) {
285
-				$this->debug("In service, serialize WSDL");
286
-				header("Content-Type: text/xml; charset=ISO-8859-1\r\n");
287
-				print $this->wsdl->serialize($this->debug_flag);
288
-				if ($this->debug_flag) {
289
-					$this->debug('wsdl:');
290
-					$this->appendDebug($this->varDump($this->wsdl));
291
-					print $this->getDebugAsXMLComment();
292
-				}
293
-			} else {
294
-				$this->debug("In service, there is no WSDL");
295
-				header("Content-Type: text/html; charset=ISO-8859-1\r\n");
296
-				print "This service does not provide WSDL";
297
-			}
298
-		} elseif ($this->wsdl) {
299
-			$this->debug("In service, return Web description");
300
-			print $this->wsdl->webDescription();
301
-		} else {
302
-			$this->debug("In service, no Web description");
303
-			header("Content-Type: text/html; charset=ISO-8859-1\r\n");
304
-			print "This service does not provide a Web description";
305
-		}
306
-	}
283
+                }
284
+            } elseif ($this->wsdl) {
285
+                $this->debug("In service, serialize WSDL");
286
+                header("Content-Type: text/xml; charset=ISO-8859-1\r\n");
287
+                print $this->wsdl->serialize($this->debug_flag);
288
+                if ($this->debug_flag) {
289
+                    $this->debug('wsdl:');
290
+                    $this->appendDebug($this->varDump($this->wsdl));
291
+                    print $this->getDebugAsXMLComment();
292
+                }
293
+            } else {
294
+                $this->debug("In service, there is no WSDL");
295
+                header("Content-Type: text/html; charset=ISO-8859-1\r\n");
296
+                print "This service does not provide WSDL";
297
+            }
298
+        } elseif ($this->wsdl) {
299
+            $this->debug("In service, return Web description");
300
+            print $this->wsdl->webDescription();
301
+        } else {
302
+            $this->debug("In service, no Web description");
303
+            header("Content-Type: text/html; charset=ISO-8859-1\r\n");
304
+            print "This service does not provide a Web description";
305
+        }
306
+    }
307 307
 
308
-	/**
309
-	* parses HTTP request headers.
310
-	*
311
-	* The following fields are set by this function (when successful)
312
-	*
313
-	* headers
314
-	* request
315
-	* xml_encoding
316
-	* SOAPAction
317
-	*
318
-	* @access   private
319
-	*/
320
-	function parse_http_headers() {
321
-		global $HTTP_SERVER_VARS;
308
+    /**
309
+     * parses HTTP request headers.
310
+     *
311
+     * The following fields are set by this function (when successful)
312
+     *
313
+     * headers
314
+     * request
315
+     * xml_encoding
316
+     * SOAPAction
317
+     *
318
+     * @access   private
319
+     */
320
+    function parse_http_headers() {
321
+        global $HTTP_SERVER_VARS;
322 322
 
323
-		$this->request = '';
324
-		$this->SOAPAction = '';
325
-		if(function_exists('getallheaders')){
326
-			$this->debug("In parse_http_headers, use getallheaders");
327
-			$headers = getallheaders();
328
-			foreach($headers as $k=>$v){
329
-				$k = strtolower($k);
330
-				$this->headers[$k] = $v;
331
-				$this->request .= "$k: $v\r\n";
332
-				$this->debug("$k: $v");
333
-			}
334
-			// get SOAPAction header
335
-			if(isset($this->headers['soapaction'])){
336
-				$this->SOAPAction = str_replace('"','',$this->headers['soapaction']);
337
-			}
338
-			// get the character encoding of the incoming request
339
-			if(isset($this->headers['content-type']) && strpos($this->headers['content-type'],'=')){
340
-				$enc = str_replace('"','',substr(strstr($this->headers["content-type"],'='),1));
341
-				if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
342
-					$this->xml_encoding = strtoupper($enc);
343
-				} else {
344
-					$this->xml_encoding = 'US-ASCII';
345
-				}
346
-			} else {
347
-				// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
348
-				$this->xml_encoding = 'ISO-8859-1';
349
-			}
350
-		} elseif(isset($_SERVER) && is_array($_SERVER)){
351
-			$this->debug("In parse_http_headers, use _SERVER");
352
-			foreach ($_SERVER as $k => $v) {
353
-				if (substr($k, 0, 5) == 'HTTP_') {
354
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5))));
355
-				} else {
356
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k)));
357
-				}
358
-				if ($k == 'soapaction') {
359
-					// get SOAPAction header
360
-					$k = 'SOAPAction';
361
-					$v = str_replace('"', '', $v);
362
-					$v = str_replace('\\', '', $v);
363
-					$this->SOAPAction = $v;
364
-				} else if ($k == 'content-type') {
365
-					// get the character encoding of the incoming request
366
-					if (strpos($v, '=')) {
367
-						$enc = substr(strstr($v, '='), 1);
368
-						$enc = str_replace('"', '', $enc);
369
-						$enc = str_replace('\\', '', $enc);
370
-						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
371
-							$this->xml_encoding = strtoupper($enc);
372
-						} else {
373
-							$this->xml_encoding = 'US-ASCII';
374
-						}
375
-					} else {
376
-						// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
377
-						$this->xml_encoding = 'ISO-8859-1';
378
-					}
379
-				}
380
-				$this->headers[$k] = $v;
381
-				$this->request .= "$k: $v\r\n";
382
-				$this->debug("$k: $v");
383
-			}
384
-		} elseif (is_array($HTTP_SERVER_VARS)) {
385
-			$this->debug("In parse_http_headers, use HTTP_SERVER_VARS");
386
-			foreach ($HTTP_SERVER_VARS as $k => $v) {
387
-				if (substr($k, 0, 5) == 'HTTP_') {
388
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5)))); 	                                         $k = strtolower(substr($k, 5));
389
-				} else {
390
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k))); 	                                         $k = strtolower($k);
391
-				}
392
-				if ($k == 'soapaction') {
393
-					// get SOAPAction header
394
-					$k = 'SOAPAction';
395
-					$v = str_replace('"', '', $v);
396
-					$v = str_replace('\\', '', $v);
397
-					$this->SOAPAction = $v;
398
-				} else if ($k == 'content-type') {
399
-					// get the character encoding of the incoming request
400
-					if (strpos($v, '=')) {
401
-						$enc = substr(strstr($v, '='), 1);
402
-						$enc = str_replace('"', '', $enc);
403
-						$enc = str_replace('\\', '', $enc);
404
-						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
405
-							$this->xml_encoding = strtoupper($enc);
406
-						} else {
407
-							$this->xml_encoding = 'US-ASCII';
408
-						}
409
-					} else {
410
-						// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
411
-						$this->xml_encoding = 'ISO-8859-1';
412
-					}
413
-				}
414
-				$this->headers[$k] = $v;
415
-				$this->request .= "$k: $v\r\n";
416
-				$this->debug("$k: $v");
417
-			}
418
-		} else {
419
-			$this->debug("In parse_http_headers, HTTP headers not accessible");
420
-			$this->setError("HTTP headers not accessible");
421
-		}
422
-	}
323
+        $this->request = '';
324
+        $this->SOAPAction = '';
325
+        if(function_exists('getallheaders')){
326
+            $this->debug("In parse_http_headers, use getallheaders");
327
+            $headers = getallheaders();
328
+            foreach($headers as $k=>$v){
329
+                $k = strtolower($k);
330
+                $this->headers[$k] = $v;
331
+                $this->request .= "$k: $v\r\n";
332
+                $this->debug("$k: $v");
333
+            }
334
+            // get SOAPAction header
335
+            if(isset($this->headers['soapaction'])){
336
+                $this->SOAPAction = str_replace('"','',$this->headers['soapaction']);
337
+            }
338
+            // get the character encoding of the incoming request
339
+            if(isset($this->headers['content-type']) && strpos($this->headers['content-type'],'=')){
340
+                $enc = str_replace('"','',substr(strstr($this->headers["content-type"],'='),1));
341
+                if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
342
+                    $this->xml_encoding = strtoupper($enc);
343
+                } else {
344
+                    $this->xml_encoding = 'US-ASCII';
345
+                }
346
+            } else {
347
+                // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
348
+                $this->xml_encoding = 'ISO-8859-1';
349
+            }
350
+        } elseif(isset($_SERVER) && is_array($_SERVER)){
351
+            $this->debug("In parse_http_headers, use _SERVER");
352
+            foreach ($_SERVER as $k => $v) {
353
+                if (substr($k, 0, 5) == 'HTTP_') {
354
+                    $k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5))));
355
+                } else {
356
+                    $k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k)));
357
+                }
358
+                if ($k == 'soapaction') {
359
+                    // get SOAPAction header
360
+                    $k = 'SOAPAction';
361
+                    $v = str_replace('"', '', $v);
362
+                    $v = str_replace('\\', '', $v);
363
+                    $this->SOAPAction = $v;
364
+                } else if ($k == 'content-type') {
365
+                    // get the character encoding of the incoming request
366
+                    if (strpos($v, '=')) {
367
+                        $enc = substr(strstr($v, '='), 1);
368
+                        $enc = str_replace('"', '', $enc);
369
+                        $enc = str_replace('\\', '', $enc);
370
+                        if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
371
+                            $this->xml_encoding = strtoupper($enc);
372
+                        } else {
373
+                            $this->xml_encoding = 'US-ASCII';
374
+                        }
375
+                    } else {
376
+                        // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
377
+                        $this->xml_encoding = 'ISO-8859-1';
378
+                    }
379
+                }
380
+                $this->headers[$k] = $v;
381
+                $this->request .= "$k: $v\r\n";
382
+                $this->debug("$k: $v");
383
+            }
384
+        } elseif (is_array($HTTP_SERVER_VARS)) {
385
+            $this->debug("In parse_http_headers, use HTTP_SERVER_VARS");
386
+            foreach ($HTTP_SERVER_VARS as $k => $v) {
387
+                if (substr($k, 0, 5) == 'HTTP_') {
388
+                    $k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5)))); 	                                         $k = strtolower(substr($k, 5));
389
+                } else {
390
+                    $k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k))); 	                                         $k = strtolower($k);
391
+                }
392
+                if ($k == 'soapaction') {
393
+                    // get SOAPAction header
394
+                    $k = 'SOAPAction';
395
+                    $v = str_replace('"', '', $v);
396
+                    $v = str_replace('\\', '', $v);
397
+                    $this->SOAPAction = $v;
398
+                } else if ($k == 'content-type') {
399
+                    // get the character encoding of the incoming request
400
+                    if (strpos($v, '=')) {
401
+                        $enc = substr(strstr($v, '='), 1);
402
+                        $enc = str_replace('"', '', $enc);
403
+                        $enc = str_replace('\\', '', $enc);
404
+                        if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
405
+                            $this->xml_encoding = strtoupper($enc);
406
+                        } else {
407
+                            $this->xml_encoding = 'US-ASCII';
408
+                        }
409
+                    } else {
410
+                        // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
411
+                        $this->xml_encoding = 'ISO-8859-1';
412
+                    }
413
+                }
414
+                $this->headers[$k] = $v;
415
+                $this->request .= "$k: $v\r\n";
416
+                $this->debug("$k: $v");
417
+            }
418
+        } else {
419
+            $this->debug("In parse_http_headers, HTTP headers not accessible");
420
+            $this->setError("HTTP headers not accessible");
421
+        }
422
+    }
423 423
 
424
-	/**
425
-	* parses a request
426
-	*
427
-	* The following fields are set by this function (when successful)
428
-	*
429
-	* headers
430
-	* request
431
-	* xml_encoding
432
-	* SOAPAction
433
-	* request
434
-	* requestSOAP
435
-	* methodURI
436
-	* methodname
437
-	* methodparams
438
-	* requestHeaders
439
-	* document
440
-	*
441
-	* This sets the fault field on error
442
-	*
443
-	* @param    string $data XML string
444
-	* @access   private
445
-	*/
446
-	function parse_request($data='') {
447
-		$this->debug('entering parse_request()');
448
-		$this->parse_http_headers();
449
-		$this->debug('got character encoding: '.$this->xml_encoding);
450
-		// uncompress if necessary
451
-		if (isset($this->headers['content-encoding']) && $this->headers['content-encoding'] != '') {
452
-			$this->debug('got content encoding: ' . $this->headers['content-encoding']);
453
-			if ($this->headers['content-encoding'] == 'deflate' || $this->headers['content-encoding'] == 'gzip') {
454
-		    	// if decoding works, use it. else assume data wasn't gzencoded
455
-				if (function_exists('gzuncompress')) {
456
-					if ($this->headers['content-encoding'] == 'deflate' && $degzdata = @gzuncompress($data)) {
457
-						$data = $degzdata;
458
-					} elseif ($this->headers['content-encoding'] == 'gzip' && $degzdata = gzinflate(substr($data, 10))) {
459
-						$data = $degzdata;
460
-					} else {
461
-						$this->fault('SOAP-ENV:Client', 'Errors occurred when trying to decode the data');
462
-						return;
463
-					}
464
-				} else {
465
-					$this->fault('SOAP-ENV:Client', 'This Server does not support compressed data');
466
-					return;
467
-				}
468
-			}
469
-		}
470
-		$this->request .= "\r\n".$data;
471
-		$data = $this->parseRequest($this->headers, $data);
472
-		$this->requestSOAP = $data;
473
-		$this->debug('leaving parse_request');
474
-	}
424
+    /**
425
+     * parses a request
426
+     *
427
+     * The following fields are set by this function (when successful)
428
+     *
429
+     * headers
430
+     * request
431
+     * xml_encoding
432
+     * SOAPAction
433
+     * request
434
+     * requestSOAP
435
+     * methodURI
436
+     * methodname
437
+     * methodparams
438
+     * requestHeaders
439
+     * document
440
+     *
441
+     * This sets the fault field on error
442
+     *
443
+     * @param    string $data XML string
444
+     * @access   private
445
+     */
446
+    function parse_request($data='') {
447
+        $this->debug('entering parse_request()');
448
+        $this->parse_http_headers();
449
+        $this->debug('got character encoding: '.$this->xml_encoding);
450
+        // uncompress if necessary
451
+        if (isset($this->headers['content-encoding']) && $this->headers['content-encoding'] != '') {
452
+            $this->debug('got content encoding: ' . $this->headers['content-encoding']);
453
+            if ($this->headers['content-encoding'] == 'deflate' || $this->headers['content-encoding'] == 'gzip') {
454
+                // if decoding works, use it. else assume data wasn't gzencoded
455
+                if (function_exists('gzuncompress')) {
456
+                    if ($this->headers['content-encoding'] == 'deflate' && $degzdata = @gzuncompress($data)) {
457
+                        $data = $degzdata;
458
+                    } elseif ($this->headers['content-encoding'] == 'gzip' && $degzdata = gzinflate(substr($data, 10))) {
459
+                        $data = $degzdata;
460
+                    } else {
461
+                        $this->fault('SOAP-ENV:Client', 'Errors occurred when trying to decode the data');
462
+                        return;
463
+                    }
464
+                } else {
465
+                    $this->fault('SOAP-ENV:Client', 'This Server does not support compressed data');
466
+                    return;
467
+                }
468
+            }
469
+        }
470
+        $this->request .= "\r\n".$data;
471
+        $data = $this->parseRequest($this->headers, $data);
472
+        $this->requestSOAP = $data;
473
+        $this->debug('leaving parse_request');
474
+    }
475 475
 
476
-	/**
477
-	* invokes a PHP function for the requested SOAP method
478
-	*
479
-	* The following fields are set by this function (when successful)
480
-	*
481
-	* methodreturn
482
-	*
483
-	* Note that the PHP function that is called may also set the following
484
-	* fields to affect the response sent to the client
485
-	*
486
-	* responseHeaders
487
-	* outgoing_headers
488
-	*
489
-	* This sets the fault field on error
490
-	*
491
-	* @access   private
492
-	*/
493
-	function invoke_method() {
494
-		$this->debug('in invoke_method, methodname=' . $this->methodname . ' methodURI=' . $this->methodURI . ' SOAPAction=' . $this->SOAPAction);
476
+    /**
477
+     * invokes a PHP function for the requested SOAP method
478
+     *
479
+     * The following fields are set by this function (when successful)
480
+     *
481
+     * methodreturn
482
+     *
483
+     * Note that the PHP function that is called may also set the following
484
+     * fields to affect the response sent to the client
485
+     *
486
+     * responseHeaders
487
+     * outgoing_headers
488
+     *
489
+     * This sets the fault field on error
490
+     *
491
+     * @access   private
492
+     */
493
+    function invoke_method() {
494
+        $this->debug('in invoke_method, methodname=' . $this->methodname . ' methodURI=' . $this->methodURI . ' SOAPAction=' . $this->SOAPAction);
495 495
 
496
-		//
497
-		// if you are debugging in this area of the code, your service uses a class to implement methods,
498
-		// you use SOAP RPC, and the client is .NET, please be aware of the following...
499
-		// when the .NET wsdl.exe utility generates a proxy, it will remove the '.' or '..' from the
500
-		// method name.  that is fine for naming the .NET methods.  it is not fine for properly constructing
501
-		// the XML request and reading the XML response.  you need to add the RequestElementName and
502
-		// ResponseElementName to the System.Web.Services.Protocols.SoapRpcMethodAttribute that wsdl.exe
503
-		// generates for the method.  these parameters are used to specify the correct XML element names
504
-		// for .NET to use, i.e. the names with the '.' in them.
505
-		//
506
-		$orig_methodname = $this->methodname;
507
-		if ($this->wsdl) {
508
-			if ($this->opData = $this->wsdl->getOperationData($this->methodname)) {
509
-				$this->debug('in invoke_method, found WSDL operation=' . $this->methodname);
510
-				$this->appendDebug('opData=' . $this->varDump($this->opData));
511
-			} elseif ($this->opData = $this->wsdl->getOperationDataForSoapAction($this->SOAPAction)) {
512
-				// Note: hopefully this case will only be used for doc/lit, since rpc services should have wrapper element
513
-				$this->debug('in invoke_method, found WSDL soapAction=' . $this->SOAPAction . ' for operation=' . $this->opData['name']);
514
-				$this->appendDebug('opData=' . $this->varDump($this->opData));
515
-				$this->methodname = $this->opData['name'];
516
-			} else {
517
-				$this->debug('in invoke_method, no WSDL for operation=' . $this->methodname);
518
-				$this->fault('SOAP-ENV:Client', "Operation '" . $this->methodname . "' is not defined in the WSDL for this service");
519
-				return;
520
-			}
521
-		} else {
522
-			$this->debug('in invoke_method, no WSDL to validate method');
523
-		}
496
+        //
497
+        // if you are debugging in this area of the code, your service uses a class to implement methods,
498
+        // you use SOAP RPC, and the client is .NET, please be aware of the following...
499
+        // when the .NET wsdl.exe utility generates a proxy, it will remove the '.' or '..' from the
500
+        // method name.  that is fine for naming the .NET methods.  it is not fine for properly constructing
501
+        // the XML request and reading the XML response.  you need to add the RequestElementName and
502
+        // ResponseElementName to the System.Web.Services.Protocols.SoapRpcMethodAttribute that wsdl.exe
503
+        // generates for the method.  these parameters are used to specify the correct XML element names
504
+        // for .NET to use, i.e. the names with the '.' in them.
505
+        //
506
+        $orig_methodname = $this->methodname;
507
+        if ($this->wsdl) {
508
+            if ($this->opData = $this->wsdl->getOperationData($this->methodname)) {
509
+                $this->debug('in invoke_method, found WSDL operation=' . $this->methodname);
510
+                $this->appendDebug('opData=' . $this->varDump($this->opData));
511
+            } elseif ($this->opData = $this->wsdl->getOperationDataForSoapAction($this->SOAPAction)) {
512
+                // Note: hopefully this case will only be used for doc/lit, since rpc services should have wrapper element
513
+                $this->debug('in invoke_method, found WSDL soapAction=' . $this->SOAPAction . ' for operation=' . $this->opData['name']);
514
+                $this->appendDebug('opData=' . $this->varDump($this->opData));
515
+                $this->methodname = $this->opData['name'];
516
+            } else {
517
+                $this->debug('in invoke_method, no WSDL for operation=' . $this->methodname);
518
+                $this->fault('SOAP-ENV:Client', "Operation '" . $this->methodname . "' is not defined in the WSDL for this service");
519
+                return;
520
+            }
521
+        } else {
522
+            $this->debug('in invoke_method, no WSDL to validate method');
523
+        }
524 524
 
525
-		// if a . is present in $this->methodname, we see if there is a class in scope,
526
-		// which could be referred to. We will also distinguish between two deliminators,
527
-		// to allow methods to be called a the class or an instance
528
-		if (strpos($this->methodname, '..') > 0) {
529
-			$delim = '..';
530
-		} else if (strpos($this->methodname, '.') > 0) {
531
-			$delim = '.';
532
-		} else {
533
-			$delim = '';
534
-		}
535
-		$this->debug("in invoke_method, delim=$delim");
525
+        // if a . is present in $this->methodname, we see if there is a class in scope,
526
+        // which could be referred to. We will also distinguish between two deliminators,
527
+        // to allow methods to be called a the class or an instance
528
+        if (strpos($this->methodname, '..') > 0) {
529
+            $delim = '..';
530
+        } else if (strpos($this->methodname, '.') > 0) {
531
+            $delim = '.';
532
+        } else {
533
+            $delim = '';
534
+        }
535
+        $this->debug("in invoke_method, delim=$delim");
536 536
 
537
-		$class = '';
538
-		$method = '';
539
-		if (strlen($delim) > 0 && substr_count($this->methodname, $delim) == 1) {
540
-			$try_class = substr($this->methodname, 0, strpos($this->methodname, $delim));
541
-			if (class_exists($try_class)) {
542
-				// get the class and method name
543
-				$class = $try_class;
544
-				$method = substr($this->methodname, strpos($this->methodname, $delim) + strlen($delim));
545
-				$this->debug("in invoke_method, class=$class method=$method delim=$delim");
546
-			} else {
547
-				$this->debug("in invoke_method, class=$try_class not found");
548
-			}
549
-		} else {
550
-			$try_class = '';
551
-			$this->debug("in invoke_method, no class to try");
552
-		}
537
+        $class = '';
538
+        $method = '';
539
+        if (strlen($delim) > 0 && substr_count($this->methodname, $delim) == 1) {
540
+            $try_class = substr($this->methodname, 0, strpos($this->methodname, $delim));
541
+            if (class_exists($try_class)) {
542
+                // get the class and method name
543
+                $class = $try_class;
544
+                $method = substr($this->methodname, strpos($this->methodname, $delim) + strlen($delim));
545
+                $this->debug("in invoke_method, class=$class method=$method delim=$delim");
546
+            } else {
547
+                $this->debug("in invoke_method, class=$try_class not found");
548
+            }
549
+        } else {
550
+            $try_class = '';
551
+            $this->debug("in invoke_method, no class to try");
552
+        }
553 553
 
554
-		// does method exist?
555
-		if ($class == '') {
556
-			if (!function_exists($this->methodname)) {
557
-				$this->debug("in invoke_method, function '$this->methodname' not found!");
558
-				$this->result = 'fault: method not found';
559
-				$this->fault('SOAP-ENV:Client',"method '$this->methodname'('$orig_methodname') not defined in service('$try_class' '$delim')");
560
-				return;
561
-			}
562
-		} else {
563
-			$method_to_compare = (substr(phpversion(), 0, 2) == '4.') ? strtolower($method) : $method;
564
-			if (!in_array($method_to_compare, get_class_methods($class))) {
565
-				$this->debug("in invoke_method, method '$this->methodname' not found in class '$class'!");
566
-				$this->result = 'fault: method not found';
567
-				$this->fault('SOAP-ENV:Client',"method '$this->methodname'/'$method_to_compare'('$orig_methodname') not defined in service/'$class'('$try_class' '$delim')");
568
-				return;
569
-			}
570
-		}
554
+        // does method exist?
555
+        if ($class == '') {
556
+            if (!function_exists($this->methodname)) {
557
+                $this->debug("in invoke_method, function '$this->methodname' not found!");
558
+                $this->result = 'fault: method not found';
559
+                $this->fault('SOAP-ENV:Client',"method '$this->methodname'('$orig_methodname') not defined in service('$try_class' '$delim')");
560
+                return;
561
+            }
562
+        } else {
563
+            $method_to_compare = (substr(phpversion(), 0, 2) == '4.') ? strtolower($method) : $method;
564
+            if (!in_array($method_to_compare, get_class_methods($class))) {
565
+                $this->debug("in invoke_method, method '$this->methodname' not found in class '$class'!");
566
+                $this->result = 'fault: method not found';
567
+                $this->fault('SOAP-ENV:Client',"method '$this->methodname'/'$method_to_compare'('$orig_methodname') not defined in service/'$class'('$try_class' '$delim')");
568
+                return;
569
+            }
570
+        }
571 571
 
572
-		// evaluate message, getting back parameters
573
-		// verify that request parameters match the method's signature
574
-		if(! $this->verify_method($this->methodname,$this->methodparams)){
575
-			// debug
576
-			$this->debug('ERROR: request not verified against method signature');
577
-			$this->result = 'fault: request failed validation against method signature';
578
-			// return fault
579
-			$this->fault('SOAP-ENV:Client',"Operation '$this->methodname' not defined in service.");
580
-			return;
581
-		}
572
+        // evaluate message, getting back parameters
573
+        // verify that request parameters match the method's signature
574
+        if(! $this->verify_method($this->methodname,$this->methodparams)){
575
+            // debug
576
+            $this->debug('ERROR: request not verified against method signature');
577
+            $this->result = 'fault: request failed validation against method signature';
578
+            // return fault
579
+            $this->fault('SOAP-ENV:Client',"Operation '$this->methodname' not defined in service.");
580
+            return;
581
+        }
582 582
 
583
-		// if there are parameters to pass
584
-		$this->debug('in invoke_method, params:');
585
-		$this->appendDebug($this->varDump($this->methodparams));
586
-		$this->debug("in invoke_method, calling '$this->methodname'");
587
-		if (!function_exists('call_user_func_array')) {
588
-			if ($class == '') {
589
-				$this->debug('in invoke_method, calling function using eval()');
590
-				$funcCall = "\$this->methodreturn = $this->methodname(";
591
-			} else {
592
-				if ($delim == '..') {
593
-					$this->debug('in invoke_method, calling class method using eval()');
594
-					$funcCall = "\$this->methodreturn = ".$class."::".$method."(";
595
-				} else {
596
-					$this->debug('in invoke_method, calling instance method using eval()');
597
-					// generate unique instance name
598
-					$instname = "\$inst_".time();
599
-					$funcCall = $instname." = new ".$class."(); ";
600
-					$funcCall .= "\$this->methodreturn = ".$instname."->".$method."(";
601
-				}
602
-			}
603
-			if ($this->methodparams) {
604
-				foreach ($this->methodparams as $param) {
605
-					if (is_array($param) || is_object($param)) {
606
-						$this->fault('SOAP-ENV:Client', 'NuSOAP does not handle complexType parameters correctly when using eval; call_user_func_array must be available');
607
-						return;
608
-					}
609
-					$funcCall .= "\"$param\",";
610
-				}
611
-				$funcCall = substr($funcCall, 0, -1);
612
-			}
613
-			$funcCall .= ');';
614
-			$this->debug('in invoke_method, function call: '.$funcCall);
615
-			@eval($funcCall);
616
-		} else {
617
-			if ($class == '') {
618
-				$this->debug('in invoke_method, calling function using call_user_func_array()');
619
-				$call_arg = "$this->methodname";	// straight assignment changes $this->methodname to lower case after call_user_func_array()
620
-			} elseif ($delim == '..') {
621
-				$this->debug('in invoke_method, calling class method using call_user_func_array()');
622
-				$call_arg = array ($class, $method);
623
-			} else {
624
-				$this->debug('in invoke_method, calling instance method using call_user_func_array()');
625
-				$instance = new $class ();
626
-				$call_arg = array(&$instance, $method);
627
-			}
628
-			if (is_array($this->methodparams)) {
629
-				$this->methodreturn = call_user_func_array($call_arg, array_values($this->methodparams));
630
-			} else {
631
-				$this->methodreturn = call_user_func_array($call_arg, array());
632
-			}
633
-		}
583
+        // if there are parameters to pass
584
+        $this->debug('in invoke_method, params:');
585
+        $this->appendDebug($this->varDump($this->methodparams));
586
+        $this->debug("in invoke_method, calling '$this->methodname'");
587
+        if (!function_exists('call_user_func_array')) {
588
+            if ($class == '') {
589
+                $this->debug('in invoke_method, calling function using eval()');
590
+                $funcCall = "\$this->methodreturn = $this->methodname(";
591
+            } else {
592
+                if ($delim == '..') {
593
+                    $this->debug('in invoke_method, calling class method using eval()');
594
+                    $funcCall = "\$this->methodreturn = ".$class."::".$method."(";
595
+                } else {
596
+                    $this->debug('in invoke_method, calling instance method using eval()');
597
+                    // generate unique instance name
598
+                    $instname = "\$inst_".time();
599
+                    $funcCall = $instname." = new ".$class."(); ";
600
+                    $funcCall .= "\$this->methodreturn = ".$instname."->".$method."(";
601
+                }
602
+            }
603
+            if ($this->methodparams) {
604
+                foreach ($this->methodparams as $param) {
605
+                    if (is_array($param) || is_object($param)) {
606
+                        $this->fault('SOAP-ENV:Client', 'NuSOAP does not handle complexType parameters correctly when using eval; call_user_func_array must be available');
607
+                        return;
608
+                    }
609
+                    $funcCall .= "\"$param\",";
610
+                }
611
+                $funcCall = substr($funcCall, 0, -1);
612
+            }
613
+            $funcCall .= ');';
614
+            $this->debug('in invoke_method, function call: '.$funcCall);
615
+            @eval($funcCall);
616
+        } else {
617
+            if ($class == '') {
618
+                $this->debug('in invoke_method, calling function using call_user_func_array()');
619
+                $call_arg = "$this->methodname";	// straight assignment changes $this->methodname to lower case after call_user_func_array()
620
+            } elseif ($delim == '..') {
621
+                $this->debug('in invoke_method, calling class method using call_user_func_array()');
622
+                $call_arg = array ($class, $method);
623
+            } else {
624
+                $this->debug('in invoke_method, calling instance method using call_user_func_array()');
625
+                $instance = new $class ();
626
+                $call_arg = array(&$instance, $method);
627
+            }
628
+            if (is_array($this->methodparams)) {
629
+                $this->methodreturn = call_user_func_array($call_arg, array_values($this->methodparams));
630
+            } else {
631
+                $this->methodreturn = call_user_func_array($call_arg, array());
632
+            }
633
+        }
634 634
         $this->debug('in invoke_method, methodreturn:');
635 635
         $this->appendDebug($this->varDump($this->methodreturn));
636
-		$this->debug("in invoke_method, called method $this->methodname, received data of type ".gettype($this->methodreturn));
637
-	}
636
+        $this->debug("in invoke_method, called method $this->methodname, received data of type ".gettype($this->methodreturn));
637
+    }
638 638
 
639
-	/**
640
-	* serializes the return value from a PHP function into a full SOAP Envelope
641
-	*
642
-	* The following fields are set by this function (when successful)
643
-	*
644
-	* responseSOAP
645
-	*
646
-	* This sets the fault field on error
647
-	*
648
-	* @access   private
649
-	*/
650
-	function serialize_return() {
651
-		$this->debug('Entering serialize_return methodname: ' . $this->methodname . ' methodURI: ' . $this->methodURI);
652
-		// if fault
653
-		if (isset($this->methodreturn) && is_object($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {
654
-			$this->debug('got a fault object from method');
655
-			$this->fault = $this->methodreturn;
656
-			return;
657
-		} elseif ($this->methodreturnisliteralxml) {
658
-			$return_val = $this->methodreturn;
659
-		// returned value(s)
660
-		} else {
661
-			$this->debug('got a(n) '.gettype($this->methodreturn).' from method');
662
-			$this->debug('serializing return value');
663
-			if($this->wsdl){
664
-				$opParams = "";
665
-				if (sizeof($this->opData['output']['parts']) > 1) {
666
-					$this->debug('more than one output part, so use the method return unchanged');
667
-			    	$opParams = $this->methodreturn;
668
-			    } elseif (sizeof($this->opData['output']['parts']) == 1) {
669
-					$this->debug('exactly one output part, so wrap the method return in a simple array');
670
-					// TODO: verify that it is not already wrapped!
671
-			    	//foreach ($this->opData['output']['parts'] as $name => $type) {
672
-					//	$this->debug('wrap in element named ' . $name);
673
-			    	//}
674
-			    	$opParams = array($this->methodreturn);
675
-			    }
676
-			    $return_val = $this->wsdl->serializeRPCParameters($this->methodname,'output',$opParams);
677
-			    $this->appendDebug($this->wsdl->getDebug());
678
-			    $this->wsdl->clearDebug();
679
-				if($errstr = $this->wsdl->getError()){
680
-					$this->debug('got wsdl error: '.$errstr);
681
-					$this->fault('SOAP-ENV:Server', 'unable to serialize result');
682
-					return;
683
-				}
684
-			} else {
685
-				if (isset($this->methodreturn)) {
686
-					$return_val = $this->serialize_val($this->methodreturn, 'return');
687
-				} else {
688
-					$return_val = '';
689
-					$this->debug('in absence of WSDL, assume void return for backward compatibility');
690
-				}
691
-			}
692
-		}
693
-		$this->debug('return value:');
694
-		$this->appendDebug($this->varDump($return_val));
639
+    /**
640
+     * serializes the return value from a PHP function into a full SOAP Envelope
641
+     *
642
+     * The following fields are set by this function (when successful)
643
+     *
644
+     * responseSOAP
645
+     *
646
+     * This sets the fault field on error
647
+     *
648
+     * @access   private
649
+     */
650
+    function serialize_return() {
651
+        $this->debug('Entering serialize_return methodname: ' . $this->methodname . ' methodURI: ' . $this->methodURI);
652
+        // if fault
653
+        if (isset($this->methodreturn) && is_object($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {
654
+            $this->debug('got a fault object from method');
655
+            $this->fault = $this->methodreturn;
656
+            return;
657
+        } elseif ($this->methodreturnisliteralxml) {
658
+            $return_val = $this->methodreturn;
659
+        // returned value(s)
660
+        } else {
661
+            $this->debug('got a(n) '.gettype($this->methodreturn).' from method');
662
+            $this->debug('serializing return value');
663
+            if($this->wsdl){
664
+                $opParams = "";
665
+                if (sizeof($this->opData['output']['parts']) > 1) {
666
+                    $this->debug('more than one output part, so use the method return unchanged');
667
+                    $opParams = $this->methodreturn;
668
+                } elseif (sizeof($this->opData['output']['parts']) == 1) {
669
+                    $this->debug('exactly one output part, so wrap the method return in a simple array');
670
+                    // TODO: verify that it is not already wrapped!
671
+                    //foreach ($this->opData['output']['parts'] as $name => $type) {
672
+                    //	$this->debug('wrap in element named ' . $name);
673
+                    //}
674
+                    $opParams = array($this->methodreturn);
675
+                }
676
+                $return_val = $this->wsdl->serializeRPCParameters($this->methodname,'output',$opParams);
677
+                $this->appendDebug($this->wsdl->getDebug());
678
+                $this->wsdl->clearDebug();
679
+                if($errstr = $this->wsdl->getError()){
680
+                    $this->debug('got wsdl error: '.$errstr);
681
+                    $this->fault('SOAP-ENV:Server', 'unable to serialize result');
682
+                    return;
683
+                }
684
+            } else {
685
+                if (isset($this->methodreturn)) {
686
+                    $return_val = $this->serialize_val($this->methodreturn, 'return');
687
+                } else {
688
+                    $return_val = '';
689
+                    $this->debug('in absence of WSDL, assume void return for backward compatibility');
690
+                }
691
+            }
692
+        }
693
+        $this->debug('return value:');
694
+        $this->appendDebug($this->varDump($return_val));
695 695
 
696
-		$this->debug('serializing response');
697
-		if ($this->wsdl) {
698
-			$this->debug('have WSDL for serialization: style is ' . $this->opData['style']);
699
-			if ($this->opData['style'] == 'rpc') {
700
-				$this->debug('style is rpc for serialization: use is ' . $this->opData['output']['use']);
701
-				if ($this->opData['output']['use'] == 'literal') {
702
-					// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
703
-					if ($this->methodURI) {
704
-						$payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
705
-					} else {
706
-						$payload = '<'.$this->methodname.'Response>'.$return_val.'</'.$this->methodname.'Response>';
707
-					}
708
-				} else {
709
-					if ($this->methodURI) {
710
-						$payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
711
-					} else {
712
-						$payload = '<'.$this->methodname.'Response>'.$return_val.'</'.$this->methodname.'Response>';
713
-					}
714
-				}
715
-			} else {
716
-				$this->debug('style is not rpc for serialization: assume document');
717
-				$payload = $return_val;
718
-			}
719
-		} else {
720
-			$this->debug('do not have WSDL for serialization: assume rpc/encoded');
721
-			$payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
722
-		}
723
-		$this->result = 'successful';
724
-		if($this->wsdl){
725
-			//if($this->debug_flag){
726
-            	$this->appendDebug($this->wsdl->getDebug());
696
+        $this->debug('serializing response');
697
+        if ($this->wsdl) {
698
+            $this->debug('have WSDL for serialization: style is ' . $this->opData['style']);
699
+            if ($this->opData['style'] == 'rpc') {
700
+                $this->debug('style is rpc for serialization: use is ' . $this->opData['output']['use']);
701
+                if ($this->opData['output']['use'] == 'literal') {
702
+                    // http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
703
+                    if ($this->methodURI) {
704
+                        $payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
705
+                    } else {
706
+                        $payload = '<'.$this->methodname.'Response>'.$return_val.'</'.$this->methodname.'Response>';
707
+                    }
708
+                } else {
709
+                    if ($this->methodURI) {
710
+                        $payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
711
+                    } else {
712
+                        $payload = '<'.$this->methodname.'Response>'.$return_val.'</'.$this->methodname.'Response>';
713
+                    }
714
+                }
715
+            } else {
716
+                $this->debug('style is not rpc for serialization: assume document');
717
+                $payload = $return_val;
718
+            }
719
+        } else {
720
+            $this->debug('do not have WSDL for serialization: assume rpc/encoded');
721
+            $payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
722
+        }
723
+        $this->result = 'successful';
724
+        if($this->wsdl){
725
+            //if($this->debug_flag){
726
+                $this->appendDebug($this->wsdl->getDebug());
727 727
             //	}
728
-			if (isset($this->opData['output']['encodingStyle'])) {
729
-				$encodingStyle = $this->opData['output']['encodingStyle'];
730
-			} else {
731
-				$encodingStyle = '';
732
-			}
733
-			// Added: In case we use a WSDL, return a serialized env. WITH the usedNamespaces.
734
-			$this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders,$this->wsdl->usedNamespaces,$this->opData['style'],$this->opData['output']['use'],$encodingStyle);
735
-		} else {
736
-			$this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders);
737
-		}
738
-		$this->debug("Leaving serialize_return");
739
-	}
728
+            if (isset($this->opData['output']['encodingStyle'])) {
729
+                $encodingStyle = $this->opData['output']['encodingStyle'];
730
+            } else {
731
+                $encodingStyle = '';
732
+            }
733
+            // Added: In case we use a WSDL, return a serialized env. WITH the usedNamespaces.
734
+            $this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders,$this->wsdl->usedNamespaces,$this->opData['style'],$this->opData['output']['use'],$encodingStyle);
735
+        } else {
736
+            $this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders);
737
+        }
738
+        $this->debug("Leaving serialize_return");
739
+    }
740 740
 
741
-	/**
742
-	* sends an HTTP response
743
-	*
744
-	* The following fields are set by this function (when successful)
745
-	*
746
-	* outgoing_headers
747
-	* response
748
-	*
749
-	* @access   private
750
-	*/
751
-	function send_response() {
752
-		$this->debug('Enter send_response');
753
-		if ($this->fault) {
754
-			$payload = $this->fault->serialize();
755
-			$this->outgoing_headers[] = "HTTP/1.0 500 Internal Server Error";
756
-			$this->outgoing_headers[] = "Status: 500 Internal Server Error";
757
-		} else {
758
-			$payload = $this->responseSOAP;
759
-			// Some combinations of PHP+Web server allow the Status
760
-			// to come through as a header.  Since OK is the default
761
-			// just do nothing.
762
-			// $this->outgoing_headers[] = "HTTP/1.0 200 OK";
763
-			// $this->outgoing_headers[] = "Status: 200 OK";
764
-		}
741
+    /**
742
+     * sends an HTTP response
743
+     *
744
+     * The following fields are set by this function (when successful)
745
+     *
746
+     * outgoing_headers
747
+     * response
748
+     *
749
+     * @access   private
750
+     */
751
+    function send_response() {
752
+        $this->debug('Enter send_response');
753
+        if ($this->fault) {
754
+            $payload = $this->fault->serialize();
755
+            $this->outgoing_headers[] = "HTTP/1.0 500 Internal Server Error";
756
+            $this->outgoing_headers[] = "Status: 500 Internal Server Error";
757
+        } else {
758
+            $payload = $this->responseSOAP;
759
+            // Some combinations of PHP+Web server allow the Status
760
+            // to come through as a header.  Since OK is the default
761
+            // just do nothing.
762
+            // $this->outgoing_headers[] = "HTTP/1.0 200 OK";
763
+            // $this->outgoing_headers[] = "Status: 200 OK";
764
+        }
765 765
         // add debug data if in debug mode
766
-		if(isset($this->debug_flag) && $this->debug_flag){
767
-        	$payload .= $this->getDebugAsXMLComment();
766
+        if(isset($this->debug_flag) && $this->debug_flag){
767
+            $payload .= $this->getDebugAsXMLComment();
768
+        }
769
+        $this->outgoing_headers[] = "Server: $this->title Server v$this->version";
770
+        preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
771
+        $this->outgoing_headers[] = "X-SOAP-Server: $this->title/$this->version (".$rev[1].")";
772
+        // Let the Web server decide about this
773
+        //$this->outgoing_headers[] = "Connection: Close\r\n";
774
+        $payload = $this->getHTTPBody($payload);
775
+        $type = $this->getHTTPContentType();
776
+        $charset = $this->getHTTPContentTypeCharset();
777
+        $this->outgoing_headers[] = "Content-Type: $type" . ($charset ? '; charset=' . $charset : '');
778
+        //begin code to compress payload - by John
779
+        // NOTE: there is no way to know whether the Web server will also compress
780
+        // this data.
781
+        if (strlen($payload) > 1024 && isset($this->headers) && isset($this->headers['accept-encoding'])) {
782
+            if (strstr($this->headers['accept-encoding'], 'gzip')) {
783
+                if (function_exists('gzencode')) {
784
+                    if (isset($this->debug_flag) && $this->debug_flag) {
785
+                        $payload .= "<!-- Content being gzipped -->";
786
+                    }
787
+                    $this->outgoing_headers[] = "Content-Encoding: gzip";
788
+                    $payload = gzencode($payload);
789
+                } else {
790
+                    if (isset($this->debug_flag) && $this->debug_flag) {
791
+                        $payload .= "<!-- Content will not be gzipped: no gzencode -->";
792
+                    }
793
+                }
794
+            } elseif (strstr($this->headers['accept-encoding'], 'deflate')) {
795
+                // Note: MSIE requires gzdeflate output (no Zlib header and checksum),
796
+                // instead of gzcompress output,
797
+                // which conflicts with HTTP 1.1 spec (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5)
798
+                if (function_exists('gzdeflate')) {
799
+                    if (isset($this->debug_flag) && $this->debug_flag) {
800
+                        $payload .= "<!-- Content being deflated -->";
801
+                    }
802
+                    $this->outgoing_headers[] = "Content-Encoding: deflate";
803
+                    $payload = gzdeflate($payload);
804
+                } else {
805
+                    if (isset($this->debug_flag) && $this->debug_flag) {
806
+                        $payload .= "<!-- Content will not be deflated: no gzcompress -->";
807
+                    }
808
+                }
809
+            }
768 810
         }
769
-		$this->outgoing_headers[] = "Server: $this->title Server v$this->version";
770
-		preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
771
-		$this->outgoing_headers[] = "X-SOAP-Server: $this->title/$this->version (".$rev[1].")";
772
-		// Let the Web server decide about this
773
-		//$this->outgoing_headers[] = "Connection: Close\r\n";
774
-		$payload = $this->getHTTPBody($payload);
775
-		$type = $this->getHTTPContentType();
776
-		$charset = $this->getHTTPContentTypeCharset();
777
-		$this->outgoing_headers[] = "Content-Type: $type" . ($charset ? '; charset=' . $charset : '');
778
-		//begin code to compress payload - by John
779
-		// NOTE: there is no way to know whether the Web server will also compress
780
-		// this data.
781
-		if (strlen($payload) > 1024 && isset($this->headers) && isset($this->headers['accept-encoding'])) {
782
-			if (strstr($this->headers['accept-encoding'], 'gzip')) {
783
-				if (function_exists('gzencode')) {
784
-					if (isset($this->debug_flag) && $this->debug_flag) {
785
-						$payload .= "<!-- Content being gzipped -->";
786
-					}
787
-					$this->outgoing_headers[] = "Content-Encoding: gzip";
788
-					$payload = gzencode($payload);
789
-				} else {
790
-					if (isset($this->debug_flag) && $this->debug_flag) {
791
-						$payload .= "<!-- Content will not be gzipped: no gzencode -->";
792
-					}
793
-				}
794
-			} elseif (strstr($this->headers['accept-encoding'], 'deflate')) {
795
-				// Note: MSIE requires gzdeflate output (no Zlib header and checksum),
796
-				// instead of gzcompress output,
797
-				// which conflicts with HTTP 1.1 spec (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5)
798
-				if (function_exists('gzdeflate')) {
799
-					if (isset($this->debug_flag) && $this->debug_flag) {
800
-						$payload .= "<!-- Content being deflated -->";
801
-					}
802
-					$this->outgoing_headers[] = "Content-Encoding: deflate";
803
-					$payload = gzdeflate($payload);
804
-				} else {
805
-					if (isset($this->debug_flag) && $this->debug_flag) {
806
-						$payload .= "<!-- Content will not be deflated: no gzcompress -->";
807
-					}
808
-				}
809
-			}
810
-		}
811
-		//end code
812
-		$this->outgoing_headers[] = "Content-Length: ".strlen($payload);
813
-		reset($this->outgoing_headers);
814
-		foreach($this->outgoing_headers as $hdr){
815
-			header($hdr, false);
816
-		}
817
-		print $payload;
818
-		$this->response = join("\r\n",$this->outgoing_headers)."\r\n\r\n".$payload;
819
-	}
811
+        //end code
812
+        $this->outgoing_headers[] = "Content-Length: ".strlen($payload);
813
+        reset($this->outgoing_headers);
814
+        foreach($this->outgoing_headers as $hdr){
815
+            header($hdr, false);
816
+        }
817
+        print $payload;
818
+        $this->response = join("\r\n",$this->outgoing_headers)."\r\n\r\n".$payload;
819
+    }
820 820
 
821
-	/**
822
-	* takes the value that was created by parsing the request
823
-	* and compares to the method's signature, if available.
824
-	*
825
-	* @param	string	$operation	The operation to be invoked
826
-	* @param	array	$request	The array of parameter values
827
-	* @return	boolean	Whether the operation was found
828
-	* @access   private
829
-	*/
830
-	function verify_method($operation,$request){
831
-		if(isset($this->wsdl) && is_object($this->wsdl)){
832
-			if($this->wsdl->getOperationData($operation)){
833
-				return true;
834
-			}
835
-	    } elseif(isset($this->operations[$operation])){
836
-			return true;
837
-		}
838
-		return false;
839
-	}
821
+    /**
822
+     * takes the value that was created by parsing the request
823
+     * and compares to the method's signature, if available.
824
+     *
825
+     * @param	string	$operation	The operation to be invoked
826
+     * @param	array	$request	The array of parameter values
827
+     * @return	boolean	Whether the operation was found
828
+     * @access   private
829
+     */
830
+    function verify_method($operation,$request){
831
+        if(isset($this->wsdl) && is_object($this->wsdl)){
832
+            if($this->wsdl->getOperationData($operation)){
833
+                return true;
834
+            }
835
+        } elseif(isset($this->operations[$operation])){
836
+            return true;
837
+        }
838
+        return false;
839
+    }
840 840
 
841
-	/**
842
-	* processes SOAP message received from client
843
-	*
844
-	* @param	array	$headers	The HTTP headers
845
-	* @param	string	$data		unprocessed request data from client
846
-	* @return	mixed	value of the message, decoded into a PHP type
847
-	* @access   private
848
-	*/
841
+    /**
842
+     * processes SOAP message received from client
843
+     *
844
+     * @param	array	$headers	The HTTP headers
845
+     * @param	string	$data		unprocessed request data from client
846
+     * @return	mixed	value of the message, decoded into a PHP type
847
+     * @access   private
848
+     */
849 849
     function parseRequest($headers, $data) {
850
-		$this->debug('Entering parseRequest() for data of length ' . strlen($data) . ' headers:');
851
-		$this->appendDebug($this->varDump($headers));
852
-    	if (!isset($headers['content-type'])) {
853
-			$this->setError('Request not of type text/xml (no content-type header)');
854
-			return false;
855
-    	}
856
-		if (!strstr($headers['content-type'], 'text/xml')) {
857
-			$this->setError('Request not of type text/xml');
858
-			return false;
859
-		}
860
-		if (strpos($headers['content-type'], '=')) {
861
-			$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
862
-			$this->debug('Got response encoding: ' . $enc);
863
-			if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
864
-				$this->xml_encoding = strtoupper($enc);
865
-			} else {
866
-				$this->xml_encoding = 'US-ASCII';
867
-			}
868
-		} else {
869
-			// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
870
-			$this->xml_encoding = 'ISO-8859-1';
871
-		}
872
-		$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
873
-		// parse response, get soap parser obj
874
-		$parser = new nusoap_parser($data,$this->xml_encoding,'',$this->decode_utf8);
850
+        $this->debug('Entering parseRequest() for data of length ' . strlen($data) . ' headers:');
851
+        $this->appendDebug($this->varDump($headers));
852
+        if (!isset($headers['content-type'])) {
853
+            $this->setError('Request not of type text/xml (no content-type header)');
854
+            return false;
855
+        }
856
+        if (!strstr($headers['content-type'], 'text/xml')) {
857
+            $this->setError('Request not of type text/xml');
858
+            return false;
859
+        }
860
+        if (strpos($headers['content-type'], '=')) {
861
+            $enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
862
+            $this->debug('Got response encoding: ' . $enc);
863
+            if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
864
+                $this->xml_encoding = strtoupper($enc);
865
+            } else {
866
+                $this->xml_encoding = 'US-ASCII';
867
+            }
868
+        } else {
869
+            // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
870
+            $this->xml_encoding = 'ISO-8859-1';
871
+        }
872
+        $this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
873
+        // parse response, get soap parser obj
874
+        $parser = new nusoap_parser($data,$this->xml_encoding,'',$this->decode_utf8);
875 875
 
876
-		// parser debug
877
-		$this->debug("parser debug: \n".$parser->getDebug());
878
-		// if fault occurred during message parsing
879
-		if($err = $parser->getError()){
880
-			$this->result = 'fault: error in msg parsing: '.$err;
881
-			$this->fault('SOAP-ENV:Client',"error in msg parsing:\n".$err);
882
-		// else successfully parsed request into soapval object
883
-		} else {
884
-			// get/set methodname
885
-			$this->methodURI = $parser->root_struct_namespace;
886
-			$this->methodname = $parser->root_struct_name;
887
-			$this->debug('methodname: '.$this->methodname.' methodURI: '.$this->methodURI);
888
-			$this->debug('calling parser->get_soapbody()');
889
-			$this->methodparams = $parser->get_soapbody();
890
-			// get SOAP headers
891
-			$this->requestHeaders = $parser->getHeaders();
892
-			// get SOAP Header
893
-			$this->requestHeader = $parser->get_soapheader();
876
+        // parser debug
877
+        $this->debug("parser debug: \n".$parser->getDebug());
878
+        // if fault occurred during message parsing
879
+        if($err = $parser->getError()){
880
+            $this->result = 'fault: error in msg parsing: '.$err;
881
+            $this->fault('SOAP-ENV:Client',"error in msg parsing:\n".$err);
882
+        // else successfully parsed request into soapval object
883
+        } else {
884
+            // get/set methodname
885
+            $this->methodURI = $parser->root_struct_namespace;
886
+            $this->methodname = $parser->root_struct_name;
887
+            $this->debug('methodname: '.$this->methodname.' methodURI: '.$this->methodURI);
888
+            $this->debug('calling parser->get_soapbody()');
889
+            $this->methodparams = $parser->get_soapbody();
890
+            // get SOAP headers
891
+            $this->requestHeaders = $parser->getHeaders();
892
+            // get SOAP Header
893
+            $this->requestHeader = $parser->get_soapheader();
894 894
             // add document for doclit support
895 895
             $this->document = $parser->document;
896
-		}
897
-	 }
896
+        }
897
+        }
898 898
 
899
-	/**
900
-	* gets the HTTP body for the current response.
901
-	*
902
-	* @param string $soapmsg The SOAP payload
903
-	* @return string The HTTP body, which includes the SOAP payload
904
-	* @access private
905
-	*/
906
-	function getHTTPBody($soapmsg) {
907
-		return $soapmsg;
908
-	}
899
+    /**
900
+     * gets the HTTP body for the current response.
901
+     *
902
+     * @param string $soapmsg The SOAP payload
903
+     * @return string The HTTP body, which includes the SOAP payload
904
+     * @access private
905
+     */
906
+    function getHTTPBody($soapmsg) {
907
+        return $soapmsg;
908
+    }
909 909
 
910
-	/**
911
-	* gets the HTTP content type for the current response.
912
-	*
913
-	* Note: getHTTPBody must be called before this.
914
-	*
915
-	* @return string the HTTP content type for the current response.
916
-	* @access private
917
-	*/
918
-	function getHTTPContentType() {
919
-		return 'text/xml';
920
-	}
910
+    /**
911
+     * gets the HTTP content type for the current response.
912
+     *
913
+     * Note: getHTTPBody must be called before this.
914
+     *
915
+     * @return string the HTTP content type for the current response.
916
+     * @access private
917
+     */
918
+    function getHTTPContentType() {
919
+        return 'text/xml';
920
+    }
921 921
 
922
-	/**
923
-	* gets the HTTP content type charset for the current response.
924
-	* returns false for non-text content types.
925
-	*
926
-	* Note: getHTTPBody must be called before this.
927
-	*
928
-	* @return string the HTTP content type charset for the current response.
929
-	* @access private
930
-	*/
931
-	function getHTTPContentTypeCharset() {
932
-		return $this->soap_defencoding;
933
-	}
922
+    /**
923
+     * gets the HTTP content type charset for the current response.
924
+     * returns false for non-text content types.
925
+     *
926
+     * Note: getHTTPBody must be called before this.
927
+     *
928
+     * @return string the HTTP content type charset for the current response.
929
+     * @access private
930
+     */
931
+    function getHTTPContentTypeCharset() {
932
+        return $this->soap_defencoding;
933
+    }
934 934
 
935
-	/**
936
-	* add a method to the dispatch map (this has been replaced by the register method)
937
-	*
938
-	* @param    string $methodname
939
-	* @param    string $in array of input values
940
-	* @param    string $out array of output values
941
-	* @access   public
942
-	* @deprecated
943
-	*/
944
-	function add_to_map($methodname,$in,$out){
945
-			$this->operations[$methodname] = array('name' => $methodname,'in' => $in,'out' => $out);
946
-	}
935
+    /**
936
+     * add a method to the dispatch map (this has been replaced by the register method)
937
+     *
938
+     * @param    string $methodname
939
+     * @param    string $in array of input values
940
+     * @param    string $out array of output values
941
+     * @access   public
942
+     * @deprecated
943
+     */
944
+    function add_to_map($methodname,$in,$out){
945
+            $this->operations[$methodname] = array('name' => $methodname,'in' => $in,'out' => $out);
946
+    }
947 947
 
948
-	/**
949
-	* register a service function with the server
950
-	*
951
-	* @param    string $name the name of the PHP function, class.method or class..method
952
-	* @param    array $in assoc array of input values: key = param name, value = param type
953
-	* @param    array $out assoc array of output values: key = param name, value = param type
954
-	* @param	mixed $namespace the element namespace for the method or false
955
-	* @param	mixed $soapaction the soapaction for the method or false
956
-	* @param	mixed $style optional (rpc|document) or false Note: when 'document' is specified, parameter and return wrappers are created for you automatically
957
-	* @param	mixed $use optional (encoded|literal) or false
958
-	* @param	string $documentation optional Description to include in WSDL
959
-	* @param	string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
960
-	* @access   public
961
-	*/
962
-	function register($name,$in=array(),$out=array(),$namespace=false,$soapaction=false,$style=false,$use=false,$documentation='',$encodingStyle=''){
963
-		global $HTTP_SERVER_VARS;
948
+    /**
949
+     * register a service function with the server
950
+     *
951
+     * @param    string $name the name of the PHP function, class.method or class..method
952
+     * @param    array $in assoc array of input values: key = param name, value = param type
953
+     * @param    array $out assoc array of output values: key = param name, value = param type
954
+     * @param	mixed $namespace the element namespace for the method or false
955
+     * @param	mixed $soapaction the soapaction for the method or false
956
+     * @param	mixed $style optional (rpc|document) or false Note: when 'document' is specified, parameter and return wrappers are created for you automatically
957
+     * @param	mixed $use optional (encoded|literal) or false
958
+     * @param	string $documentation optional Description to include in WSDL
959
+     * @param	string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
960
+     * @access   public
961
+     */
962
+    function register($name,$in=array(),$out=array(),$namespace=false,$soapaction=false,$style=false,$use=false,$documentation='',$encodingStyle=''){
963
+        global $HTTP_SERVER_VARS;
964 964
 
965
-		if($this->externalWSDLURL){
966
-			die('You cannot bind to an external WSDL file, and register methods outside of it! Please choose either WSDL or no WSDL.');
967
-		}
968
-		if (! $name) {
969
-			die('You must specify a name when you register an operation');
970
-		}
971
-		if (!is_array($in)) {
972
-			die('You must provide an array for operation inputs');
973
-		}
974
-		if (!is_array($out)) {
975
-			die('You must provide an array for operation outputs');
976
-		}
977
-		if(false == $namespace) {
978
-		}
979
-		if(false == $soapaction) {
980
-			if (isset($_SERVER)) {
981
-				$SERVER_NAME = $_SERVER['SERVER_NAME'];
982
-				$SCRIPT_NAME = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
983
-				$HTTPS = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : (isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off');
984
-			} elseif (isset($HTTP_SERVER_VARS)) {
985
-				$SERVER_NAME = $HTTP_SERVER_VARS['SERVER_NAME'];
986
-				$SCRIPT_NAME = isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME'];
987
-				$HTTPS = isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off';
988
-			} else {
989
-				$this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
990
-			}
991
-        	if ($HTTPS == '1' || $HTTPS == 'on') {
992
-        		$SCHEME = 'https';
993
-        	} else {
994
-        		$SCHEME = 'http';
995
-        	}
996
-			$soapaction = "$SCHEME://$SERVER_NAME$SCRIPT_NAME/$name";
997
-		}
998
-		if(false == $style) {
999
-			$style = "rpc";
1000
-		}
1001
-		if(false == $use) {
1002
-			$use = "encoded";
1003
-		}
1004
-		if ($use == 'encoded' && $encodingStyle == '') {
1005
-			$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1006
-		}
965
+        if($this->externalWSDLURL){
966
+            die('You cannot bind to an external WSDL file, and register methods outside of it! Please choose either WSDL or no WSDL.');
967
+        }
968
+        if (! $name) {
969
+            die('You must specify a name when you register an operation');
970
+        }
971
+        if (!is_array($in)) {
972
+            die('You must provide an array for operation inputs');
973
+        }
974
+        if (!is_array($out)) {
975
+            die('You must provide an array for operation outputs');
976
+        }
977
+        if(false == $namespace) {
978
+        }
979
+        if(false == $soapaction) {
980
+            if (isset($_SERVER)) {
981
+                $SERVER_NAME = $_SERVER['SERVER_NAME'];
982
+                $SCRIPT_NAME = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
983
+                $HTTPS = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : (isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off');
984
+            } elseif (isset($HTTP_SERVER_VARS)) {
985
+                $SERVER_NAME = $HTTP_SERVER_VARS['SERVER_NAME'];
986
+                $SCRIPT_NAME = isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME'];
987
+                $HTTPS = isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off';
988
+            } else {
989
+                $this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
990
+            }
991
+            if ($HTTPS == '1' || $HTTPS == 'on') {
992
+                $SCHEME = 'https';
993
+            } else {
994
+                $SCHEME = 'http';
995
+            }
996
+            $soapaction = "$SCHEME://$SERVER_NAME$SCRIPT_NAME/$name";
997
+        }
998
+        if(false == $style) {
999
+            $style = "rpc";
1000
+        }
1001
+        if(false == $use) {
1002
+            $use = "encoded";
1003
+        }
1004
+        if ($use == 'encoded' && $encodingStyle == '') {
1005
+            $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1006
+        }
1007 1007
 
1008
-		$this->operations[$name] = array(
1009
-	    'name' => $name,
1010
-	    'in' => $in,
1011
-	    'out' => $out,
1012
-	    'namespace' => $namespace,
1013
-	    'soapaction' => $soapaction,
1014
-	    'style' => $style);
1008
+        $this->operations[$name] = array(
1009
+        'name' => $name,
1010
+        'in' => $in,
1011
+        'out' => $out,
1012
+        'namespace' => $namespace,
1013
+        'soapaction' => $soapaction,
1014
+        'style' => $style);
1015 1015
         if($this->wsdl){
1016
-        	$this->wsdl->addOperation($name,$in,$out,$namespace,$soapaction,$style,$use,$documentation,$encodingStyle);
1017
-	    }
1018
-		return true;
1019
-	}
1016
+            $this->wsdl->addOperation($name,$in,$out,$namespace,$soapaction,$style,$use,$documentation,$encodingStyle);
1017
+        }
1018
+        return true;
1019
+    }
1020 1020
 
1021
-	/**
1022
-	* Specify a fault to be returned to the client.
1023
-	* This also acts as a flag to the server that a fault has occured.
1024
-	*
1025
-	* @param	string $faultcode
1026
-	* @param	string $faultstring
1027
-	* @param	string $faultactor
1028
-	* @param	string $faultdetail
1029
-	* @access   public
1030
-	*/
1031
-	function fault($faultcode,$faultstring,$faultactor='',$faultdetail=''){
1032
-		if ($faultdetail == '' && $this->debug_flag) {
1033
-			$faultdetail = $this->getDebug();
1034
-		}
1035
-		$this->fault = new nusoap_fault($faultcode,$faultactor,$faultstring,$faultdetail);
1036
-		$this->fault->soap_defencoding = $this->soap_defencoding;
1037
-	}
1021
+    /**
1022
+     * Specify a fault to be returned to the client.
1023
+     * This also acts as a flag to the server that a fault has occured.
1024
+     *
1025
+     * @param	string $faultcode
1026
+     * @param	string $faultstring
1027
+     * @param	string $faultactor
1028
+     * @param	string $faultdetail
1029
+     * @access   public
1030
+     */
1031
+    function fault($faultcode,$faultstring,$faultactor='',$faultdetail=''){
1032
+        if ($faultdetail == '' && $this->debug_flag) {
1033
+            $faultdetail = $this->getDebug();
1034
+        }
1035
+        $this->fault = new nusoap_fault($faultcode,$faultactor,$faultstring,$faultdetail);
1036
+        $this->fault->soap_defencoding = $this->soap_defencoding;
1037
+    }
1038 1038
 
1039 1039
     /**
1040
-    * Sets up wsdl object.
1041
-    * Acts as a flag to enable internal WSDL generation
1042
-    *
1043
-    * @param string $serviceName, name of the service
1044
-    * @param mixed $namespace optional 'tns' service namespace or false
1045
-    * @param mixed $endpoint optional URL of service endpoint or false
1046
-    * @param string $style optional (rpc|document) WSDL style (also specified by operation)
1047
-    * @param string $transport optional SOAP transport
1048
-    * @param mixed $schemaTargetNamespace optional 'types' targetNamespace for service schema or false
1049
-    */
1040
+     * Sets up wsdl object.
1041
+     * Acts as a flag to enable internal WSDL generation
1042
+     *
1043
+     * @param string $serviceName, name of the service
1044
+     * @param mixed $namespace optional 'tns' service namespace or false
1045
+     * @param mixed $endpoint optional URL of service endpoint or false
1046
+     * @param string $style optional (rpc|document) WSDL style (also specified by operation)
1047
+     * @param string $transport optional SOAP transport
1048
+     * @param mixed $schemaTargetNamespace optional 'types' targetNamespace for service schema or false
1049
+     */
1050 1050
     function configureWSDL($serviceName,$namespace = false,$endpoint = false,$style='rpc', $transport = 'http://schemas.xmlsoap.org/soap/http', $schemaTargetNamespace = false)
1051 1051
     {
1052
-    	global $HTTP_SERVER_VARS;
1052
+        global $HTTP_SERVER_VARS;
1053 1053
 
1054
-		if (isset($_SERVER)) {
1055
-			$SERVER_NAME = $_SERVER['SERVER_NAME'];
1056
-			$SERVER_PORT = $_SERVER['SERVER_PORT'];
1057
-			$SCRIPT_NAME = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
1058
-			$HTTPS = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : (isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off');
1059
-		} elseif (isset($HTTP_SERVER_VARS)) {
1060
-			$SERVER_NAME = $HTTP_SERVER_VARS['SERVER_NAME'];
1061
-			$SERVER_PORT = $HTTP_SERVER_VARS['SERVER_PORT'];
1062
-			$SCRIPT_NAME = isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME'];
1063
-			$HTTPS = isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off';
1064
-		} else {
1065
-			$this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
1066
-		}
1067
-		// If server name has port number attached then strip it (else port number gets duplicated in WSDL output) (occurred using lighttpd and FastCGI)
1068
-		$colon = strpos($SERVER_NAME,":");
1069
-		if ($colon) {
1070
-		    $SERVER_NAME = substr($SERVER_NAME, 0, $colon);
1071
-		}
1072
-		if ($SERVER_PORT == 80) {
1073
-			$SERVER_PORT = '';
1074
-		} else {
1075
-			$SERVER_PORT = ':' . $SERVER_PORT;
1076
-		}
1054
+        if (isset($_SERVER)) {
1055
+            $SERVER_NAME = $_SERVER['SERVER_NAME'];
1056
+            $SERVER_PORT = $_SERVER['SERVER_PORT'];
1057
+            $SCRIPT_NAME = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
1058
+            $HTTPS = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : (isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off');
1059
+        } elseif (isset($HTTP_SERVER_VARS)) {
1060
+            $SERVER_NAME = $HTTP_SERVER_VARS['SERVER_NAME'];
1061
+            $SERVER_PORT = $HTTP_SERVER_VARS['SERVER_PORT'];
1062
+            $SCRIPT_NAME = isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME'];
1063
+            $HTTPS = isset($HTTP_SERVER_VARS['HTTPS']) ? $HTTP_SERVER_VARS['HTTPS'] : 'off';
1064
+        } else {
1065
+            $this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
1066
+        }
1067
+        // If server name has port number attached then strip it (else port number gets duplicated in WSDL output) (occurred using lighttpd and FastCGI)
1068
+        $colon = strpos($SERVER_NAME,":");
1069
+        if ($colon) {
1070
+            $SERVER_NAME = substr($SERVER_NAME, 0, $colon);
1071
+        }
1072
+        if ($SERVER_PORT == 80) {
1073
+            $SERVER_PORT = '';
1074
+        } else {
1075
+            $SERVER_PORT = ':' . $SERVER_PORT;
1076
+        }
1077 1077
         if(false == $namespace) {
1078 1078
             $namespace = "http://$SERVER_NAME/soap/$serviceName";
1079 1079
         }
1080 1080
 
1081 1081
         if(false == $endpoint) {
1082
-        	if ($HTTPS == '1' || $HTTPS == 'on') {
1083
-        		$SCHEME = 'https';
1084
-        	} else {
1085
-        		$SCHEME = 'http';
1086
-        	}
1082
+            if ($HTTPS == '1' || $HTTPS == 'on') {
1083
+                $SCHEME = 'https';
1084
+            } else {
1085
+                $SCHEME = 'http';
1086
+            }
1087 1087
             $endpoint = "$SCHEME://$SERVER_NAME$SERVER_PORT$SCRIPT_NAME";
1088 1088
         }
1089 1089
 
@@ -1091,29 +1091,29 @@  discard block
 block discarded – undo
1091 1091
             $schemaTargetNamespace = $namespace;
1092 1092
         }
1093 1093
 
1094
-		$this->wsdl = new wsdl;
1095
-		$this->wsdl->serviceName = $serviceName;
1094
+        $this->wsdl = new wsdl;
1095
+        $this->wsdl->serviceName = $serviceName;
1096 1096
         $this->wsdl->endpoint = $endpoint;
1097
-		$this->wsdl->namespaces['tns'] = $namespace;
1098
-		$this->wsdl->namespaces['soap'] = 'http://schemas.xmlsoap.org/wsdl/soap/';
1099
-		$this->wsdl->namespaces['wsdl'] = 'http://schemas.xmlsoap.org/wsdl/';
1100
-		if ($schemaTargetNamespace != $namespace) {
1101
-			$this->wsdl->namespaces['types'] = $schemaTargetNamespace;
1102
-		}
1097
+        $this->wsdl->namespaces['tns'] = $namespace;
1098
+        $this->wsdl->namespaces['soap'] = 'http://schemas.xmlsoap.org/wsdl/soap/';
1099
+        $this->wsdl->namespaces['wsdl'] = 'http://schemas.xmlsoap.org/wsdl/';
1100
+        if ($schemaTargetNamespace != $namespace) {
1101
+            $this->wsdl->namespaces['types'] = $schemaTargetNamespace;
1102
+        }
1103 1103
         $this->wsdl->schemas[$schemaTargetNamespace][0] = new nusoap_xmlschema('', '', $this->wsdl->namespaces);
1104 1104
         if ($style == 'document') {
1105
-	        $this->wsdl->schemas[$schemaTargetNamespace][0]->schemaInfo['elementFormDefault'] = 'qualified';
1105
+            $this->wsdl->schemas[$schemaTargetNamespace][0]->schemaInfo['elementFormDefault'] = 'qualified';
1106 1106
         }
1107 1107
         $this->wsdl->schemas[$schemaTargetNamespace][0]->schemaTargetNamespace = $schemaTargetNamespace;
1108 1108
         $this->wsdl->schemas[$schemaTargetNamespace][0]->imports['http://schemas.xmlsoap.org/soap/encoding/'][0] = array('location' => '', 'loaded' => true);
1109 1109
         $this->wsdl->schemas[$schemaTargetNamespace][0]->imports['http://schemas.xmlsoap.org/wsdl/'][0] = array('location' => '', 'loaded' => true);
1110 1110
         $this->wsdl->bindings[$serviceName.'Binding'] = array(
1111
-        	'name'=>$serviceName.'Binding',
1111
+            'name'=>$serviceName.'Binding',
1112 1112
             'style'=>$style,
1113 1113
             'transport'=>$transport,
1114 1114
             'portType'=>$serviceName.'PortType');
1115 1115
         $this->wsdl->ports[$serviceName.'Port'] = array(
1116
-        	'binding'=>$serviceName.'Binding',
1116
+            'binding'=>$serviceName.'Binding',
1117 1117
             'location'=>$endpoint,
1118 1118
             'bindingType'=>'http://schemas.xmlsoap.org/wsdl/soap/');
1119 1119
     }
Please login to merge, or discard this patch.
Spacing   +85 added lines, -85 removed lines patch added patch discarded remove patch
@@ -170,7 +170,7 @@  discard block
 block discarded – undo
170 170
     * @param mixed $wsdl file path or URL (string), or wsdl instance (object)
171 171
 	* @access   public
172 172
 	*/
173
-	function nusoap_server($wsdl=false){
173
+	function nusoap_server($wsdl = false) {
174 174
 		parent::nusoap_base();
175 175
 		// turn on debugging?
176 176
 		global $debug;
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 			$qs = explode('&', $_SERVER['QUERY_STRING']);
194 194
 			foreach ($qs as $v) {
195 195
 				if (substr($v, 0, 6) == 'debug=') {
196
-					$this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #1");
196
+					$this->debug("In nusoap_server, set debug_flag=".substr($v, 6)." based on query string #1");
197 197
 					$this->debug_flag = substr($v, 6);
198 198
 				}
199 199
 			}
@@ -201,27 +201,27 @@  discard block
 block discarded – undo
201 201
 			$qs = explode('&', $HTTP_SERVER_VARS['QUERY_STRING']);
202 202
 			foreach ($qs as $v) {
203 203
 				if (substr($v, 0, 6) == 'debug=') {
204
-					$this->debug("In nusoap_server, set debug_flag=" . substr($v, 6) . " based on query string #2");
204
+					$this->debug("In nusoap_server, set debug_flag=".substr($v, 6)." based on query string #2");
205 205
 					$this->debug_flag = substr($v, 6);
206 206
 				}
207 207
 			}
208 208
 		}
209 209
 
210 210
 		// wsdl
211
-		if($wsdl){
211
+		if ($wsdl) {
212 212
 			$this->debug("In nusoap_server, WSDL is specified");
213 213
 			if (is_object($wsdl) && (get_class($wsdl) == 'wsdl')) {
214 214
 				$this->wsdl = $wsdl;
215 215
 				$this->externalWSDLURL = $this->wsdl->wsdl;
216
-				$this->debug('Use existing wsdl instance from ' . $this->externalWSDLURL);
216
+				$this->debug('Use existing wsdl instance from '.$this->externalWSDLURL);
217 217
 			} else {
218
-				$this->debug('Create wsdl from ' . $wsdl);
218
+				$this->debug('Create wsdl from '.$wsdl);
219 219
 				$this->wsdl = new wsdl($wsdl);
220 220
 				$this->externalWSDLURL = $wsdl;
221 221
 			}
222 222
 			$this->appendDebug($this->wsdl->getDebug());
223 223
 			$this->wsdl->clearDebug();
224
-			if($err = $this->wsdl->getError()){
224
+			if ($err = $this->wsdl->getError()) {
225 225
 				die('WSDL ERROR: '.$err);
226 226
 			}
227 227
 		}
@@ -233,7 +233,7 @@  discard block
 block discarded – undo
233 233
 	* @param    string $data usually is the value of $HTTP_RAW_POST_DATA
234 234
 	* @access   public
235 235
 	*/
236
-	function service($data){
236
+	function service($data) {
237 237
 		global $HTTP_SERVER_VARS;
238 238
 
239 239
 		if (isset($_SERVER['REQUEST_METHOD'])) {
@@ -251,21 +251,21 @@  discard block
 block discarded – undo
251 251
 		} else {
252 252
 			$qs = '';
253 253
 		}
254
-		$this->debug("In service, request method=$rm query string=$qs strlen(\$data)=" . strlen($data));
254
+		$this->debug("In service, request method=$rm query string=$qs strlen(\$data)=".strlen($data));
255 255
 
256 256
 		if ($rm == 'POST') {
257 257
 			$this->debug("In service, invoke the request");
258 258
 			$this->parse_request($data);
259
-			if (! $this->fault) {
259
+			if (!$this->fault) {
260 260
 				$this->invoke_method();
261 261
 			}
262
-			if (! $this->fault) {
262
+			if (!$this->fault) {
263 263
 				$this->serialize_return();
264 264
 			}
265 265
 			$this->send_response();
266
-		} elseif (preg_match('/wsdl/', $qs) ){
266
+		} elseif (preg_match('/wsdl/', $qs)) {
267 267
 			$this->debug("In service, this is a request for WSDL");
268
-			if ($this->externalWSDLURL){
268
+			if ($this->externalWSDLURL) {
269 269
               if (strpos($this->externalWSDLURL, "http://") !== false) { // assume URL
270 270
 				$this->debug("In service, re-direct for WSDL");
271 271
 				header('Location: '.$this->externalWSDLURL);
@@ -322,23 +322,23 @@  discard block
 block discarded – undo
322 322
 
323 323
 		$this->request = '';
324 324
 		$this->SOAPAction = '';
325
-		if(function_exists('getallheaders')){
325
+		if (function_exists('getallheaders')) {
326 326
 			$this->debug("In parse_http_headers, use getallheaders");
327 327
 			$headers = getallheaders();
328
-			foreach($headers as $k=>$v){
328
+			foreach ($headers as $k=>$v) {
329 329
 				$k = strtolower($k);
330 330
 				$this->headers[$k] = $v;
331 331
 				$this->request .= "$k: $v\r\n";
332 332
 				$this->debug("$k: $v");
333 333
 			}
334 334
 			// get SOAPAction header
335
-			if(isset($this->headers['soapaction'])){
336
-				$this->SOAPAction = str_replace('"','',$this->headers['soapaction']);
335
+			if (isset($this->headers['soapaction'])) {
336
+				$this->SOAPAction = str_replace('"', '', $this->headers['soapaction']);
337 337
 			}
338 338
 			// get the character encoding of the incoming request
339
-			if(isset($this->headers['content-type']) && strpos($this->headers['content-type'],'=')){
340
-				$enc = str_replace('"','',substr(strstr($this->headers["content-type"],'='),1));
341
-				if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
339
+			if (isset($this->headers['content-type']) && strpos($this->headers['content-type'], '=')) {
340
+				$enc = str_replace('"', '', substr(strstr($this->headers["content-type"], '='), 1));
341
+				if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i', $enc)) {
342 342
 					$this->xml_encoding = strtoupper($enc);
343 343
 				} else {
344 344
 					$this->xml_encoding = 'US-ASCII';
@@ -347,7 +347,7 @@  discard block
 block discarded – undo
347 347
 				// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
348 348
 				$this->xml_encoding = 'ISO-8859-1';
349 349
 			}
350
-		} elseif(isset($_SERVER) && is_array($_SERVER)){
350
+		} elseif (isset($_SERVER) && is_array($_SERVER)) {
351 351
 			$this->debug("In parse_http_headers, use _SERVER");
352 352
 			foreach ($_SERVER as $k => $v) {
353 353
 				if (substr($k, 0, 5) == 'HTTP_') {
@@ -367,7 +367,7 @@  discard block
 block discarded – undo
367 367
 						$enc = substr(strstr($v, '='), 1);
368 368
 						$enc = str_replace('"', '', $enc);
369 369
 						$enc = str_replace('\\', '', $enc);
370
-						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
370
+						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i', $enc)) {
371 371
 							$this->xml_encoding = strtoupper($enc);
372 372
 						} else {
373 373
 							$this->xml_encoding = 'US-ASCII';
@@ -385,9 +385,9 @@  discard block
 block discarded – undo
385 385
 			$this->debug("In parse_http_headers, use HTTP_SERVER_VARS");
386 386
 			foreach ($HTTP_SERVER_VARS as $k => $v) {
387 387
 				if (substr($k, 0, 5) == 'HTTP_') {
388
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5)))); 	                                         $k = strtolower(substr($k, 5));
388
+					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', substr($k, 5)))); $k = strtolower(substr($k, 5));
389 389
 				} else {
390
-					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k))); 	                                         $k = strtolower($k);
390
+					$k = str_replace(' ', '-', strtolower(str_replace('_', ' ', $k))); $k = strtolower($k);
391 391
 				}
392 392
 				if ($k == 'soapaction') {
393 393
 					// get SOAPAction header
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
 						$enc = substr(strstr($v, '='), 1);
402 402
 						$enc = str_replace('"', '', $enc);
403 403
 						$enc = str_replace('\\', '', $enc);
404
-						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)) {
404
+						if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i', $enc)) {
405 405
 							$this->xml_encoding = strtoupper($enc);
406 406
 						} else {
407 407
 							$this->xml_encoding = 'US-ASCII';
@@ -443,13 +443,13 @@  discard block
 block discarded – undo
443 443
 	* @param    string $data XML string
444 444
 	* @access   private
445 445
 	*/
446
-	function parse_request($data='') {
446
+	function parse_request($data = '') {
447 447
 		$this->debug('entering parse_request()');
448 448
 		$this->parse_http_headers();
449 449
 		$this->debug('got character encoding: '.$this->xml_encoding);
450 450
 		// uncompress if necessary
451 451
 		if (isset($this->headers['content-encoding']) && $this->headers['content-encoding'] != '') {
452
-			$this->debug('got content encoding: ' . $this->headers['content-encoding']);
452
+			$this->debug('got content encoding: '.$this->headers['content-encoding']);
453 453
 			if ($this->headers['content-encoding'] == 'deflate' || $this->headers['content-encoding'] == 'gzip') {
454 454
 		    	// if decoding works, use it. else assume data wasn't gzencoded
455 455
 				if (function_exists('gzuncompress')) {
@@ -491,7 +491,7 @@  discard block
 block discarded – undo
491 491
 	* @access   private
492 492
 	*/
493 493
 	function invoke_method() {
494
-		$this->debug('in invoke_method, methodname=' . $this->methodname . ' methodURI=' . $this->methodURI . ' SOAPAction=' . $this->SOAPAction);
494
+		$this->debug('in invoke_method, methodname='.$this->methodname.' methodURI='.$this->methodURI.' SOAPAction='.$this->SOAPAction);
495 495
 
496 496
 		//
497 497
 		// if you are debugging in this area of the code, your service uses a class to implement methods,
@@ -506,16 +506,16 @@  discard block
 block discarded – undo
506 506
 		$orig_methodname = $this->methodname;
507 507
 		if ($this->wsdl) {
508 508
 			if ($this->opData = $this->wsdl->getOperationData($this->methodname)) {
509
-				$this->debug('in invoke_method, found WSDL operation=' . $this->methodname);
510
-				$this->appendDebug('opData=' . $this->varDump($this->opData));
509
+				$this->debug('in invoke_method, found WSDL operation='.$this->methodname);
510
+				$this->appendDebug('opData='.$this->varDump($this->opData));
511 511
 			} elseif ($this->opData = $this->wsdl->getOperationDataForSoapAction($this->SOAPAction)) {
512 512
 				// Note: hopefully this case will only be used for doc/lit, since rpc services should have wrapper element
513
-				$this->debug('in invoke_method, found WSDL soapAction=' . $this->SOAPAction . ' for operation=' . $this->opData['name']);
514
-				$this->appendDebug('opData=' . $this->varDump($this->opData));
513
+				$this->debug('in invoke_method, found WSDL soapAction='.$this->SOAPAction.' for operation='.$this->opData['name']);
514
+				$this->appendDebug('opData='.$this->varDump($this->opData));
515 515
 				$this->methodname = $this->opData['name'];
516 516
 			} else {
517
-				$this->debug('in invoke_method, no WSDL for operation=' . $this->methodname);
518
-				$this->fault('SOAP-ENV:Client', "Operation '" . $this->methodname . "' is not defined in the WSDL for this service");
517
+				$this->debug('in invoke_method, no WSDL for operation='.$this->methodname);
518
+				$this->fault('SOAP-ENV:Client', "Operation '".$this->methodname."' is not defined in the WSDL for this service");
519 519
 				return;
520 520
 			}
521 521
 		} else {
@@ -556,7 +556,7 @@  discard block
 block discarded – undo
556 556
 			if (!function_exists($this->methodname)) {
557 557
 				$this->debug("in invoke_method, function '$this->methodname' not found!");
558 558
 				$this->result = 'fault: method not found';
559
-				$this->fault('SOAP-ENV:Client',"method '$this->methodname'('$orig_methodname') not defined in service('$try_class' '$delim')");
559
+				$this->fault('SOAP-ENV:Client', "method '$this->methodname'('$orig_methodname') not defined in service('$try_class' '$delim')");
560 560
 				return;
561 561
 			}
562 562
 		} else {
@@ -564,19 +564,19 @@  discard block
 block discarded – undo
564 564
 			if (!in_array($method_to_compare, get_class_methods($class))) {
565 565
 				$this->debug("in invoke_method, method '$this->methodname' not found in class '$class'!");
566 566
 				$this->result = 'fault: method not found';
567
-				$this->fault('SOAP-ENV:Client',"method '$this->methodname'/'$method_to_compare'('$orig_methodname') not defined in service/'$class'('$try_class' '$delim')");
567
+				$this->fault('SOAP-ENV:Client', "method '$this->methodname'/'$method_to_compare'('$orig_methodname') not defined in service/'$class'('$try_class' '$delim')");
568 568
 				return;
569 569
 			}
570 570
 		}
571 571
 
572 572
 		// evaluate message, getting back parameters
573 573
 		// verify that request parameters match the method's signature
574
-		if(! $this->verify_method($this->methodname,$this->methodparams)){
574
+		if (!$this->verify_method($this->methodname, $this->methodparams)) {
575 575
 			// debug
576 576
 			$this->debug('ERROR: request not verified against method signature');
577 577
 			$this->result = 'fault: request failed validation against method signature';
578 578
 			// return fault
579
-			$this->fault('SOAP-ENV:Client',"Operation '$this->methodname' not defined in service.");
579
+			$this->fault('SOAP-ENV:Client', "Operation '$this->methodname' not defined in service.");
580 580
 			return;
581 581
 		}
582 582
 
@@ -616,13 +616,13 @@  discard block
 block discarded – undo
616 616
 		} else {
617 617
 			if ($class == '') {
618 618
 				$this->debug('in invoke_method, calling function using call_user_func_array()');
619
-				$call_arg = "$this->methodname";	// straight assignment changes $this->methodname to lower case after call_user_func_array()
619
+				$call_arg = "$this->methodname"; // straight assignment changes $this->methodname to lower case after call_user_func_array()
620 620
 			} elseif ($delim == '..') {
621 621
 				$this->debug('in invoke_method, calling class method using call_user_func_array()');
622
-				$call_arg = array ($class, $method);
622
+				$call_arg = array($class, $method);
623 623
 			} else {
624 624
 				$this->debug('in invoke_method, calling instance method using call_user_func_array()');
625
-				$instance = new $class ();
625
+				$instance = new $class();
626 626
 				$call_arg = array(&$instance, $method);
627 627
 			}
628 628
 			if (is_array($this->methodparams)) {
@@ -648,7 +648,7 @@  discard block
 block discarded – undo
648 648
 	* @access   private
649 649
 	*/
650 650
 	function serialize_return() {
651
-		$this->debug('Entering serialize_return methodname: ' . $this->methodname . ' methodURI: ' . $this->methodURI);
651
+		$this->debug('Entering serialize_return methodname: '.$this->methodname.' methodURI: '.$this->methodURI);
652 652
 		// if fault
653 653
 		if (isset($this->methodreturn) && is_object($this->methodreturn) && ((get_class($this->methodreturn) == 'soap_fault') || (get_class($this->methodreturn) == 'nusoap_fault'))) {
654 654
 			$this->debug('got a fault object from method');
@@ -660,7 +660,7 @@  discard block
 block discarded – undo
660 660
 		} else {
661 661
 			$this->debug('got a(n) '.gettype($this->methodreturn).' from method');
662 662
 			$this->debug('serializing return value');
663
-			if($this->wsdl){
663
+			if ($this->wsdl) {
664 664
 				$opParams = "";
665 665
 				if (sizeof($this->opData['output']['parts']) > 1) {
666 666
 					$this->debug('more than one output part, so use the method return unchanged');
@@ -673,10 +673,10 @@  discard block
 block discarded – undo
673 673
 			    	//}
674 674
 			    	$opParams = array($this->methodreturn);
675 675
 			    }
676
-			    $return_val = $this->wsdl->serializeRPCParameters($this->methodname,'output',$opParams);
676
+			    $return_val = $this->wsdl->serializeRPCParameters($this->methodname, 'output', $opParams);
677 677
 			    $this->appendDebug($this->wsdl->getDebug());
678 678
 			    $this->wsdl->clearDebug();
679
-				if($errstr = $this->wsdl->getError()){
679
+				if ($errstr = $this->wsdl->getError()) {
680 680
 					$this->debug('got wsdl error: '.$errstr);
681 681
 					$this->fault('SOAP-ENV:Server', 'unable to serialize result');
682 682
 					return;
@@ -695,9 +695,9 @@  discard block
 block discarded – undo
695 695
 
696 696
 		$this->debug('serializing response');
697 697
 		if ($this->wsdl) {
698
-			$this->debug('have WSDL for serialization: style is ' . $this->opData['style']);
698
+			$this->debug('have WSDL for serialization: style is '.$this->opData['style']);
699 699
 			if ($this->opData['style'] == 'rpc') {
700
-				$this->debug('style is rpc for serialization: use is ' . $this->opData['output']['use']);
700
+				$this->debug('style is rpc for serialization: use is '.$this->opData['output']['use']);
701 701
 				if ($this->opData['output']['use'] == 'literal') {
702 702
 					// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
703 703
 					if ($this->methodURI) {
@@ -721,7 +721,7 @@  discard block
 block discarded – undo
721 721
 			$payload = '<ns1:'.$this->methodname.'Response xmlns:ns1="'.$this->methodURI.'">'.$return_val.'</ns1:'.$this->methodname."Response>";
722 722
 		}
723 723
 		$this->result = 'successful';
724
-		if($this->wsdl){
724
+		if ($this->wsdl) {
725 725
 			//if($this->debug_flag){
726 726
             	$this->appendDebug($this->wsdl->getDebug());
727 727
             //	}
@@ -731,9 +731,9 @@  discard block
 block discarded – undo
731 731
 				$encodingStyle = '';
732 732
 			}
733 733
 			// Added: In case we use a WSDL, return a serialized env. WITH the usedNamespaces.
734
-			$this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders,$this->wsdl->usedNamespaces,$this->opData['style'],$this->opData['output']['use'],$encodingStyle);
734
+			$this->responseSOAP = $this->serializeEnvelope($payload, $this->responseHeaders, $this->wsdl->usedNamespaces, $this->opData['style'], $this->opData['output']['use'], $encodingStyle);
735 735
 		} else {
736
-			$this->responseSOAP = $this->serializeEnvelope($payload,$this->responseHeaders);
736
+			$this->responseSOAP = $this->serializeEnvelope($payload, $this->responseHeaders);
737 737
 		}
738 738
 		$this->debug("Leaving serialize_return");
739 739
 	}
@@ -763,18 +763,18 @@  discard block
 block discarded – undo
763 763
 			// $this->outgoing_headers[] = "Status: 200 OK";
764 764
 		}
765 765
         // add debug data if in debug mode
766
-		if(isset($this->debug_flag) && $this->debug_flag){
766
+		if (isset($this->debug_flag) && $this->debug_flag) {
767 767
         	$payload .= $this->getDebugAsXMLComment();
768 768
         }
769 769
 		$this->outgoing_headers[] = "Server: $this->title Server v$this->version";
770
-		preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
770
+		preg_match('/\$Revisio'.'n: ([^ ]+)/', $this->revision, $rev);
771 771
 		$this->outgoing_headers[] = "X-SOAP-Server: $this->title/$this->version (".$rev[1].")";
772 772
 		// Let the Web server decide about this
773 773
 		//$this->outgoing_headers[] = "Connection: Close\r\n";
774 774
 		$payload = $this->getHTTPBody($payload);
775 775
 		$type = $this->getHTTPContentType();
776 776
 		$charset = $this->getHTTPContentTypeCharset();
777
-		$this->outgoing_headers[] = "Content-Type: $type" . ($charset ? '; charset=' . $charset : '');
777
+		$this->outgoing_headers[] = "Content-Type: $type".($charset ? '; charset='.$charset : '');
778 778
 		//begin code to compress payload - by John
779 779
 		// NOTE: there is no way to know whether the Web server will also compress
780 780
 		// this data.
@@ -811,11 +811,11 @@  discard block
 block discarded – undo
811 811
 		//end code
812 812
 		$this->outgoing_headers[] = "Content-Length: ".strlen($payload);
813 813
 		reset($this->outgoing_headers);
814
-		foreach($this->outgoing_headers as $hdr){
814
+		foreach ($this->outgoing_headers as $hdr) {
815 815
 			header($hdr, false);
816 816
 		}
817 817
 		print $payload;
818
-		$this->response = join("\r\n",$this->outgoing_headers)."\r\n\r\n".$payload;
818
+		$this->response = join("\r\n", $this->outgoing_headers)."\r\n\r\n".$payload;
819 819
 	}
820 820
 
821 821
 	/**
@@ -827,12 +827,12 @@  discard block
 block discarded – undo
827 827
 	* @return	boolean	Whether the operation was found
828 828
 	* @access   private
829 829
 	*/
830
-	function verify_method($operation,$request){
831
-		if(isset($this->wsdl) && is_object($this->wsdl)){
832
-			if($this->wsdl->getOperationData($operation)){
830
+	function verify_method($operation, $request) {
831
+		if (isset($this->wsdl) && is_object($this->wsdl)) {
832
+			if ($this->wsdl->getOperationData($operation)) {
833 833
 				return true;
834 834
 			}
835
-	    } elseif(isset($this->operations[$operation])){
835
+	    } elseif (isset($this->operations[$operation])) {
836 836
 			return true;
837 837
 		}
838 838
 		return false;
@@ -847,7 +847,7 @@  discard block
 block discarded – undo
847 847
 	* @access   private
848 848
 	*/
849 849
     function parseRequest($headers, $data) {
850
-		$this->debug('Entering parseRequest() for data of length ' . strlen($data) . ' headers:');
850
+		$this->debug('Entering parseRequest() for data of length '.strlen($data).' headers:');
851 851
 		$this->appendDebug($this->varDump($headers));
852 852
     	if (!isset($headers['content-type'])) {
853 853
 			$this->setError('Request not of type text/xml (no content-type header)');
@@ -859,8 +859,8 @@  discard block
 block discarded – undo
859 859
 		}
860 860
 		if (strpos($headers['content-type'], '=')) {
861 861
 			$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
862
-			$this->debug('Got response encoding: ' . $enc);
863
-			if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
862
+			$this->debug('Got response encoding: '.$enc);
863
+			if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i', $enc)) {
864 864
 				$this->xml_encoding = strtoupper($enc);
865 865
 			} else {
866 866
 				$this->xml_encoding = 'US-ASCII';
@@ -869,16 +869,16 @@  discard block
 block discarded – undo
869 869
 			// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
870 870
 			$this->xml_encoding = 'ISO-8859-1';
871 871
 		}
872
-		$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
872
+		$this->debug('Use encoding: '.$this->xml_encoding.' when creating nusoap_parser');
873 873
 		// parse response, get soap parser obj
874
-		$parser = new nusoap_parser($data,$this->xml_encoding,'',$this->decode_utf8);
874
+		$parser = new nusoap_parser($data, $this->xml_encoding, '', $this->decode_utf8);
875 875
 
876 876
 		// parser debug
877 877
 		$this->debug("parser debug: \n".$parser->getDebug());
878 878
 		// if fault occurred during message parsing
879
-		if($err = $parser->getError()){
879
+		if ($err = $parser->getError()) {
880 880
 			$this->result = 'fault: error in msg parsing: '.$err;
881
-			$this->fault('SOAP-ENV:Client',"error in msg parsing:\n".$err);
881
+			$this->fault('SOAP-ENV:Client', "error in msg parsing:\n".$err);
882 882
 		// else successfully parsed request into soapval object
883 883
 		} else {
884 884
 			// get/set methodname
@@ -941,8 +941,8 @@  discard block
 block discarded – undo
941 941
 	* @access   public
942 942
 	* @deprecated
943 943
 	*/
944
-	function add_to_map($methodname,$in,$out){
945
-			$this->operations[$methodname] = array('name' => $methodname,'in' => $in,'out' => $out);
944
+	function add_to_map($methodname, $in, $out) {
945
+			$this->operations[$methodname] = array('name' => $methodname, 'in' => $in, 'out' => $out);
946 946
 	}
947 947
 
948 948
 	/**
@@ -959,13 +959,13 @@  discard block
 block discarded – undo
959 959
 	* @param	string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
960 960
 	* @access   public
961 961
 	*/
962
-	function register($name,$in=array(),$out=array(),$namespace=false,$soapaction=false,$style=false,$use=false,$documentation='',$encodingStyle=''){
962
+	function register($name, $in = array(), $out = array(), $namespace = false, $soapaction = false, $style = false, $use = false, $documentation = '', $encodingStyle = '') {
963 963
 		global $HTTP_SERVER_VARS;
964 964
 
965
-		if($this->externalWSDLURL){
965
+		if ($this->externalWSDLURL) {
966 966
 			die('You cannot bind to an external WSDL file, and register methods outside of it! Please choose either WSDL or no WSDL.');
967 967
 		}
968
-		if (! $name) {
968
+		if (!$name) {
969 969
 			die('You must specify a name when you register an operation');
970 970
 		}
971 971
 		if (!is_array($in)) {
@@ -974,9 +974,9 @@  discard block
 block discarded – undo
974 974
 		if (!is_array($out)) {
975 975
 			die('You must provide an array for operation outputs');
976 976
 		}
977
-		if(false == $namespace) {
977
+		if (false == $namespace) {
978 978
 		}
979
-		if(false == $soapaction) {
979
+		if (false == $soapaction) {
980 980
 			if (isset($_SERVER)) {
981 981
 				$SERVER_NAME = $_SERVER['SERVER_NAME'];
982 982
 				$SCRIPT_NAME = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
@@ -995,10 +995,10 @@  discard block
 block discarded – undo
995 995
         	}
996 996
 			$soapaction = "$SCHEME://$SERVER_NAME$SCRIPT_NAME/$name";
997 997
 		}
998
-		if(false == $style) {
998
+		if (false == $style) {
999 999
 			$style = "rpc";
1000 1000
 		}
1001
-		if(false == $use) {
1001
+		if (false == $use) {
1002 1002
 			$use = "encoded";
1003 1003
 		}
1004 1004
 		if ($use == 'encoded' && $encodingStyle == '') {
@@ -1012,8 +1012,8 @@  discard block
 block discarded – undo
1012 1012
 	    'namespace' => $namespace,
1013 1013
 	    'soapaction' => $soapaction,
1014 1014
 	    'style' => $style);
1015
-        if($this->wsdl){
1016
-        	$this->wsdl->addOperation($name,$in,$out,$namespace,$soapaction,$style,$use,$documentation,$encodingStyle);
1015
+        if ($this->wsdl) {
1016
+        	$this->wsdl->addOperation($name, $in, $out, $namespace, $soapaction, $style, $use, $documentation, $encodingStyle);
1017 1017
 	    }
1018 1018
 		return true;
1019 1019
 	}
@@ -1028,11 +1028,11 @@  discard block
 block discarded – undo
1028 1028
 	* @param	string $faultdetail
1029 1029
 	* @access   public
1030 1030
 	*/
1031
-	function fault($faultcode,$faultstring,$faultactor='',$faultdetail=''){
1031
+	function fault($faultcode, $faultstring, $faultactor = '', $faultdetail = '') {
1032 1032
 		if ($faultdetail == '' && $this->debug_flag) {
1033 1033
 			$faultdetail = $this->getDebug();
1034 1034
 		}
1035
-		$this->fault = new nusoap_fault($faultcode,$faultactor,$faultstring,$faultdetail);
1035
+		$this->fault = new nusoap_fault($faultcode, $faultactor, $faultstring, $faultdetail);
1036 1036
 		$this->fault->soap_defencoding = $this->soap_defencoding;
1037 1037
 	}
1038 1038
 
@@ -1047,7 +1047,7 @@  discard block
 block discarded – undo
1047 1047
     * @param string $transport optional SOAP transport
1048 1048
     * @param mixed $schemaTargetNamespace optional 'types' targetNamespace for service schema or false
1049 1049
     */
1050
-    function configureWSDL($serviceName,$namespace = false,$endpoint = false,$style='rpc', $transport = 'http://schemas.xmlsoap.org/soap/http', $schemaTargetNamespace = false)
1050
+    function configureWSDL($serviceName, $namespace = false, $endpoint = false, $style = 'rpc', $transport = 'http://schemas.xmlsoap.org/soap/http', $schemaTargetNamespace = false)
1051 1051
     {
1052 1052
     	global $HTTP_SERVER_VARS;
1053 1053
 
@@ -1065,20 +1065,20 @@  discard block
 block discarded – undo
1065 1065
 			$this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
1066 1066
 		}
1067 1067
 		// If server name has port number attached then strip it (else port number gets duplicated in WSDL output) (occurred using lighttpd and FastCGI)
1068
-		$colon = strpos($SERVER_NAME,":");
1068
+		$colon = strpos($SERVER_NAME, ":");
1069 1069
 		if ($colon) {
1070 1070
 		    $SERVER_NAME = substr($SERVER_NAME, 0, $colon);
1071 1071
 		}
1072 1072
 		if ($SERVER_PORT == 80) {
1073 1073
 			$SERVER_PORT = '';
1074 1074
 		} else {
1075
-			$SERVER_PORT = ':' . $SERVER_PORT;
1075
+			$SERVER_PORT = ':'.$SERVER_PORT;
1076 1076
 		}
1077
-        if(false == $namespace) {
1077
+        if (false == $namespace) {
1078 1078
             $namespace = "http://$SERVER_NAME/soap/$serviceName";
1079 1079
         }
1080 1080
 
1081
-        if(false == $endpoint) {
1081
+        if (false == $endpoint) {
1082 1082
         	if ($HTTPS == '1' || $HTTPS == 'on') {
1083 1083
         		$SCHEME = 'https';
1084 1084
         	} else {
@@ -1087,7 +1087,7 @@  discard block
 block discarded – undo
1087 1087
             $endpoint = "$SCHEME://$SERVER_NAME$SERVER_PORT$SCRIPT_NAME";
1088 1088
         }
1089 1089
 
1090
-        if(false == $schemaTargetNamespace) {
1090
+        if (false == $schemaTargetNamespace) {
1091 1091
             $schemaTargetNamespace = $namespace;
1092 1092
         }
1093 1093
 
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.soap_transport_http.php 4 patches
Doc Comments   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -169,10 +169,6 @@  discard block
 block discarded – undo
169 169
 	/**
170 170
 	* establish an HTTP connection
171 171
 	*
172
-	* @param    integer $timeout set connection timeout in seconds
173
-	* @param	integer $response_timeout set response timeout in seconds
174
-	* @return	boolean true if connected, false if not
175
-	* @access   private
176 172
 	*/
177 173
 	function connect($connection_timeout=0,$response_timeout=30){
178 174
 	  	// For PHP 4.3 with OpenSSL, change https scheme to ssl, then treat like
@@ -731,7 +727,7 @@  discard block
 block discarded – undo
731 727
 	*
732 728
 	* @param    string $data message data
733 729
 	* @param	array $cookies cookies to send
734
-	* @return	boolean	true if OK, false if problem
730
+	* @return	boolean|null	true if OK, false if problem
735 731
 	* @access   private
736 732
 	*/
737 733
 	function sendRequest($data, $cookies = NULL) {
@@ -1166,7 +1162,7 @@  discard block
 block discarded – undo
1166 1162
 	 * sets the content-type for the SOAP message to be sent
1167 1163
 	 *
1168 1164
 	 * @param	string $type the content type, MIME style
1169
-	 * @param	mixed $charset character set used for encoding (or false)
1165
+	 * @param	string $charset character set used for encoding (or false)
1170 1166
 	 * @access	public
1171 1167
 	 */
1172 1168
 	function setContentType($type, $charset = false) {
@@ -1199,6 +1195,10 @@  discard block
 block discarded – undo
1199 1195
 	/*
1200 1196
 	 * TODO: allow a Set-Cookie string to be parsed into multiple cookies
1201 1197
 	 */
1198
+
1199
+	/**
1200
+	 * @param string $cookie_str
1201
+	 */
1202 1202
 	function parseCookie($cookie_str) {
1203 1203
 		$cookie_str = str_replace('; ', ';', $cookie_str) . ';';
1204 1204
 		$data = preg_split('/;/', $cookie_str);
Please login to merge, or discard this patch.
Indentation   +1168 added lines, -1168 removed lines patch added patch discarded remove patch
@@ -14,171 +14,171 @@  discard block
 block discarded – undo
14 14
 */
15 15
 class soap_transport_http extends nusoap_base {
16 16
 
17
-	var $url = '';
18
-	var $uri = '';
19
-	var $digest_uri = '';
20
-	var $scheme = '';
21
-	var $host = '';
22
-	var $port = '';
23
-	var $path = '';
24
-	var $request_method = 'POST';
25
-	var $protocol_version = '1.0';
26
-	var $encoding = '';
27
-	var $outgoing_headers = array();
28
-	var $incoming_headers = array();
29
-	var $incoming_cookies = array();
30
-	var $outgoing_payload = '';
31
-	var $incoming_payload = '';
32
-	var $response_status_line;	// HTTP response status line
33
-	var $useSOAPAction = true;
34
-	var $persistentConnection = false;
35
-	var $ch = false;	// cURL handle
36
-	var $ch_options = array();	// cURL custom options
37
-	var $use_curl = false;		// force cURL use
38
-	var $proxy = null;			// proxy information (associative array)
39
-	var $username = '';
40
-	var $password = '';
41
-	var $authtype = '';
42
-	var $digestRequest = array();
43
-	var $certRequest = array();	// keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional)
44
-								// cainfofile: certificate authority file, e.g. '$pathToPemFiles/rootca.pem'
45
-								// sslcertfile: SSL certificate file, e.g. '$pathToPemFiles/mycert.pem'
46
-								// sslkeyfile: SSL key file, e.g. '$pathToPemFiles/mykey.pem'
47
-								// passphrase: SSL key password/passphrase
48
-								// certpassword: SSL certificate password
49
-								// verifypeer: default is 1
50
-								// verifyhost: default is 1
17
+    var $url = '';
18
+    var $uri = '';
19
+    var $digest_uri = '';
20
+    var $scheme = '';
21
+    var $host = '';
22
+    var $port = '';
23
+    var $path = '';
24
+    var $request_method = 'POST';
25
+    var $protocol_version = '1.0';
26
+    var $encoding = '';
27
+    var $outgoing_headers = array();
28
+    var $incoming_headers = array();
29
+    var $incoming_cookies = array();
30
+    var $outgoing_payload = '';
31
+    var $incoming_payload = '';
32
+    var $response_status_line;	// HTTP response status line
33
+    var $useSOAPAction = true;
34
+    var $persistentConnection = false;
35
+    var $ch = false;	// cURL handle
36
+    var $ch_options = array();	// cURL custom options
37
+    var $use_curl = false;		// force cURL use
38
+    var $proxy = null;			// proxy information (associative array)
39
+    var $username = '';
40
+    var $password = '';
41
+    var $authtype = '';
42
+    var $digestRequest = array();
43
+    var $certRequest = array();	// keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional)
44
+                                // cainfofile: certificate authority file, e.g. '$pathToPemFiles/rootca.pem'
45
+                                // sslcertfile: SSL certificate file, e.g. '$pathToPemFiles/mycert.pem'
46
+                                // sslkeyfile: SSL key file, e.g. '$pathToPemFiles/mykey.pem'
47
+                                // passphrase: SSL key password/passphrase
48
+                                // certpassword: SSL certificate password
49
+                                // verifypeer: default is 1
50
+                                // verifyhost: default is 1
51 51
 
52
-	/**
53
-	* constructor
54
-	*
55
-	* @param string $url The URL to which to connect
56
-	* @param array $curl_options User-specified cURL options
57
-	* @param boolean $use_curl Whether to try to force cURL use
58
-	* @access public
59
-	*/
60
-	function soap_transport_http($url, $curl_options = NULL, $use_curl = false){
61
-		parent::nusoap_base();
62
-		$this->debug("ctor url=$url use_curl=$use_curl curl_options:");
63
-		$this->appendDebug($this->varDump($curl_options));
64
-		$this->setURL($url);
65
-		if (is_array($curl_options)) {
66
-			$this->ch_options = $curl_options;
67
-		}
68
-		$this->use_curl = $use_curl;
69
-		preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
70
-		$this->setHeader('User-Agent', $this->title.'/'.$this->version.' ('.$rev[1].')');
71
-	}
52
+    /**
53
+     * constructor
54
+     *
55
+     * @param string $url The URL to which to connect
56
+     * @param array $curl_options User-specified cURL options
57
+     * @param boolean $use_curl Whether to try to force cURL use
58
+     * @access public
59
+     */
60
+    function soap_transport_http($url, $curl_options = NULL, $use_curl = false){
61
+        parent::nusoap_base();
62
+        $this->debug("ctor url=$url use_curl=$use_curl curl_options:");
63
+        $this->appendDebug($this->varDump($curl_options));
64
+        $this->setURL($url);
65
+        if (is_array($curl_options)) {
66
+            $this->ch_options = $curl_options;
67
+        }
68
+        $this->use_curl = $use_curl;
69
+        preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
70
+        $this->setHeader('User-Agent', $this->title.'/'.$this->version.' ('.$rev[1].')');
71
+    }
72 72
 
73
-	/**
74
-	* sets a cURL option
75
-	*
76
-	* @param	mixed $option The cURL option (always integer?)
77
-	* @param	mixed $value The cURL option value
78
-	* @access   private
79
-	*/
80
-	function setCurlOption($option, $value) {
81
-		$this->debug("setCurlOption option=$option, value=");
82
-		$this->appendDebug($this->varDump($value));
83
-		curl_setopt($this->ch, $option, $value);
84
-	}
73
+    /**
74
+     * sets a cURL option
75
+     *
76
+     * @param	mixed $option The cURL option (always integer?)
77
+     * @param	mixed $value The cURL option value
78
+     * @access   private
79
+     */
80
+    function setCurlOption($option, $value) {
81
+        $this->debug("setCurlOption option=$option, value=");
82
+        $this->appendDebug($this->varDump($value));
83
+        curl_setopt($this->ch, $option, $value);
84
+    }
85 85
 
86
-	/**
87
-	* sets an HTTP header
88
-	*
89
-	* @param string $name The name of the header
90
-	* @param string $value The value of the header
91
-	* @access private
92
-	*/
93
-	function setHeader($name, $value) {
94
-		$this->outgoing_headers[$name] = $value;
95
-		$this->debug("set header $name: $value");
96
-	}
86
+    /**
87
+     * sets an HTTP header
88
+     *
89
+     * @param string $name The name of the header
90
+     * @param string $value The value of the header
91
+     * @access private
92
+     */
93
+    function setHeader($name, $value) {
94
+        $this->outgoing_headers[$name] = $value;
95
+        $this->debug("set header $name: $value");
96
+    }
97 97
 
98
-	/**
99
-	* unsets an HTTP header
100
-	*
101
-	* @param string $name The name of the header
102
-	* @access private
103
-	*/
104
-	function unsetHeader($name) {
105
-		if (isset($this->outgoing_headers[$name])) {
106
-			$this->debug("unset header $name");
107
-			unset($this->outgoing_headers[$name]);
108
-		}
109
-	}
98
+    /**
99
+     * unsets an HTTP header
100
+     *
101
+     * @param string $name The name of the header
102
+     * @access private
103
+     */
104
+    function unsetHeader($name) {
105
+        if (isset($this->outgoing_headers[$name])) {
106
+            $this->debug("unset header $name");
107
+            unset($this->outgoing_headers[$name]);
108
+        }
109
+    }
110 110
 
111
-	/**
112
-	* sets the URL to which to connect
113
-	*
114
-	* @param string $url The URL to which to connect
115
-	* @access private
116
-	*/
117
-	function setURL($url) {
118
-		$this->url = $url;
111
+    /**
112
+     * sets the URL to which to connect
113
+     *
114
+     * @param string $url The URL to which to connect
115
+     * @access private
116
+     */
117
+    function setURL($url) {
118
+        $this->url = $url;
119 119
 
120
-		$u = parse_url($url);
121
-		foreach($u as $k => $v){
122
-			$this->debug("parsed URL $k = $v");
123
-			$this->$k = $v;
124
-		}
120
+        $u = parse_url($url);
121
+        foreach($u as $k => $v){
122
+            $this->debug("parsed URL $k = $v");
123
+            $this->$k = $v;
124
+        }
125 125
 		
126
-		// add any GET params to path
127
-		if(isset($u['query']) && $u['query'] != ''){
126
+        // add any GET params to path
127
+        if(isset($u['query']) && $u['query'] != ''){
128 128
             $this->path .= '?' . $u['query'];
129
-		}
129
+        }
130 130
 		
131
-		// set default port
132
-		if(!isset($u['port'])){
133
-			if($u['scheme'] == 'https'){
134
-				$this->port = 443;
135
-			} else {
136
-				$this->port = 80;
137
-			}
138
-		}
131
+        // set default port
132
+        if(!isset($u['port'])){
133
+            if($u['scheme'] == 'https'){
134
+                $this->port = 443;
135
+            } else {
136
+                $this->port = 80;
137
+            }
138
+        }
139 139
 		
140
-		$this->uri = $this->path;
141
-		$this->digest_uri = $this->uri;
140
+        $this->uri = $this->path;
141
+        $this->digest_uri = $this->uri;
142 142
 		
143
-		// build headers
144
-		if (!isset($u['port'])) {
145
-			$this->setHeader('Host', $this->host);
146
-		} else {
147
-			$this->setHeader('Host', $this->host.':'.$this->port);
148
-		}
143
+        // build headers
144
+        if (!isset($u['port'])) {
145
+            $this->setHeader('Host', $this->host);
146
+        } else {
147
+            $this->setHeader('Host', $this->host.':'.$this->port);
148
+        }
149 149
 
150
-		if (isset($u['user']) && $u['user'] != '') {
151
-			$this->setCredentials(urldecode($u['user']), isset($u['pass']) ? urldecode($u['pass']) : '');
152
-		}
153
-	}
150
+        if (isset($u['user']) && $u['user'] != '') {
151
+            $this->setCredentials(urldecode($u['user']), isset($u['pass']) ? urldecode($u['pass']) : '');
152
+        }
153
+    }
154 154
 
155
-	/**
156
-	* gets the I/O method to use
157
-	*
158
-	* @return	string	I/O method to use (socket|curl|unknown)
159
-	* @access	private
160
-	*/
161
-	function io_method() {
162
-		if ($this->use_curl || ($this->scheme == 'https') || ($this->scheme == 'http' && $this->authtype == 'ntlm') || ($this->scheme == 'http' && is_array($this->proxy) && $this->proxy['authtype'] == 'ntlm'))
163
-			return 'curl';
164
-		if (($this->scheme == 'http' || $this->scheme == 'ssl') && $this->authtype != 'ntlm' && (!is_array($this->proxy) || $this->proxy['authtype'] != 'ntlm'))
165
-			return 'socket';
166
-		return 'unknown';
167
-	}
155
+    /**
156
+     * gets the I/O method to use
157
+     *
158
+     * @return	string	I/O method to use (socket|curl|unknown)
159
+     * @access	private
160
+     */
161
+    function io_method() {
162
+        if ($this->use_curl || ($this->scheme == 'https') || ($this->scheme == 'http' && $this->authtype == 'ntlm') || ($this->scheme == 'http' && is_array($this->proxy) && $this->proxy['authtype'] == 'ntlm'))
163
+            return 'curl';
164
+        if (($this->scheme == 'http' || $this->scheme == 'ssl') && $this->authtype != 'ntlm' && (!is_array($this->proxy) || $this->proxy['authtype'] != 'ntlm'))
165
+            return 'socket';
166
+        return 'unknown';
167
+    }
168 168
 
169
-	/**
170
-	* establish an HTTP connection
171
-	*
172
-	* @param    integer $timeout set connection timeout in seconds
173
-	* @param	integer $response_timeout set response timeout in seconds
174
-	* @return	boolean true if connected, false if not
175
-	* @access   private
176
-	*/
177
-	function connect($connection_timeout=0,$response_timeout=30){
178
-	  	// For PHP 4.3 with OpenSSL, change https scheme to ssl, then treat like
179
-	  	// "regular" socket.
180
-	  	// TODO: disabled for now because OpenSSL must be *compiled* in (not just
181
-	  	//       loaded), and until PHP5 stream_get_wrappers is not available.
169
+    /**
170
+     * establish an HTTP connection
171
+     *
172
+     * @param    integer $timeout set connection timeout in seconds
173
+     * @param	integer $response_timeout set response timeout in seconds
174
+     * @return	boolean true if connected, false if not
175
+     * @access   private
176
+     */
177
+    function connect($connection_timeout=0,$response_timeout=30){
178
+            // For PHP 4.3 with OpenSSL, change https scheme to ssl, then treat like
179
+            // "regular" socket.
180
+            // TODO: disabled for now because OpenSSL must be *compiled* in (not just
181
+            //       loaded), and until PHP5 stream_get_wrappers is not available.
182 182
 //	  	if ($this->scheme == 'https') {
183 183
 //		  	if (version_compare(phpversion(), '4.3.0') >= 0) {
184 184
 //		  		if (extension_loaded('openssl')) {
@@ -187,1120 +187,1120 @@  discard block
 block discarded – undo
187 187
 //		  		}
188 188
 //		  	}
189 189
 //		}
190
-		$this->debug("connect connection_timeout $connection_timeout, response_timeout $response_timeout, scheme $this->scheme, host $this->host, port $this->port");
191
-	  if ($this->io_method() == 'socket') {
192
-		if (!is_array($this->proxy)) {
193
-			$host = $this->host;
194
-			$port = $this->port;
195
-		} else {
196
-			$host = $this->proxy['host'];
197
-			$port = $this->proxy['port'];
198
-		}
190
+        $this->debug("connect connection_timeout $connection_timeout, response_timeout $response_timeout, scheme $this->scheme, host $this->host, port $this->port");
191
+        if ($this->io_method() == 'socket') {
192
+        if (!is_array($this->proxy)) {
193
+            $host = $this->host;
194
+            $port = $this->port;
195
+        } else {
196
+            $host = $this->proxy['host'];
197
+            $port = $this->proxy['port'];
198
+        }
199 199
 
200
-		// use persistent connection
201
-		if($this->persistentConnection && isset($this->fp) && is_resource($this->fp)){
202
-			if (!feof($this->fp)) {
203
-				$this->debug('Re-use persistent connection');
204
-				return true;
205
-			}
206
-			fclose($this->fp);
207
-			$this->debug('Closed persistent connection at EOF');
208
-		}
200
+        // use persistent connection
201
+        if($this->persistentConnection && isset($this->fp) && is_resource($this->fp)){
202
+            if (!feof($this->fp)) {
203
+                $this->debug('Re-use persistent connection');
204
+                return true;
205
+            }
206
+            fclose($this->fp);
207
+            $this->debug('Closed persistent connection at EOF');
208
+        }
209 209
 
210
-		// munge host if using OpenSSL
211
-		if ($this->scheme == 'ssl') {
212
-			$host = 'ssl://' . $host;
213
-		}
214
-		$this->debug('calling fsockopen with host ' . $host . ' connection_timeout ' . $connection_timeout);
210
+        // munge host if using OpenSSL
211
+        if ($this->scheme == 'ssl') {
212
+            $host = 'ssl://' . $host;
213
+        }
214
+        $this->debug('calling fsockopen with host ' . $host . ' connection_timeout ' . $connection_timeout);
215 215
 
216
-		// open socket
217
-		if($connection_timeout > 0){
218
-			$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout);
219
-		} else {
220
-			$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str);
221
-		}
216
+        // open socket
217
+        if($connection_timeout > 0){
218
+            $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout);
219
+        } else {
220
+            $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str);
221
+        }
222 222
 		
223
-		// test pointer
224
-		if(!$this->fp) {
225
-			$msg = 'Couldn\'t open socket connection to server ' . $this->url;
226
-			if ($this->errno) {
227
-				$msg .= ', Error ('.$this->errno.'): '.$this->error_str;
228
-			} else {
229
-				$msg .= ' prior to connect().  This is often a problem looking up the host name.';
230
-			}
231
-			$this->debug($msg);
232
-			$this->setError($msg);
233
-			return false;
234
-		}
223
+        // test pointer
224
+        if(!$this->fp) {
225
+            $msg = 'Couldn\'t open socket connection to server ' . $this->url;
226
+            if ($this->errno) {
227
+                $msg .= ', Error ('.$this->errno.'): '.$this->error_str;
228
+            } else {
229
+                $msg .= ' prior to connect().  This is often a problem looking up the host name.';
230
+            }
231
+            $this->debug($msg);
232
+            $this->setError($msg);
233
+            return false;
234
+        }
235 235
 		
236
-		// set response timeout
237
-		$this->debug('set response timeout to ' . $response_timeout);
238
-		socket_set_timeout( $this->fp, $response_timeout);
236
+        // set response timeout
237
+        $this->debug('set response timeout to ' . $response_timeout);
238
+        socket_set_timeout( $this->fp, $response_timeout);
239 239
 
240
-		$this->debug('socket connected');
241
-		return true;
242
-	  } else if ($this->io_method() == 'curl') {
243
-		if (!extension_loaded('curl')) {
240
+        $this->debug('socket connected');
241
+        return true;
242
+        } else if ($this->io_method() == 'curl') {
243
+        if (!extension_loaded('curl')) {
244 244
 //			$this->setError('cURL Extension, or OpenSSL extension w/ PHP version >= 4.3 is required for HTTPS');
245
-			$this->setError('The PHP cURL Extension is required for HTTPS or NLTM.  You will need to re-build or update your PHP to include cURL or change php.ini to load the PHP cURL extension.');
246
-			return false;
247
-		}
248
-		// Avoid warnings when PHP does not have these options
249
-		if (defined('CURLOPT_CONNECTIONTIMEOUT'))
250
-			$CURLOPT_CONNECTIONTIMEOUT = CURLOPT_CONNECTIONTIMEOUT;
251
-		else
252
-			$CURLOPT_CONNECTIONTIMEOUT = 78;
253
-		if (defined('CURLOPT_HTTPAUTH'))
254
-			$CURLOPT_HTTPAUTH = CURLOPT_HTTPAUTH;
255
-		else
256
-			$CURLOPT_HTTPAUTH = 107;
257
-		if (defined('CURLOPT_PROXYAUTH'))
258
-			$CURLOPT_PROXYAUTH = CURLOPT_PROXYAUTH;
259
-		else
260
-			$CURLOPT_PROXYAUTH = 111;
261
-		if (defined('CURLAUTH_BASIC'))
262
-			$CURLAUTH_BASIC = CURLAUTH_BASIC;
263
-		else
264
-			$CURLAUTH_BASIC = 1;
265
-		if (defined('CURLAUTH_DIGEST'))
266
-			$CURLAUTH_DIGEST = CURLAUTH_DIGEST;
267
-		else
268
-			$CURLAUTH_DIGEST = 2;
269
-		if (defined('CURLAUTH_NTLM'))
270
-			$CURLAUTH_NTLM = CURLAUTH_NTLM;
271
-		else
272
-			$CURLAUTH_NTLM = 8;
245
+            $this->setError('The PHP cURL Extension is required for HTTPS or NLTM.  You will need to re-build or update your PHP to include cURL or change php.ini to load the PHP cURL extension.');
246
+            return false;
247
+        }
248
+        // Avoid warnings when PHP does not have these options
249
+        if (defined('CURLOPT_CONNECTIONTIMEOUT'))
250
+            $CURLOPT_CONNECTIONTIMEOUT = CURLOPT_CONNECTIONTIMEOUT;
251
+        else
252
+            $CURLOPT_CONNECTIONTIMEOUT = 78;
253
+        if (defined('CURLOPT_HTTPAUTH'))
254
+            $CURLOPT_HTTPAUTH = CURLOPT_HTTPAUTH;
255
+        else
256
+            $CURLOPT_HTTPAUTH = 107;
257
+        if (defined('CURLOPT_PROXYAUTH'))
258
+            $CURLOPT_PROXYAUTH = CURLOPT_PROXYAUTH;
259
+        else
260
+            $CURLOPT_PROXYAUTH = 111;
261
+        if (defined('CURLAUTH_BASIC'))
262
+            $CURLAUTH_BASIC = CURLAUTH_BASIC;
263
+        else
264
+            $CURLAUTH_BASIC = 1;
265
+        if (defined('CURLAUTH_DIGEST'))
266
+            $CURLAUTH_DIGEST = CURLAUTH_DIGEST;
267
+        else
268
+            $CURLAUTH_DIGEST = 2;
269
+        if (defined('CURLAUTH_NTLM'))
270
+            $CURLAUTH_NTLM = CURLAUTH_NTLM;
271
+        else
272
+            $CURLAUTH_NTLM = 8;
273 273
 
274
-		$this->debug('connect using cURL');
275
-		// init CURL
276
-		$this->ch = curl_init();
277
-		// set url
278
-		$hostURL = ($this->port != '') ? "$this->scheme://$this->host:$this->port" : "$this->scheme://$this->host";
279
-		// add path
280
-		$hostURL .= $this->path;
281
-		$this->setCurlOption(CURLOPT_URL, $hostURL);
282
-		// follow location headers (re-directs)
283
-		if (ini_get('safe_mode') || ini_get('open_basedir')) {
284
-			$this->debug('safe_mode or open_basedir set, so do not set CURLOPT_FOLLOWLOCATION');
285
-			$this->debug('safe_mode = ');
286
-			$this->appendDebug($this->varDump(ini_get('safe_mode')));
287
-			$this->debug('open_basedir = ');
288
-			$this->appendDebug($this->varDump(ini_get('open_basedir')));
289
-		} else {
290
-			$this->setCurlOption(CURLOPT_FOLLOWLOCATION, 1);
291
-		}
292
-		// ask for headers in the response output
293
-		$this->setCurlOption(CURLOPT_HEADER, 1);
294
-		// ask for the response output as the return value
295
-		$this->setCurlOption(CURLOPT_RETURNTRANSFER, 1);
296
-		// encode
297
-		// We manage this ourselves through headers and encoding
274
+        $this->debug('connect using cURL');
275
+        // init CURL
276
+        $this->ch = curl_init();
277
+        // set url
278
+        $hostURL = ($this->port != '') ? "$this->scheme://$this->host:$this->port" : "$this->scheme://$this->host";
279
+        // add path
280
+        $hostURL .= $this->path;
281
+        $this->setCurlOption(CURLOPT_URL, $hostURL);
282
+        // follow location headers (re-directs)
283
+        if (ini_get('safe_mode') || ini_get('open_basedir')) {
284
+            $this->debug('safe_mode or open_basedir set, so do not set CURLOPT_FOLLOWLOCATION');
285
+            $this->debug('safe_mode = ');
286
+            $this->appendDebug($this->varDump(ini_get('safe_mode')));
287
+            $this->debug('open_basedir = ');
288
+            $this->appendDebug($this->varDump(ini_get('open_basedir')));
289
+        } else {
290
+            $this->setCurlOption(CURLOPT_FOLLOWLOCATION, 1);
291
+        }
292
+        // ask for headers in the response output
293
+        $this->setCurlOption(CURLOPT_HEADER, 1);
294
+        // ask for the response output as the return value
295
+        $this->setCurlOption(CURLOPT_RETURNTRANSFER, 1);
296
+        // encode
297
+        // We manage this ourselves through headers and encoding
298 298
 //		if(function_exists('gzuncompress')){
299 299
 //			$this->setCurlOption(CURLOPT_ENCODING, 'deflate');
300 300
 //		}
301
-		// persistent connection
302
-		if ($this->persistentConnection) {
303
-			// I believe the following comment is now bogus, having applied to
304
-			// the code when it used CURLOPT_CUSTOMREQUEST to send the request.
305
-			// The way we send data, we cannot use persistent connections, since
306
-			// there will be some "junk" at the end of our request.
307
-			//$this->setCurlOption(CURL_HTTP_VERSION_1_1, true);
308
-			$this->persistentConnection = false;
309
-			$this->setHeader('Connection', 'close');
310
-		}
311
-		// set timeouts
312
-		if ($connection_timeout != 0) {
313
-			$this->setCurlOption($CURLOPT_CONNECTIONTIMEOUT, $connection_timeout);
314
-		}
315
-		if ($response_timeout != 0) {
316
-			$this->setCurlOption(CURLOPT_TIMEOUT, $response_timeout);
317
-		}
301
+        // persistent connection
302
+        if ($this->persistentConnection) {
303
+            // I believe the following comment is now bogus, having applied to
304
+            // the code when it used CURLOPT_CUSTOMREQUEST to send the request.
305
+            // The way we send data, we cannot use persistent connections, since
306
+            // there will be some "junk" at the end of our request.
307
+            //$this->setCurlOption(CURL_HTTP_VERSION_1_1, true);
308
+            $this->persistentConnection = false;
309
+            $this->setHeader('Connection', 'close');
310
+        }
311
+        // set timeouts
312
+        if ($connection_timeout != 0) {
313
+            $this->setCurlOption($CURLOPT_CONNECTIONTIMEOUT, $connection_timeout);
314
+        }
315
+        if ($response_timeout != 0) {
316
+            $this->setCurlOption(CURLOPT_TIMEOUT, $response_timeout);
317
+        }
318 318
 
319
-		if ($this->scheme == 'https') {
320
-			$this->debug('set cURL SSL verify options');
321
-			// recent versions of cURL turn on peer/host checking by default,
322
-			// while PHP binaries are not compiled with a default location for the
323
-			// CA cert bundle, so disable peer/host checking.
324
-			//$this->setCurlOption(CURLOPT_CAINFO, 'f:\php-4.3.2-win32\extensions\curl-ca-bundle.crt');		
325
-			$this->setCurlOption(CURLOPT_SSL_VERIFYPEER, 0);
326
-			$this->setCurlOption(CURLOPT_SSL_VERIFYHOST, 0);
319
+        if ($this->scheme == 'https') {
320
+            $this->debug('set cURL SSL verify options');
321
+            // recent versions of cURL turn on peer/host checking by default,
322
+            // while PHP binaries are not compiled with a default location for the
323
+            // CA cert bundle, so disable peer/host checking.
324
+            //$this->setCurlOption(CURLOPT_CAINFO, 'f:\php-4.3.2-win32\extensions\curl-ca-bundle.crt');		
325
+            $this->setCurlOption(CURLOPT_SSL_VERIFYPEER, 0);
326
+            $this->setCurlOption(CURLOPT_SSL_VERIFYHOST, 0);
327 327
 	
328
-			// support client certificates (thanks Tobias Boes, Doug Anarino, Eryan Ariobowo)
329
-			if ($this->authtype == 'certificate') {
330
-				$this->debug('set cURL certificate options');
331
-				if (isset($this->certRequest['cainfofile'])) {
332
-					$this->setCurlOption(CURLOPT_CAINFO, $this->certRequest['cainfofile']);
333
-				}
334
-				if (isset($this->certRequest['verifypeer'])) {
335
-					$this->setCurlOption(CURLOPT_SSL_VERIFYPEER, $this->certRequest['verifypeer']);
336
-				} else {
337
-					$this->setCurlOption(CURLOPT_SSL_VERIFYPEER, 1);
338
-				}
339
-				if (isset($this->certRequest['verifyhost'])) {
340
-					$this->setCurlOption(CURLOPT_SSL_VERIFYHOST, $this->certRequest['verifyhost']);
341
-				} else {
342
-					$this->setCurlOption(CURLOPT_SSL_VERIFYHOST, 1);
343
-				}
344
-				if (isset($this->certRequest['sslcertfile'])) {
345
-					$this->setCurlOption(CURLOPT_SSLCERT, $this->certRequest['sslcertfile']);
346
-				}
347
-				if (isset($this->certRequest['sslkeyfile'])) {
348
-					$this->setCurlOption(CURLOPT_SSLKEY, $this->certRequest['sslkeyfile']);
349
-				}
350
-				if (isset($this->certRequest['passphrase'])) {
351
-					$this->setCurlOption(CURLOPT_SSLKEYPASSWD, $this->certRequest['passphrase']);
352
-				}
353
-				if (isset($this->certRequest['certpassword'])) {
354
-					$this->setCurlOption(CURLOPT_SSLCERTPASSWD, $this->certRequest['certpassword']);
355
-				}
356
-			}
357
-		}
358
-		if ($this->authtype && ($this->authtype != 'certificate')) {
359
-			if ($this->username) {
360
-				$this->debug('set cURL username/password');
361
-				$this->setCurlOption(CURLOPT_USERPWD, "$this->username:$this->password");
362
-			}
363
-			if ($this->authtype == 'basic') {
364
-				$this->debug('set cURL for Basic authentication');
365
-				$this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_BASIC);
366
-			}
367
-			if ($this->authtype == 'digest') {
368
-				$this->debug('set cURL for digest authentication');
369
-				$this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_DIGEST);
370
-			}
371
-			if ($this->authtype == 'ntlm') {
372
-				$this->debug('set cURL for NTLM authentication');
373
-				$this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_NTLM);
374
-			}
375
-		}
376
-		if (is_array($this->proxy)) {
377
-			$this->debug('set cURL proxy options');
378
-			if ($this->proxy['port'] != '') {
379
-				$this->setCurlOption(CURLOPT_PROXY, $this->proxy['host'].':'.$this->proxy['port']);
380
-			} else {
381
-				$this->setCurlOption(CURLOPT_PROXY, $this->proxy['host']);
382
-			}
383
-			if ($this->proxy['username'] || $this->proxy['password']) {
384
-				$this->debug('set cURL proxy authentication options');
385
-				$this->setCurlOption(CURLOPT_PROXYUSERPWD, $this->proxy['username'].':'.$this->proxy['password']);
386
-				if ($this->proxy['authtype'] == 'basic') {
387
-					$this->setCurlOption($CURLOPT_PROXYAUTH, $CURLAUTH_BASIC);
388
-				}
389
-				if ($this->proxy['authtype'] == 'ntlm') {
390
-					$this->setCurlOption($CURLOPT_PROXYAUTH, $CURLAUTH_NTLM);
391
-				}
392
-			}
393
-		}
394
-		$this->debug('cURL connection set up');
395
-		return true;
396
-	  } else {
397
-		$this->setError('Unknown scheme ' . $this->scheme);
398
-		$this->debug('Unknown scheme ' . $this->scheme);
399
-		return false;
400
-	  }
401
-	}
328
+            // support client certificates (thanks Tobias Boes, Doug Anarino, Eryan Ariobowo)
329
+            if ($this->authtype == 'certificate') {
330
+                $this->debug('set cURL certificate options');
331
+                if (isset($this->certRequest['cainfofile'])) {
332
+                    $this->setCurlOption(CURLOPT_CAINFO, $this->certRequest['cainfofile']);
333
+                }
334
+                if (isset($this->certRequest['verifypeer'])) {
335
+                    $this->setCurlOption(CURLOPT_SSL_VERIFYPEER, $this->certRequest['verifypeer']);
336
+                } else {
337
+                    $this->setCurlOption(CURLOPT_SSL_VERIFYPEER, 1);
338
+                }
339
+                if (isset($this->certRequest['verifyhost'])) {
340
+                    $this->setCurlOption(CURLOPT_SSL_VERIFYHOST, $this->certRequest['verifyhost']);
341
+                } else {
342
+                    $this->setCurlOption(CURLOPT_SSL_VERIFYHOST, 1);
343
+                }
344
+                if (isset($this->certRequest['sslcertfile'])) {
345
+                    $this->setCurlOption(CURLOPT_SSLCERT, $this->certRequest['sslcertfile']);
346
+                }
347
+                if (isset($this->certRequest['sslkeyfile'])) {
348
+                    $this->setCurlOption(CURLOPT_SSLKEY, $this->certRequest['sslkeyfile']);
349
+                }
350
+                if (isset($this->certRequest['passphrase'])) {
351
+                    $this->setCurlOption(CURLOPT_SSLKEYPASSWD, $this->certRequest['passphrase']);
352
+                }
353
+                if (isset($this->certRequest['certpassword'])) {
354
+                    $this->setCurlOption(CURLOPT_SSLCERTPASSWD, $this->certRequest['certpassword']);
355
+                }
356
+            }
357
+        }
358
+        if ($this->authtype && ($this->authtype != 'certificate')) {
359
+            if ($this->username) {
360
+                $this->debug('set cURL username/password');
361
+                $this->setCurlOption(CURLOPT_USERPWD, "$this->username:$this->password");
362
+            }
363
+            if ($this->authtype == 'basic') {
364
+                $this->debug('set cURL for Basic authentication');
365
+                $this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_BASIC);
366
+            }
367
+            if ($this->authtype == 'digest') {
368
+                $this->debug('set cURL for digest authentication');
369
+                $this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_DIGEST);
370
+            }
371
+            if ($this->authtype == 'ntlm') {
372
+                $this->debug('set cURL for NTLM authentication');
373
+                $this->setCurlOption($CURLOPT_HTTPAUTH, $CURLAUTH_NTLM);
374
+            }
375
+        }
376
+        if (is_array($this->proxy)) {
377
+            $this->debug('set cURL proxy options');
378
+            if ($this->proxy['port'] != '') {
379
+                $this->setCurlOption(CURLOPT_PROXY, $this->proxy['host'].':'.$this->proxy['port']);
380
+            } else {
381
+                $this->setCurlOption(CURLOPT_PROXY, $this->proxy['host']);
382
+            }
383
+            if ($this->proxy['username'] || $this->proxy['password']) {
384
+                $this->debug('set cURL proxy authentication options');
385
+                $this->setCurlOption(CURLOPT_PROXYUSERPWD, $this->proxy['username'].':'.$this->proxy['password']);
386
+                if ($this->proxy['authtype'] == 'basic') {
387
+                    $this->setCurlOption($CURLOPT_PROXYAUTH, $CURLAUTH_BASIC);
388
+                }
389
+                if ($this->proxy['authtype'] == 'ntlm') {
390
+                    $this->setCurlOption($CURLOPT_PROXYAUTH, $CURLAUTH_NTLM);
391
+                }
392
+            }
393
+        }
394
+        $this->debug('cURL connection set up');
395
+        return true;
396
+        } else {
397
+        $this->setError('Unknown scheme ' . $this->scheme);
398
+        $this->debug('Unknown scheme ' . $this->scheme);
399
+        return false;
400
+        }
401
+    }
402 402
 
403
-	/**
404
-	* sends the SOAP request and gets the SOAP response via HTTP[S]
405
-	*
406
-	* @param    string $data message data
407
-	* @param    integer $timeout set connection timeout in seconds
408
-	* @param	integer $response_timeout set response timeout in seconds
409
-	* @param	array $cookies cookies to send
410
-	* @return	string data
411
-	* @access   public
412
-	*/
413
-	function send($data, $timeout=0, $response_timeout=30, $cookies=NULL) {
403
+    /**
404
+     * sends the SOAP request and gets the SOAP response via HTTP[S]
405
+     *
406
+     * @param    string $data message data
407
+     * @param    integer $timeout set connection timeout in seconds
408
+     * @param	integer $response_timeout set response timeout in seconds
409
+     * @param	array $cookies cookies to send
410
+     * @return	string data
411
+     * @access   public
412
+     */
413
+    function send($data, $timeout=0, $response_timeout=30, $cookies=NULL) {
414 414
 		
415
-		$this->debug('entered send() with data of length: '.strlen($data));
415
+        $this->debug('entered send() with data of length: '.strlen($data));
416 416
 
417
-		$this->tryagain = true;
418
-		$tries = 0;
419
-		while ($this->tryagain) {
420
-			$this->tryagain = false;
421
-			if ($tries++ < 2) {
422
-				// make connnection
423
-				if (!$this->connect($timeout, $response_timeout)){
424
-					return false;
425
-				}
417
+        $this->tryagain = true;
418
+        $tries = 0;
419
+        while ($this->tryagain) {
420
+            $this->tryagain = false;
421
+            if ($tries++ < 2) {
422
+                // make connnection
423
+                if (!$this->connect($timeout, $response_timeout)){
424
+                    return false;
425
+                }
426 426
 				
427
-				// send request
428
-				if (!$this->sendRequest($data, $cookies)){
429
-					return false;
430
-				}
427
+                // send request
428
+                if (!$this->sendRequest($data, $cookies)){
429
+                    return false;
430
+                }
431 431
 				
432
-				// get response
433
-				$respdata = $this->getResponse();
434
-			} else {
435
-				$this->setError("Too many tries to get an OK response ($this->response_status_line)");
436
-			}
437
-		}		
438
-		$this->debug('end of send()');
439
-		return $respdata;
440
-	}
432
+                // get response
433
+                $respdata = $this->getResponse();
434
+            } else {
435
+                $this->setError("Too many tries to get an OK response ($this->response_status_line)");
436
+            }
437
+        }		
438
+        $this->debug('end of send()');
439
+        return $respdata;
440
+    }
441 441
 
442 442
 
443
-	/**
444
-	* sends the SOAP request and gets the SOAP response via HTTPS using CURL
445
-	*
446
-	* @param    string $data message data
447
-	* @param    integer $timeout set connection timeout in seconds
448
-	* @param	integer $response_timeout set response timeout in seconds
449
-	* @param	array $cookies cookies to send
450
-	* @return	string data
451
-	* @access   public
452
-	* @deprecated
453
-	*/
454
-	function sendHTTPS($data, $timeout=0, $response_timeout=30, $cookies) {
455
-		return $this->send($data, $timeout, $response_timeout, $cookies);
456
-	}
443
+    /**
444
+     * sends the SOAP request and gets the SOAP response via HTTPS using CURL
445
+     *
446
+     * @param    string $data message data
447
+     * @param    integer $timeout set connection timeout in seconds
448
+     * @param	integer $response_timeout set response timeout in seconds
449
+     * @param	array $cookies cookies to send
450
+     * @return	string data
451
+     * @access   public
452
+     * @deprecated
453
+     */
454
+    function sendHTTPS($data, $timeout=0, $response_timeout=30, $cookies) {
455
+        return $this->send($data, $timeout, $response_timeout, $cookies);
456
+    }
457 457
 	
458
-	/**
459
-	* if authenticating, set user credentials here
460
-	*
461
-	* @param    string $username
462
-	* @param    string $password
463
-	* @param	string $authtype (basic|digest|certificate|ntlm)
464
-	* @param	array $digestRequest (keys must be nonce, nc, realm, qop)
465
-	* @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
466
-	* @access   public
467
-	*/
468
-	function setCredentials($username, $password, $authtype = 'basic', $digestRequest = array(), $certRequest = array()) {
469
-		$this->debug("setCredentials username=$username authtype=$authtype digestRequest=");
470
-		$this->appendDebug($this->varDump($digestRequest));
471
-		$this->debug("certRequest=");
472
-		$this->appendDebug($this->varDump($certRequest));
473
-		// cf. RFC 2617
474
-		if ($authtype == 'basic') {
475
-			$this->setHeader('Authorization', 'Basic '.base64_encode(str_replace(':','',$username).':'.$password));
476
-		} elseif ($authtype == 'digest') {
477
-			if (isset($digestRequest['nonce'])) {
478
-				$digestRequest['nc'] = isset($digestRequest['nc']) ? $digestRequest['nc']++ : 1;
458
+    /**
459
+     * if authenticating, set user credentials here
460
+     *
461
+     * @param    string $username
462
+     * @param    string $password
463
+     * @param	string $authtype (basic|digest|certificate|ntlm)
464
+     * @param	array $digestRequest (keys must be nonce, nc, realm, qop)
465
+     * @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
466
+     * @access   public
467
+     */
468
+    function setCredentials($username, $password, $authtype = 'basic', $digestRequest = array(), $certRequest = array()) {
469
+        $this->debug("setCredentials username=$username authtype=$authtype digestRequest=");
470
+        $this->appendDebug($this->varDump($digestRequest));
471
+        $this->debug("certRequest=");
472
+        $this->appendDebug($this->varDump($certRequest));
473
+        // cf. RFC 2617
474
+        if ($authtype == 'basic') {
475
+            $this->setHeader('Authorization', 'Basic '.base64_encode(str_replace(':','',$username).':'.$password));
476
+        } elseif ($authtype == 'digest') {
477
+            if (isset($digestRequest['nonce'])) {
478
+                $digestRequest['nc'] = isset($digestRequest['nc']) ? $digestRequest['nc']++ : 1;
479 479
 				
480
-				// calculate the Digest hashes (calculate code based on digest implementation found at: http://www.rassoc.com/gregr/weblog/stories/2002/07/09/webServicesSecurityHttpDigestAuthenticationWithoutActiveDirectory.html)
480
+                // calculate the Digest hashes (calculate code based on digest implementation found at: http://www.rassoc.com/gregr/weblog/stories/2002/07/09/webServicesSecurityHttpDigestAuthenticationWithoutActiveDirectory.html)
481 481
 	
482
-				// A1 = unq(username-value) ":" unq(realm-value) ":" passwd
483
-				$A1 = $username. ':' . (isset($digestRequest['realm']) ? $digestRequest['realm'] : '') . ':' . $password;
482
+                // A1 = unq(username-value) ":" unq(realm-value) ":" passwd
483
+                $A1 = $username. ':' . (isset($digestRequest['realm']) ? $digestRequest['realm'] : '') . ':' . $password;
484 484
 	
485
-				// H(A1) = MD5(A1)
486
-				$HA1 = md5($A1);
485
+                // H(A1) = MD5(A1)
486
+                $HA1 = md5($A1);
487 487
 	
488
-				// A2 = Method ":" digest-uri-value
489
-				$A2 = $this->request_method . ':' . $this->digest_uri;
488
+                // A2 = Method ":" digest-uri-value
489
+                $A2 = $this->request_method . ':' . $this->digest_uri;
490 490
 	
491
-				// H(A2)
492
-				$HA2 =  md5($A2);
491
+                // H(A2)
492
+                $HA2 =  md5($A2);
493 493
 	
494
-				// KD(secret, data) = H(concat(secret, ":", data))
495
-				// if qop == auth:
496
-				// request-digest  = <"> < KD ( H(A1),     unq(nonce-value)
497
-				//                              ":" nc-value
498
-				//                              ":" unq(cnonce-value)
499
-				//                              ":" unq(qop-value)
500
-				//                              ":" H(A2)
501
-				//                            ) <">
502
-				// if qop is missing,
503
-				// request-digest  = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) ) > <">
494
+                // KD(secret, data) = H(concat(secret, ":", data))
495
+                // if qop == auth:
496
+                // request-digest  = <"> < KD ( H(A1),     unq(nonce-value)
497
+                //                              ":" nc-value
498
+                //                              ":" unq(cnonce-value)
499
+                //                              ":" unq(qop-value)
500
+                //                              ":" H(A2)
501
+                //                            ) <">
502
+                // if qop is missing,
503
+                // request-digest  = <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) ) > <">
504 504
 	
505
-				$unhashedDigest = '';
506
-				$nonce = isset($digestRequest['nonce']) ? $digestRequest['nonce'] : '';
507
-				$cnonce = $nonce;
508
-				if ($digestRequest['qop'] != '') {
509
-					$unhashedDigest = $HA1 . ':' . $nonce . ':' . sprintf("%08d", $digestRequest['nc']) . ':' . $cnonce . ':' . $digestRequest['qop'] . ':' . $HA2;
510
-				} else {
511
-					$unhashedDigest = $HA1 . ':' . $nonce . ':' . $HA2;
512
-				}
505
+                $unhashedDigest = '';
506
+                $nonce = isset($digestRequest['nonce']) ? $digestRequest['nonce'] : '';
507
+                $cnonce = $nonce;
508
+                if ($digestRequest['qop'] != '') {
509
+                    $unhashedDigest = $HA1 . ':' . $nonce . ':' . sprintf("%08d", $digestRequest['nc']) . ':' . $cnonce . ':' . $digestRequest['qop'] . ':' . $HA2;
510
+                } else {
511
+                    $unhashedDigest = $HA1 . ':' . $nonce . ':' . $HA2;
512
+                }
513 513
 	
514
-				$hashedDigest = md5($unhashedDigest);
514
+                $hashedDigest = md5($unhashedDigest);
515 515
 	
516
-				$opaque = '';	
517
-				if (isset($digestRequest['opaque'])) {
518
-					$opaque = ', opaque="' . $digestRequest['opaque'] . '"';
519
-				}
516
+                $opaque = '';	
517
+                if (isset($digestRequest['opaque'])) {
518
+                    $opaque = ', opaque="' . $digestRequest['opaque'] . '"';
519
+                }
520 520
 
521
-				$this->setHeader('Authorization', 'Digest username="' . $username . '", realm="' . $digestRequest['realm'] . '", nonce="' . $nonce . '", uri="' . $this->digest_uri . $opaque . '", cnonce="' . $cnonce . '", nc=' . sprintf("%08x", $digestRequest['nc']) . ', qop="' . $digestRequest['qop'] . '", response="' . $hashedDigest . '"');
522
-			}
523
-		} elseif ($authtype == 'certificate') {
524
-			$this->certRequest = $certRequest;
525
-			$this->debug('Authorization header not set for certificate');
526
-		} elseif ($authtype == 'ntlm') {
527
-			// do nothing
528
-			$this->debug('Authorization header not set for ntlm');
529
-		}
530
-		$this->username = $username;
531
-		$this->password = $password;
532
-		$this->authtype = $authtype;
533
-		$this->digestRequest = $digestRequest;
534
-	}
521
+                $this->setHeader('Authorization', 'Digest username="' . $username . '", realm="' . $digestRequest['realm'] . '", nonce="' . $nonce . '", uri="' . $this->digest_uri . $opaque . '", cnonce="' . $cnonce . '", nc=' . sprintf("%08x", $digestRequest['nc']) . ', qop="' . $digestRequest['qop'] . '", response="' . $hashedDigest . '"');
522
+            }
523
+        } elseif ($authtype == 'certificate') {
524
+            $this->certRequest = $certRequest;
525
+            $this->debug('Authorization header not set for certificate');
526
+        } elseif ($authtype == 'ntlm') {
527
+            // do nothing
528
+            $this->debug('Authorization header not set for ntlm');
529
+        }
530
+        $this->username = $username;
531
+        $this->password = $password;
532
+        $this->authtype = $authtype;
533
+        $this->digestRequest = $digestRequest;
534
+    }
535 535
 	
536
-	/**
537
-	* set the soapaction value
538
-	*
539
-	* @param    string $soapaction
540
-	* @access   public
541
-	*/
542
-	function setSOAPAction($soapaction) {
543
-		$this->setHeader('SOAPAction', '"' . $soapaction . '"');
544
-	}
536
+    /**
537
+     * set the soapaction value
538
+     *
539
+     * @param    string $soapaction
540
+     * @access   public
541
+     */
542
+    function setSOAPAction($soapaction) {
543
+        $this->setHeader('SOAPAction', '"' . $soapaction . '"');
544
+    }
545 545
 	
546
-	/**
547
-	* use http encoding
548
-	*
549
-	* @param    string $enc encoding style. supported values: gzip, deflate, or both
550
-	* @access   public
551
-	*/
552
-	function setEncoding($enc='gzip, deflate') {
553
-		if (function_exists('gzdeflate')) {
554
-			$this->protocol_version = '1.1';
555
-			$this->setHeader('Accept-Encoding', $enc);
556
-			if (!isset($this->outgoing_headers['Connection'])) {
557
-				$this->setHeader('Connection', 'close');
558
-				$this->persistentConnection = false;
559
-			}
560
-			// deprecated as of PHP 5.3.0
561
-			//set_magic_quotes_runtime(0);
562
-			$this->encoding = $enc;
563
-		}
564
-	}
546
+    /**
547
+     * use http encoding
548
+     *
549
+     * @param    string $enc encoding style. supported values: gzip, deflate, or both
550
+     * @access   public
551
+     */
552
+    function setEncoding($enc='gzip, deflate') {
553
+        if (function_exists('gzdeflate')) {
554
+            $this->protocol_version = '1.1';
555
+            $this->setHeader('Accept-Encoding', $enc);
556
+            if (!isset($this->outgoing_headers['Connection'])) {
557
+                $this->setHeader('Connection', 'close');
558
+                $this->persistentConnection = false;
559
+            }
560
+            // deprecated as of PHP 5.3.0
561
+            //set_magic_quotes_runtime(0);
562
+            $this->encoding = $enc;
563
+        }
564
+    }
565 565
 	
566
-	/**
567
-	* set proxy info here
568
-	*
569
-	* @param    string $proxyhost use an empty string to remove proxy
570
-	* @param    string $proxyport
571
-	* @param	string $proxyusername
572
-	* @param	string $proxypassword
573
-	* @param	string $proxyauthtype (basic|ntlm)
574
-	* @access   public
575
-	*/
576
-	function setProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '', $proxyauthtype = 'basic') {
577
-		if ($proxyhost) {
578
-			$this->proxy = array(
579
-				'host' => $proxyhost,
580
-				'port' => $proxyport,
581
-				'username' => $proxyusername,
582
-				'password' => $proxypassword,
583
-				'authtype' => $proxyauthtype
584
-			);
585
-			if ($proxyusername != '' && $proxypassword != '' && $proxyauthtype = 'basic') {
586
-				$this->setHeader('Proxy-Authorization', ' Basic '.base64_encode($proxyusername.':'.$proxypassword));
587
-			}
588
-		} else {
589
-			$this->debug('remove proxy');
590
-			$proxy = null;
591
-			unsetHeader('Proxy-Authorization');
592
-		}
593
-	}
566
+    /**
567
+     * set proxy info here
568
+     *
569
+     * @param    string $proxyhost use an empty string to remove proxy
570
+     * @param    string $proxyport
571
+     * @param	string $proxyusername
572
+     * @param	string $proxypassword
573
+     * @param	string $proxyauthtype (basic|ntlm)
574
+     * @access   public
575
+     */
576
+    function setProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '', $proxyauthtype = 'basic') {
577
+        if ($proxyhost) {
578
+            $this->proxy = array(
579
+                'host' => $proxyhost,
580
+                'port' => $proxyport,
581
+                'username' => $proxyusername,
582
+                'password' => $proxypassword,
583
+                'authtype' => $proxyauthtype
584
+            );
585
+            if ($proxyusername != '' && $proxypassword != '' && $proxyauthtype = 'basic') {
586
+                $this->setHeader('Proxy-Authorization', ' Basic '.base64_encode($proxyusername.':'.$proxypassword));
587
+            }
588
+        } else {
589
+            $this->debug('remove proxy');
590
+            $proxy = null;
591
+            unsetHeader('Proxy-Authorization');
592
+        }
593
+    }
594 594
 	
595 595
 
596
-	/**
597
-	 * Test if the given string starts with a header that is to be skipped.
598
-	 * Skippable headers result from chunked transfer and proxy requests.
599
-	 *
600
-	 * @param	string $data The string to check.
601
-	 * @returns	boolean	Whether a skippable header was found.
602
-	 * @access	private
603
-	 */
604
-	function isSkippableCurlHeader(&$data) {
605
-		$skipHeaders = array(	'HTTP/1.1 100',
606
-								'HTTP/1.0 301',
607
-								'HTTP/1.1 301',
608
-								'HTTP/1.0 302',
609
-								'HTTP/1.1 302',
610
-								'HTTP/1.0 401',
611
-								'HTTP/1.1 401',
612
-								'HTTP/1.0 200 Connection established');
613
-		foreach ($skipHeaders as $hd) {
614
-			$prefix = substr($data, 0, strlen($hd));
615
-			if ($prefix == $hd) return true;
616
-		}
596
+    /**
597
+     * Test if the given string starts with a header that is to be skipped.
598
+     * Skippable headers result from chunked transfer and proxy requests.
599
+     *
600
+     * @param	string $data The string to check.
601
+     * @returns	boolean	Whether a skippable header was found.
602
+     * @access	private
603
+     */
604
+    function isSkippableCurlHeader(&$data) {
605
+        $skipHeaders = array(	'HTTP/1.1 100',
606
+                                'HTTP/1.0 301',
607
+                                'HTTP/1.1 301',
608
+                                'HTTP/1.0 302',
609
+                                'HTTP/1.1 302',
610
+                                'HTTP/1.0 401',
611
+                                'HTTP/1.1 401',
612
+                                'HTTP/1.0 200 Connection established');
613
+        foreach ($skipHeaders as $hd) {
614
+            $prefix = substr($data, 0, strlen($hd));
615
+            if ($prefix == $hd) return true;
616
+        }
617 617
 
618
-		return false;
619
-	}
618
+        return false;
619
+    }
620 620
 
621
-	/**
622
-	* decode a string that is encoded w/ "chunked' transfer encoding
623
- 	* as defined in RFC2068 19.4.6
624
-	*
625
-	* @param    string $buffer
626
-	* @param    string $lb
627
-	* @returns	string
628
-	* @access   public
629
-	* @deprecated
630
-	*/
631
-	function decodeChunked($buffer, $lb){
632
-		// length := 0
633
-		$length = 0;
634
-		$new = '';
621
+    /**
622
+     * decode a string that is encoded w/ "chunked' transfer encoding
623
+     * as defined in RFC2068 19.4.6
624
+     *
625
+     * @param    string $buffer
626
+     * @param    string $lb
627
+     * @returns	string
628
+     * @access   public
629
+     * @deprecated
630
+     */
631
+    function decodeChunked($buffer, $lb){
632
+        // length := 0
633
+        $length = 0;
634
+        $new = '';
635 635
 		
636
-		// read chunk-size, chunk-extension (if any) and CRLF
637
-		// get the position of the linebreak
638
-		$chunkend = strpos($buffer, $lb);
639
-		if ($chunkend == FALSE) {
640
-			$this->debug('no linebreak found in decodeChunked');
641
-			return $new;
642
-		}
643
-		$temp = substr($buffer,0,$chunkend);
644
-		$chunk_size = hexdec( trim($temp) );
645
-		$chunkstart = $chunkend + strlen($lb);
646
-		// while (chunk-size > 0) {
647
-		while ($chunk_size > 0) {
648
-			$this->debug("chunkstart: $chunkstart chunk_size: $chunk_size");
649
-			$chunkend = strpos( $buffer, $lb, $chunkstart + $chunk_size);
636
+        // read chunk-size, chunk-extension (if any) and CRLF
637
+        // get the position of the linebreak
638
+        $chunkend = strpos($buffer, $lb);
639
+        if ($chunkend == FALSE) {
640
+            $this->debug('no linebreak found in decodeChunked');
641
+            return $new;
642
+        }
643
+        $temp = substr($buffer,0,$chunkend);
644
+        $chunk_size = hexdec( trim($temp) );
645
+        $chunkstart = $chunkend + strlen($lb);
646
+        // while (chunk-size > 0) {
647
+        while ($chunk_size > 0) {
648
+            $this->debug("chunkstart: $chunkstart chunk_size: $chunk_size");
649
+            $chunkend = strpos( $buffer, $lb, $chunkstart + $chunk_size);
650 650
 		  	
651
-			// Just in case we got a broken connection
652
-		  	if ($chunkend == FALSE) {
653
-		  	    $chunk = substr($buffer,$chunkstart);
654
-				// append chunk-data to entity-body
655
-		    	$new .= $chunk;
656
-		  	    $length += strlen($chunk);
657
-		  	    break;
658
-			}
651
+            // Just in case we got a broken connection
652
+                if ($chunkend == FALSE) {
653
+                    $chunk = substr($buffer,$chunkstart);
654
+                // append chunk-data to entity-body
655
+                $new .= $chunk;
656
+                    $length += strlen($chunk);
657
+                    break;
658
+            }
659 659
 			
660
-		  	// read chunk-data and CRLF
661
-		  	$chunk = substr($buffer,$chunkstart,$chunkend-$chunkstart);
662
-		  	// append chunk-data to entity-body
663
-		  	$new .= $chunk;
664
-		  	// length := length + chunk-size
665
-		  	$length += strlen($chunk);
666
-		  	// read chunk-size and CRLF
667
-		  	$chunkstart = $chunkend + strlen($lb);
660
+                // read chunk-data and CRLF
661
+                $chunk = substr($buffer,$chunkstart,$chunkend-$chunkstart);
662
+                // append chunk-data to entity-body
663
+                $new .= $chunk;
664
+                // length := length + chunk-size
665
+                $length += strlen($chunk);
666
+                // read chunk-size and CRLF
667
+                $chunkstart = $chunkend + strlen($lb);
668 668
 			
669
-		  	$chunkend = strpos($buffer, $lb, $chunkstart) + strlen($lb);
670
-			if ($chunkend == FALSE) {
671
-				break; //Just in case we got a broken connection
672
-			}
673
-			$temp = substr($buffer,$chunkstart,$chunkend-$chunkstart);
674
-			$chunk_size = hexdec( trim($temp) );
675
-			$chunkstart = $chunkend;
676
-		}
677
-		return $new;
678
-	}
669
+                $chunkend = strpos($buffer, $lb, $chunkstart) + strlen($lb);
670
+            if ($chunkend == FALSE) {
671
+                break; //Just in case we got a broken connection
672
+            }
673
+            $temp = substr($buffer,$chunkstart,$chunkend-$chunkstart);
674
+            $chunk_size = hexdec( trim($temp) );
675
+            $chunkstart = $chunkend;
676
+        }
677
+        return $new;
678
+    }
679 679
 	
680
-	/**
681
-	 * Writes the payload, including HTTP headers, to $this->outgoing_payload.
682
-	 *
683
-	 * @param	string $data HTTP body
684
-	 * @param	string $cookie_str data for HTTP Cookie header
685
-	 * @return	void
686
-	 * @access	private
687
-	 */
688
-	function buildPayload($data, $cookie_str = '') {
689
-		// Note: for cURL connections, $this->outgoing_payload is ignored,
690
-		// as is the Content-Length header, but these are still created as
691
-		// debugging guides.
680
+    /**
681
+     * Writes the payload, including HTTP headers, to $this->outgoing_payload.
682
+     *
683
+     * @param	string $data HTTP body
684
+     * @param	string $cookie_str data for HTTP Cookie header
685
+     * @return	void
686
+     * @access	private
687
+     */
688
+    function buildPayload($data, $cookie_str = '') {
689
+        // Note: for cURL connections, $this->outgoing_payload is ignored,
690
+        // as is the Content-Length header, but these are still created as
691
+        // debugging guides.
692 692
 
693
-		// add content-length header
694
-		if ($this->request_method != 'GET') {
695
-			$this->setHeader('Content-Length', strlen($data));
696
-		}
693
+        // add content-length header
694
+        if ($this->request_method != 'GET') {
695
+            $this->setHeader('Content-Length', strlen($data));
696
+        }
697 697
 
698
-		// start building outgoing payload:
699
-		if ($this->proxy) {
700
-			$uri = $this->url;
701
-		} else {
702
-			$uri = $this->uri;
703
-		}
704
-		$req = "$this->request_method $uri HTTP/$this->protocol_version";
705
-		$this->debug("HTTP request: $req");
706
-		$this->outgoing_payload = "$req\r\n";
698
+        // start building outgoing payload:
699
+        if ($this->proxy) {
700
+            $uri = $this->url;
701
+        } else {
702
+            $uri = $this->uri;
703
+        }
704
+        $req = "$this->request_method $uri HTTP/$this->protocol_version";
705
+        $this->debug("HTTP request: $req");
706
+        $this->outgoing_payload = "$req\r\n";
707 707
 
708
-		// loop thru headers, serializing
709
-		foreach($this->outgoing_headers as $k => $v){
710
-			$hdr = $k.': '.$v;
711
-			$this->debug("HTTP header: $hdr");
712
-			$this->outgoing_payload .= "$hdr\r\n";
713
-		}
708
+        // loop thru headers, serializing
709
+        foreach($this->outgoing_headers as $k => $v){
710
+            $hdr = $k.': '.$v;
711
+            $this->debug("HTTP header: $hdr");
712
+            $this->outgoing_payload .= "$hdr\r\n";
713
+        }
714 714
 
715
-		// add any cookies
716
-		if ($cookie_str != '') {
717
-			$hdr = 'Cookie: '.$cookie_str;
718
-			$this->debug("HTTP header: $hdr");
719
-			$this->outgoing_payload .= "$hdr\r\n";
720
-		}
715
+        // add any cookies
716
+        if ($cookie_str != '') {
717
+            $hdr = 'Cookie: '.$cookie_str;
718
+            $this->debug("HTTP header: $hdr");
719
+            $this->outgoing_payload .= "$hdr\r\n";
720
+        }
721 721
 
722
-		// header/body separator
723
-		$this->outgoing_payload .= "\r\n";
722
+        // header/body separator
723
+        $this->outgoing_payload .= "\r\n";
724 724
 		
725
-		// add data
726
-		$this->outgoing_payload .= $data;
727
-	}
725
+        // add data
726
+        $this->outgoing_payload .= $data;
727
+    }
728 728
 
729
-	/**
730
-	* sends the SOAP request via HTTP[S]
731
-	*
732
-	* @param    string $data message data
733
-	* @param	array $cookies cookies to send
734
-	* @return	boolean	true if OK, false if problem
735
-	* @access   private
736
-	*/
737
-	function sendRequest($data, $cookies = NULL) {
738
-		// build cookie string
739
-		$cookie_str = $this->getCookiesForRequest($cookies, (($this->scheme == 'ssl') || ($this->scheme == 'https')));
729
+    /**
730
+     * sends the SOAP request via HTTP[S]
731
+     *
732
+     * @param    string $data message data
733
+     * @param	array $cookies cookies to send
734
+     * @return	boolean	true if OK, false if problem
735
+     * @access   private
736
+     */
737
+    function sendRequest($data, $cookies = NULL) {
738
+        // build cookie string
739
+        $cookie_str = $this->getCookiesForRequest($cookies, (($this->scheme == 'ssl') || ($this->scheme == 'https')));
740 740
 
741
-		// build payload
742
-		$this->buildPayload($data, $cookie_str);
741
+        // build payload
742
+        $this->buildPayload($data, $cookie_str);
743 743
 
744
-	  if ($this->io_method() == 'socket') {
745
-		// send payload
746
-		if(!fputs($this->fp, $this->outgoing_payload, strlen($this->outgoing_payload))) {
747
-			$this->setError('couldn\'t write message data to socket');
748
-			$this->debug('couldn\'t write message data to socket');
749
-			return false;
750
-		}
751
-		$this->debug('wrote data to socket, length = ' . strlen($this->outgoing_payload));
752
-		return true;
753
-	  } else if ($this->io_method() == 'curl') {
754
-		// set payload
755
-		// cURL does say this should only be the verb, and in fact it
756
-		// turns out that the URI and HTTP version are appended to this, which
757
-		// some servers refuse to work with (so we no longer use this method!)
758
-		//$this->setCurlOption(CURLOPT_CUSTOMREQUEST, $this->outgoing_payload);
759
-		$curl_headers = array();
760
-		foreach($this->outgoing_headers as $k => $v){
761
-			if ($k == 'Connection' || $k == 'Content-Length' || $k == 'Host' || $k == 'Authorization' || $k == 'Proxy-Authorization') {
762
-				$this->debug("Skip cURL header $k: $v");
763
-			} else {
764
-				$curl_headers[] = "$k: $v";
765
-			}
766
-		}
767
-		if ($cookie_str != '') {
768
-			$curl_headers[] = 'Cookie: ' . $cookie_str;
769
-		}
770
-		$this->setCurlOption(CURLOPT_HTTPHEADER, $curl_headers);
771
-		$this->debug('set cURL HTTP headers');
772
-		if ($this->request_method == "POST") {
773
-	  		$this->setCurlOption(CURLOPT_POST, 1);
774
-	  		$this->setCurlOption(CURLOPT_POSTFIELDS, $data);
775
-			$this->debug('set cURL POST data');
776
-	  	} else {
777
-	  	}
778
-		// insert custom user-set cURL options
779
-		foreach ($this->ch_options as $key => $val) {
780
-			$this->setCurlOption($key, $val);
781
-		}
744
+        if ($this->io_method() == 'socket') {
745
+        // send payload
746
+        if(!fputs($this->fp, $this->outgoing_payload, strlen($this->outgoing_payload))) {
747
+            $this->setError('couldn\'t write message data to socket');
748
+            $this->debug('couldn\'t write message data to socket');
749
+            return false;
750
+        }
751
+        $this->debug('wrote data to socket, length = ' . strlen($this->outgoing_payload));
752
+        return true;
753
+        } else if ($this->io_method() == 'curl') {
754
+        // set payload
755
+        // cURL does say this should only be the verb, and in fact it
756
+        // turns out that the URI and HTTP version are appended to this, which
757
+        // some servers refuse to work with (so we no longer use this method!)
758
+        //$this->setCurlOption(CURLOPT_CUSTOMREQUEST, $this->outgoing_payload);
759
+        $curl_headers = array();
760
+        foreach($this->outgoing_headers as $k => $v){
761
+            if ($k == 'Connection' || $k == 'Content-Length' || $k == 'Host' || $k == 'Authorization' || $k == 'Proxy-Authorization') {
762
+                $this->debug("Skip cURL header $k: $v");
763
+            } else {
764
+                $curl_headers[] = "$k: $v";
765
+            }
766
+        }
767
+        if ($cookie_str != '') {
768
+            $curl_headers[] = 'Cookie: ' . $cookie_str;
769
+        }
770
+        $this->setCurlOption(CURLOPT_HTTPHEADER, $curl_headers);
771
+        $this->debug('set cURL HTTP headers');
772
+        if ($this->request_method == "POST") {
773
+                $this->setCurlOption(CURLOPT_POST, 1);
774
+                $this->setCurlOption(CURLOPT_POSTFIELDS, $data);
775
+            $this->debug('set cURL POST data');
776
+            } else {
777
+            }
778
+        // insert custom user-set cURL options
779
+        foreach ($this->ch_options as $key => $val) {
780
+            $this->setCurlOption($key, $val);
781
+        }
782 782
 
783
-		$this->debug('set cURL payload');
784
-		return true;
785
-	  }
786
-	}
783
+        $this->debug('set cURL payload');
784
+        return true;
785
+        }
786
+    }
787 787
 
788
-	/**
789
-	* gets the SOAP response via HTTP[S]
790
-	*
791
-	* @return	string the response (also sets member variables like incoming_payload)
792
-	* @access   private
793
-	*/
794
-	function getResponse(){
795
-		$this->incoming_payload = '';
788
+    /**
789
+     * gets the SOAP response via HTTP[S]
790
+     *
791
+     * @return	string the response (also sets member variables like incoming_payload)
792
+     * @access   private
793
+     */
794
+    function getResponse(){
795
+        $this->incoming_payload = '';
796 796
 	    
797
-	  if ($this->io_method() == 'socket') {
798
-	    // loop until headers have been retrieved
799
-	    $data = '';
800
-	    while (!isset($lb)){
797
+        if ($this->io_method() == 'socket') {
798
+        // loop until headers have been retrieved
799
+        $data = '';
800
+        while (!isset($lb)){
801 801
 
802
-			// We might EOF during header read.
803
-			if(feof($this->fp)) {
804
-				$this->incoming_payload = $data;
805
-				$this->debug('found no headers before EOF after length ' . strlen($data));
806
-				$this->debug("received before EOF:\n" . $data);
807
-				$this->setError('server failed to send headers');
808
-				return false;
809
-			}
802
+            // We might EOF during header read.
803
+            if(feof($this->fp)) {
804
+                $this->incoming_payload = $data;
805
+                $this->debug('found no headers before EOF after length ' . strlen($data));
806
+                $this->debug("received before EOF:\n" . $data);
807
+                $this->setError('server failed to send headers');
808
+                return false;
809
+            }
810 810
 
811
-			$tmp = fgets($this->fp, 256);
812
-			$tmplen = strlen($tmp);
813
-			$this->debug("read line of $tmplen bytes: " . trim($tmp));
811
+            $tmp = fgets($this->fp, 256);
812
+            $tmplen = strlen($tmp);
813
+            $this->debug("read line of $tmplen bytes: " . trim($tmp));
814 814
 
815
-			if ($tmplen == 0) {
816
-				$this->incoming_payload = $data;
817
-				$this->debug('socket read of headers timed out after length ' . strlen($data));
818
-				$this->debug("read before timeout: " . $data);
819
-				$this->setError('socket read of headers timed out');
820
-				return false;
821
-			}
815
+            if ($tmplen == 0) {
816
+                $this->incoming_payload = $data;
817
+                $this->debug('socket read of headers timed out after length ' . strlen($data));
818
+                $this->debug("read before timeout: " . $data);
819
+                $this->setError('socket read of headers timed out');
820
+                return false;
821
+            }
822 822
 
823
-			$data .= $tmp;
824
-			$pos = strpos($data,"\r\n\r\n");
825
-			if($pos > 1){
826
-				$lb = "\r\n";
827
-			} else {
828
-				$pos = strpos($data,"\n\n");
829
-				if($pos > 1){
830
-					$lb = "\n";
831
-				}
832
-			}
833
-			// remove 100 headers
834
-			if (isset($lb) && preg_match('/^HTTP\/1.1 100/',$data)) {
835
-				unset($lb);
836
-				$data = '';
837
-			}//
838
-		}
839
-		// store header data
840
-		$this->incoming_payload .= $data;
841
-		$this->debug('found end of headers after length ' . strlen($data));
842
-		// process headers
843
-		$header_data = trim(substr($data,0,$pos));
844
-		$header_array = explode($lb,$header_data);
845
-		$this->incoming_headers = array();
846
-		$this->incoming_cookies = array();
847
-		foreach($header_array as $header_line){
848
-			$arr = explode(':',$header_line, 2);
849
-			if(count($arr) > 1){
850
-				$header_name = strtolower(trim($arr[0]));
851
-				$this->incoming_headers[$header_name] = trim($arr[1]);
852
-				if ($header_name == 'set-cookie') {
853
-					// TODO: allow multiple cookies from parseCookie
854
-					$cookie = $this->parseCookie(trim($arr[1]));
855
-					if ($cookie) {
856
-						$this->incoming_cookies[] = $cookie;
857
-						$this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
858
-					} else {
859
-						$this->debug('did not find cookie in ' . trim($arr[1]));
860
-					}
861
-    			}
862
-			} else if (isset($header_name)) {
863
-				// append continuation line to previous header
864
-				$this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
865
-			}
866
-		}
823
+            $data .= $tmp;
824
+            $pos = strpos($data,"\r\n\r\n");
825
+            if($pos > 1){
826
+                $lb = "\r\n";
827
+            } else {
828
+                $pos = strpos($data,"\n\n");
829
+                if($pos > 1){
830
+                    $lb = "\n";
831
+                }
832
+            }
833
+            // remove 100 headers
834
+            if (isset($lb) && preg_match('/^HTTP\/1.1 100/',$data)) {
835
+                unset($lb);
836
+                $data = '';
837
+            }//
838
+        }
839
+        // store header data
840
+        $this->incoming_payload .= $data;
841
+        $this->debug('found end of headers after length ' . strlen($data));
842
+        // process headers
843
+        $header_data = trim(substr($data,0,$pos));
844
+        $header_array = explode($lb,$header_data);
845
+        $this->incoming_headers = array();
846
+        $this->incoming_cookies = array();
847
+        foreach($header_array as $header_line){
848
+            $arr = explode(':',$header_line, 2);
849
+            if(count($arr) > 1){
850
+                $header_name = strtolower(trim($arr[0]));
851
+                $this->incoming_headers[$header_name] = trim($arr[1]);
852
+                if ($header_name == 'set-cookie') {
853
+                    // TODO: allow multiple cookies from parseCookie
854
+                    $cookie = $this->parseCookie(trim($arr[1]));
855
+                    if ($cookie) {
856
+                        $this->incoming_cookies[] = $cookie;
857
+                        $this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
858
+                    } else {
859
+                        $this->debug('did not find cookie in ' . trim($arr[1]));
860
+                    }
861
+                }
862
+            } else if (isset($header_name)) {
863
+                // append continuation line to previous header
864
+                $this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
865
+            }
866
+        }
867 867
 		
868
-		// loop until msg has been received
869
-		if (isset($this->incoming_headers['transfer-encoding']) && strtolower($this->incoming_headers['transfer-encoding']) == 'chunked') {
870
-			$content_length =  2147483647;	// ignore any content-length header
871
-			$chunked = true;
872
-			$this->debug("want to read chunked content");
873
-		} elseif (isset($this->incoming_headers['content-length'])) {
874
-			$content_length = $this->incoming_headers['content-length'];
875
-			$chunked = false;
876
-			$this->debug("want to read content of length $content_length");
877
-		} else {
878
-			$content_length =  2147483647;
879
-			$chunked = false;
880
-			$this->debug("want to read content to EOF");
881
-		}
882
-		$data = '';
883
-		do {
884
-			if ($chunked) {
885
-				$tmp = fgets($this->fp, 256);
886
-				$tmplen = strlen($tmp);
887
-				$this->debug("read chunk line of $tmplen bytes");
888
-				if ($tmplen == 0) {
889
-					$this->incoming_payload = $data;
890
-					$this->debug('socket read of chunk length timed out after length ' . strlen($data));
891
-					$this->debug("read before timeout:\n" . $data);
892
-					$this->setError('socket read of chunk length timed out');
893
-					return false;
894
-				}
895
-				$content_length = hexdec(trim($tmp));
896
-				$this->debug("chunk length $content_length");
897
-			}
898
-			$strlen = 0;
899
-		    while (($strlen < $content_length) && (!feof($this->fp))) {
900
-		    	$readlen = min(8192, $content_length - $strlen);
901
-				$tmp = fread($this->fp, $readlen);
902
-				$tmplen = strlen($tmp);
903
-				$this->debug("read buffer of $tmplen bytes");
904
-				if (($tmplen == 0) && (!feof($this->fp))) {
905
-					$this->incoming_payload = $data;
906
-					$this->debug('socket read of body timed out after length ' . strlen($data));
907
-					$this->debug("read before timeout:\n" . $data);
908
-					$this->setError('socket read of body timed out');
909
-					return false;
910
-				}
911
-				$strlen += $tmplen;
912
-				$data .= $tmp;
913
-			}
914
-			if ($chunked && ($content_length > 0)) {
915
-				$tmp = fgets($this->fp, 256);
916
-				$tmplen = strlen($tmp);
917
-				$this->debug("read chunk terminator of $tmplen bytes");
918
-				if ($tmplen == 0) {
919
-					$this->incoming_payload = $data;
920
-					$this->debug('socket read of chunk terminator timed out after length ' . strlen($data));
921
-					$this->debug("read before timeout:\n" . $data);
922
-					$this->setError('socket read of chunk terminator timed out');
923
-					return false;
924
-				}
925
-			}
926
-		} while ($chunked && ($content_length > 0) && (!feof($this->fp)));
927
-		if (feof($this->fp)) {
928
-			$this->debug('read to EOF');
929
-		}
930
-		$this->debug('read body of length ' . strlen($data));
931
-		$this->incoming_payload .= $data;
932
-		$this->debug('received a total of '.strlen($this->incoming_payload).' bytes of data from server');
868
+        // loop until msg has been received
869
+        if (isset($this->incoming_headers['transfer-encoding']) && strtolower($this->incoming_headers['transfer-encoding']) == 'chunked') {
870
+            $content_length =  2147483647;	// ignore any content-length header
871
+            $chunked = true;
872
+            $this->debug("want to read chunked content");
873
+        } elseif (isset($this->incoming_headers['content-length'])) {
874
+            $content_length = $this->incoming_headers['content-length'];
875
+            $chunked = false;
876
+            $this->debug("want to read content of length $content_length");
877
+        } else {
878
+            $content_length =  2147483647;
879
+            $chunked = false;
880
+            $this->debug("want to read content to EOF");
881
+        }
882
+        $data = '';
883
+        do {
884
+            if ($chunked) {
885
+                $tmp = fgets($this->fp, 256);
886
+                $tmplen = strlen($tmp);
887
+                $this->debug("read chunk line of $tmplen bytes");
888
+                if ($tmplen == 0) {
889
+                    $this->incoming_payload = $data;
890
+                    $this->debug('socket read of chunk length timed out after length ' . strlen($data));
891
+                    $this->debug("read before timeout:\n" . $data);
892
+                    $this->setError('socket read of chunk length timed out');
893
+                    return false;
894
+                }
895
+                $content_length = hexdec(trim($tmp));
896
+                $this->debug("chunk length $content_length");
897
+            }
898
+            $strlen = 0;
899
+            while (($strlen < $content_length) && (!feof($this->fp))) {
900
+                $readlen = min(8192, $content_length - $strlen);
901
+                $tmp = fread($this->fp, $readlen);
902
+                $tmplen = strlen($tmp);
903
+                $this->debug("read buffer of $tmplen bytes");
904
+                if (($tmplen == 0) && (!feof($this->fp))) {
905
+                    $this->incoming_payload = $data;
906
+                    $this->debug('socket read of body timed out after length ' . strlen($data));
907
+                    $this->debug("read before timeout:\n" . $data);
908
+                    $this->setError('socket read of body timed out');
909
+                    return false;
910
+                }
911
+                $strlen += $tmplen;
912
+                $data .= $tmp;
913
+            }
914
+            if ($chunked && ($content_length > 0)) {
915
+                $tmp = fgets($this->fp, 256);
916
+                $tmplen = strlen($tmp);
917
+                $this->debug("read chunk terminator of $tmplen bytes");
918
+                if ($tmplen == 0) {
919
+                    $this->incoming_payload = $data;
920
+                    $this->debug('socket read of chunk terminator timed out after length ' . strlen($data));
921
+                    $this->debug("read before timeout:\n" . $data);
922
+                    $this->setError('socket read of chunk terminator timed out');
923
+                    return false;
924
+                }
925
+            }
926
+        } while ($chunked && ($content_length > 0) && (!feof($this->fp)));
927
+        if (feof($this->fp)) {
928
+            $this->debug('read to EOF');
929
+        }
930
+        $this->debug('read body of length ' . strlen($data));
931
+        $this->incoming_payload .= $data;
932
+        $this->debug('received a total of '.strlen($this->incoming_payload).' bytes of data from server');
933 933
 		
934
-		// close filepointer
935
-		if(
936
-			(isset($this->incoming_headers['connection']) && strtolower($this->incoming_headers['connection']) == 'close') || 
937
-			(! $this->persistentConnection) || feof($this->fp)){
938
-			fclose($this->fp);
939
-			$this->fp = false;
940
-			$this->debug('closed socket');
941
-		}
934
+        // close filepointer
935
+        if(
936
+            (isset($this->incoming_headers['connection']) && strtolower($this->incoming_headers['connection']) == 'close') || 
937
+            (! $this->persistentConnection) || feof($this->fp)){
938
+            fclose($this->fp);
939
+            $this->fp = false;
940
+            $this->debug('closed socket');
941
+        }
942 942
 		
943
-		// connection was closed unexpectedly
944
-		if($this->incoming_payload == ''){
945
-			$this->setError('no response from server');
946
-			return false;
947
-		}
943
+        // connection was closed unexpectedly
944
+        if($this->incoming_payload == ''){
945
+            $this->setError('no response from server');
946
+            return false;
947
+        }
948 948
 		
949
-		// decode transfer-encoding
949
+        // decode transfer-encoding
950 950
 //		if(isset($this->incoming_headers['transfer-encoding']) && strtolower($this->incoming_headers['transfer-encoding']) == 'chunked'){
951 951
 //			if(!$data = $this->decodeChunked($data, $lb)){
952 952
 //				$this->setError('Decoding of chunked data failed');
953 953
 //				return false;
954 954
 //			}
955
-			//print "<pre>\nde-chunked:\n---------------\n$data\n\n---------------\n</pre>";
956
-			// set decoded payload
955
+            //print "<pre>\nde-chunked:\n---------------\n$data\n\n---------------\n</pre>";
956
+            // set decoded payload
957 957
 //			$this->incoming_payload = $header_data.$lb.$lb.$data;
958 958
 //		}
959 959
 	
960
-	  } else if ($this->io_method() == 'curl') {
961
-		// send and receive
962
-		$this->debug('send and receive with cURL');
963
-		$this->incoming_payload = curl_exec($this->ch);
964
-		$data = $this->incoming_payload;
960
+        } else if ($this->io_method() == 'curl') {
961
+        // send and receive
962
+        $this->debug('send and receive with cURL');
963
+        $this->incoming_payload = curl_exec($this->ch);
964
+        $data = $this->incoming_payload;
965 965
 
966 966
         $cErr = curl_error($this->ch);
967
-		if ($cErr != '') {
968
-        	$err = 'cURL ERROR: '.curl_errno($this->ch).': '.$cErr.'<br>';
969
-        	// TODO: there is a PHP bug that can cause this to SEGV for CURLINFO_CONTENT_TYPE
970
-			foreach(curl_getinfo($this->ch) as $k => $v){
971
-				$err .= "$k: $v<br>";
972
-			}
973
-			$this->debug($err);
974
-			$this->setError($err);
975
-			curl_close($this->ch);
976
-	    	return false;
977
-		} else {
978
-			//echo '<pre>';
979
-			//var_dump(curl_getinfo($this->ch));
980
-			//echo '</pre>';
981
-		}
982
-		// close curl
983
-		$this->debug('No cURL error, closing cURL');
984
-		curl_close($this->ch);
967
+        if ($cErr != '') {
968
+            $err = 'cURL ERROR: '.curl_errno($this->ch).': '.$cErr.'<br>';
969
+            // TODO: there is a PHP bug that can cause this to SEGV for CURLINFO_CONTENT_TYPE
970
+            foreach(curl_getinfo($this->ch) as $k => $v){
971
+                $err .= "$k: $v<br>";
972
+            }
973
+            $this->debug($err);
974
+            $this->setError($err);
975
+            curl_close($this->ch);
976
+            return false;
977
+        } else {
978
+            //echo '<pre>';
979
+            //var_dump(curl_getinfo($this->ch));
980
+            //echo '</pre>';
981
+        }
982
+        // close curl
983
+        $this->debug('No cURL error, closing cURL');
984
+        curl_close($this->ch);
985 985
 		
986
-		// try removing skippable headers
987
-		$savedata = $data;
988
-		while ($this->isSkippableCurlHeader($data)) {
989
-			$this->debug("Found HTTP header to skip");
990
-			if ($pos = strpos($data,"\r\n\r\n")) {
991
-				$data = ltrim(substr($data,$pos));
992
-			} elseif($pos = strpos($data,"\n\n") ) {
993
-				$data = ltrim(substr($data,$pos));
994
-			}
995
-		}
986
+        // try removing skippable headers
987
+        $savedata = $data;
988
+        while ($this->isSkippableCurlHeader($data)) {
989
+            $this->debug("Found HTTP header to skip");
990
+            if ($pos = strpos($data,"\r\n\r\n")) {
991
+                $data = ltrim(substr($data,$pos));
992
+            } elseif($pos = strpos($data,"\n\n") ) {
993
+                $data = ltrim(substr($data,$pos));
994
+            }
995
+        }
996 996
 
997
-		if ($data == '') {
998
-			// have nothing left; just remove 100 header(s)
999
-			$data = $savedata;
1000
-			while (preg_match('/^HTTP\/1.1 100/',$data)) {
1001
-				if ($pos = strpos($data,"\r\n\r\n")) {
1002
-					$data = ltrim(substr($data,$pos));
1003
-				} elseif($pos = strpos($data,"\n\n") ) {
1004
-					$data = ltrim(substr($data,$pos));
1005
-				}
1006
-			}
1007
-		}
997
+        if ($data == '') {
998
+            // have nothing left; just remove 100 header(s)
999
+            $data = $savedata;
1000
+            while (preg_match('/^HTTP\/1.1 100/',$data)) {
1001
+                if ($pos = strpos($data,"\r\n\r\n")) {
1002
+                    $data = ltrim(substr($data,$pos));
1003
+                } elseif($pos = strpos($data,"\n\n") ) {
1004
+                    $data = ltrim(substr($data,$pos));
1005
+                }
1006
+            }
1007
+        }
1008 1008
 		
1009
-		// separate content from HTTP headers
1010
-		if ($pos = strpos($data,"\r\n\r\n")) {
1011
-			$lb = "\r\n";
1012
-		} elseif( $pos = strpos($data,"\n\n")) {
1013
-			$lb = "\n";
1014
-		} else {
1015
-			$this->debug('no proper separation of headers and document');
1016
-			$this->setError('no proper separation of headers and document');
1017
-			return false;
1018
-		}
1019
-		$header_data = trim(substr($data,0,$pos));
1020
-		$header_array = explode($lb,$header_data);
1021
-		$data = ltrim(substr($data,$pos));
1022
-		$this->debug('found proper separation of headers and document');
1023
-		$this->debug('cleaned data, stringlen: '.strlen($data));
1024
-		// clean headers
1025
-		foreach ($header_array as $header_line) {
1026
-			$arr = explode(':',$header_line,2);
1027
-			if(count($arr) > 1){
1028
-				$header_name = strtolower(trim($arr[0]));
1029
-				$this->incoming_headers[$header_name] = trim($arr[1]);
1030
-				if ($header_name == 'set-cookie') {
1031
-					// TODO: allow multiple cookies from parseCookie
1032
-					$cookie = $this->parseCookie(trim($arr[1]));
1033
-					if ($cookie) {
1034
-						$this->incoming_cookies[] = $cookie;
1035
-						$this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
1036
-					} else {
1037
-						$this->debug('did not find cookie in ' . trim($arr[1]));
1038
-					}
1039
-    			}
1040
-			} else if (isset($header_name)) {
1041
-				// append continuation line to previous header
1042
-				$this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
1043
-			}
1044
-		}
1045
-	  }
1009
+        // separate content from HTTP headers
1010
+        if ($pos = strpos($data,"\r\n\r\n")) {
1011
+            $lb = "\r\n";
1012
+        } elseif( $pos = strpos($data,"\n\n")) {
1013
+            $lb = "\n";
1014
+        } else {
1015
+            $this->debug('no proper separation of headers and document');
1016
+            $this->setError('no proper separation of headers and document');
1017
+            return false;
1018
+        }
1019
+        $header_data = trim(substr($data,0,$pos));
1020
+        $header_array = explode($lb,$header_data);
1021
+        $data = ltrim(substr($data,$pos));
1022
+        $this->debug('found proper separation of headers and document');
1023
+        $this->debug('cleaned data, stringlen: '.strlen($data));
1024
+        // clean headers
1025
+        foreach ($header_array as $header_line) {
1026
+            $arr = explode(':',$header_line,2);
1027
+            if(count($arr) > 1){
1028
+                $header_name = strtolower(trim($arr[0]));
1029
+                $this->incoming_headers[$header_name] = trim($arr[1]);
1030
+                if ($header_name == 'set-cookie') {
1031
+                    // TODO: allow multiple cookies from parseCookie
1032
+                    $cookie = $this->parseCookie(trim($arr[1]));
1033
+                    if ($cookie) {
1034
+                        $this->incoming_cookies[] = $cookie;
1035
+                        $this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
1036
+                    } else {
1037
+                        $this->debug('did not find cookie in ' . trim($arr[1]));
1038
+                    }
1039
+                }
1040
+            } else if (isset($header_name)) {
1041
+                // append continuation line to previous header
1042
+                $this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
1043
+            }
1044
+        }
1045
+        }
1046 1046
 
1047
-		$this->response_status_line = $header_array[0];
1048
-		$arr = explode(' ', $this->response_status_line, 3);
1049
-		$http_version = $arr[0];
1050
-		$http_status = intval($arr[1]);
1051
-		$http_reason = count($arr) > 2 ? $arr[2] : '';
1047
+        $this->response_status_line = $header_array[0];
1048
+        $arr = explode(' ', $this->response_status_line, 3);
1049
+        $http_version = $arr[0];
1050
+        $http_status = intval($arr[1]);
1051
+        $http_reason = count($arr) > 2 ? $arr[2] : '';
1052 1052
 
1053
- 		// see if we need to resend the request with http digest authentication
1054
- 		if (isset($this->incoming_headers['location']) && ($http_status == 301 || $http_status == 302)) {
1055
- 			$this->debug("Got $http_status $http_reason with Location: " . $this->incoming_headers['location']);
1056
- 			$this->setURL($this->incoming_headers['location']);
1057
-			$this->tryagain = true;
1058
-			return false;
1059
-		}
1053
+            // see if we need to resend the request with http digest authentication
1054
+            if (isset($this->incoming_headers['location']) && ($http_status == 301 || $http_status == 302)) {
1055
+                $this->debug("Got $http_status $http_reason with Location: " . $this->incoming_headers['location']);
1056
+                $this->setURL($this->incoming_headers['location']);
1057
+            $this->tryagain = true;
1058
+            return false;
1059
+        }
1060 1060
 
1061
- 		// see if we need to resend the request with http digest authentication
1062
- 		if (isset($this->incoming_headers['www-authenticate']) && $http_status == 401) {
1063
- 			$this->debug("Got 401 $http_reason with WWW-Authenticate: " . $this->incoming_headers['www-authenticate']);
1064
- 			if (strstr($this->incoming_headers['www-authenticate'], "Digest ")) {
1065
- 				$this->debug('Server wants digest authentication');
1066
- 				// remove "Digest " from our elements
1067
- 				$digestString = str_replace('Digest ', '', $this->incoming_headers['www-authenticate']);
1061
+            // see if we need to resend the request with http digest authentication
1062
+            if (isset($this->incoming_headers['www-authenticate']) && $http_status == 401) {
1063
+                $this->debug("Got 401 $http_reason with WWW-Authenticate: " . $this->incoming_headers['www-authenticate']);
1064
+                if (strstr($this->incoming_headers['www-authenticate'], "Digest ")) {
1065
+                    $this->debug('Server wants digest authentication');
1066
+                    // remove "Digest " from our elements
1067
+                    $digestString = str_replace('Digest ', '', $this->incoming_headers['www-authenticate']);
1068 1068
  				
1069
- 				// parse elements into array
1070
- 				$digestElements = explode(',', $digestString);
1071
- 				foreach ($digestElements as $val) {
1072
- 					$tempElement = explode('=', trim($val), 2);
1073
- 					$digestRequest[$tempElement[0]] = str_replace("\"", '', $tempElement[1]);
1074
- 				}
1069
+                    // parse elements into array
1070
+                    $digestElements = explode(',', $digestString);
1071
+                    foreach ($digestElements as $val) {
1072
+                        $tempElement = explode('=', trim($val), 2);
1073
+                        $digestRequest[$tempElement[0]] = str_replace("\"", '', $tempElement[1]);
1074
+                    }
1075 1075
 
1076
-				// should have (at least) qop, realm, nonce
1077
- 				if (isset($digestRequest['nonce'])) {
1078
- 					$this->setCredentials($this->username, $this->password, 'digest', $digestRequest);
1079
- 					$this->tryagain = true;
1080
- 					return false;
1081
- 				}
1082
- 			}
1083
-			$this->debug('HTTP authentication failed');
1084
-			$this->setError('HTTP authentication failed');
1085
-			return false;
1086
- 		}
1076
+                // should have (at least) qop, realm, nonce
1077
+                    if (isset($digestRequest['nonce'])) {
1078
+                        $this->setCredentials($this->username, $this->password, 'digest', $digestRequest);
1079
+                        $this->tryagain = true;
1080
+                        return false;
1081
+                    }
1082
+                }
1083
+            $this->debug('HTTP authentication failed');
1084
+            $this->setError('HTTP authentication failed');
1085
+            return false;
1086
+            }
1087 1087
 		
1088
-		if (
1089
-			($http_status >= 300 && $http_status <= 307) ||
1090
-			($http_status >= 400 && $http_status <= 417) ||
1091
-			($http_status >= 501 && $http_status <= 505)
1092
-		   ) {
1093
-			$this->setError("Unsupported HTTP response status $http_status $http_reason (soapclient->response has contents of the response)");
1094
-			return false;
1095
-		}
1088
+        if (
1089
+            ($http_status >= 300 && $http_status <= 307) ||
1090
+            ($http_status >= 400 && $http_status <= 417) ||
1091
+            ($http_status >= 501 && $http_status <= 505)
1092
+            ) {
1093
+            $this->setError("Unsupported HTTP response status $http_status $http_reason (soapclient->response has contents of the response)");
1094
+            return false;
1095
+        }
1096 1096
 
1097
-		// decode content-encoding
1098
-		if(isset($this->incoming_headers['content-encoding']) && $this->incoming_headers['content-encoding'] != ''){
1099
-			if(strtolower($this->incoming_headers['content-encoding']) == 'deflate' || strtolower($this->incoming_headers['content-encoding']) == 'gzip'){
1100
-    			// if decoding works, use it. else assume data wasn't gzencoded
1101
-    			if(function_exists('gzinflate')){
1102
-					//$timer->setMarker('starting decoding of gzip/deflated content');
1103
-					// IIS 5 requires gzinflate instead of gzuncompress (similar to IE 5 and gzdeflate v. gzcompress)
1104
-					// this means there are no Zlib headers, although there should be
1105
-					$this->debug('The gzinflate function exists');
1106
-					$datalen = strlen($data);
1107
-					if ($this->incoming_headers['content-encoding'] == 'deflate') {
1108
-						if ($degzdata = @gzinflate($data)) {
1109
-	    					$data = $degzdata;
1110
-	    					$this->debug('The payload has been inflated to ' . strlen($data) . ' bytes');
1111
-	    					if (strlen($data) < $datalen) {
1112
-	    						// test for the case that the payload has been compressed twice
1113
-		    					$this->debug('The inflated payload is smaller than the gzipped one; try again');
1114
-								if ($degzdata = @gzinflate($data)) {
1115
-			    					$data = $degzdata;
1116
-			    					$this->debug('The payload has been inflated again to ' . strlen($data) . ' bytes');
1117
-								}
1118
-	    					}
1119
-	    				} else {
1120
-	    					$this->debug('Error using gzinflate to inflate the payload');
1121
-	    					$this->setError('Error using gzinflate to inflate the payload');
1122
-	    				}
1123
-					} elseif ($this->incoming_headers['content-encoding'] == 'gzip') {
1124
-						if ($degzdata = @gzinflate(substr($data, 10))) {	// do our best
1125
-							$data = $degzdata;
1126
-	    					$this->debug('The payload has been un-gzipped to ' . strlen($data) . ' bytes');
1127
-	    					if (strlen($data) < $datalen) {
1128
-	    						// test for the case that the payload has been compressed twice
1129
-		    					$this->debug('The un-gzipped payload is smaller than the gzipped one; try again');
1130
-								if ($degzdata = @gzinflate(substr($data, 10))) {
1131
-			    					$data = $degzdata;
1132
-			    					$this->debug('The payload has been un-gzipped again to ' . strlen($data) . ' bytes');
1133
-								}
1134
-	    					}
1135
-	    				} else {
1136
-	    					$this->debug('Error using gzinflate to un-gzip the payload');
1137
-							$this->setError('Error using gzinflate to un-gzip the payload');
1138
-	    				}
1139
-					}
1140
-					//$timer->setMarker('finished decoding of gzip/deflated content');
1141
-					//print "<xmp>\nde-inflated:\n---------------\n$data\n-------------\n</xmp>";
1142
-					// set decoded payload
1143
-					$this->incoming_payload = $header_data.$lb.$lb.$data;
1144
-    			} else {
1145
-					$this->debug('The server sent compressed data. Your php install must have the Zlib extension compiled in to support this.');
1146
-					$this->setError('The server sent compressed data. Your php install must have the Zlib extension compiled in to support this.');
1147
-				}
1148
-			} else {
1149
-				$this->debug('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1150
-				$this->setError('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1151
-			}
1152
-		} else {
1153
-			$this->debug('No Content-Encoding header');
1154
-		}
1097
+        // decode content-encoding
1098
+        if(isset($this->incoming_headers['content-encoding']) && $this->incoming_headers['content-encoding'] != ''){
1099
+            if(strtolower($this->incoming_headers['content-encoding']) == 'deflate' || strtolower($this->incoming_headers['content-encoding']) == 'gzip'){
1100
+                // if decoding works, use it. else assume data wasn't gzencoded
1101
+                if(function_exists('gzinflate')){
1102
+                    //$timer->setMarker('starting decoding of gzip/deflated content');
1103
+                    // IIS 5 requires gzinflate instead of gzuncompress (similar to IE 5 and gzdeflate v. gzcompress)
1104
+                    // this means there are no Zlib headers, although there should be
1105
+                    $this->debug('The gzinflate function exists');
1106
+                    $datalen = strlen($data);
1107
+                    if ($this->incoming_headers['content-encoding'] == 'deflate') {
1108
+                        if ($degzdata = @gzinflate($data)) {
1109
+                            $data = $degzdata;
1110
+                            $this->debug('The payload has been inflated to ' . strlen($data) . ' bytes');
1111
+                            if (strlen($data) < $datalen) {
1112
+                                // test for the case that the payload has been compressed twice
1113
+                                $this->debug('The inflated payload is smaller than the gzipped one; try again');
1114
+                                if ($degzdata = @gzinflate($data)) {
1115
+                                    $data = $degzdata;
1116
+                                    $this->debug('The payload has been inflated again to ' . strlen($data) . ' bytes');
1117
+                                }
1118
+                            }
1119
+                        } else {
1120
+                            $this->debug('Error using gzinflate to inflate the payload');
1121
+                            $this->setError('Error using gzinflate to inflate the payload');
1122
+                        }
1123
+                    } elseif ($this->incoming_headers['content-encoding'] == 'gzip') {
1124
+                        if ($degzdata = @gzinflate(substr($data, 10))) {	// do our best
1125
+                            $data = $degzdata;
1126
+                            $this->debug('The payload has been un-gzipped to ' . strlen($data) . ' bytes');
1127
+                            if (strlen($data) < $datalen) {
1128
+                                // test for the case that the payload has been compressed twice
1129
+                                $this->debug('The un-gzipped payload is smaller than the gzipped one; try again');
1130
+                                if ($degzdata = @gzinflate(substr($data, 10))) {
1131
+                                    $data = $degzdata;
1132
+                                    $this->debug('The payload has been un-gzipped again to ' . strlen($data) . ' bytes');
1133
+                                }
1134
+                            }
1135
+                        } else {
1136
+                            $this->debug('Error using gzinflate to un-gzip the payload');
1137
+                            $this->setError('Error using gzinflate to un-gzip the payload');
1138
+                        }
1139
+                    }
1140
+                    //$timer->setMarker('finished decoding of gzip/deflated content');
1141
+                    //print "<xmp>\nde-inflated:\n---------------\n$data\n-------------\n</xmp>";
1142
+                    // set decoded payload
1143
+                    $this->incoming_payload = $header_data.$lb.$lb.$data;
1144
+                } else {
1145
+                    $this->debug('The server sent compressed data. Your php install must have the Zlib extension compiled in to support this.');
1146
+                    $this->setError('The server sent compressed data. Your php install must have the Zlib extension compiled in to support this.');
1147
+                }
1148
+            } else {
1149
+                $this->debug('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1150
+                $this->setError('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1151
+            }
1152
+        } else {
1153
+            $this->debug('No Content-Encoding header');
1154
+        }
1155 1155
 		
1156
-		if(strlen($data) == 0){
1157
-			$this->debug('no data after headers!');
1158
-			$this->setError('no data present after HTTP headers');
1159
-			return false;
1160
-		}
1156
+        if(strlen($data) == 0){
1157
+            $this->debug('no data after headers!');
1158
+            $this->setError('no data present after HTTP headers');
1159
+            return false;
1160
+        }
1161 1161
 		
1162
-		return $data;
1163
-	}
1162
+        return $data;
1163
+    }
1164 1164
 
1165
-	/**
1166
-	 * sets the content-type for the SOAP message to be sent
1167
-	 *
1168
-	 * @param	string $type the content type, MIME style
1169
-	 * @param	mixed $charset character set used for encoding (or false)
1170
-	 * @access	public
1171
-	 */
1172
-	function setContentType($type, $charset = false) {
1173
-		$this->setHeader('Content-Type', $type . ($charset ? '; charset=' . $charset : ''));
1174
-	}
1165
+    /**
1166
+     * sets the content-type for the SOAP message to be sent
1167
+     *
1168
+     * @param	string $type the content type, MIME style
1169
+     * @param	mixed $charset character set used for encoding (or false)
1170
+     * @access	public
1171
+     */
1172
+    function setContentType($type, $charset = false) {
1173
+        $this->setHeader('Content-Type', $type . ($charset ? '; charset=' . $charset : ''));
1174
+    }
1175 1175
 
1176
-	/**
1177
-	 * specifies that an HTTP persistent connection should be used
1178
-	 *
1179
-	 * @return	boolean whether the request was honored by this method.
1180
-	 * @access	public
1181
-	 */
1182
-	function usePersistentConnection(){
1183
-		if (isset($this->outgoing_headers['Accept-Encoding'])) {
1184
-			return false;
1185
-		}
1186
-		$this->protocol_version = '1.1';
1187
-		$this->persistentConnection = true;
1188
-		$this->setHeader('Connection', 'Keep-Alive');
1189
-		return true;
1190
-	}
1176
+    /**
1177
+     * specifies that an HTTP persistent connection should be used
1178
+     *
1179
+     * @return	boolean whether the request was honored by this method.
1180
+     * @access	public
1181
+     */
1182
+    function usePersistentConnection(){
1183
+        if (isset($this->outgoing_headers['Accept-Encoding'])) {
1184
+            return false;
1185
+        }
1186
+        $this->protocol_version = '1.1';
1187
+        $this->persistentConnection = true;
1188
+        $this->setHeader('Connection', 'Keep-Alive');
1189
+        return true;
1190
+    }
1191 1191
 
1192
-	/**
1193
-	 * parse an incoming Cookie into it's parts
1194
-	 *
1195
-	 * @param	string $cookie_str content of cookie
1196
-	 * @return	array with data of that cookie
1197
-	 * @access	private
1198
-	 */
1199
-	/*
1192
+    /**
1193
+     * parse an incoming Cookie into it's parts
1194
+     *
1195
+     * @param	string $cookie_str content of cookie
1196
+     * @return	array with data of that cookie
1197
+     * @access	private
1198
+     */
1199
+    /*
1200 1200
 	 * TODO: allow a Set-Cookie string to be parsed into multiple cookies
1201 1201
 	 */
1202
-	function parseCookie($cookie_str) {
1203
-		$cookie_str = str_replace('; ', ';', $cookie_str) . ';';
1204
-		$data = preg_split('/;/', $cookie_str);
1205
-		$value_str = $data[0];
1202
+    function parseCookie($cookie_str) {
1203
+        $cookie_str = str_replace('; ', ';', $cookie_str) . ';';
1204
+        $data = preg_split('/;/', $cookie_str);
1205
+        $value_str = $data[0];
1206 1206
 
1207
-		$cookie_param = 'domain=';
1208
-		$start = strpos($cookie_str, $cookie_param);
1209
-		if ($start > 0) {
1210
-			$domain = substr($cookie_str, $start + strlen($cookie_param));
1211
-			$domain = substr($domain, 0, strpos($domain, ';'));
1212
-		} else {
1213
-			$domain = '';
1214
-		}
1207
+        $cookie_param = 'domain=';
1208
+        $start = strpos($cookie_str, $cookie_param);
1209
+        if ($start > 0) {
1210
+            $domain = substr($cookie_str, $start + strlen($cookie_param));
1211
+            $domain = substr($domain, 0, strpos($domain, ';'));
1212
+        } else {
1213
+            $domain = '';
1214
+        }
1215 1215
 
1216
-		$cookie_param = 'expires=';
1217
-		$start = strpos($cookie_str, $cookie_param);
1218
-		if ($start > 0) {
1219
-			$expires = substr($cookie_str, $start + strlen($cookie_param));
1220
-			$expires = substr($expires, 0, strpos($expires, ';'));
1221
-		} else {
1222
-			$expires = '';
1223
-		}
1216
+        $cookie_param = 'expires=';
1217
+        $start = strpos($cookie_str, $cookie_param);
1218
+        if ($start > 0) {
1219
+            $expires = substr($cookie_str, $start + strlen($cookie_param));
1220
+            $expires = substr($expires, 0, strpos($expires, ';'));
1221
+        } else {
1222
+            $expires = '';
1223
+        }
1224 1224
 
1225
-		$cookie_param = 'path=';
1226
-		$start = strpos($cookie_str, $cookie_param);
1227
-		if ( $start > 0 ) {
1228
-			$path = substr($cookie_str, $start + strlen($cookie_param));
1229
-			$path = substr($path, 0, strpos($path, ';'));
1230
-		} else {
1231
-			$path = '/';
1232
-		}
1225
+        $cookie_param = 'path=';
1226
+        $start = strpos($cookie_str, $cookie_param);
1227
+        if ( $start > 0 ) {
1228
+            $path = substr($cookie_str, $start + strlen($cookie_param));
1229
+            $path = substr($path, 0, strpos($path, ';'));
1230
+        } else {
1231
+            $path = '/';
1232
+        }
1233 1233
 						
1234
-		$cookie_param = ';secure;';
1235
-		if (strpos($cookie_str, $cookie_param) !== FALSE) {
1236
-			$secure = true;
1237
-		} else {
1238
-			$secure = false;
1239
-		}
1234
+        $cookie_param = ';secure;';
1235
+        if (strpos($cookie_str, $cookie_param) !== FALSE) {
1236
+            $secure = true;
1237
+        } else {
1238
+            $secure = false;
1239
+        }
1240 1240
 
1241
-		$sep_pos = strpos($value_str, '=');
1241
+        $sep_pos = strpos($value_str, '=');
1242 1242
 
1243
-		if ($sep_pos) {
1244
-			$name = substr($value_str, 0, $sep_pos);
1245
-			$value = substr($value_str, $sep_pos + 1);
1246
-			$cookie= array(	'name' => $name,
1247
-			                'value' => $value,
1248
-							'domain' => $domain,
1249
-							'path' => $path,
1250
-							'expires' => $expires,
1251
-							'secure' => $secure
1252
-							);		
1253
-			return $cookie;
1254
-		}
1255
-		return false;
1256
-	}
1243
+        if ($sep_pos) {
1244
+            $name = substr($value_str, 0, $sep_pos);
1245
+            $value = substr($value_str, $sep_pos + 1);
1246
+            $cookie= array(	'name' => $name,
1247
+                            'value' => $value,
1248
+                            'domain' => $domain,
1249
+                            'path' => $path,
1250
+                            'expires' => $expires,
1251
+                            'secure' => $secure
1252
+                            );		
1253
+            return $cookie;
1254
+        }
1255
+        return false;
1256
+    }
1257 1257
   
1258
-	/**
1259
-	 * sort out cookies for the current request
1260
-	 *
1261
-	 * @param	array $cookies array with all cookies
1262
-	 * @param	boolean $secure is the send-content secure or not?
1263
-	 * @return	string for Cookie-HTTP-Header
1264
-	 * @access	private
1265
-	 */
1266
-	function getCookiesForRequest($cookies, $secure=false) {
1267
-		$cookie_str = '';
1268
-		if ((! is_null($cookies)) && (is_array($cookies))) {
1269
-			foreach ($cookies as $cookie) {
1270
-				if (! is_array($cookie)) {
1271
-					continue;
1272
-				}
1273
-	    		$this->debug("check cookie for validity: ".$cookie['name'].'='.$cookie['value']);
1274
-				if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
1275
-					if (strtotime($cookie['expires']) <= time()) {
1276
-						$this->debug('cookie has expired');
1277
-						continue;
1278
-					}
1279
-				}
1280
-				if ((isset($cookie['domain'])) && (! empty($cookie['domain']))) {
1281
-					$domain = preg_quote($cookie['domain']);
1282
-					if (! preg_match("'.*$domain$'i", $this->host)) {
1283
-						$this->debug('cookie has different domain');
1284
-						continue;
1285
-					}
1286
-				}
1287
-				if ((isset($cookie['path'])) && (! empty($cookie['path']))) {
1288
-					$path = preg_quote($cookie['path']);
1289
-					if (! preg_match("'^$path.*'i", $this->path)) {
1290
-						$this->debug('cookie is for a different path');
1291
-						continue;
1292
-					}
1293
-				}
1294
-				if ((! $secure) && (isset($cookie['secure'])) && ($cookie['secure'])) {
1295
-					$this->debug('cookie is secure, transport is not');
1296
-					continue;
1297
-				}
1298
-				$cookie_str .= $cookie['name'] . '=' . $cookie['value'] . '; ';
1299
-	    		$this->debug('add cookie to Cookie-String: ' . $cookie['name'] . '=' . $cookie['value']);
1300
-			}
1301
-		}
1302
-		return $cookie_str;
1303
-  }
1258
+    /**
1259
+     * sort out cookies for the current request
1260
+     *
1261
+     * @param	array $cookies array with all cookies
1262
+     * @param	boolean $secure is the send-content secure or not?
1263
+     * @return	string for Cookie-HTTP-Header
1264
+     * @access	private
1265
+     */
1266
+    function getCookiesForRequest($cookies, $secure=false) {
1267
+        $cookie_str = '';
1268
+        if ((! is_null($cookies)) && (is_array($cookies))) {
1269
+            foreach ($cookies as $cookie) {
1270
+                if (! is_array($cookie)) {
1271
+                    continue;
1272
+                }
1273
+                $this->debug("check cookie for validity: ".$cookie['name'].'='.$cookie['value']);
1274
+                if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
1275
+                    if (strtotime($cookie['expires']) <= time()) {
1276
+                        $this->debug('cookie has expired');
1277
+                        continue;
1278
+                    }
1279
+                }
1280
+                if ((isset($cookie['domain'])) && (! empty($cookie['domain']))) {
1281
+                    $domain = preg_quote($cookie['domain']);
1282
+                    if (! preg_match("'.*$domain$'i", $this->host)) {
1283
+                        $this->debug('cookie has different domain');
1284
+                        continue;
1285
+                    }
1286
+                }
1287
+                if ((isset($cookie['path'])) && (! empty($cookie['path']))) {
1288
+                    $path = preg_quote($cookie['path']);
1289
+                    if (! preg_match("'^$path.*'i", $this->path)) {
1290
+                        $this->debug('cookie is for a different path');
1291
+                        continue;
1292
+                    }
1293
+                }
1294
+                if ((! $secure) && (isset($cookie['secure'])) && ($cookie['secure'])) {
1295
+                    $this->debug('cookie is secure, transport is not');
1296
+                    continue;
1297
+                }
1298
+                $cookie_str .= $cookie['name'] . '=' . $cookie['value'] . '; ';
1299
+                $this->debug('add cookie to Cookie-String: ' . $cookie['name'] . '=' . $cookie['value']);
1300
+            }
1301
+        }
1302
+        return $cookie_str;
1303
+    }
1304 1304
 }
1305 1305
 
1306 1306
 
Please login to merge, or discard this patch.
Spacing   +136 added lines, -136 removed lines patch added patch discarded remove patch
@@ -29,18 +29,18 @@  discard block
 block discarded – undo
29 29
 	var $incoming_cookies = array();
30 30
 	var $outgoing_payload = '';
31 31
 	var $incoming_payload = '';
32
-	var $response_status_line;	// HTTP response status line
32
+	var $response_status_line; // HTTP response status line
33 33
 	var $useSOAPAction = true;
34 34
 	var $persistentConnection = false;
35
-	var $ch = false;	// cURL handle
36
-	var $ch_options = array();	// cURL custom options
37
-	var $use_curl = false;		// force cURL use
38
-	var $proxy = null;			// proxy information (associative array)
35
+	var $ch = false; // cURL handle
36
+	var $ch_options = array(); // cURL custom options
37
+	var $use_curl = false; // force cURL use
38
+	var $proxy = null; // proxy information (associative array)
39 39
 	var $username = '';
40 40
 	var $password = '';
41 41
 	var $authtype = '';
42 42
 	var $digestRequest = array();
43
-	var $certRequest = array();	// keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional)
43
+	var $certRequest = array(); // keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional)
44 44
 								// cainfofile: certificate authority file, e.g. '$pathToPemFiles/rootca.pem'
45 45
 								// sslcertfile: SSL certificate file, e.g. '$pathToPemFiles/mycert.pem'
46 46
 								// sslkeyfile: SSL key file, e.g. '$pathToPemFiles/mykey.pem'
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 	* @param boolean $use_curl Whether to try to force cURL use
58 58
 	* @access public
59 59
 	*/
60
-	function soap_transport_http($url, $curl_options = NULL, $use_curl = false){
60
+	function soap_transport_http($url, $curl_options = NULL, $use_curl = false) {
61 61
 		parent::nusoap_base();
62 62
 		$this->debug("ctor url=$url use_curl=$use_curl curl_options:");
63 63
 		$this->appendDebug($this->varDump($curl_options));
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
 			$this->ch_options = $curl_options;
67 67
 		}
68 68
 		$this->use_curl = $use_curl;
69
-		preg_match('/\$Revisio' . 'n: ([^ ]+)/', $this->revision, $rev);
69
+		preg_match('/\$Revisio'.'n: ([^ ]+)/', $this->revision, $rev);
70 70
 		$this->setHeader('User-Agent', $this->title.'/'.$this->version.' ('.$rev[1].')');
71 71
 	}
72 72
 
@@ -118,19 +118,19 @@  discard block
 block discarded – undo
118 118
 		$this->url = $url;
119 119
 
120 120
 		$u = parse_url($url);
121
-		foreach($u as $k => $v){
121
+		foreach ($u as $k => $v) {
122 122
 			$this->debug("parsed URL $k = $v");
123 123
 			$this->$k = $v;
124 124
 		}
125 125
 		
126 126
 		// add any GET params to path
127
-		if(isset($u['query']) && $u['query'] != ''){
128
-            $this->path .= '?' . $u['query'];
127
+		if (isset($u['query']) && $u['query'] != '') {
128
+            $this->path .= '?'.$u['query'];
129 129
 		}
130 130
 		
131 131
 		// set default port
132
-		if(!isset($u['port'])){
133
-			if($u['scheme'] == 'https'){
132
+		if (!isset($u['port'])) {
133
+			if ($u['scheme'] == 'https') {
134 134
 				$this->port = 443;
135 135
 			} else {
136 136
 				$this->port = 80;
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
 	* @return	boolean true if connected, false if not
175 175
 	* @access   private
176 176
 	*/
177
-	function connect($connection_timeout=0,$response_timeout=30){
177
+	function connect($connection_timeout = 0, $response_timeout = 30) {
178 178
 	  	// For PHP 4.3 with OpenSSL, change https scheme to ssl, then treat like
179 179
 	  	// "regular" socket.
180 180
 	  	// TODO: disabled for now because OpenSSL must be *compiled* in (not just
@@ -198,7 +198,7 @@  discard block
 block discarded – undo
198 198
 		}
199 199
 
200 200
 		// use persistent connection
201
-		if($this->persistentConnection && isset($this->fp) && is_resource($this->fp)){
201
+		if ($this->persistentConnection && isset($this->fp) && is_resource($this->fp)) {
202 202
 			if (!feof($this->fp)) {
203 203
 				$this->debug('Re-use persistent connection');
204 204
 				return true;
@@ -209,20 +209,20 @@  discard block
 block discarded – undo
209 209
 
210 210
 		// munge host if using OpenSSL
211 211
 		if ($this->scheme == 'ssl') {
212
-			$host = 'ssl://' . $host;
212
+			$host = 'ssl://'.$host;
213 213
 		}
214
-		$this->debug('calling fsockopen with host ' . $host . ' connection_timeout ' . $connection_timeout);
214
+		$this->debug('calling fsockopen with host '.$host.' connection_timeout '.$connection_timeout);
215 215
 
216 216
 		// open socket
217
-		if($connection_timeout > 0){
218
-			$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout);
217
+		if ($connection_timeout > 0) {
218
+			$this->fp = @fsockopen($host, $this->port, $this->errno, $this->error_str, $connection_timeout);
219 219
 		} else {
220
-			$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str);
220
+			$this->fp = @fsockopen($host, $this->port, $this->errno, $this->error_str);
221 221
 		}
222 222
 		
223 223
 		// test pointer
224
-		if(!$this->fp) {
225
-			$msg = 'Couldn\'t open socket connection to server ' . $this->url;
224
+		if (!$this->fp) {
225
+			$msg = 'Couldn\'t open socket connection to server '.$this->url;
226 226
 			if ($this->errno) {
227 227
 				$msg .= ', Error ('.$this->errno.'): '.$this->error_str;
228 228
 			} else {
@@ -234,8 +234,8 @@  discard block
 block discarded – undo
234 234
 		}
235 235
 		
236 236
 		// set response timeout
237
-		$this->debug('set response timeout to ' . $response_timeout);
238
-		socket_set_timeout( $this->fp, $response_timeout);
237
+		$this->debug('set response timeout to '.$response_timeout);
238
+		socket_set_timeout($this->fp, $response_timeout);
239 239
 
240 240
 		$this->debug('socket connected');
241 241
 		return true;
@@ -394,8 +394,8 @@  discard block
 block discarded – undo
394 394
 		$this->debug('cURL connection set up');
395 395
 		return true;
396 396
 	  } else {
397
-		$this->setError('Unknown scheme ' . $this->scheme);
398
-		$this->debug('Unknown scheme ' . $this->scheme);
397
+		$this->setError('Unknown scheme '.$this->scheme);
398
+		$this->debug('Unknown scheme '.$this->scheme);
399 399
 		return false;
400 400
 	  }
401 401
 	}
@@ -410,7 +410,7 @@  discard block
 block discarded – undo
410 410
 	* @return	string data
411 411
 	* @access   public
412 412
 	*/
413
-	function send($data, $timeout=0, $response_timeout=30, $cookies=NULL) {
413
+	function send($data, $timeout = 0, $response_timeout = 30, $cookies = NULL) {
414 414
 		
415 415
 		$this->debug('entered send() with data of length: '.strlen($data));
416 416
 
@@ -420,12 +420,12 @@  discard block
 block discarded – undo
420 420
 			$this->tryagain = false;
421 421
 			if ($tries++ < 2) {
422 422
 				// make connnection
423
-				if (!$this->connect($timeout, $response_timeout)){
423
+				if (!$this->connect($timeout, $response_timeout)) {
424 424
 					return false;
425 425
 				}
426 426
 				
427 427
 				// send request
428
-				if (!$this->sendRequest($data, $cookies)){
428
+				if (!$this->sendRequest($data, $cookies)) {
429 429
 					return false;
430 430
 				}
431 431
 				
@@ -451,7 +451,7 @@  discard block
 block discarded – undo
451 451
 	* @access   public
452 452
 	* @deprecated
453 453
 	*/
454
-	function sendHTTPS($data, $timeout=0, $response_timeout=30, $cookies) {
454
+	function sendHTTPS($data, $timeout = 0, $response_timeout = 30, $cookies) {
455 455
 		return $this->send($data, $timeout, $response_timeout, $cookies);
456 456
 	}
457 457
 	
@@ -472,7 +472,7 @@  discard block
 block discarded – undo
472 472
 		$this->appendDebug($this->varDump($certRequest));
473 473
 		// cf. RFC 2617
474 474
 		if ($authtype == 'basic') {
475
-			$this->setHeader('Authorization', 'Basic '.base64_encode(str_replace(':','',$username).':'.$password));
475
+			$this->setHeader('Authorization', 'Basic '.base64_encode(str_replace(':', '', $username).':'.$password));
476 476
 		} elseif ($authtype == 'digest') {
477 477
 			if (isset($digestRequest['nonce'])) {
478 478
 				$digestRequest['nc'] = isset($digestRequest['nc']) ? $digestRequest['nc']++ : 1;
@@ -480,16 +480,16 @@  discard block
 block discarded – undo
480 480
 				// calculate the Digest hashes (calculate code based on digest implementation found at: http://www.rassoc.com/gregr/weblog/stories/2002/07/09/webServicesSecurityHttpDigestAuthenticationWithoutActiveDirectory.html)
481 481
 	
482 482
 				// A1 = unq(username-value) ":" unq(realm-value) ":" passwd
483
-				$A1 = $username. ':' . (isset($digestRequest['realm']) ? $digestRequest['realm'] : '') . ':' . $password;
483
+				$A1 = $username.':'.(isset($digestRequest['realm']) ? $digestRequest['realm'] : '').':'.$password;
484 484
 	
485 485
 				// H(A1) = MD5(A1)
486 486
 				$HA1 = md5($A1);
487 487
 	
488 488
 				// A2 = Method ":" digest-uri-value
489
-				$A2 = $this->request_method . ':' . $this->digest_uri;
489
+				$A2 = $this->request_method.':'.$this->digest_uri;
490 490
 	
491 491
 				// H(A2)
492
-				$HA2 =  md5($A2);
492
+				$HA2 = md5($A2);
493 493
 	
494 494
 				// KD(secret, data) = H(concat(secret, ":", data))
495 495
 				// if qop == auth:
@@ -506,19 +506,19 @@  discard block
 block discarded – undo
506 506
 				$nonce = isset($digestRequest['nonce']) ? $digestRequest['nonce'] : '';
507 507
 				$cnonce = $nonce;
508 508
 				if ($digestRequest['qop'] != '') {
509
-					$unhashedDigest = $HA1 . ':' . $nonce . ':' . sprintf("%08d", $digestRequest['nc']) . ':' . $cnonce . ':' . $digestRequest['qop'] . ':' . $HA2;
509
+					$unhashedDigest = $HA1.':'.$nonce.':'.sprintf("%08d", $digestRequest['nc']).':'.$cnonce.':'.$digestRequest['qop'].':'.$HA2;
510 510
 				} else {
511
-					$unhashedDigest = $HA1 . ':' . $nonce . ':' . $HA2;
511
+					$unhashedDigest = $HA1.':'.$nonce.':'.$HA2;
512 512
 				}
513 513
 	
514 514
 				$hashedDigest = md5($unhashedDigest);
515 515
 	
516 516
 				$opaque = '';	
517 517
 				if (isset($digestRequest['opaque'])) {
518
-					$opaque = ', opaque="' . $digestRequest['opaque'] . '"';
518
+					$opaque = ', opaque="'.$digestRequest['opaque'].'"';
519 519
 				}
520 520
 
521
-				$this->setHeader('Authorization', 'Digest username="' . $username . '", realm="' . $digestRequest['realm'] . '", nonce="' . $nonce . '", uri="' . $this->digest_uri . $opaque . '", cnonce="' . $cnonce . '", nc=' . sprintf("%08x", $digestRequest['nc']) . ', qop="' . $digestRequest['qop'] . '", response="' . $hashedDigest . '"');
521
+				$this->setHeader('Authorization', 'Digest username="'.$username.'", realm="'.$digestRequest['realm'].'", nonce="'.$nonce.'", uri="'.$this->digest_uri.$opaque.'", cnonce="'.$cnonce.'", nc='.sprintf("%08x", $digestRequest['nc']).', qop="'.$digestRequest['qop'].'", response="'.$hashedDigest.'"');
522 522
 			}
523 523
 		} elseif ($authtype == 'certificate') {
524 524
 			$this->certRequest = $certRequest;
@@ -540,7 +540,7 @@  discard block
 block discarded – undo
540 540
 	* @access   public
541 541
 	*/
542 542
 	function setSOAPAction($soapaction) {
543
-		$this->setHeader('SOAPAction', '"' . $soapaction . '"');
543
+		$this->setHeader('SOAPAction', '"'.$soapaction.'"');
544 544
 	}
545 545
 	
546 546
 	/**
@@ -549,7 +549,7 @@  discard block
 block discarded – undo
549 549
 	* @param    string $enc encoding style. supported values: gzip, deflate, or both
550 550
 	* @access   public
551 551
 	*/
552
-	function setEncoding($enc='gzip, deflate') {
552
+	function setEncoding($enc = 'gzip, deflate') {
553 553
 		if (function_exists('gzdeflate')) {
554 554
 			$this->protocol_version = '1.1';
555 555
 			$this->setHeader('Accept-Encoding', $enc);
@@ -602,7 +602,7 @@  discard block
 block discarded – undo
602 602
 	 * @access	private
603 603
 	 */
604 604
 	function isSkippableCurlHeader(&$data) {
605
-		$skipHeaders = array(	'HTTP/1.1 100',
605
+		$skipHeaders = array('HTTP/1.1 100',
606 606
 								'HTTP/1.0 301',
607 607
 								'HTTP/1.1 301',
608 608
 								'HTTP/1.0 302',
@@ -628,7 +628,7 @@  discard block
 block discarded – undo
628 628
 	* @access   public
629 629
 	* @deprecated
630 630
 	*/
631
-	function decodeChunked($buffer, $lb){
631
+	function decodeChunked($buffer, $lb) {
632 632
 		// length := 0
633 633
 		$length = 0;
634 634
 		$new = '';
@@ -640,17 +640,17 @@  discard block
 block discarded – undo
640 640
 			$this->debug('no linebreak found in decodeChunked');
641 641
 			return $new;
642 642
 		}
643
-		$temp = substr($buffer,0,$chunkend);
644
-		$chunk_size = hexdec( trim($temp) );
643
+		$temp = substr($buffer, 0, $chunkend);
644
+		$chunk_size = hexdec(trim($temp));
645 645
 		$chunkstart = $chunkend + strlen($lb);
646 646
 		// while (chunk-size > 0) {
647 647
 		while ($chunk_size > 0) {
648 648
 			$this->debug("chunkstart: $chunkstart chunk_size: $chunk_size");
649
-			$chunkend = strpos( $buffer, $lb, $chunkstart + $chunk_size);
649
+			$chunkend = strpos($buffer, $lb, $chunkstart + $chunk_size);
650 650
 		  	
651 651
 			// Just in case we got a broken connection
652 652
 		  	if ($chunkend == FALSE) {
653
-		  	    $chunk = substr($buffer,$chunkstart);
653
+		  	    $chunk = substr($buffer, $chunkstart);
654 654
 				// append chunk-data to entity-body
655 655
 		    	$new .= $chunk;
656 656
 		  	    $length += strlen($chunk);
@@ -658,7 +658,7 @@  discard block
 block discarded – undo
658 658
 			}
659 659
 			
660 660
 		  	// read chunk-data and CRLF
661
-		  	$chunk = substr($buffer,$chunkstart,$chunkend-$chunkstart);
661
+		  	$chunk = substr($buffer, $chunkstart, $chunkend - $chunkstart);
662 662
 		  	// append chunk-data to entity-body
663 663
 		  	$new .= $chunk;
664 664
 		  	// length := length + chunk-size
@@ -670,8 +670,8 @@  discard block
 block discarded – undo
670 670
 			if ($chunkend == FALSE) {
671 671
 				break; //Just in case we got a broken connection
672 672
 			}
673
-			$temp = substr($buffer,$chunkstart,$chunkend-$chunkstart);
674
-			$chunk_size = hexdec( trim($temp) );
673
+			$temp = substr($buffer, $chunkstart, $chunkend - $chunkstart);
674
+			$chunk_size = hexdec(trim($temp));
675 675
 			$chunkstart = $chunkend;
676 676
 		}
677 677
 		return $new;
@@ -706,7 +706,7 @@  discard block
 block discarded – undo
706 706
 		$this->outgoing_payload = "$req\r\n";
707 707
 
708 708
 		// loop thru headers, serializing
709
-		foreach($this->outgoing_headers as $k => $v){
709
+		foreach ($this->outgoing_headers as $k => $v) {
710 710
 			$hdr = $k.': '.$v;
711 711
 			$this->debug("HTTP header: $hdr");
712 712
 			$this->outgoing_payload .= "$hdr\r\n";
@@ -743,12 +743,12 @@  discard block
 block discarded – undo
743 743
 
744 744
 	  if ($this->io_method() == 'socket') {
745 745
 		// send payload
746
-		if(!fputs($this->fp, $this->outgoing_payload, strlen($this->outgoing_payload))) {
746
+		if (!fputs($this->fp, $this->outgoing_payload, strlen($this->outgoing_payload))) {
747 747
 			$this->setError('couldn\'t write message data to socket');
748 748
 			$this->debug('couldn\'t write message data to socket');
749 749
 			return false;
750 750
 		}
751
-		$this->debug('wrote data to socket, length = ' . strlen($this->outgoing_payload));
751
+		$this->debug('wrote data to socket, length = '.strlen($this->outgoing_payload));
752 752
 		return true;
753 753
 	  } else if ($this->io_method() == 'curl') {
754 754
 		// set payload
@@ -757,7 +757,7 @@  discard block
 block discarded – undo
757 757
 		// some servers refuse to work with (so we no longer use this method!)
758 758
 		//$this->setCurlOption(CURLOPT_CUSTOMREQUEST, $this->outgoing_payload);
759 759
 		$curl_headers = array();
760
-		foreach($this->outgoing_headers as $k => $v){
760
+		foreach ($this->outgoing_headers as $k => $v) {
761 761
 			if ($k == 'Connection' || $k == 'Content-Length' || $k == 'Host' || $k == 'Authorization' || $k == 'Proxy-Authorization') {
762 762
 				$this->debug("Skip cURL header $k: $v");
763 763
 			} else {
@@ -765,7 +765,7 @@  discard block
 block discarded – undo
765 765
 			}
766 766
 		}
767 767
 		if ($cookie_str != '') {
768
-			$curl_headers[] = 'Cookie: ' . $cookie_str;
768
+			$curl_headers[] = 'Cookie: '.$cookie_str;
769 769
 		}
770 770
 		$this->setCurlOption(CURLOPT_HTTPHEADER, $curl_headers);
771 771
 		$this->debug('set cURL HTTP headers');
@@ -791,62 +791,62 @@  discard block
 block discarded – undo
791 791
 	* @return	string the response (also sets member variables like incoming_payload)
792 792
 	* @access   private
793 793
 	*/
794
-	function getResponse(){
794
+	function getResponse() {
795 795
 		$this->incoming_payload = '';
796 796
 	    
797 797
 	  if ($this->io_method() == 'socket') {
798 798
 	    // loop until headers have been retrieved
799 799
 	    $data = '';
800
-	    while (!isset($lb)){
800
+	    while (!isset($lb)) {
801 801
 
802 802
 			// We might EOF during header read.
803
-			if(feof($this->fp)) {
803
+			if (feof($this->fp)) {
804 804
 				$this->incoming_payload = $data;
805
-				$this->debug('found no headers before EOF after length ' . strlen($data));
806
-				$this->debug("received before EOF:\n" . $data);
805
+				$this->debug('found no headers before EOF after length '.strlen($data));
806
+				$this->debug("received before EOF:\n".$data);
807 807
 				$this->setError('server failed to send headers');
808 808
 				return false;
809 809
 			}
810 810
 
811 811
 			$tmp = fgets($this->fp, 256);
812 812
 			$tmplen = strlen($tmp);
813
-			$this->debug("read line of $tmplen bytes: " . trim($tmp));
813
+			$this->debug("read line of $tmplen bytes: ".trim($tmp));
814 814
 
815 815
 			if ($tmplen == 0) {
816 816
 				$this->incoming_payload = $data;
817
-				$this->debug('socket read of headers timed out after length ' . strlen($data));
818
-				$this->debug("read before timeout: " . $data);
817
+				$this->debug('socket read of headers timed out after length '.strlen($data));
818
+				$this->debug("read before timeout: ".$data);
819 819
 				$this->setError('socket read of headers timed out');
820 820
 				return false;
821 821
 			}
822 822
 
823 823
 			$data .= $tmp;
824
-			$pos = strpos($data,"\r\n\r\n");
825
-			if($pos > 1){
824
+			$pos = strpos($data, "\r\n\r\n");
825
+			if ($pos > 1) {
826 826
 				$lb = "\r\n";
827 827
 			} else {
828
-				$pos = strpos($data,"\n\n");
829
-				if($pos > 1){
828
+				$pos = strpos($data, "\n\n");
829
+				if ($pos > 1) {
830 830
 					$lb = "\n";
831 831
 				}
832 832
 			}
833 833
 			// remove 100 headers
834
-			if (isset($lb) && preg_match('/^HTTP\/1.1 100/',$data)) {
834
+			if (isset($lb) && preg_match('/^HTTP\/1.1 100/', $data)) {
835 835
 				unset($lb);
836 836
 				$data = '';
837 837
 			}//
838 838
 		}
839 839
 		// store header data
840 840
 		$this->incoming_payload .= $data;
841
-		$this->debug('found end of headers after length ' . strlen($data));
841
+		$this->debug('found end of headers after length '.strlen($data));
842 842
 		// process headers
843
-		$header_data = trim(substr($data,0,$pos));
844
-		$header_array = explode($lb,$header_data);
843
+		$header_data = trim(substr($data, 0, $pos));
844
+		$header_array = explode($lb, $header_data);
845 845
 		$this->incoming_headers = array();
846 846
 		$this->incoming_cookies = array();
847
-		foreach($header_array as $header_line){
848
-			$arr = explode(':',$header_line, 2);
849
-			if(count($arr) > 1){
847
+		foreach ($header_array as $header_line) {
848
+			$arr = explode(':', $header_line, 2);
849
+			if (count($arr) > 1) {
850 850
 				$header_name = strtolower(trim($arr[0]));
851 851
 				$this->incoming_headers[$header_name] = trim($arr[1]);
852 852
 				if ($header_name == 'set-cookie') {
@@ -854,20 +854,20 @@  discard block
 block discarded – undo
854 854
 					$cookie = $this->parseCookie(trim($arr[1]));
855 855
 					if ($cookie) {
856 856
 						$this->incoming_cookies[] = $cookie;
857
-						$this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
857
+						$this->debug('found cookie: '.$cookie['name'].' = '.$cookie['value']);
858 858
 					} else {
859
-						$this->debug('did not find cookie in ' . trim($arr[1]));
859
+						$this->debug('did not find cookie in '.trim($arr[1]));
860 860
 					}
861 861
     			}
862 862
 			} else if (isset($header_name)) {
863 863
 				// append continuation line to previous header
864
-				$this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
864
+				$this->incoming_headers[$header_name] .= $lb.' '.$header_line;
865 865
 			}
866 866
 		}
867 867
 		
868 868
 		// loop until msg has been received
869 869
 		if (isset($this->incoming_headers['transfer-encoding']) && strtolower($this->incoming_headers['transfer-encoding']) == 'chunked') {
870
-			$content_length =  2147483647;	// ignore any content-length header
870
+			$content_length = 2147483647; // ignore any content-length header
871 871
 			$chunked = true;
872 872
 			$this->debug("want to read chunked content");
873 873
 		} elseif (isset($this->incoming_headers['content-length'])) {
@@ -875,7 +875,7 @@  discard block
 block discarded – undo
875 875
 			$chunked = false;
876 876
 			$this->debug("want to read content of length $content_length");
877 877
 		} else {
878
-			$content_length =  2147483647;
878
+			$content_length = 2147483647;
879 879
 			$chunked = false;
880 880
 			$this->debug("want to read content to EOF");
881 881
 		}
@@ -887,8 +887,8 @@  discard block
 block discarded – undo
887 887
 				$this->debug("read chunk line of $tmplen bytes");
888 888
 				if ($tmplen == 0) {
889 889
 					$this->incoming_payload = $data;
890
-					$this->debug('socket read of chunk length timed out after length ' . strlen($data));
891
-					$this->debug("read before timeout:\n" . $data);
890
+					$this->debug('socket read of chunk length timed out after length '.strlen($data));
891
+					$this->debug("read before timeout:\n".$data);
892 892
 					$this->setError('socket read of chunk length timed out');
893 893
 					return false;
894 894
 				}
@@ -903,8 +903,8 @@  discard block
 block discarded – undo
903 903
 				$this->debug("read buffer of $tmplen bytes");
904 904
 				if (($tmplen == 0) && (!feof($this->fp))) {
905 905
 					$this->incoming_payload = $data;
906
-					$this->debug('socket read of body timed out after length ' . strlen($data));
907
-					$this->debug("read before timeout:\n" . $data);
906
+					$this->debug('socket read of body timed out after length '.strlen($data));
907
+					$this->debug("read before timeout:\n".$data);
908 908
 					$this->setError('socket read of body timed out');
909 909
 					return false;
910 910
 				}
@@ -917,8 +917,8 @@  discard block
 block discarded – undo
917 917
 				$this->debug("read chunk terminator of $tmplen bytes");
918 918
 				if ($tmplen == 0) {
919 919
 					$this->incoming_payload = $data;
920
-					$this->debug('socket read of chunk terminator timed out after length ' . strlen($data));
921
-					$this->debug("read before timeout:\n" . $data);
920
+					$this->debug('socket read of chunk terminator timed out after length '.strlen($data));
921
+					$this->debug("read before timeout:\n".$data);
922 922
 					$this->setError('socket read of chunk terminator timed out');
923 923
 					return false;
924 924
 				}
@@ -927,21 +927,21 @@  discard block
 block discarded – undo
927 927
 		if (feof($this->fp)) {
928 928
 			$this->debug('read to EOF');
929 929
 		}
930
-		$this->debug('read body of length ' . strlen($data));
930
+		$this->debug('read body of length '.strlen($data));
931 931
 		$this->incoming_payload .= $data;
932 932
 		$this->debug('received a total of '.strlen($this->incoming_payload).' bytes of data from server');
933 933
 		
934 934
 		// close filepointer
935
-		if(
935
+		if (
936 936
 			(isset($this->incoming_headers['connection']) && strtolower($this->incoming_headers['connection']) == 'close') || 
937
-			(! $this->persistentConnection) || feof($this->fp)){
937
+			(!$this->persistentConnection) || feof($this->fp)) {
938 938
 			fclose($this->fp);
939 939
 			$this->fp = false;
940 940
 			$this->debug('closed socket');
941 941
 		}
942 942
 		
943 943
 		// connection was closed unexpectedly
944
-		if($this->incoming_payload == ''){
944
+		if ($this->incoming_payload == '') {
945 945
 			$this->setError('no response from server');
946 946
 			return false;
947 947
 		}
@@ -967,7 +967,7 @@  discard block
 block discarded – undo
967 967
 		if ($cErr != '') {
968 968
         	$err = 'cURL ERROR: '.curl_errno($this->ch).': '.$cErr.'<br>';
969 969
         	// TODO: there is a PHP bug that can cause this to SEGV for CURLINFO_CONTENT_TYPE
970
-			foreach(curl_getinfo($this->ch) as $k => $v){
970
+			foreach (curl_getinfo($this->ch) as $k => $v) {
971 971
 				$err .= "$k: $v<br>";
972 972
 			}
973 973
 			$this->debug($err);
@@ -987,44 +987,44 @@  discard block
 block discarded – undo
987 987
 		$savedata = $data;
988 988
 		while ($this->isSkippableCurlHeader($data)) {
989 989
 			$this->debug("Found HTTP header to skip");
990
-			if ($pos = strpos($data,"\r\n\r\n")) {
991
-				$data = ltrim(substr($data,$pos));
992
-			} elseif($pos = strpos($data,"\n\n") ) {
993
-				$data = ltrim(substr($data,$pos));
990
+			if ($pos = strpos($data, "\r\n\r\n")) {
991
+				$data = ltrim(substr($data, $pos));
992
+			} elseif ($pos = strpos($data, "\n\n")) {
993
+				$data = ltrim(substr($data, $pos));
994 994
 			}
995 995
 		}
996 996
 
997 997
 		if ($data == '') {
998 998
 			// have nothing left; just remove 100 header(s)
999 999
 			$data = $savedata;
1000
-			while (preg_match('/^HTTP\/1.1 100/',$data)) {
1001
-				if ($pos = strpos($data,"\r\n\r\n")) {
1002
-					$data = ltrim(substr($data,$pos));
1003
-				} elseif($pos = strpos($data,"\n\n") ) {
1004
-					$data = ltrim(substr($data,$pos));
1000
+			while (preg_match('/^HTTP\/1.1 100/', $data)) {
1001
+				if ($pos = strpos($data, "\r\n\r\n")) {
1002
+					$data = ltrim(substr($data, $pos));
1003
+				} elseif ($pos = strpos($data, "\n\n")) {
1004
+					$data = ltrim(substr($data, $pos));
1005 1005
 				}
1006 1006
 			}
1007 1007
 		}
1008 1008
 		
1009 1009
 		// separate content from HTTP headers
1010
-		if ($pos = strpos($data,"\r\n\r\n")) {
1010
+		if ($pos = strpos($data, "\r\n\r\n")) {
1011 1011
 			$lb = "\r\n";
1012
-		} elseif( $pos = strpos($data,"\n\n")) {
1012
+		} elseif ($pos = strpos($data, "\n\n")) {
1013 1013
 			$lb = "\n";
1014 1014
 		} else {
1015 1015
 			$this->debug('no proper separation of headers and document');
1016 1016
 			$this->setError('no proper separation of headers and document');
1017 1017
 			return false;
1018 1018
 		}
1019
-		$header_data = trim(substr($data,0,$pos));
1020
-		$header_array = explode($lb,$header_data);
1021
-		$data = ltrim(substr($data,$pos));
1019
+		$header_data = trim(substr($data, 0, $pos));
1020
+		$header_array = explode($lb, $header_data);
1021
+		$data = ltrim(substr($data, $pos));
1022 1022
 		$this->debug('found proper separation of headers and document');
1023 1023
 		$this->debug('cleaned data, stringlen: '.strlen($data));
1024 1024
 		// clean headers
1025 1025
 		foreach ($header_array as $header_line) {
1026
-			$arr = explode(':',$header_line,2);
1027
-			if(count($arr) > 1){
1026
+			$arr = explode(':', $header_line, 2);
1027
+			if (count($arr) > 1) {
1028 1028
 				$header_name = strtolower(trim($arr[0]));
1029 1029
 				$this->incoming_headers[$header_name] = trim($arr[1]);
1030 1030
 				if ($header_name == 'set-cookie') {
@@ -1032,14 +1032,14 @@  discard block
 block discarded – undo
1032 1032
 					$cookie = $this->parseCookie(trim($arr[1]));
1033 1033
 					if ($cookie) {
1034 1034
 						$this->incoming_cookies[] = $cookie;
1035
-						$this->debug('found cookie: ' . $cookie['name'] . ' = ' . $cookie['value']);
1035
+						$this->debug('found cookie: '.$cookie['name'].' = '.$cookie['value']);
1036 1036
 					} else {
1037
-						$this->debug('did not find cookie in ' . trim($arr[1]));
1037
+						$this->debug('did not find cookie in '.trim($arr[1]));
1038 1038
 					}
1039 1039
     			}
1040 1040
 			} else if (isset($header_name)) {
1041 1041
 				// append continuation line to previous header
1042
-				$this->incoming_headers[$header_name] .= $lb . ' ' . $header_line;
1042
+				$this->incoming_headers[$header_name] .= $lb.' '.$header_line;
1043 1043
 			}
1044 1044
 		}
1045 1045
 	  }
@@ -1052,7 +1052,7 @@  discard block
 block discarded – undo
1052 1052
 
1053 1053
  		// see if we need to resend the request with http digest authentication
1054 1054
  		if (isset($this->incoming_headers['location']) && ($http_status == 301 || $http_status == 302)) {
1055
- 			$this->debug("Got $http_status $http_reason with Location: " . $this->incoming_headers['location']);
1055
+ 			$this->debug("Got $http_status $http_reason with Location: ".$this->incoming_headers['location']);
1056 1056
  			$this->setURL($this->incoming_headers['location']);
1057 1057
 			$this->tryagain = true;
1058 1058
 			return false;
@@ -1060,7 +1060,7 @@  discard block
 block discarded – undo
1060 1060
 
1061 1061
  		// see if we need to resend the request with http digest authentication
1062 1062
  		if (isset($this->incoming_headers['www-authenticate']) && $http_status == 401) {
1063
- 			$this->debug("Got 401 $http_reason with WWW-Authenticate: " . $this->incoming_headers['www-authenticate']);
1063
+ 			$this->debug("Got 401 $http_reason with WWW-Authenticate: ".$this->incoming_headers['www-authenticate']);
1064 1064
  			if (strstr($this->incoming_headers['www-authenticate'], "Digest ")) {
1065 1065
  				$this->debug('Server wants digest authentication');
1066 1066
  				// remove "Digest " from our elements
@@ -1095,10 +1095,10 @@  discard block
 block discarded – undo
1095 1095
 		}
1096 1096
 
1097 1097
 		// decode content-encoding
1098
-		if(isset($this->incoming_headers['content-encoding']) && $this->incoming_headers['content-encoding'] != ''){
1099
-			if(strtolower($this->incoming_headers['content-encoding']) == 'deflate' || strtolower($this->incoming_headers['content-encoding']) == 'gzip'){
1098
+		if (isset($this->incoming_headers['content-encoding']) && $this->incoming_headers['content-encoding'] != '') {
1099
+			if (strtolower($this->incoming_headers['content-encoding']) == 'deflate' || strtolower($this->incoming_headers['content-encoding']) == 'gzip') {
1100 1100
     			// if decoding works, use it. else assume data wasn't gzencoded
1101
-    			if(function_exists('gzinflate')){
1101
+    			if (function_exists('gzinflate')) {
1102 1102
 					//$timer->setMarker('starting decoding of gzip/deflated content');
1103 1103
 					// IIS 5 requires gzinflate instead of gzuncompress (similar to IE 5 and gzdeflate v. gzcompress)
1104 1104
 					// this means there are no Zlib headers, although there should be
@@ -1107,13 +1107,13 @@  discard block
 block discarded – undo
1107 1107
 					if ($this->incoming_headers['content-encoding'] == 'deflate') {
1108 1108
 						if ($degzdata = @gzinflate($data)) {
1109 1109
 	    					$data = $degzdata;
1110
-	    					$this->debug('The payload has been inflated to ' . strlen($data) . ' bytes');
1110
+	    					$this->debug('The payload has been inflated to '.strlen($data).' bytes');
1111 1111
 	    					if (strlen($data) < $datalen) {
1112 1112
 	    						// test for the case that the payload has been compressed twice
1113 1113
 		    					$this->debug('The inflated payload is smaller than the gzipped one; try again');
1114 1114
 								if ($degzdata = @gzinflate($data)) {
1115 1115
 			    					$data = $degzdata;
1116
-			    					$this->debug('The payload has been inflated again to ' . strlen($data) . ' bytes');
1116
+			    					$this->debug('The payload has been inflated again to '.strlen($data).' bytes');
1117 1117
 								}
1118 1118
 	    					}
1119 1119
 	    				} else {
@@ -1123,13 +1123,13 @@  discard block
 block discarded – undo
1123 1123
 					} elseif ($this->incoming_headers['content-encoding'] == 'gzip') {
1124 1124
 						if ($degzdata = @gzinflate(substr($data, 10))) {	// do our best
1125 1125
 							$data = $degzdata;
1126
-	    					$this->debug('The payload has been un-gzipped to ' . strlen($data) . ' bytes');
1126
+	    					$this->debug('The payload has been un-gzipped to '.strlen($data).' bytes');
1127 1127
 	    					if (strlen($data) < $datalen) {
1128 1128
 	    						// test for the case that the payload has been compressed twice
1129 1129
 		    					$this->debug('The un-gzipped payload is smaller than the gzipped one; try again');
1130 1130
 								if ($degzdata = @gzinflate(substr($data, 10))) {
1131 1131
 			    					$data = $degzdata;
1132
-			    					$this->debug('The payload has been un-gzipped again to ' . strlen($data) . ' bytes');
1132
+			    					$this->debug('The payload has been un-gzipped again to '.strlen($data).' bytes');
1133 1133
 								}
1134 1134
 	    					}
1135 1135
 	    				} else {
@@ -1146,14 +1146,14 @@  discard block
 block discarded – undo
1146 1146
 					$this->setError('The server sent compressed data. Your php install must have the Zlib extension compiled in to support this.');
1147 1147
 				}
1148 1148
 			} else {
1149
-				$this->debug('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1150
-				$this->setError('Unsupported Content-Encoding ' . $this->incoming_headers['content-encoding']);
1149
+				$this->debug('Unsupported Content-Encoding '.$this->incoming_headers['content-encoding']);
1150
+				$this->setError('Unsupported Content-Encoding '.$this->incoming_headers['content-encoding']);
1151 1151
 			}
1152 1152
 		} else {
1153 1153
 			$this->debug('No Content-Encoding header');
1154 1154
 		}
1155 1155
 		
1156
-		if(strlen($data) == 0){
1156
+		if (strlen($data) == 0) {
1157 1157
 			$this->debug('no data after headers!');
1158 1158
 			$this->setError('no data present after HTTP headers');
1159 1159
 			return false;
@@ -1170,7 +1170,7 @@  discard block
 block discarded – undo
1170 1170
 	 * @access	public
1171 1171
 	 */
1172 1172
 	function setContentType($type, $charset = false) {
1173
-		$this->setHeader('Content-Type', $type . ($charset ? '; charset=' . $charset : ''));
1173
+		$this->setHeader('Content-Type', $type.($charset ? '; charset='.$charset : ''));
1174 1174
 	}
1175 1175
 
1176 1176
 	/**
@@ -1179,7 +1179,7 @@  discard block
 block discarded – undo
1179 1179
 	 * @return	boolean whether the request was honored by this method.
1180 1180
 	 * @access	public
1181 1181
 	 */
1182
-	function usePersistentConnection(){
1182
+	function usePersistentConnection() {
1183 1183
 		if (isset($this->outgoing_headers['Accept-Encoding'])) {
1184 1184
 			return false;
1185 1185
 		}
@@ -1200,7 +1200,7 @@  discard block
 block discarded – undo
1200 1200
 	 * TODO: allow a Set-Cookie string to be parsed into multiple cookies
1201 1201
 	 */
1202 1202
 	function parseCookie($cookie_str) {
1203
-		$cookie_str = str_replace('; ', ';', $cookie_str) . ';';
1203
+		$cookie_str = str_replace('; ', ';', $cookie_str).';';
1204 1204
 		$data = preg_split('/;/', $cookie_str);
1205 1205
 		$value_str = $data[0];
1206 1206
 
@@ -1224,7 +1224,7 @@  discard block
 block discarded – undo
1224 1224
 
1225 1225
 		$cookie_param = 'path=';
1226 1226
 		$start = strpos($cookie_str, $cookie_param);
1227
-		if ( $start > 0 ) {
1227
+		if ($start > 0) {
1228 1228
 			$path = substr($cookie_str, $start + strlen($cookie_param));
1229 1229
 			$path = substr($path, 0, strpos($path, ';'));
1230 1230
 		} else {
@@ -1243,7 +1243,7 @@  discard block
 block discarded – undo
1243 1243
 		if ($sep_pos) {
1244 1244
 			$name = substr($value_str, 0, $sep_pos);
1245 1245
 			$value = substr($value_str, $sep_pos + 1);
1246
-			$cookie= array(	'name' => $name,
1246
+			$cookie = array('name' => $name,
1247 1247
 			                'value' => $value,
1248 1248
 							'domain' => $domain,
1249 1249
 							'path' => $path,
@@ -1263,40 +1263,40 @@  discard block
 block discarded – undo
1263 1263
 	 * @return	string for Cookie-HTTP-Header
1264 1264
 	 * @access	private
1265 1265
 	 */
1266
-	function getCookiesForRequest($cookies, $secure=false) {
1266
+	function getCookiesForRequest($cookies, $secure = false) {
1267 1267
 		$cookie_str = '';
1268
-		if ((! is_null($cookies)) && (is_array($cookies))) {
1268
+		if ((!is_null($cookies)) && (is_array($cookies))) {
1269 1269
 			foreach ($cookies as $cookie) {
1270
-				if (! is_array($cookie)) {
1270
+				if (!is_array($cookie)) {
1271 1271
 					continue;
1272 1272
 				}
1273 1273
 	    		$this->debug("check cookie for validity: ".$cookie['name'].'='.$cookie['value']);
1274
-				if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
1274
+				if ((isset($cookie['expires'])) && (!empty($cookie['expires']))) {
1275 1275
 					if (strtotime($cookie['expires']) <= time()) {
1276 1276
 						$this->debug('cookie has expired');
1277 1277
 						continue;
1278 1278
 					}
1279 1279
 				}
1280
-				if ((isset($cookie['domain'])) && (! empty($cookie['domain']))) {
1280
+				if ((isset($cookie['domain'])) && (!empty($cookie['domain']))) {
1281 1281
 					$domain = preg_quote($cookie['domain']);
1282
-					if (! preg_match("'.*$domain$'i", $this->host)) {
1282
+					if (!preg_match("'.*$domain$'i", $this->host)) {
1283 1283
 						$this->debug('cookie has different domain');
1284 1284
 						continue;
1285 1285
 					}
1286 1286
 				}
1287
-				if ((isset($cookie['path'])) && (! empty($cookie['path']))) {
1287
+				if ((isset($cookie['path'])) && (!empty($cookie['path']))) {
1288 1288
 					$path = preg_quote($cookie['path']);
1289
-					if (! preg_match("'^$path.*'i", $this->path)) {
1289
+					if (!preg_match("'^$path.*'i", $this->path)) {
1290 1290
 						$this->debug('cookie is for a different path');
1291 1291
 						continue;
1292 1292
 					}
1293 1293
 				}
1294
-				if ((! $secure) && (isset($cookie['secure'])) && ($cookie['secure'])) {
1294
+				if ((!$secure) && (isset($cookie['secure'])) && ($cookie['secure'])) {
1295 1295
 					$this->debug('cookie is secure, transport is not');
1296 1296
 					continue;
1297 1297
 				}
1298
-				$cookie_str .= $cookie['name'] . '=' . $cookie['value'] . '; ';
1299
-	    		$this->debug('add cookie to Cookie-String: ' . $cookie['name'] . '=' . $cookie['value']);
1298
+				$cookie_str .= $cookie['name'].'='.$cookie['value'].'; ';
1299
+	    		$this->debug('add cookie to Cookie-String: '.$cookie['name'].'='.$cookie['value']);
1300 1300
 			}
1301 1301
 		}
1302 1302
 		return $cookie_str;
Please login to merge, or discard this patch.
Braces   +39 added lines, -29 removed lines patch added patch discarded remove patch
@@ -159,10 +159,12 @@  discard block
 block discarded – undo
159 159
 	* @access	private
160 160
 	*/
161 161
 	function io_method() {
162
-		if ($this->use_curl || ($this->scheme == 'https') || ($this->scheme == 'http' && $this->authtype == 'ntlm') || ($this->scheme == 'http' && is_array($this->proxy) && $this->proxy['authtype'] == 'ntlm'))
163
-			return 'curl';
164
-		if (($this->scheme == 'http' || $this->scheme == 'ssl') && $this->authtype != 'ntlm' && (!is_array($this->proxy) || $this->proxy['authtype'] != 'ntlm'))
165
-			return 'socket';
162
+		if ($this->use_curl || ($this->scheme == 'https') || ($this->scheme == 'http' && $this->authtype == 'ntlm') || ($this->scheme == 'http' && is_array($this->proxy) && $this->proxy['authtype'] == 'ntlm')) {
163
+					return 'curl';
164
+		}
165
+		if (($this->scheme == 'http' || $this->scheme == 'ssl') && $this->authtype != 'ntlm' && (!is_array($this->proxy) || $this->proxy['authtype'] != 'ntlm')) {
166
+					return 'socket';
167
+		}
166 168
 		return 'unknown';
167 169
 	}
168 170
 
@@ -246,30 +248,36 @@  discard block
 block discarded – undo
246 248
 			return false;
247 249
 		}
248 250
 		// Avoid warnings when PHP does not have these options
249
-		if (defined('CURLOPT_CONNECTIONTIMEOUT'))
250
-			$CURLOPT_CONNECTIONTIMEOUT = CURLOPT_CONNECTIONTIMEOUT;
251
-		else
252
-			$CURLOPT_CONNECTIONTIMEOUT = 78;
253
-		if (defined('CURLOPT_HTTPAUTH'))
254
-			$CURLOPT_HTTPAUTH = CURLOPT_HTTPAUTH;
255
-		else
256
-			$CURLOPT_HTTPAUTH = 107;
257
-		if (defined('CURLOPT_PROXYAUTH'))
258
-			$CURLOPT_PROXYAUTH = CURLOPT_PROXYAUTH;
259
-		else
260
-			$CURLOPT_PROXYAUTH = 111;
261
-		if (defined('CURLAUTH_BASIC'))
262
-			$CURLAUTH_BASIC = CURLAUTH_BASIC;
263
-		else
264
-			$CURLAUTH_BASIC = 1;
265
-		if (defined('CURLAUTH_DIGEST'))
266
-			$CURLAUTH_DIGEST = CURLAUTH_DIGEST;
267
-		else
268
-			$CURLAUTH_DIGEST = 2;
269
-		if (defined('CURLAUTH_NTLM'))
270
-			$CURLAUTH_NTLM = CURLAUTH_NTLM;
271
-		else
272
-			$CURLAUTH_NTLM = 8;
251
+		if (defined('CURLOPT_CONNECTIONTIMEOUT')) {
252
+					$CURLOPT_CONNECTIONTIMEOUT = CURLOPT_CONNECTIONTIMEOUT;
253
+		} else {
254
+					$CURLOPT_CONNECTIONTIMEOUT = 78;
255
+		}
256
+		if (defined('CURLOPT_HTTPAUTH')) {
257
+					$CURLOPT_HTTPAUTH = CURLOPT_HTTPAUTH;
258
+		} else {
259
+					$CURLOPT_HTTPAUTH = 107;
260
+		}
261
+		if (defined('CURLOPT_PROXYAUTH')) {
262
+					$CURLOPT_PROXYAUTH = CURLOPT_PROXYAUTH;
263
+		} else {
264
+					$CURLOPT_PROXYAUTH = 111;
265
+		}
266
+		if (defined('CURLAUTH_BASIC')) {
267
+					$CURLAUTH_BASIC = CURLAUTH_BASIC;
268
+		} else {
269
+					$CURLAUTH_BASIC = 1;
270
+		}
271
+		if (defined('CURLAUTH_DIGEST')) {
272
+					$CURLAUTH_DIGEST = CURLAUTH_DIGEST;
273
+		} else {
274
+					$CURLAUTH_DIGEST = 2;
275
+		}
276
+		if (defined('CURLAUTH_NTLM')) {
277
+					$CURLAUTH_NTLM = CURLAUTH_NTLM;
278
+		} else {
279
+					$CURLAUTH_NTLM = 8;
280
+		}
273 281
 
274 282
 		$this->debug('connect using cURL');
275 283
 		// init CURL
@@ -612,7 +620,9 @@  discard block
 block discarded – undo
612 620
 								'HTTP/1.0 200 Connection established');
613 621
 		foreach ($skipHeaders as $hd) {
614 622
 			$prefix = substr($data, 0, strlen($hd));
615
-			if ($prefix == $hd) return true;
623
+			if ($prefix == $hd) {
624
+			    return true;
625
+			}
616 626
 		}
617 627
 
618 628
 		return false;
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.soap_val.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -63,7 +63,7 @@
 block discarded – undo
63 63
 	*
64 64
 	* @param    string $name optional name
65 65
 	* @param    mixed $type optional type name
66
-	* @param	mixed $value optional value
66
+	* @param	integer $value optional value
67 67
 	* @param	mixed $element_ns optional namespace of value
68 68
 	* @param	mixed $type_ns optional namespace of type
69 69
 	* @param	mixed $attributes associative array of attributes to add to element serialization
Please login to merge, or discard this patch.
Indentation   +79 added lines, -79 removed lines patch added patch discarded remove patch
@@ -15,90 +15,90 @@
 block discarded – undo
15 15
 * @access   public
16 16
 */
17 17
 class soapval extends nusoap_base {
18
-	/**
19
-	 * The XML element name
20
-	 *
21
-	 * @var string
22
-	 * @access private
23
-	 */
24
-	var $name;
25
-	/**
26
-	 * The XML type name (string or false)
27
-	 *
28
-	 * @var mixed
29
-	 * @access private
30
-	 */
31
-	var $type;
32
-	/**
33
-	 * The PHP value
34
-	 *
35
-	 * @var mixed
36
-	 * @access private
37
-	 */
38
-	var $value;
39
-	/**
40
-	 * The XML element namespace (string or false)
41
-	 *
42
-	 * @var mixed
43
-	 * @access private
44
-	 */
45
-	var $element_ns;
46
-	/**
47
-	 * The XML type namespace (string or false)
48
-	 *
49
-	 * @var mixed
50
-	 * @access private
51
-	 */
52
-	var $type_ns;
53
-	/**
54
-	 * The XML element attributes (array or false)
55
-	 *
56
-	 * @var mixed
57
-	 * @access private
58
-	 */
59
-	var $attributes;
18
+    /**
19
+     * The XML element name
20
+     *
21
+     * @var string
22
+     * @access private
23
+     */
24
+    var $name;
25
+    /**
26
+     * The XML type name (string or false)
27
+     *
28
+     * @var mixed
29
+     * @access private
30
+     */
31
+    var $type;
32
+    /**
33
+     * The PHP value
34
+     *
35
+     * @var mixed
36
+     * @access private
37
+     */
38
+    var $value;
39
+    /**
40
+     * The XML element namespace (string or false)
41
+     *
42
+     * @var mixed
43
+     * @access private
44
+     */
45
+    var $element_ns;
46
+    /**
47
+     * The XML type namespace (string or false)
48
+     *
49
+     * @var mixed
50
+     * @access private
51
+     */
52
+    var $type_ns;
53
+    /**
54
+     * The XML element attributes (array or false)
55
+     *
56
+     * @var mixed
57
+     * @access private
58
+     */
59
+    var $attributes;
60 60
 
61
-	/**
62
-	* constructor
63
-	*
64
-	* @param    string $name optional name
65
-	* @param    mixed $type optional type name
66
-	* @param	mixed $value optional value
67
-	* @param	mixed $element_ns optional namespace of value
68
-	* @param	mixed $type_ns optional namespace of type
69
-	* @param	mixed $attributes associative array of attributes to add to element serialization
70
-	* @access   public
71
-	*/
72
-  	function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
73
-		parent::nusoap_base();
74
-		$this->name = $name;
75
-		$this->type = $type;
76
-		$this->value = $value;
77
-		$this->element_ns = $element_ns;
78
-		$this->type_ns = $type_ns;
79
-		$this->attributes = $attributes;
61
+    /**
62
+     * constructor
63
+     *
64
+     * @param    string $name optional name
65
+     * @param    mixed $type optional type name
66
+     * @param	mixed $value optional value
67
+     * @param	mixed $element_ns optional namespace of value
68
+     * @param	mixed $type_ns optional namespace of type
69
+     * @param	mixed $attributes associative array of attributes to add to element serialization
70
+     * @access   public
71
+     */
72
+        function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
73
+        parent::nusoap_base();
74
+        $this->name = $name;
75
+        $this->type = $type;
76
+        $this->value = $value;
77
+        $this->element_ns = $element_ns;
78
+        $this->type_ns = $type_ns;
79
+        $this->attributes = $attributes;
80 80
     }
81 81
 
82
-	/**
83
-	* return serialized value
84
-	*
85
-	* @param	string $use The WSDL use value (encoded|literal)
86
-	* @return	string XML data
87
-	* @access   public
88
-	*/
89
-	function serialize($use='encoded') {
90
-		return $this->serialize_val($this->value, $this->name, $this->type, $this->element_ns, $this->type_ns, $this->attributes, $use, true);
82
+    /**
83
+     * return serialized value
84
+     *
85
+     * @param	string $use The WSDL use value (encoded|literal)
86
+     * @return	string XML data
87
+     * @access   public
88
+     */
89
+    function serialize($use='encoded') {
90
+        return $this->serialize_val($this->value, $this->name, $this->type, $this->element_ns, $this->type_ns, $this->attributes, $use, true);
91 91
     }
92 92
 
93
-	/**
94
-	* decodes a soapval object into a PHP native type
95
-	*
96
-	* @return	mixed
97
-	* @access   public
98
-	*/
99
-	function decode(){
100
-		return $this->value;
101
-	}
93
+    /**
94
+     * decodes a soapval object into a PHP native type
95
+     *
96
+     * @return	mixed
97
+     * @access   public
98
+     */
99
+    function decode(){
100
+        return $this->value;
101
+    }
102 102
 }
103 103
 
104 104
 
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	* @param	mixed $attributes associative array of attributes to add to element serialization
70 70
 	* @access   public
71 71
 	*/
72
-  	function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
72
+  	function soapval($name = 'soapval', $type = false, $value = -1, $element_ns = false, $type_ns = false, $attributes = false) {
73 73
 		parent::nusoap_base();
74 74
 		$this->name = $name;
75 75
 		$this->type = $type;
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
 	* @return	string XML data
87 87
 	* @access   public
88 88
 	*/
89
-	function serialize($use='encoded') {
89
+	function serialize($use = 'encoded') {
90 90
 		return $this->serialize_val($this->value, $this->name, $this->type, $this->element_ns, $this->type_ns, $this->attributes, $use, true);
91 91
     }
92 92
 
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
 	* @return	mixed
97 97
 	* @access   public
98 98
 	*/
99
-	function decode(){
99
+	function decode() {
100 100
 		return $this->value;
101 101
 	}
102 102
 }
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.soapclient.php 4 patches
Doc Comments   +1 added lines patch added patch discarded remove patch
@@ -743,6 +743,7 @@
 block discarded – undo
743 743
 	/**
744 744
 	* dynamically creates proxy class code
745 745
 	*
746
+	* @param integer $r
746 747
 	* @return   string PHP/NuSOAP code for the proxy class
747 748
 	* @access   private
748 749
 	*/
Please login to merge, or discard this patch.
Indentation   +900 added lines, -900 removed lines patch added patch discarded remove patch
@@ -25,967 +25,967 @@
 block discarded – undo
25 25
 */
26 26
 class nusoap_client extends nusoap_base  {
27 27
 
28
-	var $username = '';				// Username for HTTP authentication
29
-	var $password = '';				// Password for HTTP authentication
30
-	var $authtype = '';				// Type of HTTP authentication
31
-	var $certRequest = array();		// Certificate for HTTP SSL authentication
32
-	var $requestHeaders = false;	// SOAP headers in request (text)
33
-	var $responseHeaders = '';		// SOAP headers from response (incomplete namespace resolution) (text)
34
-	var $responseHeader = NULL;		// SOAP Header from response (parsed)
35
-	var $document = '';				// SOAP body response portion (incomplete namespace resolution) (text)
36
-	var $endpoint;
37
-	var $forceEndpoint = '';		// overrides WSDL endpoint
28
+    var $username = '';				// Username for HTTP authentication
29
+    var $password = '';				// Password for HTTP authentication
30
+    var $authtype = '';				// Type of HTTP authentication
31
+    var $certRequest = array();		// Certificate for HTTP SSL authentication
32
+    var $requestHeaders = false;	// SOAP headers in request (text)
33
+    var $responseHeaders = '';		// SOAP headers from response (incomplete namespace resolution) (text)
34
+    var $responseHeader = NULL;		// SOAP Header from response (parsed)
35
+    var $document = '';				// SOAP body response portion (incomplete namespace resolution) (text)
36
+    var $endpoint;
37
+    var $forceEndpoint = '';		// overrides WSDL endpoint
38 38
     var $proxyhost = '';
39 39
     var $proxyport = '';
40
-	var $proxyusername = '';
41
-	var $proxypassword = '';
42
-	var $portName = '';				// port name to use in WSDL
40
+    var $proxyusername = '';
41
+    var $proxypassword = '';
42
+    var $portName = '';				// port name to use in WSDL
43 43
     var $xml_encoding = '';			// character set encoding of incoming (response) messages
44
-	var $http_encoding = false;
45
-	var $timeout = 0;				// HTTP connection timeout
46
-	var $response_timeout = 30;		// HTTP response timeout
47
-	var $endpointType = '';			// soap|wsdl, empty for WSDL initialization error
48
-	var $persistentConnection = false;
49
-	var $defaultRpcParams = false;	// This is no longer used
50
-	var $request = '';				// HTTP request
51
-	var $response = '';				// HTTP response
52
-	var $responseData = '';			// SOAP payload of response
53
-	var $cookies = array();			// Cookies from response or for request
44
+    var $http_encoding = false;
45
+    var $timeout = 0;				// HTTP connection timeout
46
+    var $response_timeout = 30;		// HTTP response timeout
47
+    var $endpointType = '';			// soap|wsdl, empty for WSDL initialization error
48
+    var $persistentConnection = false;
49
+    var $defaultRpcParams = false;	// This is no longer used
50
+    var $request = '';				// HTTP request
51
+    var $response = '';				// HTTP response
52
+    var $responseData = '';			// SOAP payload of response
53
+    var $cookies = array();			// Cookies from response or for request
54 54
     var $decode_utf8 = true;		// toggles whether the parser decodes element content w/ utf8_decode()
55
-	var $operations = array();		// WSDL operations, empty for WSDL initialization error
56
-	var $curl_options = array();	// User-specified cURL options
57
-	var $bindingType = '';			// WSDL operation binding type
58
-	var $use_curl = false;			// whether to always try to use cURL
55
+    var $operations = array();		// WSDL operations, empty for WSDL initialization error
56
+    var $curl_options = array();	// User-specified cURL options
57
+    var $bindingType = '';			// WSDL operation binding type
58
+    var $use_curl = false;			// whether to always try to use cURL
59 59
 
60
-	/*
60
+    /*
61 61
 	 * fault related variables
62 62
 	 */
63
-	/**
64
-	 * @var      fault
65
-	 * @access   public
66
-	 */
67
-	var $fault;
68
-	/**
69
-	 * @var      faultcode
70
-	 * @access   public
71
-	 */
72
-	var $faultcode;
73
-	/**
74
-	 * @var      faultstring
75
-	 * @access   public
76
-	 */
77
-	var $faultstring;
78
-	/**
79
-	 * @var      faultdetail
80
-	 * @access   public
81
-	 */
82
-	var $faultdetail;
83
-
84
-	/**
85
-	* constructor
86
-	*
87
-	* @param    mixed $endpoint SOAP server or WSDL URL (string), or wsdl instance (object)
88
-	* @param    mixed $wsdl optional, set to 'wsdl' or true if using WSDL
89
-	* @param    string $proxyhost optional
90
-	* @param    string $proxyport optional
91
-	* @param	string $proxyusername optional
92
-	* @param	string $proxypassword optional
93
-	* @param	integer $timeout set the connection timeout
94
-	* @param	integer $response_timeout set the response timeout
95
-	* @param	string $portName optional portName in WSDL document
96
-	* @access   public
97
-	*/
98
-	function nusoap_client($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = ''){
99
-		parent::nusoap_base();
100
-		$this->endpoint = $endpoint;
101
-		$this->proxyhost = $proxyhost;
102
-		$this->proxyport = $proxyport;
103
-		$this->proxyusername = $proxyusername;
104
-		$this->proxypassword = $proxypassword;
105
-		$this->timeout = $timeout;
106
-		$this->response_timeout = $response_timeout;
107
-		$this->portName = $portName;
108
-
109
-		$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
110
-		$this->appendDebug('endpoint=' . $this->varDump($endpoint));
111
-
112
-		// make values
113
-		if($wsdl){
114
-			if (is_object($endpoint) && (get_class($endpoint) == 'wsdl')) {
115
-				$this->wsdl = $endpoint;
116
-				$this->endpoint = $this->wsdl->wsdl;
117
-				$this->wsdlFile = $this->endpoint;
118
-				$this->debug('existing wsdl instance created from ' . $this->endpoint);
119
-				$this->checkWSDL();
120
-			} else {
121
-				$this->wsdlFile = $this->endpoint;
122
-				$this->wsdl = null;
123
-				$this->debug('will use lazy evaluation of wsdl from ' . $this->endpoint);
124
-			}
125
-			$this->endpointType = 'wsdl';
126
-		} else {
127
-			$this->debug("instantiate SOAP with endpoint at $endpoint");
128
-			$this->endpointType = 'soap';
129
-		}
130
-	}
63
+    /**
64
+     * @var      fault
65
+     * @access   public
66
+     */
67
+    var $fault;
68
+    /**
69
+     * @var      faultcode
70
+     * @access   public
71
+     */
72
+    var $faultcode;
73
+    /**
74
+     * @var      faultstring
75
+     * @access   public
76
+     */
77
+    var $faultstring;
78
+    /**
79
+     * @var      faultdetail
80
+     * @access   public
81
+     */
82
+    var $faultdetail;
131 83
 
132
-	/**
133
-	* calls method, returns PHP native type
134
-	*
135
-	* @param    string $operation SOAP server URL or path
136
-	* @param    mixed $params An array, associative or simple, of the parameters
137
-	*			              for the method call, or a string that is the XML
138
-	*			              for the call.  For rpc style, this call will
139
-	*			              wrap the XML in a tag named after the method, as
140
-	*			              well as the SOAP Envelope and Body.  For document
141
-	*			              style, this will only wrap with the Envelope and Body.
142
-	*			              IMPORTANT: when using an array with document style,
143
-	*			              in which case there
144
-	*                         is really one parameter, the root of the fragment
145
-	*                         used in the call, which encloses what programmers
146
-	*                         normally think of parameters.  A parameter array
147
-	*                         *must* include the wrapper.
148
-	* @param	string $namespace optional method namespace (WSDL can override)
149
-	* @param	string $soapAction optional SOAPAction value (WSDL can override)
150
-	* @param	mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
151
-	* @param	boolean $rpcParams optional (no longer used)
152
-	* @param	string	$style optional (rpc|document) the style to use when serializing parameters (WSDL can override)
153
-	* @param	string	$use optional (encoded|literal) the use when serializing parameters (WSDL can override)
154
-	* @return	mixed	response from SOAP call, normally an associative array mirroring the structure of the XML response, false for certain fatal errors
155
-	* @access   public
156
-	*/
157
-	function call($operation,$params=array(),$namespace='http://tempuri.org',$soapAction='',$headers=false,$rpcParams=null,$style='rpc',$use='encoded'){
158
-		$this->operation = $operation;
159
-		$this->fault = false;
160
-		$this->setError('');
161
-		$this->request = '';
162
-		$this->response = '';
163
-		$this->responseData = '';
164
-		$this->faultstring = '';
165
-		$this->faultcode = '';
166
-		$this->opData = array();
84
+    /**
85
+     * constructor
86
+     *
87
+     * @param    mixed $endpoint SOAP server or WSDL URL (string), or wsdl instance (object)
88
+     * @param    mixed $wsdl optional, set to 'wsdl' or true if using WSDL
89
+     * @param    string $proxyhost optional
90
+     * @param    string $proxyport optional
91
+     * @param	string $proxyusername optional
92
+     * @param	string $proxypassword optional
93
+     * @param	integer $timeout set the connection timeout
94
+     * @param	integer $response_timeout set the response timeout
95
+     * @param	string $portName optional portName in WSDL document
96
+     * @access   public
97
+     */
98
+    function nusoap_client($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = ''){
99
+        parent::nusoap_base();
100
+        $this->endpoint = $endpoint;
101
+        $this->proxyhost = $proxyhost;
102
+        $this->proxyport = $proxyport;
103
+        $this->proxyusername = $proxyusername;
104
+        $this->proxypassword = $proxypassword;
105
+        $this->timeout = $timeout;
106
+        $this->response_timeout = $response_timeout;
107
+        $this->portName = $portName;
108
+
109
+        $this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
110
+        $this->appendDebug('endpoint=' . $this->varDump($endpoint));
111
+
112
+        // make values
113
+        if($wsdl){
114
+            if (is_object($endpoint) && (get_class($endpoint) == 'wsdl')) {
115
+                $this->wsdl = $endpoint;
116
+                $this->endpoint = $this->wsdl->wsdl;
117
+                $this->wsdlFile = $this->endpoint;
118
+                $this->debug('existing wsdl instance created from ' . $this->endpoint);
119
+                $this->checkWSDL();
120
+            } else {
121
+                $this->wsdlFile = $this->endpoint;
122
+                $this->wsdl = null;
123
+                $this->debug('will use lazy evaluation of wsdl from ' . $this->endpoint);
124
+            }
125
+            $this->endpointType = 'wsdl';
126
+        } else {
127
+            $this->debug("instantiate SOAP with endpoint at $endpoint");
128
+            $this->endpointType = 'soap';
129
+        }
130
+    }
131
+
132
+    /**
133
+     * calls method, returns PHP native type
134
+     *
135
+     * @param    string $operation SOAP server URL or path
136
+     * @param    mixed $params An array, associative or simple, of the parameters
137
+     *			              for the method call, or a string that is the XML
138
+     *			              for the call.  For rpc style, this call will
139
+     *			              wrap the XML in a tag named after the method, as
140
+     *			              well as the SOAP Envelope and Body.  For document
141
+     *			              style, this will only wrap with the Envelope and Body.
142
+     *			              IMPORTANT: when using an array with document style,
143
+     *			              in which case there
144
+     *                         is really one parameter, the root of the fragment
145
+     *                         used in the call, which encloses what programmers
146
+     *                         normally think of parameters.  A parameter array
147
+     *                         *must* include the wrapper.
148
+     * @param	string $namespace optional method namespace (WSDL can override)
149
+     * @param	string $soapAction optional SOAPAction value (WSDL can override)
150
+     * @param	mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
151
+     * @param	boolean $rpcParams optional (no longer used)
152
+     * @param	string	$style optional (rpc|document) the style to use when serializing parameters (WSDL can override)
153
+     * @param	string	$use optional (encoded|literal) the use when serializing parameters (WSDL can override)
154
+     * @return	mixed	response from SOAP call, normally an associative array mirroring the structure of the XML response, false for certain fatal errors
155
+     * @access   public
156
+     */
157
+    function call($operation,$params=array(),$namespace='http://tempuri.org',$soapAction='',$headers=false,$rpcParams=null,$style='rpc',$use='encoded'){
158
+        $this->operation = $operation;
159
+        $this->fault = false;
160
+        $this->setError('');
161
+        $this->request = '';
162
+        $this->response = '';
163
+        $this->responseData = '';
164
+        $this->faultstring = '';
165
+        $this->faultcode = '';
166
+        $this->opData = array();
167 167
 		
168
-		$this->debug("call: operation=$operation, namespace=$namespace, soapAction=$soapAction, rpcParams=$rpcParams, style=$style, use=$use, endpointType=$this->endpointType");
169
-		$this->appendDebug('params=' . $this->varDump($params));
170
-		$this->appendDebug('headers=' . $this->varDump($headers));
171
-		if ($headers) {
172
-			$this->requestHeaders = $headers;
173
-		}
174
-		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
175
-			$this->loadWSDL();
176
-			if ($this->getError())
177
-				return false;
178
-		}
179
-		// serialize parameters
180
-		if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
181
-			// use WSDL for operation
182
-			$this->opData = $opData;
183
-			$this->debug("found operation");
184
-			$this->appendDebug('opData=' . $this->varDump($opData));
185
-			if (isset($opData['soapAction'])) {
186
-				$soapAction = $opData['soapAction'];
187
-			}
188
-			if (! $this->forceEndpoint) {
189
-				$this->endpoint = $opData['endpoint'];
190
-			} else {
191
-				$this->endpoint = $this->forceEndpoint;
192
-			}
193
-			$namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] :	$namespace;
194
-			$style = $opData['style'];
195
-			$use = $opData['input']['use'];
196
-			// add ns to ns array
197
-			if($namespace != '' && !isset($this->wsdl->namespaces[$namespace])){
198
-				$nsPrefix = 'ns' . rand(1000, 9999);
199
-				$this->wsdl->namespaces[$nsPrefix] = $namespace;
200
-			}
168
+        $this->debug("call: operation=$operation, namespace=$namespace, soapAction=$soapAction, rpcParams=$rpcParams, style=$style, use=$use, endpointType=$this->endpointType");
169
+        $this->appendDebug('params=' . $this->varDump($params));
170
+        $this->appendDebug('headers=' . $this->varDump($headers));
171
+        if ($headers) {
172
+            $this->requestHeaders = $headers;
173
+        }
174
+        if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
175
+            $this->loadWSDL();
176
+            if ($this->getError())
177
+                return false;
178
+        }
179
+        // serialize parameters
180
+        if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
181
+            // use WSDL for operation
182
+            $this->opData = $opData;
183
+            $this->debug("found operation");
184
+            $this->appendDebug('opData=' . $this->varDump($opData));
185
+            if (isset($opData['soapAction'])) {
186
+                $soapAction = $opData['soapAction'];
187
+            }
188
+            if (! $this->forceEndpoint) {
189
+                $this->endpoint = $opData['endpoint'];
190
+            } else {
191
+                $this->endpoint = $this->forceEndpoint;
192
+            }
193
+            $namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] :	$namespace;
194
+            $style = $opData['style'];
195
+            $use = $opData['input']['use'];
196
+            // add ns to ns array
197
+            if($namespace != '' && !isset($this->wsdl->namespaces[$namespace])){
198
+                $nsPrefix = 'ns' . rand(1000, 9999);
199
+                $this->wsdl->namespaces[$nsPrefix] = $namespace;
200
+            }
201 201
             $nsPrefix = $this->wsdl->getPrefixFromNamespace($namespace);
202
-			// serialize payload
203
-			if (is_string($params)) {
204
-				$this->debug("serializing param string for WSDL operation $operation");
205
-				$payload = $params;
206
-			} elseif (is_array($params)) {
207
-				$this->debug("serializing param array for WSDL operation $operation");
208
-				$payload = $this->wsdl->serializeRPCParameters($operation,'input',$params,$this->bindingType);
209
-			} else {
210
-				$this->debug('params must be array or string');
211
-				$this->setError('params must be array or string');
212
-				return false;
213
-			}
202
+            // serialize payload
203
+            if (is_string($params)) {
204
+                $this->debug("serializing param string for WSDL operation $operation");
205
+                $payload = $params;
206
+            } elseif (is_array($params)) {
207
+                $this->debug("serializing param array for WSDL operation $operation");
208
+                $payload = $this->wsdl->serializeRPCParameters($operation,'input',$params,$this->bindingType);
209
+            } else {
210
+                $this->debug('params must be array or string');
211
+                $this->setError('params must be array or string');
212
+                return false;
213
+            }
214 214
             $usedNamespaces = $this->wsdl->usedNamespaces;
215
-			if (isset($opData['input']['encodingStyle'])) {
216
-				$encodingStyle = $opData['input']['encodingStyle'];
217
-			} else {
218
-				$encodingStyle = '';
219
-			}
220
-			$this->appendDebug($this->wsdl->getDebug());
221
-			$this->wsdl->clearDebug();
222
-			if ($errstr = $this->wsdl->getError()) {
223
-				$this->debug('got wsdl error: '.$errstr);
224
-				$this->setError('wsdl error: '.$errstr);
225
-				return false;
226
-			}
227
-		} elseif($this->endpointType == 'wsdl') {
228
-			// operation not in WSDL
229
-			$this->appendDebug($this->wsdl->getDebug());
230
-			$this->wsdl->clearDebug();
231
-			$this->setError('operation '.$operation.' not present in WSDL.');
232
-			$this->debug("operation '$operation' not present in WSDL.");
233
-			return false;
234
-		} else {
235
-			// no WSDL
236
-			//$this->namespaces['ns1'] = $namespace;
237
-			$nsPrefix = 'ns' . rand(1000, 9999);
238
-			// serialize 
239
-			$payload = '';
240
-			if (is_string($params)) {
241
-				$this->debug("serializing param string for operation $operation");
242
-				$payload = $params;
243
-			} elseif (is_array($params)) {
244
-				$this->debug("serializing param array for operation $operation");
245
-				foreach($params as $k => $v){
246
-					$payload .= $this->serialize_val($v,$k,false,false,false,false,$use);
247
-				}
248
-			} else {
249
-				$this->debug('params must be array or string');
250
-				$this->setError('params must be array or string');
251
-				return false;
252
-			}
253
-			$usedNamespaces = array();
254
-			if ($use == 'encoded') {
255
-				$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
256
-			} else {
257
-				$encodingStyle = '';
258
-			}
259
-		}
260
-		// wrap RPC calls with method element
261
-		if ($style == 'rpc') {
262
-			if ($use == 'literal') {
263
-				$this->debug("wrapping RPC request with literal method element");
264
-				if ($namespace) {
265
-					// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
266
-					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
267
-								$payload .
268
-								"</$nsPrefix:$operation>";
269
-				} else {
270
-					$payload = "<$operation>" . $payload . "</$operation>";
271
-				}
272
-			} else {
273
-				$this->debug("wrapping RPC request with encoded method element");
274
-				if ($namespace) {
275
-					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
276
-								$payload .
277
-								"</$nsPrefix:$operation>";
278
-				} else {
279
-					$payload = "<$operation>" .
280
-								$payload .
281
-								"</$operation>";
282
-				}
283
-			}
284
-		}
285
-		// serialize envelope
286
-		$soapmsg = $this->serializeEnvelope($payload,$this->requestHeaders,$usedNamespaces,$style,$use,$encodingStyle);
287
-		$this->debug("endpoint=$this->endpoint, soapAction=$soapAction, namespace=$namespace, style=$style, use=$use, encodingStyle=$encodingStyle");
288
-		$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
289
-		// send
290
-		$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
291
-		if($errstr = $this->getError()){
292
-			$this->debug('Error: '.$errstr);
293
-			return false;
294
-		} else {
295
-			$this->return = $return;
296
-			$this->debug('sent message successfully and got a(n) '.gettype($return));
297
-           	$this->appendDebug('return=' . $this->varDump($return));
215
+            if (isset($opData['input']['encodingStyle'])) {
216
+                $encodingStyle = $opData['input']['encodingStyle'];
217
+            } else {
218
+                $encodingStyle = '';
219
+            }
220
+            $this->appendDebug($this->wsdl->getDebug());
221
+            $this->wsdl->clearDebug();
222
+            if ($errstr = $this->wsdl->getError()) {
223
+                $this->debug('got wsdl error: '.$errstr);
224
+                $this->setError('wsdl error: '.$errstr);
225
+                return false;
226
+            }
227
+        } elseif($this->endpointType == 'wsdl') {
228
+            // operation not in WSDL
229
+            $this->appendDebug($this->wsdl->getDebug());
230
+            $this->wsdl->clearDebug();
231
+            $this->setError('operation '.$operation.' not present in WSDL.');
232
+            $this->debug("operation '$operation' not present in WSDL.");
233
+            return false;
234
+        } else {
235
+            // no WSDL
236
+            //$this->namespaces['ns1'] = $namespace;
237
+            $nsPrefix = 'ns' . rand(1000, 9999);
238
+            // serialize 
239
+            $payload = '';
240
+            if (is_string($params)) {
241
+                $this->debug("serializing param string for operation $operation");
242
+                $payload = $params;
243
+            } elseif (is_array($params)) {
244
+                $this->debug("serializing param array for operation $operation");
245
+                foreach($params as $k => $v){
246
+                    $payload .= $this->serialize_val($v,$k,false,false,false,false,$use);
247
+                }
248
+            } else {
249
+                $this->debug('params must be array or string');
250
+                $this->setError('params must be array or string');
251
+                return false;
252
+            }
253
+            $usedNamespaces = array();
254
+            if ($use == 'encoded') {
255
+                $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
256
+            } else {
257
+                $encodingStyle = '';
258
+            }
259
+        }
260
+        // wrap RPC calls with method element
261
+        if ($style == 'rpc') {
262
+            if ($use == 'literal') {
263
+                $this->debug("wrapping RPC request with literal method element");
264
+                if ($namespace) {
265
+                    // http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
266
+                    $payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
267
+                                $payload .
268
+                                "</$nsPrefix:$operation>";
269
+                } else {
270
+                    $payload = "<$operation>" . $payload . "</$operation>";
271
+                }
272
+            } else {
273
+                $this->debug("wrapping RPC request with encoded method element");
274
+                if ($namespace) {
275
+                    $payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
276
+                                $payload .
277
+                                "</$nsPrefix:$operation>";
278
+                } else {
279
+                    $payload = "<$operation>" .
280
+                                $payload .
281
+                                "</$operation>";
282
+                }
283
+            }
284
+        }
285
+        // serialize envelope
286
+        $soapmsg = $this->serializeEnvelope($payload,$this->requestHeaders,$usedNamespaces,$style,$use,$encodingStyle);
287
+        $this->debug("endpoint=$this->endpoint, soapAction=$soapAction, namespace=$namespace, style=$style, use=$use, encodingStyle=$encodingStyle");
288
+        $this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
289
+        // send
290
+        $return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
291
+        if($errstr = $this->getError()){
292
+            $this->debug('Error: '.$errstr);
293
+            return false;
294
+        } else {
295
+            $this->return = $return;
296
+            $this->debug('sent message successfully and got a(n) '.gettype($return));
297
+                $this->appendDebug('return=' . $this->varDump($return));
298 298
 			
299
-			// fault?
300
-			if(is_array($return) && isset($return['faultcode'])){
301
-				$this->debug('got fault');
302
-				$this->setError($return['faultcode'].': '.$return['faultstring']);
303
-				$this->fault = true;
304
-				foreach($return as $k => $v){
305
-					$this->$k = $v;
306
-					$this->debug("$k = $v<br>");
307
-				}
308
-				return $return;
309
-			} elseif ($style == 'document') {
310
-				// NOTE: if the response is defined to have multiple parts (i.e. unwrapped),
311
-				// we are only going to return the first part here...sorry about that
312
-				return $return;
313
-			} else {
314
-				// array of return values
315
-				if(is_array($return)){
316
-					// multiple 'out' parameters, which we return wrapped up
317
-					// in the array
318
-					if(sizeof($return) > 1){
319
-						return $return;
320
-					}
321
-					// single 'out' parameter (normally the return value)
322
-					$return = array_shift($return);
323
-					$this->debug('return shifted value: ');
324
-					$this->appendDebug($this->varDump($return));
325
-           			return $return;
326
-				// nothing returned (ie, echoVoid)
327
-				} else {
328
-					return "";
329
-				}
330
-			}
331
-		}
332
-	}
299
+            // fault?
300
+            if(is_array($return) && isset($return['faultcode'])){
301
+                $this->debug('got fault');
302
+                $this->setError($return['faultcode'].': '.$return['faultstring']);
303
+                $this->fault = true;
304
+                foreach($return as $k => $v){
305
+                    $this->$k = $v;
306
+                    $this->debug("$k = $v<br>");
307
+                }
308
+                return $return;
309
+            } elseif ($style == 'document') {
310
+                // NOTE: if the response is defined to have multiple parts (i.e. unwrapped),
311
+                // we are only going to return the first part here...sorry about that
312
+                return $return;
313
+            } else {
314
+                // array of return values
315
+                if(is_array($return)){
316
+                    // multiple 'out' parameters, which we return wrapped up
317
+                    // in the array
318
+                    if(sizeof($return) > 1){
319
+                        return $return;
320
+                    }
321
+                    // single 'out' parameter (normally the return value)
322
+                    $return = array_shift($return);
323
+                    $this->debug('return shifted value: ');
324
+                    $this->appendDebug($this->varDump($return));
325
+                        return $return;
326
+                // nothing returned (ie, echoVoid)
327
+                } else {
328
+                    return "";
329
+                }
330
+            }
331
+        }
332
+    }
333 333
 
334
-	/**
335
-	* check WSDL passed as an instance or pulled from an endpoint
336
-	*
337
-	* @access   private
338
-	*/
339
-	function checkWSDL() {
340
-		$this->appendDebug($this->wsdl->getDebug());
341
-		$this->wsdl->clearDebug();
342
-		$this->debug('checkWSDL');
343
-		// catch errors
344
-		if ($errstr = $this->wsdl->getError()) {
345
-			$this->appendDebug($this->wsdl->getDebug());
346
-			$this->wsdl->clearDebug();
347
-			$this->debug('got wsdl error: '.$errstr);
348
-			$this->setError('wsdl error: '.$errstr);
349
-		} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap')) {
350
-			$this->appendDebug($this->wsdl->getDebug());
351
-			$this->wsdl->clearDebug();
352
-			$this->bindingType = 'soap';
353
-			$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
354
-		} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap12')) {
355
-			$this->appendDebug($this->wsdl->getDebug());
356
-			$this->wsdl->clearDebug();
357
-			$this->bindingType = 'soap12';
358
-			$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
359
-			$this->debug('**************** WARNING: SOAP 1.2 BINDING *****************');
360
-		} else {
361
-			$this->appendDebug($this->wsdl->getDebug());
362
-			$this->wsdl->clearDebug();
363
-			$this->debug('getOperations returned false');
364
-			$this->setError('no operations defined in the WSDL document!');
365
-		}
366
-	}
334
+    /**
335
+     * check WSDL passed as an instance or pulled from an endpoint
336
+     *
337
+     * @access   private
338
+     */
339
+    function checkWSDL() {
340
+        $this->appendDebug($this->wsdl->getDebug());
341
+        $this->wsdl->clearDebug();
342
+        $this->debug('checkWSDL');
343
+        // catch errors
344
+        if ($errstr = $this->wsdl->getError()) {
345
+            $this->appendDebug($this->wsdl->getDebug());
346
+            $this->wsdl->clearDebug();
347
+            $this->debug('got wsdl error: '.$errstr);
348
+            $this->setError('wsdl error: '.$errstr);
349
+        } elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap')) {
350
+            $this->appendDebug($this->wsdl->getDebug());
351
+            $this->wsdl->clearDebug();
352
+            $this->bindingType = 'soap';
353
+            $this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
354
+        } elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap12')) {
355
+            $this->appendDebug($this->wsdl->getDebug());
356
+            $this->wsdl->clearDebug();
357
+            $this->bindingType = 'soap12';
358
+            $this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
359
+            $this->debug('**************** WARNING: SOAP 1.2 BINDING *****************');
360
+        } else {
361
+            $this->appendDebug($this->wsdl->getDebug());
362
+            $this->wsdl->clearDebug();
363
+            $this->debug('getOperations returned false');
364
+            $this->setError('no operations defined in the WSDL document!');
365
+        }
366
+    }
367 367
 
368
-	/**
369
-	 * instantiate wsdl object and parse wsdl file
370
-	 *
371
-	 * @access	public
372
-	 */
373
-	function loadWSDL() {
374
-		$this->debug('instantiating wsdl class with doc: '.$this->wsdlFile);
375
-		$this->wsdl = new wsdl('',$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout,$this->curl_options,$this->use_curl);
376
-		$this->wsdl->setCredentials($this->username, $this->password, $this->authtype, $this->certRequest);
377
-		$this->wsdl->fetchWSDL($this->wsdlFile);
378
-		$this->checkWSDL();
379
-	}
368
+    /**
369
+     * instantiate wsdl object and parse wsdl file
370
+     *
371
+     * @access	public
372
+     */
373
+    function loadWSDL() {
374
+        $this->debug('instantiating wsdl class with doc: '.$this->wsdlFile);
375
+        $this->wsdl = new wsdl('',$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout,$this->curl_options,$this->use_curl);
376
+        $this->wsdl->setCredentials($this->username, $this->password, $this->authtype, $this->certRequest);
377
+        $this->wsdl->fetchWSDL($this->wsdlFile);
378
+        $this->checkWSDL();
379
+    }
380 380
 
381
-	/**
382
-	* get available data pertaining to an operation
383
-	*
384
-	* @param    string $operation operation name
385
-	* @return	array array of data pertaining to the operation
386
-	* @access   public
387
-	*/
388
-	function getOperationData($operation){
389
-		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
390
-			$this->loadWSDL();
391
-			if ($this->getError())
392
-				return false;
393
-		}
394
-		if(isset($this->operations[$operation])){
395
-			return $this->operations[$operation];
396
-		}
397
-		$this->debug("No data for operation: $operation");
398
-	}
381
+    /**
382
+     * get available data pertaining to an operation
383
+     *
384
+     * @param    string $operation operation name
385
+     * @return	array array of data pertaining to the operation
386
+     * @access   public
387
+     */
388
+    function getOperationData($operation){
389
+        if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
390
+            $this->loadWSDL();
391
+            if ($this->getError())
392
+                return false;
393
+        }
394
+        if(isset($this->operations[$operation])){
395
+            return $this->operations[$operation];
396
+        }
397
+        $this->debug("No data for operation: $operation");
398
+    }
399 399
 
400 400
     /**
401
-    * send the SOAP message
402
-    *
403
-    * Note: if the operation has multiple return values
404
-    * the return value of this method will be an array
405
-    * of those values.
406
-    *
407
-	* @param    string $msg a SOAPx4 soapmsg object
408
-	* @param    string $soapaction SOAPAction value
409
-	* @param    integer $timeout set connection timeout in seconds
410
-	* @param	integer $response_timeout set response timeout in seconds
411
-	* @return	mixed native PHP types.
412
-	* @access   private
413
-	*/
414
-	function send($msg, $soapaction = '', $timeout=0, $response_timeout=30) {
415
-		$this->checkCookies();
416
-		// detect transport
417
-		switch(true){
418
-			// http(s)
419
-			case preg_match('/^http/',$this->endpoint):
420
-				$this->debug('transporting via HTTP');
421
-				if($this->persistentConnection == true && is_object($this->persistentConnection)){
422
-					$http =& $this->persistentConnection;
423
-				} else {
424
-					$http = new soap_transport_http($this->endpoint, $this->curl_options, $this->use_curl);
425
-					if ($this->persistentConnection) {
426
-						$http->usePersistentConnection();
427
-					}
428
-				}
429
-				$http->setContentType($this->getHTTPContentType(), $this->getHTTPContentTypeCharset());
430
-				$http->setSOAPAction($soapaction);
431
-				if($this->proxyhost && $this->proxyport){
432
-					$http->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
433
-				}
401
+     * send the SOAP message
402
+     *
403
+     * Note: if the operation has multiple return values
404
+     * the return value of this method will be an array
405
+     * of those values.
406
+     *
407
+     * @param    string $msg a SOAPx4 soapmsg object
408
+     * @param    string $soapaction SOAPAction value
409
+     * @param    integer $timeout set connection timeout in seconds
410
+     * @param	integer $response_timeout set response timeout in seconds
411
+     * @return	mixed native PHP types.
412
+     * @access   private
413
+     */
414
+    function send($msg, $soapaction = '', $timeout=0, $response_timeout=30) {
415
+        $this->checkCookies();
416
+        // detect transport
417
+        switch(true){
418
+            // http(s)
419
+            case preg_match('/^http/',$this->endpoint):
420
+                $this->debug('transporting via HTTP');
421
+                if($this->persistentConnection == true && is_object($this->persistentConnection)){
422
+                    $http =& $this->persistentConnection;
423
+                } else {
424
+                    $http = new soap_transport_http($this->endpoint, $this->curl_options, $this->use_curl);
425
+                    if ($this->persistentConnection) {
426
+                        $http->usePersistentConnection();
427
+                    }
428
+                }
429
+                $http->setContentType($this->getHTTPContentType(), $this->getHTTPContentTypeCharset());
430
+                $http->setSOAPAction($soapaction);
431
+                if($this->proxyhost && $this->proxyport){
432
+                    $http->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
433
+                }
434 434
                 if($this->authtype != '') {
435
-					$http->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
436
-				}
437
-				if($this->http_encoding != ''){
438
-					$http->setEncoding($this->http_encoding);
439
-				}
440
-				$this->debug('sending message, length='.strlen($msg));
441
-				if(preg_match('/^http:/',$this->endpoint)){
442
-				//if(strpos($this->endpoint,'http:')){
443
-					$this->responseData = $http->send($msg,$timeout,$response_timeout,$this->cookies);
444
-				} elseif(preg_match('/^https/',$this->endpoint)){
445
-				//} elseif(strpos($this->endpoint,'https:')){
446
-					//if(phpversion() == '4.3.0-dev'){
447
-						//$response = $http->send($msg,$timeout,$response_timeout);
448
-                   		//$this->request = $http->outgoing_payload;
449
-						//$this->response = $http->incoming_payload;
450
-					//} else
451
-					$this->responseData = $http->sendHTTPS($msg,$timeout,$response_timeout,$this->cookies);
452
-				} else {
453
-					$this->setError('no http/s in endpoint url');
454
-				}
455
-				$this->request = $http->outgoing_payload;
456
-				$this->response = $http->incoming_payload;
457
-				$this->appendDebug($http->getDebug());
458
-				$this->UpdateCookies($http->incoming_cookies);
459
-
460
-				// save transport object if using persistent connections
461
-				if ($this->persistentConnection) {
462
-					$http->clearDebug();
463
-					if (!is_object($this->persistentConnection)) {
464
-						$this->persistentConnection = $http;
465
-					}
466
-				}
435
+                    $http->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
436
+                }
437
+                if($this->http_encoding != ''){
438
+                    $http->setEncoding($this->http_encoding);
439
+                }
440
+                $this->debug('sending message, length='.strlen($msg));
441
+                if(preg_match('/^http:/',$this->endpoint)){
442
+                //if(strpos($this->endpoint,'http:')){
443
+                    $this->responseData = $http->send($msg,$timeout,$response_timeout,$this->cookies);
444
+                } elseif(preg_match('/^https/',$this->endpoint)){
445
+                //} elseif(strpos($this->endpoint,'https:')){
446
+                    //if(phpversion() == '4.3.0-dev'){
447
+                        //$response = $http->send($msg,$timeout,$response_timeout);
448
+                            //$this->request = $http->outgoing_payload;
449
+                        //$this->response = $http->incoming_payload;
450
+                    //} else
451
+                    $this->responseData = $http->sendHTTPS($msg,$timeout,$response_timeout,$this->cookies);
452
+                } else {
453
+                    $this->setError('no http/s in endpoint url');
454
+                }
455
+                $this->request = $http->outgoing_payload;
456
+                $this->response = $http->incoming_payload;
457
+                $this->appendDebug($http->getDebug());
458
+                $this->UpdateCookies($http->incoming_cookies);
459
+
460
+                // save transport object if using persistent connections
461
+                if ($this->persistentConnection) {
462
+                    $http->clearDebug();
463
+                    if (!is_object($this->persistentConnection)) {
464
+                        $this->persistentConnection = $http;
465
+                    }
466
+                }
467 467
 				
468
-				if($err = $http->getError()){
469
-					$this->setError('HTTP Error: '.$err);
470
-					return false;
471
-				} elseif($this->getError()){
472
-					return false;
473
-				} else {
474
-					$this->debug('got response, length='. strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
475
-					return $this->parseResponse($http->incoming_headers, $this->responseData);
476
-				}
477
-			break;
478
-			default:
479
-				$this->setError('no transport found, or selected transport is not yet supported!');
480
-			return false;
481
-			break;
482
-		}
483
-	}
468
+                if($err = $http->getError()){
469
+                    $this->setError('HTTP Error: '.$err);
470
+                    return false;
471
+                } elseif($this->getError()){
472
+                    return false;
473
+                } else {
474
+                    $this->debug('got response, length='. strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
475
+                    return $this->parseResponse($http->incoming_headers, $this->responseData);
476
+                }
477
+            break;
478
+            default:
479
+                $this->setError('no transport found, or selected transport is not yet supported!');
480
+            return false;
481
+            break;
482
+        }
483
+    }
484 484
 
485
-	/**
486
-	* processes SOAP message returned from server
487
-	*
488
-	* @param	array	$headers	The HTTP headers
489
-	* @param	string	$data		unprocessed response data from server
490
-	* @return	mixed	value of the message, decoded into a PHP type
491
-	* @access   private
492
-	*/
485
+    /**
486
+     * processes SOAP message returned from server
487
+     *
488
+     * @param	array	$headers	The HTTP headers
489
+     * @param	string	$data		unprocessed response data from server
490
+     * @return	mixed	value of the message, decoded into a PHP type
491
+     * @access   private
492
+     */
493 493
     function parseResponse($headers, $data) {
494
-		$this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' headers:');
495
-		$this->appendDebug($this->varDump($headers));
496
-    	if (!isset($headers['content-type'])) {
497
-			$this->setError('Response not of type text/xml (no content-type header)');
498
-			return false;
499
-    	}
500
-		if (!strstr($headers['content-type'], 'text/xml')) {
501
-			$this->setError('Response not of type text/xml: ' . $headers['content-type']);
502
-			return false;
503
-		}
504
-		if (strpos($headers['content-type'], '=')) {
505
-			$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
506
-			$this->debug('Got response encoding: ' . $enc);
507
-			if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
508
-				$this->xml_encoding = strtoupper($enc);
509
-			} else {
510
-				$this->xml_encoding = 'US-ASCII';
511
-			}
512
-		} else {
513
-			// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
514
-			$this->xml_encoding = 'ISO-8859-1';
515
-		}
516
-		$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
517
-		$parser = new nusoap_parser($data,$this->xml_encoding,$this->operation,$this->decode_utf8);
518
-		// add parser debug data to our debug
519
-		$this->appendDebug($parser->getDebug());
520
-		// if parse errors
521
-		if($errstr = $parser->getError()){
522
-			$this->setError( $errstr);
523
-			// destroy the parser object
524
-			unset($parser);
525
-			return false;
526
-		} else {
527
-			// get SOAP headers
528
-			$this->responseHeaders = $parser->getHeaders();
529
-			// get SOAP headers
530
-			$this->responseHeader = $parser->get_soapheader();
531
-			// get decoded message
532
-			$return = $parser->get_soapbody();
494
+        $this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' headers:');
495
+        $this->appendDebug($this->varDump($headers));
496
+        if (!isset($headers['content-type'])) {
497
+            $this->setError('Response not of type text/xml (no content-type header)');
498
+            return false;
499
+        }
500
+        if (!strstr($headers['content-type'], 'text/xml')) {
501
+            $this->setError('Response not of type text/xml: ' . $headers['content-type']);
502
+            return false;
503
+        }
504
+        if (strpos($headers['content-type'], '=')) {
505
+            $enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
506
+            $this->debug('Got response encoding: ' . $enc);
507
+            if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
508
+                $this->xml_encoding = strtoupper($enc);
509
+            } else {
510
+                $this->xml_encoding = 'US-ASCII';
511
+            }
512
+        } else {
513
+            // should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
514
+            $this->xml_encoding = 'ISO-8859-1';
515
+        }
516
+        $this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
517
+        $parser = new nusoap_parser($data,$this->xml_encoding,$this->operation,$this->decode_utf8);
518
+        // add parser debug data to our debug
519
+        $this->appendDebug($parser->getDebug());
520
+        // if parse errors
521
+        if($errstr = $parser->getError()){
522
+            $this->setError( $errstr);
523
+            // destroy the parser object
524
+            unset($parser);
525
+            return false;
526
+        } else {
527
+            // get SOAP headers
528
+            $this->responseHeaders = $parser->getHeaders();
529
+            // get SOAP headers
530
+            $this->responseHeader = $parser->get_soapheader();
531
+            // get decoded message
532
+            $return = $parser->get_soapbody();
533 533
             // add document for doclit support
534 534
             $this->document = $parser->document;
535
-			// destroy the parser object
536
-			unset($parser);
537
-			// return decode message
538
-			return $return;
539
-		}
540
-	 }
541
-
542
-	/**
543
-	* sets user-specified cURL options
544
-	*
545
-	* @param	mixed $option The cURL option (always integer?)
546
-	* @param	mixed $value The cURL option value
547
-	* @access   public
548
-	*/
549
-	function setCurlOption($option, $value) {
550
-		$this->debug("setCurlOption option=$option, value=");
551
-		$this->appendDebug($this->varDump($value));
552
-		$this->curl_options[$option] = $value;
553
-	}
535
+            // destroy the parser object
536
+            unset($parser);
537
+            // return decode message
538
+            return $return;
539
+        }
540
+        }
554 541
 
555
-	/**
556
-	* sets the SOAP endpoint, which can override WSDL
557
-	*
558
-	* @param	string $endpoint The endpoint URL to use, or empty string or false to prevent override
559
-	* @access   public
560
-	*/
561
-	function setEndpoint($endpoint) {
562
-		$this->debug("setEndpoint(\"$endpoint\")");
563
-		$this->forceEndpoint = $endpoint;
564
-	}
542
+    /**
543
+     * sets user-specified cURL options
544
+     *
545
+     * @param	mixed $option The cURL option (always integer?)
546
+     * @param	mixed $value The cURL option value
547
+     * @access   public
548
+     */
549
+    function setCurlOption($option, $value) {
550
+        $this->debug("setCurlOption option=$option, value=");
551
+        $this->appendDebug($this->varDump($value));
552
+        $this->curl_options[$option] = $value;
553
+    }
565 554
 
566
-	/**
567
-	* set the SOAP headers
568
-	*
569
-	* @param	mixed $headers String of XML with SOAP header content, or array of soapval objects for SOAP headers
570
-	* @access   public
571
-	*/
572
-	function setHeaders($headers){
573
-		$this->debug("setHeaders headers=");
574
-		$this->appendDebug($this->varDump($headers));
575
-		$this->requestHeaders = $headers;
576
-	}
555
+    /**
556
+     * sets the SOAP endpoint, which can override WSDL
557
+     *
558
+     * @param	string $endpoint The endpoint URL to use, or empty string or false to prevent override
559
+     * @access   public
560
+     */
561
+    function setEndpoint($endpoint) {
562
+        $this->debug("setEndpoint(\"$endpoint\")");
563
+        $this->forceEndpoint = $endpoint;
564
+    }
577 565
 
578
-	/**
579
-	* get the SOAP response headers (namespace resolution incomplete)
580
-	*
581
-	* @return	string
582
-	* @access   public
583
-	*/
584
-	function getHeaders(){
585
-		return $this->responseHeaders;
586
-	}
566
+    /**
567
+     * set the SOAP headers
568
+     *
569
+     * @param	mixed $headers String of XML with SOAP header content, or array of soapval objects for SOAP headers
570
+     * @access   public
571
+     */
572
+    function setHeaders($headers){
573
+        $this->debug("setHeaders headers=");
574
+        $this->appendDebug($this->varDump($headers));
575
+        $this->requestHeaders = $headers;
576
+    }
587 577
 
588
-	/**
589
-	* get the SOAP response Header (parsed)
590
-	*
591
-	* @return	mixed
592
-	* @access   public
593
-	*/
594
-	function getHeader(){
595
-		return $this->responseHeader;
596
-	}
578
+    /**
579
+     * get the SOAP response headers (namespace resolution incomplete)
580
+     *
581
+     * @return	string
582
+     * @access   public
583
+     */
584
+    function getHeaders(){
585
+        return $this->responseHeaders;
586
+    }
597 587
 
598
-	/**
599
-	* set proxy info here
600
-	*
601
-	* @param    string $proxyhost
602
-	* @param    string $proxyport
603
-	* @param	string $proxyusername
604
-	* @param	string $proxypassword
605
-	* @access   public
606
-	*/
607
-	function setHTTPProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '') {
608
-		$this->proxyhost = $proxyhost;
609
-		$this->proxyport = $proxyport;
610
-		$this->proxyusername = $proxyusername;
611
-		$this->proxypassword = $proxypassword;
612
-	}
588
+    /**
589
+     * get the SOAP response Header (parsed)
590
+     *
591
+     * @return	mixed
592
+     * @access   public
593
+     */
594
+    function getHeader(){
595
+        return $this->responseHeader;
596
+    }
613 597
 
614
-	/**
615
-	* if authenticating, set user credentials here
616
-	*
617
-	* @param    string $username
618
-	* @param    string $password
619
-	* @param	string $authtype (basic|digest|certificate|ntlm)
620
-	* @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
621
-	* @access   public
622
-	*/
623
-	function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
624
-		$this->debug("setCredentials username=$username authtype=$authtype certRequest=");
625
-		$this->appendDebug($this->varDump($certRequest));
626
-		$this->username = $username;
627
-		$this->password = $password;
628
-		$this->authtype = $authtype;
629
-		$this->certRequest = $certRequest;
630
-	}
598
+    /**
599
+     * set proxy info here
600
+     *
601
+     * @param    string $proxyhost
602
+     * @param    string $proxyport
603
+     * @param	string $proxyusername
604
+     * @param	string $proxypassword
605
+     * @access   public
606
+     */
607
+    function setHTTPProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '') {
608
+        $this->proxyhost = $proxyhost;
609
+        $this->proxyport = $proxyport;
610
+        $this->proxyusername = $proxyusername;
611
+        $this->proxypassword = $proxypassword;
612
+    }
613
+
614
+    /**
615
+     * if authenticating, set user credentials here
616
+     *
617
+     * @param    string $username
618
+     * @param    string $password
619
+     * @param	string $authtype (basic|digest|certificate|ntlm)
620
+     * @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
621
+     * @access   public
622
+     */
623
+    function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
624
+        $this->debug("setCredentials username=$username authtype=$authtype certRequest=");
625
+        $this->appendDebug($this->varDump($certRequest));
626
+        $this->username = $username;
627
+        $this->password = $password;
628
+        $this->authtype = $authtype;
629
+        $this->certRequest = $certRequest;
630
+    }
631 631
 	
632
-	/**
633
-	* use HTTP encoding
634
-	*
635
-	* @param    string $enc HTTP encoding
636
-	* @access   public
637
-	*/
638
-	function setHTTPEncoding($enc='gzip, deflate'){
639
-		$this->debug("setHTTPEncoding(\"$enc\")");
640
-		$this->http_encoding = $enc;
641
-	}
632
+    /**
633
+     * use HTTP encoding
634
+     *
635
+     * @param    string $enc HTTP encoding
636
+     * @access   public
637
+     */
638
+    function setHTTPEncoding($enc='gzip, deflate'){
639
+        $this->debug("setHTTPEncoding(\"$enc\")");
640
+        $this->http_encoding = $enc;
641
+    }
642 642
 	
643
-	/**
644
-	* Set whether to try to use cURL connections if possible
645
-	*
646
-	* @param	boolean $use Whether to try to use cURL
647
-	* @access   public
648
-	*/
649
-	function setUseCURL($use) {
650
-		$this->debug("setUseCURL($use)");
651
-		$this->use_curl = $use;
652
-	}
643
+    /**
644
+     * Set whether to try to use cURL connections if possible
645
+     *
646
+     * @param	boolean $use Whether to try to use cURL
647
+     * @access   public
648
+     */
649
+    function setUseCURL($use) {
650
+        $this->debug("setUseCURL($use)");
651
+        $this->use_curl = $use;
652
+    }
653 653
 
654
-	/**
655
-	* use HTTP persistent connections if possible
656
-	*
657
-	* @access   public
658
-	*/
659
-	function useHTTPPersistentConnection(){
660
-		$this->debug("useHTTPPersistentConnection");
661
-		$this->persistentConnection = true;
662
-	}
654
+    /**
655
+     * use HTTP persistent connections if possible
656
+     *
657
+     * @access   public
658
+     */
659
+    function useHTTPPersistentConnection(){
660
+        $this->debug("useHTTPPersistentConnection");
661
+        $this->persistentConnection = true;
662
+    }
663 663
 	
664
-	/**
665
-	* gets the default RPC parameter setting.
666
-	* If true, default is that call params are like RPC even for document style.
667
-	* Each call() can override this value.
668
-	*
669
-	* This is no longer used.
670
-	*
671
-	* @return boolean
672
-	* @access public
673
-	* @deprecated
674
-	*/
675
-	function getDefaultRpcParams() {
676
-		return $this->defaultRpcParams;
677
-	}
664
+    /**
665
+     * gets the default RPC parameter setting.
666
+     * If true, default is that call params are like RPC even for document style.
667
+     * Each call() can override this value.
668
+     *
669
+     * This is no longer used.
670
+     *
671
+     * @return boolean
672
+     * @access public
673
+     * @deprecated
674
+     */
675
+    function getDefaultRpcParams() {
676
+        return $this->defaultRpcParams;
677
+    }
678 678
 
679
-	/**
680
-	* sets the default RPC parameter setting.
681
-	* If true, default is that call params are like RPC even for document style
682
-	* Each call() can override this value.
683
-	*
684
-	* This is no longer used.
685
-	*
686
-	* @param    boolean $rpcParams
687
-	* @access public
688
-	* @deprecated
689
-	*/
690
-	function setDefaultRpcParams($rpcParams) {
691
-		$this->defaultRpcParams = $rpcParams;
692
-	}
679
+    /**
680
+     * sets the default RPC parameter setting.
681
+     * If true, default is that call params are like RPC even for document style
682
+     * Each call() can override this value.
683
+     *
684
+     * This is no longer used.
685
+     *
686
+     * @param    boolean $rpcParams
687
+     * @access public
688
+     * @deprecated
689
+     */
690
+    function setDefaultRpcParams($rpcParams) {
691
+        $this->defaultRpcParams = $rpcParams;
692
+    }
693 693
 	
694
-	/**
695
-	* dynamically creates an instance of a proxy class,
696
-	* allowing user to directly call methods from wsdl
697
-	*
698
-	* @return   object soap_proxy object
699
-	* @access   public
700
-	*/
701
-	function getProxy() {
702
-		$r = rand();
703
-		$evalStr = $this->_getProxyClassCode($r);
704
-		//$this->debug("proxy class: $evalStr");
705
-		if ($this->getError()) {
706
-			$this->debug("Error from _getProxyClassCode, so return NULL");
707
-			return null;
708
-		}
709
-		// eval the class
710
-		eval($evalStr);
711
-		// instantiate proxy object
712
-		eval("\$proxy = new nusoap_proxy_$r('');");
713
-		// transfer current wsdl data to the proxy thereby avoiding parsing the wsdl twice
714
-		$proxy->endpointType = 'wsdl';
715
-		$proxy->wsdlFile = $this->wsdlFile;
716
-		$proxy->wsdl = $this->wsdl;
717
-		$proxy->operations = $this->operations;
718
-		$proxy->defaultRpcParams = $this->defaultRpcParams;
719
-		// transfer other state
720
-		$proxy->soap_defencoding = $this->soap_defencoding;
721
-		$proxy->username = $this->username;
722
-		$proxy->password = $this->password;
723
-		$proxy->authtype = $this->authtype;
724
-		$proxy->certRequest = $this->certRequest;
725
-		$proxy->requestHeaders = $this->requestHeaders;
726
-		$proxy->endpoint = $this->endpoint;
727
-		$proxy->forceEndpoint = $this->forceEndpoint;
728
-		$proxy->proxyhost = $this->proxyhost;
729
-		$proxy->proxyport = $this->proxyport;
730
-		$proxy->proxyusername = $this->proxyusername;
731
-		$proxy->proxypassword = $this->proxypassword;
732
-		$proxy->http_encoding = $this->http_encoding;
733
-		$proxy->timeout = $this->timeout;
734
-		$proxy->response_timeout = $this->response_timeout;
735
-		$proxy->persistentConnection = &$this->persistentConnection;
736
-		$proxy->decode_utf8 = $this->decode_utf8;
737
-		$proxy->curl_options = $this->curl_options;
738
-		$proxy->bindingType = $this->bindingType;
739
-		$proxy->use_curl = $this->use_curl;
740
-		return $proxy;
741
-	}
694
+    /**
695
+     * dynamically creates an instance of a proxy class,
696
+     * allowing user to directly call methods from wsdl
697
+     *
698
+     * @return   object soap_proxy object
699
+     * @access   public
700
+     */
701
+    function getProxy() {
702
+        $r = rand();
703
+        $evalStr = $this->_getProxyClassCode($r);
704
+        //$this->debug("proxy class: $evalStr");
705
+        if ($this->getError()) {
706
+            $this->debug("Error from _getProxyClassCode, so return NULL");
707
+            return null;
708
+        }
709
+        // eval the class
710
+        eval($evalStr);
711
+        // instantiate proxy object
712
+        eval("\$proxy = new nusoap_proxy_$r('');");
713
+        // transfer current wsdl data to the proxy thereby avoiding parsing the wsdl twice
714
+        $proxy->endpointType = 'wsdl';
715
+        $proxy->wsdlFile = $this->wsdlFile;
716
+        $proxy->wsdl = $this->wsdl;
717
+        $proxy->operations = $this->operations;
718
+        $proxy->defaultRpcParams = $this->defaultRpcParams;
719
+        // transfer other state
720
+        $proxy->soap_defencoding = $this->soap_defencoding;
721
+        $proxy->username = $this->username;
722
+        $proxy->password = $this->password;
723
+        $proxy->authtype = $this->authtype;
724
+        $proxy->certRequest = $this->certRequest;
725
+        $proxy->requestHeaders = $this->requestHeaders;
726
+        $proxy->endpoint = $this->endpoint;
727
+        $proxy->forceEndpoint = $this->forceEndpoint;
728
+        $proxy->proxyhost = $this->proxyhost;
729
+        $proxy->proxyport = $this->proxyport;
730
+        $proxy->proxyusername = $this->proxyusername;
731
+        $proxy->proxypassword = $this->proxypassword;
732
+        $proxy->http_encoding = $this->http_encoding;
733
+        $proxy->timeout = $this->timeout;
734
+        $proxy->response_timeout = $this->response_timeout;
735
+        $proxy->persistentConnection = &$this->persistentConnection;
736
+        $proxy->decode_utf8 = $this->decode_utf8;
737
+        $proxy->curl_options = $this->curl_options;
738
+        $proxy->bindingType = $this->bindingType;
739
+        $proxy->use_curl = $this->use_curl;
740
+        return $proxy;
741
+    }
742 742
 
743
-	/**
744
-	* dynamically creates proxy class code
745
-	*
746
-	* @return   string PHP/NuSOAP code for the proxy class
747
-	* @access   private
748
-	*/
749
-	function _getProxyClassCode($r) {
750
-		$this->debug("in getProxy endpointType=$this->endpointType");
751
-		$this->appendDebug("wsdl=" . $this->varDump($this->wsdl));
752
-		if ($this->endpointType != 'wsdl') {
753
-			$evalStr = 'A proxy can only be created for a WSDL client';
754
-			$this->setError($evalStr);
755
-			$evalStr = "echo \"$evalStr\";";
756
-			return $evalStr;
757
-		}
758
-		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
759
-			$this->loadWSDL();
760
-			if ($this->getError()) {
761
-				return "echo \"" . $this->getError() . "\";";
762
-			}
763
-		}
764
-		$evalStr = '';
765
-		foreach ($this->operations as $operation => $opData) {
766
-			if ($operation != '') {
767
-				// create param string and param comment string
768
-				if (sizeof($opData['input']['parts']) > 0) {
769
-					$paramStr = '';
770
-					$paramArrayStr = '';
771
-					$paramCommentStr = '';
772
-					foreach ($opData['input']['parts'] as $name => $type) {
773
-						$paramStr .= "\$$name, ";
774
-						$paramArrayStr .= "'$name' => \$$name, ";
775
-						$paramCommentStr .= "$type \$$name, ";
776
-					}
777
-					$paramStr = substr($paramStr, 0, strlen($paramStr)-2);
778
-					$paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr)-2);
779
-					$paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr)-2);
780
-				} else {
781
-					$paramStr = '';
782
-					$paramArrayStr = '';
783
-					$paramCommentStr = 'void';
784
-				}
785
-				$opData['namespace'] = !isset($opData['namespace']) ? 'http://testuri.com' : $opData['namespace'];
786
-				$evalStr .= "// $paramCommentStr
743
+    /**
744
+     * dynamically creates proxy class code
745
+     *
746
+     * @return   string PHP/NuSOAP code for the proxy class
747
+     * @access   private
748
+     */
749
+    function _getProxyClassCode($r) {
750
+        $this->debug("in getProxy endpointType=$this->endpointType");
751
+        $this->appendDebug("wsdl=" . $this->varDump($this->wsdl));
752
+        if ($this->endpointType != 'wsdl') {
753
+            $evalStr = 'A proxy can only be created for a WSDL client';
754
+            $this->setError($evalStr);
755
+            $evalStr = "echo \"$evalStr\";";
756
+            return $evalStr;
757
+        }
758
+        if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
759
+            $this->loadWSDL();
760
+            if ($this->getError()) {
761
+                return "echo \"" . $this->getError() . "\";";
762
+            }
763
+        }
764
+        $evalStr = '';
765
+        foreach ($this->operations as $operation => $opData) {
766
+            if ($operation != '') {
767
+                // create param string and param comment string
768
+                if (sizeof($opData['input']['parts']) > 0) {
769
+                    $paramStr = '';
770
+                    $paramArrayStr = '';
771
+                    $paramCommentStr = '';
772
+                    foreach ($opData['input']['parts'] as $name => $type) {
773
+                        $paramStr .= "\$$name, ";
774
+                        $paramArrayStr .= "'$name' => \$$name, ";
775
+                        $paramCommentStr .= "$type \$$name, ";
776
+                    }
777
+                    $paramStr = substr($paramStr, 0, strlen($paramStr)-2);
778
+                    $paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr)-2);
779
+                    $paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr)-2);
780
+                } else {
781
+                    $paramStr = '';
782
+                    $paramArrayStr = '';
783
+                    $paramCommentStr = 'void';
784
+                }
785
+                $opData['namespace'] = !isset($opData['namespace']) ? 'http://testuri.com' : $opData['namespace'];
786
+                $evalStr .= "// $paramCommentStr
787 787
 	function " . str_replace('.', '__', $operation) . "($paramStr) {
788 788
 		\$params = array($paramArrayStr);
789 789
 		return \$this->call('$operation', \$params, '".$opData['namespace']."', '".(isset($opData['soapAction']) ? $opData['soapAction'] : '')."');
790 790
 	}
791 791
 	";
792
-				unset($paramStr);
793
-				unset($paramCommentStr);
794
-			}
795
-		}
796
-		$evalStr = 'class nusoap_proxy_'.$r.' extends nusoap_client {
792
+                unset($paramStr);
793
+                unset($paramCommentStr);
794
+            }
795
+        }
796
+        $evalStr = 'class nusoap_proxy_'.$r.' extends nusoap_client {
797 797
 	'.$evalStr.'
798 798
 }';
799
-		return $evalStr;
800
-	}
799
+        return $evalStr;
800
+    }
801 801
 
802
-	/**
803
-	* dynamically creates proxy class code
804
-	*
805
-	* @return   string PHP/NuSOAP code for the proxy class
806
-	* @access   public
807
-	*/
808
-	function getProxyClassCode() {
809
-		$r = rand();
810
-		return $this->_getProxyClassCode($r);
811
-	}
802
+    /**
803
+     * dynamically creates proxy class code
804
+     *
805
+     * @return   string PHP/NuSOAP code for the proxy class
806
+     * @access   public
807
+     */
808
+    function getProxyClassCode() {
809
+        $r = rand();
810
+        return $this->_getProxyClassCode($r);
811
+    }
812 812
 
813
-	/**
814
-	* gets the HTTP body for the current request.
815
-	*
816
-	* @param string $soapmsg The SOAP payload
817
-	* @return string The HTTP body, which includes the SOAP payload
818
-	* @access private
819
-	*/
820
-	function getHTTPBody($soapmsg) {
821
-		return $soapmsg;
822
-	}
813
+    /**
814
+     * gets the HTTP body for the current request.
815
+     *
816
+     * @param string $soapmsg The SOAP payload
817
+     * @return string The HTTP body, which includes the SOAP payload
818
+     * @access private
819
+     */
820
+    function getHTTPBody($soapmsg) {
821
+        return $soapmsg;
822
+    }
823 823
 	
824
-	/**
825
-	* gets the HTTP content type for the current request.
826
-	*
827
-	* Note: getHTTPBody must be called before this.
828
-	*
829
-	* @return string the HTTP content type for the current request.
830
-	* @access private
831
-	*/
832
-	function getHTTPContentType() {
833
-		return 'text/xml';
834
-	}
824
+    /**
825
+     * gets the HTTP content type for the current request.
826
+     *
827
+     * Note: getHTTPBody must be called before this.
828
+     *
829
+     * @return string the HTTP content type for the current request.
830
+     * @access private
831
+     */
832
+    function getHTTPContentType() {
833
+        return 'text/xml';
834
+    }
835 835
 	
836
-	/**
837
-	* gets the HTTP content type charset for the current request.
838
-	* returns false for non-text content types.
839
-	*
840
-	* Note: getHTTPBody must be called before this.
841
-	*
842
-	* @return string the HTTP content type charset for the current request.
843
-	* @access private
844
-	*/
845
-	function getHTTPContentTypeCharset() {
846
-		return $this->soap_defencoding;
847
-	}
836
+    /**
837
+     * gets the HTTP content type charset for the current request.
838
+     * returns false for non-text content types.
839
+     *
840
+     * Note: getHTTPBody must be called before this.
841
+     *
842
+     * @return string the HTTP content type charset for the current request.
843
+     * @access private
844
+     */
845
+    function getHTTPContentTypeCharset() {
846
+        return $this->soap_defencoding;
847
+    }
848 848
 
849
-	/*
849
+    /*
850 850
 	* whether or not parser should decode utf8 element content
851 851
     *
852 852
     * @return   always returns true
853 853
     * @access   public
854 854
     */
855 855
     function decodeUTF8($bool){
856
-		$this->decode_utf8 = $bool;
857
-		return true;
856
+        $this->decode_utf8 = $bool;
857
+        return true;
858 858
     }
859 859
 
860
-	/**
861
-	 * adds a new Cookie into $this->cookies array
862
-	 *
863
-	 * @param	string $name Cookie Name
864
-	 * @param	string $value Cookie Value
865
-	 * @return	boolean if cookie-set was successful returns true, else false
866
-	 * @access	public
867
-	 */
868
-	function setCookie($name, $value) {
869
-		if (strlen($name) == 0) {
870
-			return false;
871
-		}
872
-		$this->cookies[] = array('name' => $name, 'value' => $value);
873
-		return true;
874
-	}
860
+    /**
861
+     * adds a new Cookie into $this->cookies array
862
+     *
863
+     * @param	string $name Cookie Name
864
+     * @param	string $value Cookie Value
865
+     * @return	boolean if cookie-set was successful returns true, else false
866
+     * @access	public
867
+     */
868
+    function setCookie($name, $value) {
869
+        if (strlen($name) == 0) {
870
+            return false;
871
+        }
872
+        $this->cookies[] = array('name' => $name, 'value' => $value);
873
+        return true;
874
+    }
875 875
 
876
-	/**
877
-	 * gets all Cookies
878
-	 *
879
-	 * @return   array with all internal cookies
880
-	 * @access   public
881
-	 */
882
-	function getCookies() {
883
-		return $this->cookies;
884
-	}
876
+    /**
877
+     * gets all Cookies
878
+     *
879
+     * @return   array with all internal cookies
880
+     * @access   public
881
+     */
882
+    function getCookies() {
883
+        return $this->cookies;
884
+    }
885 885
 
886
-	/**
887
-	 * checks all Cookies and delete those which are expired
888
-	 *
889
-	 * @return   boolean always return true
890
-	 * @access   private
891
-	 */
892
-	function checkCookies() {
893
-		if (sizeof($this->cookies) == 0) {
894
-			return true;
895
-		}
896
-		$this->debug('checkCookie: check ' . sizeof($this->cookies) . ' cookies');
897
-		$curr_cookies = $this->cookies;
898
-		$this->cookies = array();
899
-		foreach ($curr_cookies as $cookie) {
900
-			if (! is_array($cookie)) {
901
-				$this->debug('Remove cookie that is not an array');
902
-				continue;
903
-			}
904
-			if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
905
-				if (strtotime($cookie['expires']) > time()) {
906
-					$this->cookies[] = $cookie;
907
-				} else {
908
-					$this->debug('Remove expired cookie ' . $cookie['name']);
909
-				}
910
-			} else {
911
-				$this->cookies[] = $cookie;
912
-			}
913
-		}
914
-		$this->debug('checkCookie: '.sizeof($this->cookies).' cookies left in array');
915
-		return true;
916
-	}
886
+    /**
887
+     * checks all Cookies and delete those which are expired
888
+     *
889
+     * @return   boolean always return true
890
+     * @access   private
891
+     */
892
+    function checkCookies() {
893
+        if (sizeof($this->cookies) == 0) {
894
+            return true;
895
+        }
896
+        $this->debug('checkCookie: check ' . sizeof($this->cookies) . ' cookies');
897
+        $curr_cookies = $this->cookies;
898
+        $this->cookies = array();
899
+        foreach ($curr_cookies as $cookie) {
900
+            if (! is_array($cookie)) {
901
+                $this->debug('Remove cookie that is not an array');
902
+                continue;
903
+            }
904
+            if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
905
+                if (strtotime($cookie['expires']) > time()) {
906
+                    $this->cookies[] = $cookie;
907
+                } else {
908
+                    $this->debug('Remove expired cookie ' . $cookie['name']);
909
+                }
910
+            } else {
911
+                $this->cookies[] = $cookie;
912
+            }
913
+        }
914
+        $this->debug('checkCookie: '.sizeof($this->cookies).' cookies left in array');
915
+        return true;
916
+    }
917 917
 
918
-	/**
919
-	 * updates the current cookies with a new set
920
-	 *
921
-	 * @param	array $cookies new cookies with which to update current ones
922
-	 * @return	boolean always return true
923
-	 * @access	private
924
-	 */
925
-	function UpdateCookies($cookies) {
926
-		if (sizeof($this->cookies) == 0) {
927
-			// no existing cookies: take whatever is new
928
-			if (sizeof($cookies) > 0) {
929
-				$this->debug('Setting new cookie(s)');
930
-				$this->cookies = $cookies;
931
-			}
932
-			return true;
933
-		}
934
-		if (sizeof($cookies) == 0) {
935
-			// no new cookies: keep what we've got
936
-			return true;
937
-		}
938
-		// merge
939
-		foreach ($cookies as $newCookie) {
940
-			if (!is_array($newCookie)) {
941
-				continue;
942
-			}
943
-			if ((!isset($newCookie['name'])) || (!isset($newCookie['value']))) {
944
-				continue;
945
-			}
946
-			$newName = $newCookie['name'];
947
-
948
-			$found = false;
949
-			for ($i = 0; $i < count($this->cookies); $i++) {
950
-				$cookie = $this->cookies[$i];
951
-				if (!is_array($cookie)) {
952
-					continue;
953
-				}
954
-				if (!isset($cookie['name'])) {
955
-					continue;
956
-				}
957
-				if ($newName != $cookie['name']) {
958
-					continue;
959
-				}
960
-				$newDomain = isset($newCookie['domain']) ? $newCookie['domain'] : 'NODOMAIN';
961
-				$domain = isset($cookie['domain']) ? $cookie['domain'] : 'NODOMAIN';
962
-				if ($newDomain != $domain) {
963
-					continue;
964
-				}
965
-				$newPath = isset($newCookie['path']) ? $newCookie['path'] : 'NOPATH';
966
-				$path = isset($cookie['path']) ? $cookie['path'] : 'NOPATH';
967
-				if ($newPath != $path) {
968
-					continue;
969
-				}
970
-				$this->cookies[$i] = $newCookie;
971
-				$found = true;
972
-				$this->debug('Update cookie ' . $newName . '=' . $newCookie['value']);
973
-				break;
974
-			}
975
-			if (! $found) {
976
-				$this->debug('Add cookie ' . $newName . '=' . $newCookie['value']);
977
-				$this->cookies[] = $newCookie;
978
-			}
979
-		}
980
-		return true;
981
-	}
918
+    /**
919
+     * updates the current cookies with a new set
920
+     *
921
+     * @param	array $cookies new cookies with which to update current ones
922
+     * @return	boolean always return true
923
+     * @access	private
924
+     */
925
+    function UpdateCookies($cookies) {
926
+        if (sizeof($this->cookies) == 0) {
927
+            // no existing cookies: take whatever is new
928
+            if (sizeof($cookies) > 0) {
929
+                $this->debug('Setting new cookie(s)');
930
+                $this->cookies = $cookies;
931
+            }
932
+            return true;
933
+        }
934
+        if (sizeof($cookies) == 0) {
935
+            // no new cookies: keep what we've got
936
+            return true;
937
+        }
938
+        // merge
939
+        foreach ($cookies as $newCookie) {
940
+            if (!is_array($newCookie)) {
941
+                continue;
942
+            }
943
+            if ((!isset($newCookie['name'])) || (!isset($newCookie['value']))) {
944
+                continue;
945
+            }
946
+            $newName = $newCookie['name'];
947
+
948
+            $found = false;
949
+            for ($i = 0; $i < count($this->cookies); $i++) {
950
+                $cookie = $this->cookies[$i];
951
+                if (!is_array($cookie)) {
952
+                    continue;
953
+                }
954
+                if (!isset($cookie['name'])) {
955
+                    continue;
956
+                }
957
+                if ($newName != $cookie['name']) {
958
+                    continue;
959
+                }
960
+                $newDomain = isset($newCookie['domain']) ? $newCookie['domain'] : 'NODOMAIN';
961
+                $domain = isset($cookie['domain']) ? $cookie['domain'] : 'NODOMAIN';
962
+                if ($newDomain != $domain) {
963
+                    continue;
964
+                }
965
+                $newPath = isset($newCookie['path']) ? $newCookie['path'] : 'NOPATH';
966
+                $path = isset($cookie['path']) ? $cookie['path'] : 'NOPATH';
967
+                if ($newPath != $path) {
968
+                    continue;
969
+                }
970
+                $this->cookies[$i] = $newCookie;
971
+                $found = true;
972
+                $this->debug('Update cookie ' . $newName . '=' . $newCookie['value']);
973
+                break;
974
+            }
975
+            if (! $found) {
976
+                $this->debug('Add cookie ' . $newName . '=' . $newCookie['value']);
977
+                $this->cookies[] = $newCookie;
978
+            }
979
+        }
980
+        return true;
981
+    }
982 982
 }
983 983
 
984 984
 if (!extension_loaded('soap')) {
985
-	/**
986
-	 *	For backwards compatiblity, define soapclient unless the PHP SOAP extension is loaded.
987
-	 */
988
-	class soapclient extends nusoap_client {
989
-	}
985
+    /**
986
+     *	For backwards compatiblity, define soapclient unless the PHP SOAP extension is loaded.
987
+     */
988
+    class soapclient extends nusoap_client {
989
+    }
990 990
 }
991 991
 ?>
Please login to merge, or discard this patch.
Spacing   +107 added lines, -107 removed lines patch added patch discarded remove patch
@@ -23,39 +23,39 @@  discard block
 block discarded – undo
23 23
 * @version  $Id: class.soapclient.php,v 1.69 2010/04/26 20:15:08 snichol Exp $
24 24
 * @access   public
25 25
 */
26
-class nusoap_client extends nusoap_base  {
27
-
28
-	var $username = '';				// Username for HTTP authentication
29
-	var $password = '';				// Password for HTTP authentication
30
-	var $authtype = '';				// Type of HTTP authentication
31
-	var $certRequest = array();		// Certificate for HTTP SSL authentication
32
-	var $requestHeaders = false;	// SOAP headers in request (text)
33
-	var $responseHeaders = '';		// SOAP headers from response (incomplete namespace resolution) (text)
34
-	var $responseHeader = NULL;		// SOAP Header from response (parsed)
35
-	var $document = '';				// SOAP body response portion (incomplete namespace resolution) (text)
26
+class nusoap_client extends nusoap_base {
27
+
28
+	var $username = ''; // Username for HTTP authentication
29
+	var $password = ''; // Password for HTTP authentication
30
+	var $authtype = ''; // Type of HTTP authentication
31
+	var $certRequest = array(); // Certificate for HTTP SSL authentication
32
+	var $requestHeaders = false; // SOAP headers in request (text)
33
+	var $responseHeaders = ''; // SOAP headers from response (incomplete namespace resolution) (text)
34
+	var $responseHeader = NULL; // SOAP Header from response (parsed)
35
+	var $document = ''; // SOAP body response portion (incomplete namespace resolution) (text)
36 36
 	var $endpoint;
37
-	var $forceEndpoint = '';		// overrides WSDL endpoint
37
+	var $forceEndpoint = ''; // overrides WSDL endpoint
38 38
     var $proxyhost = '';
39 39
     var $proxyport = '';
40 40
 	var $proxyusername = '';
41 41
 	var $proxypassword = '';
42
-	var $portName = '';				// port name to use in WSDL
43
-    var $xml_encoding = '';			// character set encoding of incoming (response) messages
42
+	var $portName = ''; // port name to use in WSDL
43
+    var $xml_encoding = ''; // character set encoding of incoming (response) messages
44 44
 	var $http_encoding = false;
45
-	var $timeout = 0;				// HTTP connection timeout
46
-	var $response_timeout = 30;		// HTTP response timeout
47
-	var $endpointType = '';			// soap|wsdl, empty for WSDL initialization error
45
+	var $timeout = 0; // HTTP connection timeout
46
+	var $response_timeout = 30; // HTTP response timeout
47
+	var $endpointType = ''; // soap|wsdl, empty for WSDL initialization error
48 48
 	var $persistentConnection = false;
49
-	var $defaultRpcParams = false;	// This is no longer used
50
-	var $request = '';				// HTTP request
51
-	var $response = '';				// HTTP response
52
-	var $responseData = '';			// SOAP payload of response
53
-	var $cookies = array();			// Cookies from response or for request
54
-    var $decode_utf8 = true;		// toggles whether the parser decodes element content w/ utf8_decode()
55
-	var $operations = array();		// WSDL operations, empty for WSDL initialization error
56
-	var $curl_options = array();	// User-specified cURL options
57
-	var $bindingType = '';			// WSDL operation binding type
58
-	var $use_curl = false;			// whether to always try to use cURL
49
+	var $defaultRpcParams = false; // This is no longer used
50
+	var $request = ''; // HTTP request
51
+	var $response = ''; // HTTP response
52
+	var $responseData = ''; // SOAP payload of response
53
+	var $cookies = array(); // Cookies from response or for request
54
+    var $decode_utf8 = true; // toggles whether the parser decodes element content w/ utf8_decode()
55
+	var $operations = array(); // WSDL operations, empty for WSDL initialization error
56
+	var $curl_options = array(); // User-specified cURL options
57
+	var $bindingType = ''; // WSDL operation binding type
58
+	var $use_curl = false; // whether to always try to use cURL
59 59
 
60 60
 	/*
61 61
 	 * fault related variables
@@ -95,7 +95,7 @@  discard block
 block discarded – undo
95 95
 	* @param	string $portName optional portName in WSDL document
96 96
 	* @access   public
97 97
 	*/
98
-	function nusoap_client($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = ''){
98
+	function nusoap_client($endpoint, $wsdl = false, $proxyhost = false, $proxyport = false, $proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = '') {
99 99
 		parent::nusoap_base();
100 100
 		$this->endpoint = $endpoint;
101 101
 		$this->proxyhost = $proxyhost;
@@ -107,20 +107,20 @@  discard block
 block discarded – undo
107 107
 		$this->portName = $portName;
108 108
 
109 109
 		$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
110
-		$this->appendDebug('endpoint=' . $this->varDump($endpoint));
110
+		$this->appendDebug('endpoint='.$this->varDump($endpoint));
111 111
 
112 112
 		// make values
113
-		if($wsdl){
113
+		if ($wsdl) {
114 114
 			if (is_object($endpoint) && (get_class($endpoint) == 'wsdl')) {
115 115
 				$this->wsdl = $endpoint;
116 116
 				$this->endpoint = $this->wsdl->wsdl;
117 117
 				$this->wsdlFile = $this->endpoint;
118
-				$this->debug('existing wsdl instance created from ' . $this->endpoint);
118
+				$this->debug('existing wsdl instance created from '.$this->endpoint);
119 119
 				$this->checkWSDL();
120 120
 			} else {
121 121
 				$this->wsdlFile = $this->endpoint;
122 122
 				$this->wsdl = null;
123
-				$this->debug('will use lazy evaluation of wsdl from ' . $this->endpoint);
123
+				$this->debug('will use lazy evaluation of wsdl from '.$this->endpoint);
124 124
 			}
125 125
 			$this->endpointType = 'wsdl';
126 126
 		} else {
@@ -154,7 +154,7 @@  discard block
 block discarded – undo
154 154
 	* @return	mixed	response from SOAP call, normally an associative array mirroring the structure of the XML response, false for certain fatal errors
155 155
 	* @access   public
156 156
 	*/
157
-	function call($operation,$params=array(),$namespace='http://tempuri.org',$soapAction='',$headers=false,$rpcParams=null,$style='rpc',$use='encoded'){
157
+	function call($operation, $params = array(), $namespace = 'http://tempuri.org', $soapAction = '', $headers = false, $rpcParams = null, $style = 'rpc', $use = 'encoded') {
158 158
 		$this->operation = $operation;
159 159
 		$this->fault = false;
160 160
 		$this->setError('');
@@ -166,8 +166,8 @@  discard block
 block discarded – undo
166 166
 		$this->opData = array();
167 167
 		
168 168
 		$this->debug("call: operation=$operation, namespace=$namespace, soapAction=$soapAction, rpcParams=$rpcParams, style=$style, use=$use, endpointType=$this->endpointType");
169
-		$this->appendDebug('params=' . $this->varDump($params));
170
-		$this->appendDebug('headers=' . $this->varDump($headers));
169
+		$this->appendDebug('params='.$this->varDump($params));
170
+		$this->appendDebug('headers='.$this->varDump($headers));
171 171
 		if ($headers) {
172 172
 			$this->requestHeaders = $headers;
173 173
 		}
@@ -177,25 +177,25 @@  discard block
 block discarded – undo
177 177
 				return false;
178 178
 		}
179 179
 		// serialize parameters
180
-		if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
180
+		if ($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)) {
181 181
 			// use WSDL for operation
182 182
 			$this->opData = $opData;
183 183
 			$this->debug("found operation");
184
-			$this->appendDebug('opData=' . $this->varDump($opData));
184
+			$this->appendDebug('opData='.$this->varDump($opData));
185 185
 			if (isset($opData['soapAction'])) {
186 186
 				$soapAction = $opData['soapAction'];
187 187
 			}
188
-			if (! $this->forceEndpoint) {
188
+			if (!$this->forceEndpoint) {
189 189
 				$this->endpoint = $opData['endpoint'];
190 190
 			} else {
191 191
 				$this->endpoint = $this->forceEndpoint;
192 192
 			}
193
-			$namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] :	$namespace;
193
+			$namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] : $namespace;
194 194
 			$style = $opData['style'];
195 195
 			$use = $opData['input']['use'];
196 196
 			// add ns to ns array
197
-			if($namespace != '' && !isset($this->wsdl->namespaces[$namespace])){
198
-				$nsPrefix = 'ns' . rand(1000, 9999);
197
+			if ($namespace != '' && !isset($this->wsdl->namespaces[$namespace])) {
198
+				$nsPrefix = 'ns'.rand(1000, 9999);
199 199
 				$this->wsdl->namespaces[$nsPrefix] = $namespace;
200 200
 			}
201 201
             $nsPrefix = $this->wsdl->getPrefixFromNamespace($namespace);
@@ -205,7 +205,7 @@  discard block
 block discarded – undo
205 205
 				$payload = $params;
206 206
 			} elseif (is_array($params)) {
207 207
 				$this->debug("serializing param array for WSDL operation $operation");
208
-				$payload = $this->wsdl->serializeRPCParameters($operation,'input',$params,$this->bindingType);
208
+				$payload = $this->wsdl->serializeRPCParameters($operation, 'input', $params, $this->bindingType);
209 209
 			} else {
210 210
 				$this->debug('params must be array or string');
211 211
 				$this->setError('params must be array or string');
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 				$this->setError('wsdl error: '.$errstr);
225 225
 				return false;
226 226
 			}
227
-		} elseif($this->endpointType == 'wsdl') {
227
+		} elseif ($this->endpointType == 'wsdl') {
228 228
 			// operation not in WSDL
229 229
 			$this->appendDebug($this->wsdl->getDebug());
230 230
 			$this->wsdl->clearDebug();
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
 		} else {
235 235
 			// no WSDL
236 236
 			//$this->namespaces['ns1'] = $namespace;
237
-			$nsPrefix = 'ns' . rand(1000, 9999);
237
+			$nsPrefix = 'ns'.rand(1000, 9999);
238 238
 			// serialize 
239 239
 			$payload = '';
240 240
 			if (is_string($params)) {
@@ -242,8 +242,8 @@  discard block
 block discarded – undo
242 242
 				$payload = $params;
243 243
 			} elseif (is_array($params)) {
244 244
 				$this->debug("serializing param array for operation $operation");
245
-				foreach($params as $k => $v){
246
-					$payload .= $this->serialize_val($v,$k,false,false,false,false,$use);
245
+				foreach ($params as $k => $v) {
246
+					$payload .= $this->serialize_val($v, $k, false, false, false, false, $use);
247 247
 				}
248 248
 			} else {
249 249
 				$this->debug('params must be array or string');
@@ -263,45 +263,45 @@  discard block
 block discarded – undo
263 263
 				$this->debug("wrapping RPC request with literal method element");
264 264
 				if ($namespace) {
265 265
 					// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
266
-					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
267
-								$payload .
266
+					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">".
267
+								$payload.
268 268
 								"</$nsPrefix:$operation>";
269 269
 				} else {
270
-					$payload = "<$operation>" . $payload . "</$operation>";
270
+					$payload = "<$operation>".$payload."</$operation>";
271 271
 				}
272 272
 			} else {
273 273
 				$this->debug("wrapping RPC request with encoded method element");
274 274
 				if ($namespace) {
275
-					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
276
-								$payload .
275
+					$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">".
276
+								$payload.
277 277
 								"</$nsPrefix:$operation>";
278 278
 				} else {
279
-					$payload = "<$operation>" .
280
-								$payload .
279
+					$payload = "<$operation>".
280
+								$payload.
281 281
 								"</$operation>";
282 282
 				}
283 283
 			}
284 284
 		}
285 285
 		// serialize envelope
286
-		$soapmsg = $this->serializeEnvelope($payload,$this->requestHeaders,$usedNamespaces,$style,$use,$encodingStyle);
286
+		$soapmsg = $this->serializeEnvelope($payload, $this->requestHeaders, $usedNamespaces, $style, $use, $encodingStyle);
287 287
 		$this->debug("endpoint=$this->endpoint, soapAction=$soapAction, namespace=$namespace, style=$style, use=$use, encodingStyle=$encodingStyle");
288
-		$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
288
+		$this->debug('SOAP message length='.strlen($soapmsg).' contents (max 1000 bytes)='.substr($soapmsg, 0, 1000));
289 289
 		// send
290
-		$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
291
-		if($errstr = $this->getError()){
290
+		$return = $this->send($this->getHTTPBody($soapmsg), $soapAction, $this->timeout, $this->response_timeout);
291
+		if ($errstr = $this->getError()) {
292 292
 			$this->debug('Error: '.$errstr);
293 293
 			return false;
294 294
 		} else {
295 295
 			$this->return = $return;
296 296
 			$this->debug('sent message successfully and got a(n) '.gettype($return));
297
-           	$this->appendDebug('return=' . $this->varDump($return));
297
+           	$this->appendDebug('return='.$this->varDump($return));
298 298
 			
299 299
 			// fault?
300
-			if(is_array($return) && isset($return['faultcode'])){
300
+			if (is_array($return) && isset($return['faultcode'])) {
301 301
 				$this->debug('got fault');
302 302
 				$this->setError($return['faultcode'].': '.$return['faultstring']);
303 303
 				$this->fault = true;
304
-				foreach($return as $k => $v){
304
+				foreach ($return as $k => $v) {
305 305
 					$this->$k = $v;
306 306
 					$this->debug("$k = $v<br>");
307 307
 				}
@@ -312,10 +312,10 @@  discard block
 block discarded – undo
312 312
 				return $return;
313 313
 			} else {
314 314
 				// array of return values
315
-				if(is_array($return)){
315
+				if (is_array($return)) {
316 316
 					// multiple 'out' parameters, which we return wrapped up
317 317
 					// in the array
318
-					if(sizeof($return) > 1){
318
+					if (sizeof($return) > 1) {
319 319
 						return $return;
320 320
 					}
321 321
 					// single 'out' parameter (normally the return value)
@@ -372,7 +372,7 @@  discard block
 block discarded – undo
372 372
 	 */
373 373
 	function loadWSDL() {
374 374
 		$this->debug('instantiating wsdl class with doc: '.$this->wsdlFile);
375
-		$this->wsdl = new wsdl('',$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout,$this->curl_options,$this->use_curl);
375
+		$this->wsdl = new wsdl('', $this->proxyhost, $this->proxyport, $this->proxyusername, $this->proxypassword, $this->timeout, $this->response_timeout, $this->curl_options, $this->use_curl);
376 376
 		$this->wsdl->setCredentials($this->username, $this->password, $this->authtype, $this->certRequest);
377 377
 		$this->wsdl->fetchWSDL($this->wsdlFile);
378 378
 		$this->checkWSDL();
@@ -385,13 +385,13 @@  discard block
 block discarded – undo
385 385
 	* @return	array array of data pertaining to the operation
386 386
 	* @access   public
387 387
 	*/
388
-	function getOperationData($operation){
388
+	function getOperationData($operation) {
389 389
 		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
390 390
 			$this->loadWSDL();
391 391
 			if ($this->getError())
392 392
 				return false;
393 393
 		}
394
-		if(isset($this->operations[$operation])){
394
+		if (isset($this->operations[$operation])) {
395 395
 			return $this->operations[$operation];
396 396
 		}
397 397
 		$this->debug("No data for operation: $operation");
@@ -411,15 +411,15 @@  discard block
 block discarded – undo
411 411
 	* @return	mixed native PHP types.
412 412
 	* @access   private
413 413
 	*/
414
-	function send($msg, $soapaction = '', $timeout=0, $response_timeout=30) {
414
+	function send($msg, $soapaction = '', $timeout = 0, $response_timeout = 30) {
415 415
 		$this->checkCookies();
416 416
 		// detect transport
417
-		switch(true){
417
+		switch (true) {
418 418
 			// http(s)
419
-			case preg_match('/^http/',$this->endpoint):
419
+			case preg_match('/^http/', $this->endpoint):
420 420
 				$this->debug('transporting via HTTP');
421
-				if($this->persistentConnection == true && is_object($this->persistentConnection)){
422
-					$http =& $this->persistentConnection;
421
+				if ($this->persistentConnection == true && is_object($this->persistentConnection)) {
422
+					$http = & $this->persistentConnection;
423 423
 				} else {
424 424
 					$http = new soap_transport_http($this->endpoint, $this->curl_options, $this->use_curl);
425 425
 					if ($this->persistentConnection) {
@@ -428,27 +428,27 @@  discard block
 block discarded – undo
428 428
 				}
429 429
 				$http->setContentType($this->getHTTPContentType(), $this->getHTTPContentTypeCharset());
430 430
 				$http->setSOAPAction($soapaction);
431
-				if($this->proxyhost && $this->proxyport){
432
-					$http->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
431
+				if ($this->proxyhost && $this->proxyport) {
432
+					$http->setProxy($this->proxyhost, $this->proxyport, $this->proxyusername, $this->proxypassword);
433 433
 				}
434
-                if($this->authtype != '') {
434
+                if ($this->authtype != '') {
435 435
 					$http->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
436 436
 				}
437
-				if($this->http_encoding != ''){
437
+				if ($this->http_encoding != '') {
438 438
 					$http->setEncoding($this->http_encoding);
439 439
 				}
440 440
 				$this->debug('sending message, length='.strlen($msg));
441
-				if(preg_match('/^http:/',$this->endpoint)){
441
+				if (preg_match('/^http:/', $this->endpoint)) {
442 442
 				//if(strpos($this->endpoint,'http:')){
443
-					$this->responseData = $http->send($msg,$timeout,$response_timeout,$this->cookies);
444
-				} elseif(preg_match('/^https/',$this->endpoint)){
443
+					$this->responseData = $http->send($msg, $timeout, $response_timeout, $this->cookies);
444
+				} elseif (preg_match('/^https/', $this->endpoint)) {
445 445
 				//} elseif(strpos($this->endpoint,'https:')){
446 446
 					//if(phpversion() == '4.3.0-dev'){
447 447
 						//$response = $http->send($msg,$timeout,$response_timeout);
448 448
                    		//$this->request = $http->outgoing_payload;
449 449
 						//$this->response = $http->incoming_payload;
450 450
 					//} else
451
-					$this->responseData = $http->sendHTTPS($msg,$timeout,$response_timeout,$this->cookies);
451
+					$this->responseData = $http->sendHTTPS($msg, $timeout, $response_timeout, $this->cookies);
452 452
 				} else {
453 453
 					$this->setError('no http/s in endpoint url');
454 454
 				}
@@ -465,13 +465,13 @@  discard block
 block discarded – undo
465 465
 					}
466 466
 				}
467 467
 				
468
-				if($err = $http->getError()){
468
+				if ($err = $http->getError()) {
469 469
 					$this->setError('HTTP Error: '.$err);
470 470
 					return false;
471
-				} elseif($this->getError()){
471
+				} elseif ($this->getError()) {
472 472
 					return false;
473 473
 				} else {
474
-					$this->debug('got response, length='. strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
474
+					$this->debug('got response, length='.strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
475 475
 					return $this->parseResponse($http->incoming_headers, $this->responseData);
476 476
 				}
477 477
 			break;
@@ -491,20 +491,20 @@  discard block
 block discarded – undo
491 491
 	* @access   private
492 492
 	*/
493 493
     function parseResponse($headers, $data) {
494
-		$this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' headers:');
494
+		$this->debug('Entering parseResponse() for data of length '.strlen($data).' headers:');
495 495
 		$this->appendDebug($this->varDump($headers));
496 496
     	if (!isset($headers['content-type'])) {
497 497
 			$this->setError('Response not of type text/xml (no content-type header)');
498 498
 			return false;
499 499
     	}
500 500
 		if (!strstr($headers['content-type'], 'text/xml')) {
501
-			$this->setError('Response not of type text/xml: ' . $headers['content-type']);
501
+			$this->setError('Response not of type text/xml: '.$headers['content-type']);
502 502
 			return false;
503 503
 		}
504 504
 		if (strpos($headers['content-type'], '=')) {
505 505
 			$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
506
-			$this->debug('Got response encoding: ' . $enc);
507
-			if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
506
+			$this->debug('Got response encoding: '.$enc);
507
+			if (preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i', $enc)) {
508 508
 				$this->xml_encoding = strtoupper($enc);
509 509
 			} else {
510 510
 				$this->xml_encoding = 'US-ASCII';
@@ -513,13 +513,13 @@  discard block
 block discarded – undo
513 513
 			// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
514 514
 			$this->xml_encoding = 'ISO-8859-1';
515 515
 		}
516
-		$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
517
-		$parser = new nusoap_parser($data,$this->xml_encoding,$this->operation,$this->decode_utf8);
516
+		$this->debug('Use encoding: '.$this->xml_encoding.' when creating nusoap_parser');
517
+		$parser = new nusoap_parser($data, $this->xml_encoding, $this->operation, $this->decode_utf8);
518 518
 		// add parser debug data to our debug
519 519
 		$this->appendDebug($parser->getDebug());
520 520
 		// if parse errors
521
-		if($errstr = $parser->getError()){
522
-			$this->setError( $errstr);
521
+		if ($errstr = $parser->getError()) {
522
+			$this->setError($errstr);
523 523
 			// destroy the parser object
524 524
 			unset($parser);
525 525
 			return false;
@@ -569,7 +569,7 @@  discard block
 block discarded – undo
569 569
 	* @param	mixed $headers String of XML with SOAP header content, or array of soapval objects for SOAP headers
570 570
 	* @access   public
571 571
 	*/
572
-	function setHeaders($headers){
572
+	function setHeaders($headers) {
573 573
 		$this->debug("setHeaders headers=");
574 574
 		$this->appendDebug($this->varDump($headers));
575 575
 		$this->requestHeaders = $headers;
@@ -581,7 +581,7 @@  discard block
 block discarded – undo
581 581
 	* @return	string
582 582
 	* @access   public
583 583
 	*/
584
-	function getHeaders(){
584
+	function getHeaders() {
585 585
 		return $this->responseHeaders;
586 586
 	}
587 587
 
@@ -591,7 +591,7 @@  discard block
 block discarded – undo
591 591
 	* @return	mixed
592 592
 	* @access   public
593 593
 	*/
594
-	function getHeader(){
594
+	function getHeader() {
595 595
 		return $this->responseHeader;
596 596
 	}
597 597
 
@@ -635,7 +635,7 @@  discard block
 block discarded – undo
635 635
 	* @param    string $enc HTTP encoding
636 636
 	* @access   public
637 637
 	*/
638
-	function setHTTPEncoding($enc='gzip, deflate'){
638
+	function setHTTPEncoding($enc = 'gzip, deflate') {
639 639
 		$this->debug("setHTTPEncoding(\"$enc\")");
640 640
 		$this->http_encoding = $enc;
641 641
 	}
@@ -656,7 +656,7 @@  discard block
 block discarded – undo
656 656
 	*
657 657
 	* @access   public
658 658
 	*/
659
-	function useHTTPPersistentConnection(){
659
+	function useHTTPPersistentConnection() {
660 660
 		$this->debug("useHTTPPersistentConnection");
661 661
 		$this->persistentConnection = true;
662 662
 	}
@@ -748,7 +748,7 @@  discard block
 block discarded – undo
748 748
 	*/
749 749
 	function _getProxyClassCode($r) {
750 750
 		$this->debug("in getProxy endpointType=$this->endpointType");
751
-		$this->appendDebug("wsdl=" . $this->varDump($this->wsdl));
751
+		$this->appendDebug("wsdl=".$this->varDump($this->wsdl));
752 752
 		if ($this->endpointType != 'wsdl') {
753 753
 			$evalStr = 'A proxy can only be created for a WSDL client';
754 754
 			$this->setError($evalStr);
@@ -758,7 +758,7 @@  discard block
 block discarded – undo
758 758
 		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
759 759
 			$this->loadWSDL();
760 760
 			if ($this->getError()) {
761
-				return "echo \"" . $this->getError() . "\";";
761
+				return "echo \"".$this->getError()."\";";
762 762
 			}
763 763
 		}
764 764
 		$evalStr = '';
@@ -774,9 +774,9 @@  discard block
 block discarded – undo
774 774
 						$paramArrayStr .= "'$name' => \$$name, ";
775 775
 						$paramCommentStr .= "$type \$$name, ";
776 776
 					}
777
-					$paramStr = substr($paramStr, 0, strlen($paramStr)-2);
778
-					$paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr)-2);
779
-					$paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr)-2);
777
+					$paramStr = substr($paramStr, 0, strlen($paramStr) - 2);
778
+					$paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr) - 2);
779
+					$paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr) - 2);
780 780
 				} else {
781 781
 					$paramStr = '';
782 782
 					$paramArrayStr = '';
@@ -784,7 +784,7 @@  discard block
 block discarded – undo
784 784
 				}
785 785
 				$opData['namespace'] = !isset($opData['namespace']) ? 'http://testuri.com' : $opData['namespace'];
786 786
 				$evalStr .= "// $paramCommentStr
787
-	function " . str_replace('.', '__', $operation) . "($paramStr) {
787
+	function ".str_replace('.', '__', $operation)."($paramStr) {
788 788
 		\$params = array($paramArrayStr);
789 789
 		return \$this->call('$operation', \$params, '".$opData['namespace']."', '".(isset($opData['soapAction']) ? $opData['soapAction'] : '')."');
790 790
 	}
@@ -852,7 +852,7 @@  discard block
 block discarded – undo
852 852
     * @return   always returns true
853 853
     * @access   public
854 854
     */
855
-    function decodeUTF8($bool){
855
+    function decodeUTF8($bool) {
856 856
 		$this->decode_utf8 = $bool;
857 857
 		return true;
858 858
     }
@@ -893,19 +893,19 @@  discard block
 block discarded – undo
893 893
 		if (sizeof($this->cookies) == 0) {
894 894
 			return true;
895 895
 		}
896
-		$this->debug('checkCookie: check ' . sizeof($this->cookies) . ' cookies');
896
+		$this->debug('checkCookie: check '.sizeof($this->cookies).' cookies');
897 897
 		$curr_cookies = $this->cookies;
898 898
 		$this->cookies = array();
899 899
 		foreach ($curr_cookies as $cookie) {
900
-			if (! is_array($cookie)) {
900
+			if (!is_array($cookie)) {
901 901
 				$this->debug('Remove cookie that is not an array');
902 902
 				continue;
903 903
 			}
904
-			if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
904
+			if ((isset($cookie['expires'])) && (!empty($cookie['expires']))) {
905 905
 				if (strtotime($cookie['expires']) > time()) {
906 906
 					$this->cookies[] = $cookie;
907 907
 				} else {
908
-					$this->debug('Remove expired cookie ' . $cookie['name']);
908
+					$this->debug('Remove expired cookie '.$cookie['name']);
909 909
 				}
910 910
 			} else {
911 911
 				$this->cookies[] = $cookie;
@@ -969,11 +969,11 @@  discard block
 block discarded – undo
969 969
 				}
970 970
 				$this->cookies[$i] = $newCookie;
971 971
 				$found = true;
972
-				$this->debug('Update cookie ' . $newName . '=' . $newCookie['value']);
972
+				$this->debug('Update cookie '.$newName.'='.$newCookie['value']);
973 973
 				break;
974 974
 			}
975
-			if (! $found) {
976
-				$this->debug('Add cookie ' . $newName . '=' . $newCookie['value']);
975
+			if (!$found) {
976
+				$this->debug('Add cookie '.$newName.'='.$newCookie['value']);
977 977
 				$this->cookies[] = $newCookie;
978 978
 			}
979 979
 		}
Please login to merge, or discard this patch.
Braces   +6 added lines, -4 removed lines patch added patch discarded remove patch
@@ -173,8 +173,9 @@  discard block
 block discarded – undo
173 173
 		}
174 174
 		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
175 175
 			$this->loadWSDL();
176
-			if ($this->getError())
177
-				return false;
176
+			if ($this->getError()) {
177
+							return false;
178
+			}
178 179
 		}
179 180
 		// serialize parameters
180 181
 		if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
@@ -388,8 +389,9 @@  discard block
 block discarded – undo
388 389
 	function getOperationData($operation){
389 390
 		if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
390 391
 			$this->loadWSDL();
391
-			if ($this->getError())
392
-				return false;
392
+			if ($this->getError()) {
393
+							return false;
394
+			}
393 395
 		}
394 396
 		if(isset($this->operations[$operation])){
395 397
 			return $this->operations[$operation];
Please login to merge, or discard this patch.
main/inc/lib/nusoap/class.wsdl.php 4 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -883,7 +883,7 @@  discard block
 block discarded – undo
883 883
 	/**
884 884
 	* serialize the parsed wsdl
885 885
 	*
886
-	* @param mixed $debug whether to put debug=1 in endpoint URL
886
+	* @param integer $debug whether to put debug=1 in endpoint URL
887 887
 	* @return string serialization of WSDL
888 888
 	* @access public
889 889
 	*/
@@ -1106,7 +1106,7 @@  discard block
 block discarded – undo
1106 1106
 	 * @param string $direction (input|output)
1107 1107
 	 * @param mixed $parameters parameter value(s)
1108 1108
 	 * @param string $bindingType (soap|soap12)
1109
-	 * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1109
+	 * @return false|string parameters serialized as XML or false on error (e.g. operation not found)
1110 1110
 	 * @access public
1111 1111
 	 */
1112 1112
 	function serializeRPCParameters($operation, $direction, $parameters, $bindingType = 'soap') {
@@ -1206,7 +1206,7 @@  discard block
 block discarded – undo
1206 1206
 	 * @param string $operation operation name
1207 1207
 	 * @param string $direction (input|output)
1208 1208
 	 * @param mixed $parameters parameter value(s)
1209
-	 * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1209
+	 * @return false|string parameters serialized as XML or false on error (e.g. operation not found)
1210 1210
 	 * @access public
1211 1211
 	 * @deprecated
1212 1212
 	 */
Please login to merge, or discard this patch.
Indentation   +1576 added lines, -1576 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
 * @access public
14 14
 */
15 15
 class wsdl extends nusoap_base {
16
-	// URL or filename of the root of this WSDL
16
+    // URL or filename of the root of this WSDL
17 17
     var $wsdl;
18 18
     // define internal arrays of bindings, ports, operations, messages, etc.
19 19
     var $schemas = array();
@@ -40,142 +40,142 @@  discard block
 block discarded – undo
40 40
     var $position = 0;
41 41
     var $depth = 0;
42 42
     var $depth_array = array();
43
-	// for getting wsdl
44
-	var $proxyhost = '';
43
+    // for getting wsdl
44
+    var $proxyhost = '';
45 45
     var $proxyport = '';
46
-	var $proxyusername = '';
47
-	var $proxypassword = '';
48
-	var $timeout = 0;
49
-	var $response_timeout = 30;
50
-	var $curl_options = array();	// User-specified cURL options
51
-	var $use_curl = false;			// whether to always try to use cURL
52
-	// for HTTP authentication
53
-	var $username = '';				// Username for HTTP authentication
54
-	var $password = '';				// Password for HTTP authentication
55
-	var $authtype = '';				// Type of HTTP authentication
56
-	var $certRequest = array();		// Certificate for HTTP SSL authentication
46
+    var $proxyusername = '';
47
+    var $proxypassword = '';
48
+    var $timeout = 0;
49
+    var $response_timeout = 30;
50
+    var $curl_options = array();	// User-specified cURL options
51
+    var $use_curl = false;			// whether to always try to use cURL
52
+    // for HTTP authentication
53
+    var $username = '';				// Username for HTTP authentication
54
+    var $password = '';				// Password for HTTP authentication
55
+    var $authtype = '';				// Type of HTTP authentication
56
+    var $certRequest = array();		// Certificate for HTTP SSL authentication
57 57
 
58 58
     /**
59 59
      * constructor
60 60
      *
61 61
      * @param string $wsdl WSDL document URL
62
-	 * @param string $proxyhost
63
-	 * @param string $proxyport
64
-	 * @param string $proxyusername
65
-	 * @param string $proxypassword
66
-	 * @param integer $timeout set the connection timeout
67
-	 * @param integer $response_timeout set the response timeout
68
-	 * @param array $curl_options user-specified cURL options
69
-	 * @param boolean $use_curl try to use cURL
62
+     * @param string $proxyhost
63
+     * @param string $proxyport
64
+     * @param string $proxyusername
65
+     * @param string $proxypassword
66
+     * @param integer $timeout set the connection timeout
67
+     * @param integer $response_timeout set the response timeout
68
+     * @param array $curl_options user-specified cURL options
69
+     * @param boolean $use_curl try to use cURL
70 70
      * @access public
71 71
      */
72 72
     function wsdl($wsdl = '',$proxyhost=false,$proxyport=false,$proxyusername=false,$proxypassword=false,$timeout=0,$response_timeout=30,$curl_options=null,$use_curl=false){
73
-		parent::nusoap_base();
74
-		$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
73
+        parent::nusoap_base();
74
+        $this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
75 75
         $this->proxyhost = $proxyhost;
76 76
         $this->proxyport = $proxyport;
77
-		$this->proxyusername = $proxyusername;
78
-		$this->proxypassword = $proxypassword;
79
-		$this->timeout = $timeout;
80
-		$this->response_timeout = $response_timeout;
81
-		if (is_array($curl_options))
82
-			$this->curl_options = $curl_options;
83
-		$this->use_curl = $use_curl;
84
-		$this->fetchWSDL($wsdl);
77
+        $this->proxyusername = $proxyusername;
78
+        $this->proxypassword = $proxypassword;
79
+        $this->timeout = $timeout;
80
+        $this->response_timeout = $response_timeout;
81
+        if (is_array($curl_options))
82
+            $this->curl_options = $curl_options;
83
+        $this->use_curl = $use_curl;
84
+        $this->fetchWSDL($wsdl);
85 85
     }
86 86
 
87
-	/**
88
-	 * fetches the WSDL document and parses it
89
-	 *
90
-	 * @access public
91
-	 */
92
-	function fetchWSDL($wsdl) {
93
-		$this->debug("parse and process WSDL path=$wsdl");
94
-		$this->wsdl = $wsdl;
87
+    /**
88
+     * fetches the WSDL document and parses it
89
+     *
90
+     * @access public
91
+     */
92
+    function fetchWSDL($wsdl) {
93
+        $this->debug("parse and process WSDL path=$wsdl");
94
+        $this->wsdl = $wsdl;
95 95
         // parse wsdl file
96 96
         if ($this->wsdl != "") {
97 97
             $this->parseWSDL($this->wsdl);
98 98
         }
99 99
         // imports
100 100
         // TODO: handle imports more properly, grabbing them in-line and nesting them
101
-    	$imported_urls = array();
102
-    	$imported = 1;
103
-    	while ($imported > 0) {
104
-    		$imported = 0;
105
-    		// Schema imports
106
-    		foreach ($this->schemas as $ns => $list) {
107
-    			foreach ($list as $xs) {
108
-					$wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
109
-		            foreach ($xs->imports as $ns2 => $list2) {
110
-		                for ($ii = 0; $ii < count($list2); $ii++) {
111
-		                	if (! $list2[$ii]['loaded']) {
112
-		                		$this->schemas[$ns]->imports[$ns2][$ii]['loaded'] = true;
113
-		                		$url = $list2[$ii]['location'];
114
-								if ($url != '') {
115
-									$urlparts = parse_url($url);
116
-									if (!isset($urlparts['host'])) {
117
-										$url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' .$wsdlparts['port'] : '') .
118
-												substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
119
-									}
120
-									if (! in_array($url, $imported_urls)) {
121
-					                	$this->parseWSDL($url);
122
-				                		$imported++;
123
-				                		$imported_urls[] = $url;
124
-				                	}
125
-								} else {
126
-									$this->debug("Unexpected scenario: empty URL for unloaded import");
127
-								}
128
-							}
129
-						}
130
-		            }
131
-    			}
132
-    		}
133
-    		// WSDL imports
134
-			$wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
101
+        $imported_urls = array();
102
+        $imported = 1;
103
+        while ($imported > 0) {
104
+            $imported = 0;
105
+            // Schema imports
106
+            foreach ($this->schemas as $ns => $list) {
107
+                foreach ($list as $xs) {
108
+                    $wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
109
+                    foreach ($xs->imports as $ns2 => $list2) {
110
+                        for ($ii = 0; $ii < count($list2); $ii++) {
111
+                            if (! $list2[$ii]['loaded']) {
112
+                                $this->schemas[$ns]->imports[$ns2][$ii]['loaded'] = true;
113
+                                $url = $list2[$ii]['location'];
114
+                                if ($url != '') {
115
+                                    $urlparts = parse_url($url);
116
+                                    if (!isset($urlparts['host'])) {
117
+                                        $url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' .$wsdlparts['port'] : '') .
118
+                                                substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
119
+                                    }
120
+                                    if (! in_array($url, $imported_urls)) {
121
+                                        $this->parseWSDL($url);
122
+                                        $imported++;
123
+                                        $imported_urls[] = $url;
124
+                                    }
125
+                                } else {
126
+                                    $this->debug("Unexpected scenario: empty URL for unloaded import");
127
+                                }
128
+                            }
129
+                        }
130
+                    }
131
+                }
132
+            }
133
+            // WSDL imports
134
+            $wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
135 135
             foreach ($this->import as $ns => $list) {
136 136
                 for ($ii = 0; $ii < count($list); $ii++) {
137
-                	if (! $list[$ii]['loaded']) {
138
-                		$this->import[$ns][$ii]['loaded'] = true;
139
-                		$url = $list[$ii]['location'];
140
-						if ($url != '') {
141
-							$urlparts = parse_url($url);
142
-							if (!isset($urlparts['host'])) {
143
-								$url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' . $wsdlparts['port'] : '') .
144
-										substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
145
-							}
146
-							if (! in_array($url, $imported_urls)) {
147
-			                	$this->parseWSDL($url);
148
-		                		$imported++;
149
-		                		$imported_urls[] = $url;
150
-		                	}
151
-						} else {
152
-							$this->debug("Unexpected scenario: empty URL for unloaded import");
153
-						}
154
-					}
155
-				}
137
+                    if (! $list[$ii]['loaded']) {
138
+                        $this->import[$ns][$ii]['loaded'] = true;
139
+                        $url = $list[$ii]['location'];
140
+                        if ($url != '') {
141
+                            $urlparts = parse_url($url);
142
+                            if (!isset($urlparts['host'])) {
143
+                                $url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' . $wsdlparts['port'] : '') .
144
+                                        substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
145
+                            }
146
+                            if (! in_array($url, $imported_urls)) {
147
+                                $this->parseWSDL($url);
148
+                                $imported++;
149
+                                $imported_urls[] = $url;
150
+                            }
151
+                        } else {
152
+                            $this->debug("Unexpected scenario: empty URL for unloaded import");
153
+                        }
154
+                    }
155
+                }
156 156
             }
157
-		}
157
+        }
158 158
         // add new data to operation data
159 159
         foreach($this->bindings as $binding => $bindingData) {
160 160
             if (isset($bindingData['operations']) && is_array($bindingData['operations'])) {
161 161
                 foreach($bindingData['operations'] as $operation => $data) {
162 162
                     $this->debug('post-parse data gathering for ' . $operation);
163 163
                     $this->bindings[$binding]['operations'][$operation]['input'] =
164
-						isset($this->bindings[$binding]['operations'][$operation]['input']) ?
165
-						array_merge($this->bindings[$binding]['operations'][$operation]['input'], $this->portTypes[ $bindingData['portType'] ][$operation]['input']) :
166
-						$this->portTypes[ $bindingData['portType'] ][$operation]['input'];
164
+                        isset($this->bindings[$binding]['operations'][$operation]['input']) ?
165
+                        array_merge($this->bindings[$binding]['operations'][$operation]['input'], $this->portTypes[ $bindingData['portType'] ][$operation]['input']) :
166
+                        $this->portTypes[ $bindingData['portType'] ][$operation]['input'];
167 167
                     $this->bindings[$binding]['operations'][$operation]['output'] =
168
-						isset($this->bindings[$binding]['operations'][$operation]['output']) ?
169
-						array_merge($this->bindings[$binding]['operations'][$operation]['output'], $this->portTypes[ $bindingData['portType'] ][$operation]['output']) :
170
-						$this->portTypes[ $bindingData['portType'] ][$operation]['output'];
168
+                        isset($this->bindings[$binding]['operations'][$operation]['output']) ?
169
+                        array_merge($this->bindings[$binding]['operations'][$operation]['output'], $this->portTypes[ $bindingData['portType'] ][$operation]['output']) :
170
+                        $this->portTypes[ $bindingData['portType'] ][$operation]['output'];
171 171
                     if(isset($this->messages[ $this->bindings[$binding]['operations'][$operation]['input']['message'] ])){
172
-						$this->bindings[$binding]['operations'][$operation]['input']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['input']['message'] ];
173
-					}
174
-					if(isset($this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ])){
175
-                   		$this->bindings[$binding]['operations'][$operation]['output']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ];
172
+                        $this->bindings[$binding]['operations'][$operation]['input']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['input']['message'] ];
173
+                    }
174
+                    if(isset($this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ])){
175
+                            $this->bindings[$binding]['operations'][$operation]['output']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ];
176 176
                     }
177 177
                     // Set operation style if necessary, but do not override one already provided
178
-					if (isset($bindingData['style']) && !isset($this->bindings[$binding]['operations'][$operation]['style'])) {
178
+                    if (isset($bindingData['style']) && !isset($this->bindings[$binding]['operations'][$operation]['style'])) {
179 179
                         $this->bindings[$binding]['operations'][$operation]['style'] = $bindingData['style'];
180 180
                     }
181 181
                     $this->bindings[$binding]['operations'][$operation]['transport'] = isset($bindingData['transport']) ? $bindingData['transport'] : '';
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
                 }
185 185
             }
186 186
         }
187
-	}
187
+    }
188 188
 
189 189
     /**
190 190
      * parses the wsdl document
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
      * @access private
194 194
      */
195 195
     function parseWSDL($wsdl = '') {
196
-		$this->debug("parse WSDL at path=$wsdl");
196
+        $this->debug("parse WSDL at path=$wsdl");
197 197
 
198 198
         if ($wsdl == '') {
199 199
             $this->debug('no wsdl passed to parseWSDL()!!');
@@ -206,38 +206,38 @@  discard block
 block discarded – undo
206 206
 
207 207
         if (isset($wsdl_props['scheme']) && ($wsdl_props['scheme'] == 'http' || $wsdl_props['scheme'] == 'https')) {
208 208
             $this->debug('getting WSDL http(s) URL ' . $wsdl);
209
-        	// get wsdl
210
-	        $tr = new soap_transport_http($wsdl, $this->curl_options, $this->use_curl);
211
-			$tr->request_method = 'GET';
212
-			$tr->useSOAPAction = false;
213
-			if($this->proxyhost && $this->proxyport){
214
-				$tr->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
215
-			}
216
-			if ($this->authtype != '') {
217
-				$tr->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
218
-			}
219
-			$tr->setEncoding('gzip, deflate');
220
-			$wsdl_string = $tr->send('', $this->timeout, $this->response_timeout);
221
-			//$this->debug("WSDL request\n" . $tr->outgoing_payload);
222
-			//$this->debug("WSDL response\n" . $tr->incoming_payload);
223
-			$this->appendDebug($tr->getDebug());
224
-			// catch errors
225
-			if($err = $tr->getError() ){
226
-				$errstr = 'Getting ' . $wsdl . ' - HTTP ERROR: '.$err;
227
-				$this->debug($errstr);
228
-	            $this->setError($errstr);
229
-				unset($tr);
230
-	            return false;
231
-			}
232
-			unset($tr);
233
-			$this->debug("got WSDL URL");
209
+            // get wsdl
210
+            $tr = new soap_transport_http($wsdl, $this->curl_options, $this->use_curl);
211
+            $tr->request_method = 'GET';
212
+            $tr->useSOAPAction = false;
213
+            if($this->proxyhost && $this->proxyport){
214
+                $tr->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
215
+            }
216
+            if ($this->authtype != '') {
217
+                $tr->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
218
+            }
219
+            $tr->setEncoding('gzip, deflate');
220
+            $wsdl_string = $tr->send('', $this->timeout, $this->response_timeout);
221
+            //$this->debug("WSDL request\n" . $tr->outgoing_payload);
222
+            //$this->debug("WSDL response\n" . $tr->incoming_payload);
223
+            $this->appendDebug($tr->getDebug());
224
+            // catch errors
225
+            if($err = $tr->getError() ){
226
+                $errstr = 'Getting ' . $wsdl . ' - HTTP ERROR: '.$err;
227
+                $this->debug($errstr);
228
+                $this->setError($errstr);
229
+                unset($tr);
230
+                return false;
231
+            }
232
+            unset($tr);
233
+            $this->debug("got WSDL URL");
234 234
         } else {
235 235
             // $wsdl is not http(s), so treat it as a file URL or plain file path
236
-        	if (isset($wsdl_props['scheme']) && ($wsdl_props['scheme'] == 'file') && isset($wsdl_props['path'])) {
237
-        		$path = isset($wsdl_props['host']) ? ($wsdl_props['host'] . ':' . $wsdl_props['path']) : $wsdl_props['path'];
238
-        	} else {
239
-        		$path = $wsdl;
240
-        	}
236
+            if (isset($wsdl_props['scheme']) && ($wsdl_props['scheme'] == 'file') && isset($wsdl_props['path'])) {
237
+                $path = isset($wsdl_props['host']) ? ($wsdl_props['host'] . ':' . $wsdl_props['path']) : $wsdl_props['path'];
238
+            } else {
239
+                $path = $wsdl;
240
+            }
241 241
             $this->debug('getting WSDL file ' . $path);
242 242
             if ($fp = @fopen($path, 'r')) {
243 243
                 $wsdl_string = '';
@@ -246,8 +246,8 @@  discard block
 block discarded – undo
246 246
                 }
247 247
                 fclose($fp);
248 248
             } else {
249
-            	$errstr = "Bad path to WSDL file $path";
250
-            	$this->debug($errstr);
249
+                $errstr = "Bad path to WSDL file $path";
250
+                $this->debug($errstr);
251 251
                 $this->setError($errstr);
252 252
                 return false;
253 253
             }
@@ -268,23 +268,23 @@  discard block
 block discarded – undo
268 268
         if (!xml_parse($this->parser, $wsdl_string, true)) {
269 269
             // Display an error message.
270 270
             $errstr = sprintf(
271
-				'XML error parsing WSDL from %s on line %d: %s',
272
-				$wsdl,
271
+                'XML error parsing WSDL from %s on line %d: %s',
272
+                $wsdl,
273 273
                 xml_get_current_line_number($this->parser),
274 274
                 xml_error_string(xml_get_error_code($this->parser))
275 275
                 );
276 276
             $this->debug($errstr);
277
-			$this->debug("XML payload:\n" . $wsdl_string);
277
+            $this->debug("XML payload:\n" . $wsdl_string);
278 278
             $this->setError($errstr);
279 279
             return false;
280 280
         }
281
-		// free the parser
281
+        // free the parser
282 282
         xml_parser_free($this->parser);
283 283
         $this->debug('Parsing WSDL done');
284
-		// catch wsdl parse errors
285
-		if($this->getError()){
286
-			return false;
287
-		}
284
+        // catch wsdl parse errors
285
+        if($this->getError()){
286
+            return false;
287
+        }
288 288
         return true;
289 289
     }
290 290
 
@@ -303,7 +303,7 @@  discard block
 block discarded – undo
303 303
             $this->appendDebug($this->currentSchema->getDebug());
304 304
             $this->currentSchema->clearDebug();
305 305
         } elseif (preg_match('/schema$/', $name)) {
306
-        	$this->debug('Parsing WSDL schema');
306
+            $this->debug('Parsing WSDL schema');
307 307
             // $this->debug("startElement for $name ($attrs[name]). status = $this->status (".$this->getLocalPart($name).")");
308 308
             $this->status = 'schema';
309 309
             $this->currentSchema = new nusoap_xmlschema('', '', $this->namespaces);
@@ -319,7 +319,7 @@  discard block
 block discarded – undo
319 319
             $this->message[$pos] = array('cdata' => '');
320 320
             // process attributes
321 321
             if (count($attrs) > 0) {
322
-				// register namespace declarations
322
+                // register namespace declarations
323 323
                 foreach($attrs as $k => $v) {
324 324
                     if (preg_match('/^xmlns/',$k)) {
325 325
                         if ($ns_prefix = substr(strrchr($k, ':'), 1)) {
@@ -354,417 +354,417 @@  discard block
 block discarded – undo
354 354
                 // get unqualified name
355 355
                 $name = substr(strstr($name, ':'), 1);
356 356
             }
357
-			// process attributes, expanding any prefixes to namespaces
357
+            // process attributes, expanding any prefixes to namespaces
358 358
             // find status, register data
359 359
             switch ($this->status) {
360 360
                 case 'message':
361 361
                     if ($name == 'part') {
362
-			            if (isset($attrs['type'])) {
363
-		                    $this->debug("msg " . $this->currentMessage . ": found part (with type) $attrs[name]: " . implode(',', $attrs));
364
-		                    $this->messages[$this->currentMessage][$attrs['name']] = $attrs['type'];
365
-            			}
366
-			            if (isset($attrs['element'])) {
367
-		                    $this->debug("msg " . $this->currentMessage . ": found part (with element) $attrs[name]: " . implode(',', $attrs));
368
-			                $this->messages[$this->currentMessage][$attrs['name']] = $attrs['element'] . '^';
369
-			            }
370
-        			}
371
-        			break;
372
-			    case 'portType':
373
-			        switch ($name) {
374
-			            case 'operation':
375
-			                $this->currentPortOperation = $attrs['name'];
376
-			                $this->debug("portType $this->currentPortType operation: $this->currentPortOperation");
377
-			                if (isset($attrs['parameterOrder'])) {
378
-			                	$this->portTypes[$this->currentPortType][$attrs['name']]['parameterOrder'] = $attrs['parameterOrder'];
379
-			        		}
380
-			        		break;
381
-					    case 'documentation':
382
-					        $this->documentation = true;
383
-					        break;
384
-					    // merge input/output data
385
-					    default:
386
-					        $m = isset($attrs['message']) ? $this->getLocalPart($attrs['message']) : '';
387
-					        $this->portTypes[$this->currentPortType][$this->currentPortOperation][$name]['message'] = $m;
388
-					        break;
389
-					}
390
-			    	break;
391
-				case 'binding':
392
-				    switch ($name) {
393
-				        case 'binding':
394
-				            // get ns prefix
395
-				            if (isset($attrs['style'])) {
396
-				            $this->bindings[$this->currentBinding]['prefix'] = $prefix;
397
-					    	}
398
-					    	$this->bindings[$this->currentBinding] = array_merge($this->bindings[$this->currentBinding], $attrs);
399
-					    	break;
400
-						case 'header':
401
-						    $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus]['headers'][] = $attrs;
402
-						    break;
403
-						case 'operation':
404
-						    if (isset($attrs['soapAction'])) {
405
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['soapAction'] = $attrs['soapAction'];
406
-						    }
407
-						    if (isset($attrs['style'])) {
408
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['style'] = $attrs['style'];
409
-						    }
410
-						    if (isset($attrs['name'])) {
411
-						        $this->currentOperation = $attrs['name'];
412
-						        $this->debug("current binding operation: $this->currentOperation");
413
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['name'] = $attrs['name'];
414
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['binding'] = $this->currentBinding;
415
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['endpoint'] = isset($this->bindings[$this->currentBinding]['endpoint']) ? $this->bindings[$this->currentBinding]['endpoint'] : '';
416
-						    }
417
-						    break;
418
-						case 'input':
419
-						    $this->opStatus = 'input';
420
-						    break;
421
-						case 'output':
422
-						    $this->opStatus = 'output';
423
-						    break;
424
-						case 'body':
425
-						    if (isset($this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus])) {
426
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus] = array_merge($this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus], $attrs);
427
-						    } else {
428
-						        $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus] = $attrs;
429
-						    }
430
-						    break;
431
-					}
432
-					break;
433
-				case 'service':
434
-					switch ($name) {
435
-					    case 'port':
436
-					        $this->currentPort = $attrs['name'];
437
-					        $this->debug('current port: ' . $this->currentPort);
438
-					        $this->ports[$this->currentPort]['binding'] = $this->getLocalPart($attrs['binding']);
362
+                        if (isset($attrs['type'])) {
363
+                            $this->debug("msg " . $this->currentMessage . ": found part (with type) $attrs[name]: " . implode(',', $attrs));
364
+                            $this->messages[$this->currentMessage][$attrs['name']] = $attrs['type'];
365
+                        }
366
+                        if (isset($attrs['element'])) {
367
+                            $this->debug("msg " . $this->currentMessage . ": found part (with element) $attrs[name]: " . implode(',', $attrs));
368
+                            $this->messages[$this->currentMessage][$attrs['name']] = $attrs['element'] . '^';
369
+                        }
370
+                    }
371
+                    break;
372
+                case 'portType':
373
+                    switch ($name) {
374
+                        case 'operation':
375
+                            $this->currentPortOperation = $attrs['name'];
376
+                            $this->debug("portType $this->currentPortType operation: $this->currentPortOperation");
377
+                            if (isset($attrs['parameterOrder'])) {
378
+                                $this->portTypes[$this->currentPortType][$attrs['name']]['parameterOrder'] = $attrs['parameterOrder'];
379
+                            }
380
+                            break;
381
+                        case 'documentation':
382
+                            $this->documentation = true;
383
+                            break;
384
+                        // merge input/output data
385
+                        default:
386
+                            $m = isset($attrs['message']) ? $this->getLocalPart($attrs['message']) : '';
387
+                            $this->portTypes[$this->currentPortType][$this->currentPortOperation][$name]['message'] = $m;
388
+                            break;
389
+                    }
390
+                    break;
391
+                case 'binding':
392
+                    switch ($name) {
393
+                        case 'binding':
394
+                            // get ns prefix
395
+                            if (isset($attrs['style'])) {
396
+                            $this->bindings[$this->currentBinding]['prefix'] = $prefix;
397
+                            }
398
+                            $this->bindings[$this->currentBinding] = array_merge($this->bindings[$this->currentBinding], $attrs);
399
+                            break;
400
+                        case 'header':
401
+                            $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus]['headers'][] = $attrs;
402
+                            break;
403
+                        case 'operation':
404
+                            if (isset($attrs['soapAction'])) {
405
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['soapAction'] = $attrs['soapAction'];
406
+                            }
407
+                            if (isset($attrs['style'])) {
408
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['style'] = $attrs['style'];
409
+                            }
410
+                            if (isset($attrs['name'])) {
411
+                                $this->currentOperation = $attrs['name'];
412
+                                $this->debug("current binding operation: $this->currentOperation");
413
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['name'] = $attrs['name'];
414
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['binding'] = $this->currentBinding;
415
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation]['endpoint'] = isset($this->bindings[$this->currentBinding]['endpoint']) ? $this->bindings[$this->currentBinding]['endpoint'] : '';
416
+                            }
417
+                            break;
418
+                        case 'input':
419
+                            $this->opStatus = 'input';
420
+                            break;
421
+                        case 'output':
422
+                            $this->opStatus = 'output';
423
+                            break;
424
+                        case 'body':
425
+                            if (isset($this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus])) {
426
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus] = array_merge($this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus], $attrs);
427
+                            } else {
428
+                                $this->bindings[$this->currentBinding]['operations'][$this->currentOperation][$this->opStatus] = $attrs;
429
+                            }
430
+                            break;
431
+                    }
432
+                    break;
433
+                case 'service':
434
+                    switch ($name) {
435
+                        case 'port':
436
+                            $this->currentPort = $attrs['name'];
437
+                            $this->debug('current port: ' . $this->currentPort);
438
+                            $this->ports[$this->currentPort]['binding'] = $this->getLocalPart($attrs['binding']);
439 439
 
440
-					        break;
441
-					    case 'address':
442
-					        $this->ports[$this->currentPort]['location'] = $attrs['location'];
443
-					        $this->ports[$this->currentPort]['bindingType'] = $namespace;
444
-					        $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['bindingType'] = $namespace;
445
-					        $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['endpoint'] = $attrs['location'];
446
-					        break;
447
-					}
448
-					break;
449
-			}
450
-		// set status
451
-		switch ($name) {
452
-			case 'import':
453
-			    if (isset($attrs['location'])) {
440
+                            break;
441
+                        case 'address':
442
+                            $this->ports[$this->currentPort]['location'] = $attrs['location'];
443
+                            $this->ports[$this->currentPort]['bindingType'] = $namespace;
444
+                            $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['bindingType'] = $namespace;
445
+                            $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['endpoint'] = $attrs['location'];
446
+                            break;
447
+                    }
448
+                    break;
449
+            }
450
+        // set status
451
+        switch ($name) {
452
+            case 'import':
453
+                if (isset($attrs['location'])) {
454 454
                     $this->import[$attrs['namespace']][] = array('location' => $attrs['location'], 'loaded' => false);
455 455
                     $this->debug('parsing import ' . $attrs['namespace']. ' - ' . $attrs['location'] . ' (' . count($this->import[$attrs['namespace']]).')');
456
-				} else {
456
+                } else {
457 457
                     $this->import[$attrs['namespace']][] = array('location' => '', 'loaded' => true);
458
-					if (! $this->getPrefixFromNamespace($attrs['namespace'])) {
459
-						$this->namespaces['ns'.(count($this->namespaces)+1)] = $attrs['namespace'];
460
-					}
458
+                    if (! $this->getPrefixFromNamespace($attrs['namespace'])) {
459
+                        $this->namespaces['ns'.(count($this->namespaces)+1)] = $attrs['namespace'];
460
+                    }
461 461
                     $this->debug('parsing import ' . $attrs['namespace']. ' - [no location] (' . count($this->import[$attrs['namespace']]).')');
462
-				}
463
-				break;
464
-			//wait for schema
465
-			//case 'types':
466
-			//	$this->status = 'schema';
467
-			//	break;
468
-			case 'message':
469
-				$this->status = 'message';
470
-				$this->messages[$attrs['name']] = array();
471
-				$this->currentMessage = $attrs['name'];
472
-				break;
473
-			case 'portType':
474
-				$this->status = 'portType';
475
-				$this->portTypes[$attrs['name']] = array();
476
-				$this->currentPortType = $attrs['name'];
477
-				break;
478
-			case "binding":
479
-				if (isset($attrs['name'])) {
480
-				// get binding name
481
-					if (strpos($attrs['name'], ':')) {
482
-			    		$this->currentBinding = $this->getLocalPart($attrs['name']);
483
-					} else {
484
-			    		$this->currentBinding = $attrs['name'];
485
-					}
486
-					$this->status = 'binding';
487
-					$this->bindings[$this->currentBinding]['portType'] = $this->getLocalPart($attrs['type']);
488
-					$this->debug("current binding: $this->currentBinding of portType: " . $attrs['type']);
489
-				}
490
-				break;
491
-			case 'service':
492
-				$this->serviceName = $attrs['name'];
493
-				$this->status = 'service';
494
-				$this->debug('current service: ' . $this->serviceName);
495
-				break;
496
-			case 'definitions':
497
-				foreach ($attrs as $name => $value) {
498
-					$this->wsdl_info[$name] = $value;
499
-				}
500
-				break;
501
-			}
502
-		}
503
-	}
462
+                }
463
+                break;
464
+            //wait for schema
465
+            //case 'types':
466
+            //	$this->status = 'schema';
467
+            //	break;
468
+            case 'message':
469
+                $this->status = 'message';
470
+                $this->messages[$attrs['name']] = array();
471
+                $this->currentMessage = $attrs['name'];
472
+                break;
473
+            case 'portType':
474
+                $this->status = 'portType';
475
+                $this->portTypes[$attrs['name']] = array();
476
+                $this->currentPortType = $attrs['name'];
477
+                break;
478
+            case "binding":
479
+                if (isset($attrs['name'])) {
480
+                // get binding name
481
+                    if (strpos($attrs['name'], ':')) {
482
+                        $this->currentBinding = $this->getLocalPart($attrs['name']);
483
+                    } else {
484
+                        $this->currentBinding = $attrs['name'];
485
+                    }
486
+                    $this->status = 'binding';
487
+                    $this->bindings[$this->currentBinding]['portType'] = $this->getLocalPart($attrs['type']);
488
+                    $this->debug("current binding: $this->currentBinding of portType: " . $attrs['type']);
489
+                }
490
+                break;
491
+            case 'service':
492
+                $this->serviceName = $attrs['name'];
493
+                $this->status = 'service';
494
+                $this->debug('current service: ' . $this->serviceName);
495
+                break;
496
+            case 'definitions':
497
+                foreach ($attrs as $name => $value) {
498
+                    $this->wsdl_info[$name] = $value;
499
+                }
500
+                break;
501
+            }
502
+        }
503
+    }
504 504
 
505
-	/**
506
-	* end-element handler
507
-	*
508
-	* @param string $parser XML parser object
509
-	* @param string $name element name
510
-	* @access private
511
-	*/
512
-	function end_element($parser, $name){
513
-		// unset schema status
514
-		if (/*preg_match('/types$/', $name) ||*/ preg_match('/schema$/', $name)) {
515
-			$this->status = "";
505
+    /**
506
+     * end-element handler
507
+     *
508
+     * @param string $parser XML parser object
509
+     * @param string $name element name
510
+     * @access private
511
+     */
512
+    function end_element($parser, $name){
513
+        // unset schema status
514
+        if (/*preg_match('/types$/', $name) ||*/ preg_match('/schema$/', $name)) {
515
+            $this->status = "";
516 516
             $this->appendDebug($this->currentSchema->getDebug());
517 517
             $this->currentSchema->clearDebug();
518
-			$this->schemas[$this->currentSchema->schemaTargetNamespace][] = $this->currentSchema;
519
-        	$this->debug('Parsing WSDL schema done');
520
-		}
521
-		if ($this->status == 'schema') {
522
-			$this->currentSchema->schemaEndElement($parser, $name);
523
-		} else {
524
-			// bring depth down a notch
525
-			$this->depth--;
526
-		}
527
-		// end documentation
528
-		if ($this->documentation) {
529
-			//TODO: track the node to which documentation should be assigned; it can be a part, message, etc.
530
-			//$this->portTypes[$this->currentPortType][$this->currentPortOperation]['documentation'] = $this->documentation;
531
-			$this->documentation = false;
532
-		}
533
-	}
518
+            $this->schemas[$this->currentSchema->schemaTargetNamespace][] = $this->currentSchema;
519
+            $this->debug('Parsing WSDL schema done');
520
+        }
521
+        if ($this->status == 'schema') {
522
+            $this->currentSchema->schemaEndElement($parser, $name);
523
+        } else {
524
+            // bring depth down a notch
525
+            $this->depth--;
526
+        }
527
+        // end documentation
528
+        if ($this->documentation) {
529
+            //TODO: track the node to which documentation should be assigned; it can be a part, message, etc.
530
+            //$this->portTypes[$this->currentPortType][$this->currentPortOperation]['documentation'] = $this->documentation;
531
+            $this->documentation = false;
532
+        }
533
+    }
534 534
 
535
-	/**
536
-	 * element content handler
537
-	 *
538
-	 * @param string $parser XML parser object
539
-	 * @param string $data element content
540
-	 * @access private
541
-	 */
542
-	function character_data($parser, $data)
543
-	{
544
-		$pos = isset($this->depth_array[$this->depth]) ? $this->depth_array[$this->depth] : 0;
545
-		if (isset($this->message[$pos]['cdata'])) {
546
-			$this->message[$pos]['cdata'] .= $data;
547
-		}
548
-		if ($this->documentation) {
549
-			$this->documentation .= $data;
550
-		}
551
-	}
535
+    /**
536
+     * element content handler
537
+     *
538
+     * @param string $parser XML parser object
539
+     * @param string $data element content
540
+     * @access private
541
+     */
542
+    function character_data($parser, $data)
543
+    {
544
+        $pos = isset($this->depth_array[$this->depth]) ? $this->depth_array[$this->depth] : 0;
545
+        if (isset($this->message[$pos]['cdata'])) {
546
+            $this->message[$pos]['cdata'] .= $data;
547
+        }
548
+        if ($this->documentation) {
549
+            $this->documentation .= $data;
550
+        }
551
+    }
552 552
 
553
-	/**
554
-	* if authenticating, set user credentials here
555
-	*
556
-	* @param    string $username
557
-	* @param    string $password
558
-	* @param	string $authtype (basic|digest|certificate|ntlm)
559
-	* @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
560
-	* @access   public
561
-	*/
562
-	function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
563
-		$this->debug("setCredentials username=$username authtype=$authtype certRequest=");
564
-		$this->appendDebug($this->varDump($certRequest));
565
-		$this->username = $username;
566
-		$this->password = $password;
567
-		$this->authtype = $authtype;
568
-		$this->certRequest = $certRequest;
569
-	}
553
+    /**
554
+     * if authenticating, set user credentials here
555
+     *
556
+     * @param    string $username
557
+     * @param    string $password
558
+     * @param	string $authtype (basic|digest|certificate|ntlm)
559
+     * @param	array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, certpassword (optional), verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
560
+     * @access   public
561
+     */
562
+    function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
563
+        $this->debug("setCredentials username=$username authtype=$authtype certRequest=");
564
+        $this->appendDebug($this->varDump($certRequest));
565
+        $this->username = $username;
566
+        $this->password = $password;
567
+        $this->authtype = $authtype;
568
+        $this->certRequest = $certRequest;
569
+    }
570 570
 
571
-	function getBindingData($binding)
572
-	{
573
-		if (is_array($this->bindings[$binding])) {
574
-			return $this->bindings[$binding];
575
-		}
576
-	}
571
+    function getBindingData($binding)
572
+    {
573
+        if (is_array($this->bindings[$binding])) {
574
+            return $this->bindings[$binding];
575
+        }
576
+    }
577 577
 
578
-	/**
579
-	 * returns an assoc array of operation names => operation data
580
-	 *
581
-	 * @param string $portName WSDL port name
582
-	 * @param string $bindingType eg: soap, smtp, dime (only soap and soap12 are currently supported)
583
-	 * @return array
584
-	 * @access public
585
-	 */
586
-	function getOperations($portName = '', $bindingType = 'soap') {
587
-		$ops = array();
588
-		if ($bindingType == 'soap') {
589
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
590
-		} elseif ($bindingType == 'soap12') {
591
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
592
-		} else {
593
-			$this->debug("getOperations bindingType $bindingType may not be supported");
594
-		}
595
-		$this->debug("getOperations for port '$portName' bindingType $bindingType");
596
-		// loop thru ports
597
-		foreach($this->ports as $port => $portData) {
598
-			$this->debug("getOperations checking port $port bindingType " . $portData['bindingType']);
599
-			if ($portName == '' || $port == $portName) {
600
-				// binding type of port matches parameter
601
-				if ($portData['bindingType'] == $bindingType) {
602
-					$this->debug("getOperations found port $port bindingType $bindingType");
603
-					//$this->debug("port data: " . $this->varDump($portData));
604
-					//$this->debug("bindings: " . $this->varDump($this->bindings[ $portData['binding'] ]));
605
-					// merge bindings
606
-					if (isset($this->bindings[ $portData['binding'] ]['operations'])) {
607
-						$ops = array_merge ($ops, $this->bindings[ $portData['binding'] ]['operations']);
608
-					}
609
-				}
610
-			}
611
-		}
612
-		if (count($ops) == 0) {
613
-			$this->debug("getOperations found no operations for port '$portName' bindingType $bindingType");
614
-		}
615
-		return $ops;
616
-	}
578
+    /**
579
+     * returns an assoc array of operation names => operation data
580
+     *
581
+     * @param string $portName WSDL port name
582
+     * @param string $bindingType eg: soap, smtp, dime (only soap and soap12 are currently supported)
583
+     * @return array
584
+     * @access public
585
+     */
586
+    function getOperations($portName = '', $bindingType = 'soap') {
587
+        $ops = array();
588
+        if ($bindingType == 'soap') {
589
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
590
+        } elseif ($bindingType == 'soap12') {
591
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
592
+        } else {
593
+            $this->debug("getOperations bindingType $bindingType may not be supported");
594
+        }
595
+        $this->debug("getOperations for port '$portName' bindingType $bindingType");
596
+        // loop thru ports
597
+        foreach($this->ports as $port => $portData) {
598
+            $this->debug("getOperations checking port $port bindingType " . $portData['bindingType']);
599
+            if ($portName == '' || $port == $portName) {
600
+                // binding type of port matches parameter
601
+                if ($portData['bindingType'] == $bindingType) {
602
+                    $this->debug("getOperations found port $port bindingType $bindingType");
603
+                    //$this->debug("port data: " . $this->varDump($portData));
604
+                    //$this->debug("bindings: " . $this->varDump($this->bindings[ $portData['binding'] ]));
605
+                    // merge bindings
606
+                    if (isset($this->bindings[ $portData['binding'] ]['operations'])) {
607
+                        $ops = array_merge ($ops, $this->bindings[ $portData['binding'] ]['operations']);
608
+                    }
609
+                }
610
+            }
611
+        }
612
+        if (count($ops) == 0) {
613
+            $this->debug("getOperations found no operations for port '$portName' bindingType $bindingType");
614
+        }
615
+        return $ops;
616
+    }
617 617
 
618
-	/**
619
-	 * returns an associative array of data necessary for calling an operation
620
-	 *
621
-	 * @param string $operation name of operation
622
-	 * @param string $bindingType type of binding eg: soap, soap12
623
-	 * @return array
624
-	 * @access public
625
-	 */
626
-	function getOperationData($operation, $bindingType = 'soap')
627
-	{
628
-		if ($bindingType == 'soap') {
629
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
630
-		} elseif ($bindingType == 'soap12') {
631
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
632
-		}
633
-		// loop thru ports
634
-		foreach($this->ports as $port => $portData) {
635
-			// binding type of port matches parameter
636
-			if ($portData['bindingType'] == $bindingType) {
637
-				// get binding
638
-				//foreach($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
639
-				foreach(array_keys($this->bindings[ $portData['binding'] ]['operations']) as $bOperation) {
640
-					// note that we could/should also check the namespace here
641
-					if ($operation == $bOperation) {
642
-						$opData = $this->bindings[ $portData['binding'] ]['operations'][$operation];
643
-					    return $opData;
644
-					}
645
-				}
646
-			}
647
-		}
648
-	}
618
+    /**
619
+     * returns an associative array of data necessary for calling an operation
620
+     *
621
+     * @param string $operation name of operation
622
+     * @param string $bindingType type of binding eg: soap, soap12
623
+     * @return array
624
+     * @access public
625
+     */
626
+    function getOperationData($operation, $bindingType = 'soap')
627
+    {
628
+        if ($bindingType == 'soap') {
629
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
630
+        } elseif ($bindingType == 'soap12') {
631
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
632
+        }
633
+        // loop thru ports
634
+        foreach($this->ports as $port => $portData) {
635
+            // binding type of port matches parameter
636
+            if ($portData['bindingType'] == $bindingType) {
637
+                // get binding
638
+                //foreach($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
639
+                foreach(array_keys($this->bindings[ $portData['binding'] ]['operations']) as $bOperation) {
640
+                    // note that we could/should also check the namespace here
641
+                    if ($operation == $bOperation) {
642
+                        $opData = $this->bindings[ $portData['binding'] ]['operations'][$operation];
643
+                        return $opData;
644
+                    }
645
+                }
646
+            }
647
+        }
648
+    }
649 649
 
650
-	/**
651
-	 * returns an associative array of data necessary for calling an operation
652
-	 *
653
-	 * @param string $soapAction soapAction for operation
654
-	 * @param string $bindingType type of binding eg: soap, soap12
655
-	 * @return array
656
-	 * @access public
657
-	 */
658
-	function getOperationDataForSoapAction($soapAction, $bindingType = 'soap') {
659
-		if ($bindingType == 'soap') {
660
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
661
-		} elseif ($bindingType == 'soap12') {
662
-			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
663
-		}
664
-		// loop thru ports
665
-		foreach($this->ports as $port => $portData) {
666
-			// binding type of port matches parameter
667
-			if ($portData['bindingType'] == $bindingType) {
668
-				// loop through operations for the binding
669
-				foreach ($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
670
-					if ($opData['soapAction'] == $soapAction) {
671
-					    return $opData;
672
-					}
673
-				}
674
-			}
675
-		}
676
-	}
650
+    /**
651
+     * returns an associative array of data necessary for calling an operation
652
+     *
653
+     * @param string $soapAction soapAction for operation
654
+     * @param string $bindingType type of binding eg: soap, soap12
655
+     * @return array
656
+     * @access public
657
+     */
658
+    function getOperationDataForSoapAction($soapAction, $bindingType = 'soap') {
659
+        if ($bindingType == 'soap') {
660
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap/';
661
+        } elseif ($bindingType == 'soap12') {
662
+            $bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
663
+        }
664
+        // loop thru ports
665
+        foreach($this->ports as $port => $portData) {
666
+            // binding type of port matches parameter
667
+            if ($portData['bindingType'] == $bindingType) {
668
+                // loop through operations for the binding
669
+                foreach ($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
670
+                    if ($opData['soapAction'] == $soapAction) {
671
+                        return $opData;
672
+                    }
673
+                }
674
+            }
675
+        }
676
+    }
677 677
 
678
-	/**
679
-    * returns an array of information about a given type
680
-    * returns false if no type exists by the given name
681
-    *
682
-	*	 typeDef = array(
683
-	*	 'elements' => array(), // refs to elements array
684
-	*	'restrictionBase' => '',
685
-	*	'phpType' => '',
686
-	*	'order' => '(sequence|all)',
687
-	*	'attrs' => array() // refs to attributes array
688
-	*	)
689
-    *
690
-    * @param string $type the type
691
-    * @param string $ns namespace (not prefix) of the type
692
-    * @return mixed
693
-    * @access public
694
-    * @see nusoap_xmlschema
695
-    */
696
-	function getTypeDef($type, $ns) {
697
-		$this->debug("in getTypeDef: type=$type, ns=$ns");
698
-		if ((! $ns) && isset($this->namespaces['tns'])) {
699
-			$ns = $this->namespaces['tns'];
700
-			$this->debug("in getTypeDef: type namespace forced to $ns");
701
-		}
702
-		if (!isset($this->schemas[$ns])) {
703
-			foreach ($this->schemas as $ns0 => $schema0) {
704
-				if (strcasecmp($ns, $ns0) == 0) {
705
-					$this->debug("in getTypeDef: replacing schema namespace $ns with $ns0");
706
-					$ns = $ns0;
707
-					break;
708
-				}
709
-			}
710
-		}
711
-		if (isset($this->schemas[$ns])) {
712
-			$this->debug("in getTypeDef: have schema for namespace $ns");
713
-			for ($i = 0; $i < count($this->schemas[$ns]); $i++) {
714
-				$xs = &$this->schemas[$ns][$i];
715
-				$t = $xs->getTypeDef($type);
716
-				$this->appendDebug($xs->getDebug());
717
-				$xs->clearDebug();
718
-				if ($t) {
719
-					$this->debug("in getTypeDef: found type $type");
720
-					if (!isset($t['phpType'])) {
721
-						// get info for type to tack onto the element
722
-						$uqType = substr($t['type'], strrpos($t['type'], ':') + 1);
723
-						$ns = substr($t['type'], 0, strrpos($t['type'], ':'));
724
-						$etype = $this->getTypeDef($uqType, $ns);
725
-						if ($etype) {
726
-							$this->debug("found type for [element] $type:");
727
-							$this->debug($this->varDump($etype));
728
-							if (isset($etype['phpType'])) {
729
-								$t['phpType'] = $etype['phpType'];
730
-							}
731
-							if (isset($etype['elements'])) {
732
-								$t['elements'] = $etype['elements'];
733
-							}
734
-							if (isset($etype['attrs'])) {
735
-								$t['attrs'] = $etype['attrs'];
736
-							}
737
-						} else {
738
-							$this->debug("did not find type for [element] $type");
739
-						}
740
-					}
741
-					return $t;
742
-				}
743
-			}
744
-			$this->debug("in getTypeDef: did not find type $type");
745
-		} else {
746
-			$this->debug("in getTypeDef: do not have schema for namespace $ns");
747
-		}
748
-		return false;
749
-	}
678
+    /**
679
+     * returns an array of information about a given type
680
+     * returns false if no type exists by the given name
681
+     *
682
+     *	 typeDef = array(
683
+     *	 'elements' => array(), // refs to elements array
684
+     *	'restrictionBase' => '',
685
+     *	'phpType' => '',
686
+     *	'order' => '(sequence|all)',
687
+     *	'attrs' => array() // refs to attributes array
688
+     *	)
689
+     *
690
+     * @param string $type the type
691
+     * @param string $ns namespace (not prefix) of the type
692
+     * @return mixed
693
+     * @access public
694
+     * @see nusoap_xmlschema
695
+     */
696
+    function getTypeDef($type, $ns) {
697
+        $this->debug("in getTypeDef: type=$type, ns=$ns");
698
+        if ((! $ns) && isset($this->namespaces['tns'])) {
699
+            $ns = $this->namespaces['tns'];
700
+            $this->debug("in getTypeDef: type namespace forced to $ns");
701
+        }
702
+        if (!isset($this->schemas[$ns])) {
703
+            foreach ($this->schemas as $ns0 => $schema0) {
704
+                if (strcasecmp($ns, $ns0) == 0) {
705
+                    $this->debug("in getTypeDef: replacing schema namespace $ns with $ns0");
706
+                    $ns = $ns0;
707
+                    break;
708
+                }
709
+            }
710
+        }
711
+        if (isset($this->schemas[$ns])) {
712
+            $this->debug("in getTypeDef: have schema for namespace $ns");
713
+            for ($i = 0; $i < count($this->schemas[$ns]); $i++) {
714
+                $xs = &$this->schemas[$ns][$i];
715
+                $t = $xs->getTypeDef($type);
716
+                $this->appendDebug($xs->getDebug());
717
+                $xs->clearDebug();
718
+                if ($t) {
719
+                    $this->debug("in getTypeDef: found type $type");
720
+                    if (!isset($t['phpType'])) {
721
+                        // get info for type to tack onto the element
722
+                        $uqType = substr($t['type'], strrpos($t['type'], ':') + 1);
723
+                        $ns = substr($t['type'], 0, strrpos($t['type'], ':'));
724
+                        $etype = $this->getTypeDef($uqType, $ns);
725
+                        if ($etype) {
726
+                            $this->debug("found type for [element] $type:");
727
+                            $this->debug($this->varDump($etype));
728
+                            if (isset($etype['phpType'])) {
729
+                                $t['phpType'] = $etype['phpType'];
730
+                            }
731
+                            if (isset($etype['elements'])) {
732
+                                $t['elements'] = $etype['elements'];
733
+                            }
734
+                            if (isset($etype['attrs'])) {
735
+                                $t['attrs'] = $etype['attrs'];
736
+                            }
737
+                        } else {
738
+                            $this->debug("did not find type for [element] $type");
739
+                        }
740
+                    }
741
+                    return $t;
742
+                }
743
+            }
744
+            $this->debug("in getTypeDef: did not find type $type");
745
+        } else {
746
+            $this->debug("in getTypeDef: do not have schema for namespace $ns");
747
+        }
748
+        return false;
749
+    }
750 750
 
751 751
     /**
752
-    * prints html description of services
753
-    *
754
-    * @access private
755
-    */
752
+     * prints html description of services
753
+     *
754
+     * @access private
755
+     */
756 756
     function webDescription(){
757
-    	global $HTTP_SERVER_VARS;
757
+        global $HTTP_SERVER_VARS;
758 758
 
759
-		if (isset($_SERVER)) {
760
-			$PHP_SELF = $_SERVER['PHP_SELF'];
761
-		} elseif (isset($HTTP_SERVER_VARS)) {
762
-			$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];
763
-		} else {
764
-			$this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
765
-		}
759
+        if (isset($_SERVER)) {
760
+            $PHP_SELF = $_SERVER['PHP_SELF'];
761
+        } elseif (isset($HTTP_SERVER_VARS)) {
762
+            $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];
763
+        } else {
764
+            $this->setError("Neither _SERVER nor HTTP_SERVER_VARS is available");
765
+        }
766 766
 
767
-		$b = '
767
+        $b = '
768 768
 		<html><head><title>NuSOAP: '.$this->serviceName.'</title>
769 769
 		<style type="text/css">
770 770
 		    body    { font-family: arial; color: #000000; background-color: #ffffff; margin: 0px 0px 0px 0px; }
@@ -847,1092 +847,1092 @@  discard block
 block discarded – undo
847 847
 				<p>View the <a href="'.$PHP_SELF.'?wsdl">WSDL</a> for the service.
848 848
 				Click on an operation name to view it&apos;s details.</p>
849 849
 				<ul>';
850
-				foreach($this->getOperations() as $op => $data){
851
-				    $b .= "<li><a href='#' onclick=\"popout();popup('$op')\">$op</a></li>";
852
-				    // create hidden div
853
-				    $b .= "<div id='$op' class='hidden'>
850
+                foreach($this->getOperations() as $op => $data){
851
+                    $b .= "<li><a href='#' onclick=\"popout();popup('$op')\">$op</a></li>";
852
+                    // create hidden div
853
+                    $b .= "<div id='$op' class='hidden'>
854 854
 				    <a href='#' onclick='popout()'><font color='#ffffff'>Close</font></a><br><br>";
855
-				    foreach($data as $donnie => $marie){ // loop through opdata
856
-						if($donnie == 'input' || $donnie == 'output'){ // show input/output data
857
-						    $b .= "<font color='white'>".ucfirst($donnie).':</font><br>';
858
-						    foreach($marie as $captain => $tenille){ // loop through data
859
-								if($captain == 'parts'){ // loop thru parts
860
-								    $b .= "&nbsp;&nbsp;$captain:<br>";
861
-					                //if(is_array($tenille)){
862
-								    	foreach($tenille as $joanie => $chachi){
863
-											$b .= "&nbsp;&nbsp;&nbsp;&nbsp;$joanie: $chachi<br>";
864
-								    	}
865
-					        		//}
866
-								} else {
867
-								    $b .= "&nbsp;&nbsp;$captain: $tenille<br>";
868
-								}
869
-						    }
870
-						} else {
871
-						    $b .= "<font color='white'>".ucfirst($donnie).":</font> $marie<br>";
872
-						}
873
-				    }
874
-					$b .= '</div>';
875
-				}
876
-				$b .= '
855
+                    foreach($data as $donnie => $marie){ // loop through opdata
856
+                        if($donnie == 'input' || $donnie == 'output'){ // show input/output data
857
+                            $b .= "<font color='white'>".ucfirst($donnie).':</font><br>';
858
+                            foreach($marie as $captain => $tenille){ // loop through data
859
+                                if($captain == 'parts'){ // loop thru parts
860
+                                    $b .= "&nbsp;&nbsp;$captain:<br>";
861
+                                    //if(is_array($tenille)){
862
+                                        foreach($tenille as $joanie => $chachi){
863
+                                            $b .= "&nbsp;&nbsp;&nbsp;&nbsp;$joanie: $chachi<br>";
864
+                                        }
865
+                                    //}
866
+                                } else {
867
+                                    $b .= "&nbsp;&nbsp;$captain: $tenille<br>";
868
+                                }
869
+                            }
870
+                        } else {
871
+                            $b .= "<font color='white'>".ucfirst($donnie).":</font> $marie<br>";
872
+                        }
873
+                    }
874
+                    $b .= '</div>';
875
+                }
876
+                $b .= '
877 877
 				<ul>
878 878
 			</div>
879 879
 		</div></body></html>';
880
-		return $b;
880
+        return $b;
881 881
     }
882 882
 
883
-	/**
884
-	* serialize the parsed wsdl
885
-	*
886
-	* @param mixed $debug whether to put debug=1 in endpoint URL
887
-	* @return string serialization of WSDL
888
-	* @access public
889
-	*/
890
-	function serialize($debug = 0)
891
-	{
892
-		$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
893
-		$xml .= "\n<definitions";
894
-		foreach($this->namespaces as $k => $v) {
895
-			$xml .= " xmlns:$k=\"$v\"";
896
-		}
897
-		// 10.9.02 - add poulter fix for wsdl and tns declarations
898
-		if (isset($this->namespaces['wsdl'])) {
899
-			$xml .= " xmlns=\"" . $this->namespaces['wsdl'] . "\"";
900
-		}
901
-		if (isset($this->namespaces['tns'])) {
902
-			$xml .= " targetNamespace=\"" . $this->namespaces['tns'] . "\"";
903
-		}
904
-		$xml .= '>';
905
-		// imports
906
-		if (sizeof($this->import) > 0) {
907
-			foreach($this->import as $ns => $list) {
908
-				foreach ($list as $ii) {
909
-					if ($ii['location'] != '') {
910
-						$xml .= '<import location="' . $ii['location'] . '" namespace="' . $ns . '" />';
911
-					} else {
912
-						$xml .= '<import namespace="' . $ns . '" />';
913
-					}
914
-				}
915
-			}
916
-		}
917
-		// types
918
-		if (count($this->schemas)>=1) {
919
-			$xml .= "\n<types>\n";
920
-			foreach ($this->schemas as $ns => $list) {
921
-				foreach ($list as $xs) {
922
-					$xml .= $xs->serializeSchema();
923
-				}
924
-			}
925
-			$xml .= '</types>';
926
-		}
927
-		// messages
928
-		if (count($this->messages) >= 1) {
929
-			foreach($this->messages as $msgName => $msgParts) {
930
-				$xml .= "\n<message name=\"" . $msgName . '">';
931
-				if(is_array($msgParts)){
932
-					foreach($msgParts as $partName => $partType) {
933
-						// print 'serializing '.$partType.', sv: '.$this->XMLSchemaVersion.'<br>';
934
-						if (strpos($partType, ':')) {
935
-						    $typePrefix = $this->getPrefixFromNamespace($this->getPrefix($partType));
936
-						} elseif (isset($this->typemap[$this->namespaces['xsd']][$partType])) {
937
-						    // print 'checking typemap: '.$this->XMLSchemaVersion.'<br>';
938
-						    $typePrefix = 'xsd';
939
-						} else {
940
-						    foreach($this->typemap as $ns => $types) {
941
-						        if (isset($types[$partType])) {
942
-						            $typePrefix = $this->getPrefixFromNamespace($ns);
943
-						        }
944
-						    }
945
-						    if (!isset($typePrefix)) {
946
-						        die("$partType has no namespace!");
947
-						    }
948
-						}
949
-						$ns = $this->getNamespaceFromPrefix($typePrefix);
950
-						$localPart = $this->getLocalPart($partType);
951
-						$typeDef = $this->getTypeDef($localPart, $ns);
952
-						if ($typeDef['typeClass'] == 'element') {
953
-							$elementortype = 'element';
954
-							if (substr($localPart, -1) == '^') {
955
-								$localPart = substr($localPart, 0, -1);
956
-							}
957
-						} else {
958
-							$elementortype = 'type';
959
-						}
960
-						$xml .= "\n" . '  <part name="' . $partName . '" ' . $elementortype . '="' . $typePrefix . ':' . $localPart . '" />';
961
-					}
962
-				}
963
-				$xml .= '</message>';
964
-			}
965
-		}
966
-		// bindings & porttypes
967
-		if (count($this->bindings) >= 1) {
968
-			$binding_xml = '';
969
-			$portType_xml = '';
970
-			foreach($this->bindings as $bindingName => $attrs) {
971
-				$binding_xml .= "\n<binding name=\"" . $bindingName . '" type="tns:' . $attrs['portType'] . '">';
972
-				$binding_xml .= "\n" . '  <soap:binding style="' . $attrs['style'] . '" transport="' . $attrs['transport'] . '"/>';
973
-				$portType_xml .= "\n<portType name=\"" . $attrs['portType'] . '">';
974
-				foreach($attrs['operations'] as $opName => $opParts) {
975
-					$binding_xml .= "\n" . '  <operation name="' . $opName . '">';
976
-					$binding_xml .= "\n" . '    <soap:operation soapAction="' . $opParts['soapAction'] . '" style="'. $opParts['style'] . '"/>';
977
-					if (isset($opParts['input']['encodingStyle']) && $opParts['input']['encodingStyle'] != '') {
978
-						$enc_style = ' encodingStyle="' . $opParts['input']['encodingStyle'] . '"';
979
-					} else {
980
-						$enc_style = '';
981
-					}
982
-					$binding_xml .= "\n" . '    <input><soap:body use="' . $opParts['input']['use'] . '" namespace="' . $opParts['input']['namespace'] . '"' . $enc_style . '/></input>';
983
-					if (isset($opParts['output']['encodingStyle']) && $opParts['output']['encodingStyle'] != '') {
984
-						$enc_style = ' encodingStyle="' . $opParts['output']['encodingStyle'] . '"';
985
-					} else {
986
-						$enc_style = '';
987
-					}
988
-					$binding_xml .= "\n" . '    <output><soap:body use="' . $opParts['output']['use'] . '" namespace="' . $opParts['output']['namespace'] . '"' . $enc_style . '/></output>';
989
-					$binding_xml .= "\n" . '  </operation>';
990
-					$portType_xml .= "\n" . '  <operation name="' . $opParts['name'] . '"';
991
-					if (isset($opParts['parameterOrder'])) {
992
-					    $portType_xml .= ' parameterOrder="' . $opParts['parameterOrder'] . '"';
993
-					}
994
-					$portType_xml .= '>';
995
-					if(isset($opParts['documentation']) && $opParts['documentation'] != '') {
996
-						$portType_xml .= "\n" . '    <documentation>' . htmlspecialchars($opParts['documentation']) . '</documentation>';
997
-					}
998
-					$portType_xml .= "\n" . '    <input message="tns:' . $opParts['input']['message'] . '"/>';
999
-					$portType_xml .= "\n" . '    <output message="tns:' . $opParts['output']['message'] . '"/>';
1000
-					$portType_xml .= "\n" . '  </operation>';
1001
-				}
1002
-				$portType_xml .= "\n" . '</portType>';
1003
-				$binding_xml .= "\n" . '</binding>';
1004
-			}
1005
-			$xml .= $portType_xml . $binding_xml;
1006
-		}
1007
-		// services
1008
-		$xml .= "\n<service name=\"" . $this->serviceName . '">';
1009
-		if (count($this->ports) >= 1) {
1010
-			foreach($this->ports as $pName => $attrs) {
1011
-				$xml .= "\n" . '  <port name="' . $pName . '" binding="tns:' . $attrs['binding'] . '">';
1012
-				$xml .= "\n" . '    <soap:address location="' . $attrs['location'] . ($debug ? '?debug=1' : '') . '"/>';
1013
-				$xml .= "\n" . '  </port>';
1014
-			}
1015
-		}
1016
-		$xml .= "\n" . '</service>';
1017
-		return $xml . "\n</definitions>";
1018
-	}
883
+    /**
884
+     * serialize the parsed wsdl
885
+     *
886
+     * @param mixed $debug whether to put debug=1 in endpoint URL
887
+     * @return string serialization of WSDL
888
+     * @access public
889
+     */
890
+    function serialize($debug = 0)
891
+    {
892
+        $xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
893
+        $xml .= "\n<definitions";
894
+        foreach($this->namespaces as $k => $v) {
895
+            $xml .= " xmlns:$k=\"$v\"";
896
+        }
897
+        // 10.9.02 - add poulter fix for wsdl and tns declarations
898
+        if (isset($this->namespaces['wsdl'])) {
899
+            $xml .= " xmlns=\"" . $this->namespaces['wsdl'] . "\"";
900
+        }
901
+        if (isset($this->namespaces['tns'])) {
902
+            $xml .= " targetNamespace=\"" . $this->namespaces['tns'] . "\"";
903
+        }
904
+        $xml .= '>';
905
+        // imports
906
+        if (sizeof($this->import) > 0) {
907
+            foreach($this->import as $ns => $list) {
908
+                foreach ($list as $ii) {
909
+                    if ($ii['location'] != '') {
910
+                        $xml .= '<import location="' . $ii['location'] . '" namespace="' . $ns . '" />';
911
+                    } else {
912
+                        $xml .= '<import namespace="' . $ns . '" />';
913
+                    }
914
+                }
915
+            }
916
+        }
917
+        // types
918
+        if (count($this->schemas)>=1) {
919
+            $xml .= "\n<types>\n";
920
+            foreach ($this->schemas as $ns => $list) {
921
+                foreach ($list as $xs) {
922
+                    $xml .= $xs->serializeSchema();
923
+                }
924
+            }
925
+            $xml .= '</types>';
926
+        }
927
+        // messages
928
+        if (count($this->messages) >= 1) {
929
+            foreach($this->messages as $msgName => $msgParts) {
930
+                $xml .= "\n<message name=\"" . $msgName . '">';
931
+                if(is_array($msgParts)){
932
+                    foreach($msgParts as $partName => $partType) {
933
+                        // print 'serializing '.$partType.', sv: '.$this->XMLSchemaVersion.'<br>';
934
+                        if (strpos($partType, ':')) {
935
+                            $typePrefix = $this->getPrefixFromNamespace($this->getPrefix($partType));
936
+                        } elseif (isset($this->typemap[$this->namespaces['xsd']][$partType])) {
937
+                            // print 'checking typemap: '.$this->XMLSchemaVersion.'<br>';
938
+                            $typePrefix = 'xsd';
939
+                        } else {
940
+                            foreach($this->typemap as $ns => $types) {
941
+                                if (isset($types[$partType])) {
942
+                                    $typePrefix = $this->getPrefixFromNamespace($ns);
943
+                                }
944
+                            }
945
+                            if (!isset($typePrefix)) {
946
+                                die("$partType has no namespace!");
947
+                            }
948
+                        }
949
+                        $ns = $this->getNamespaceFromPrefix($typePrefix);
950
+                        $localPart = $this->getLocalPart($partType);
951
+                        $typeDef = $this->getTypeDef($localPart, $ns);
952
+                        if ($typeDef['typeClass'] == 'element') {
953
+                            $elementortype = 'element';
954
+                            if (substr($localPart, -1) == '^') {
955
+                                $localPart = substr($localPart, 0, -1);
956
+                            }
957
+                        } else {
958
+                            $elementortype = 'type';
959
+                        }
960
+                        $xml .= "\n" . '  <part name="' . $partName . '" ' . $elementortype . '="' . $typePrefix . ':' . $localPart . '" />';
961
+                    }
962
+                }
963
+                $xml .= '</message>';
964
+            }
965
+        }
966
+        // bindings & porttypes
967
+        if (count($this->bindings) >= 1) {
968
+            $binding_xml = '';
969
+            $portType_xml = '';
970
+            foreach($this->bindings as $bindingName => $attrs) {
971
+                $binding_xml .= "\n<binding name=\"" . $bindingName . '" type="tns:' . $attrs['portType'] . '">';
972
+                $binding_xml .= "\n" . '  <soap:binding style="' . $attrs['style'] . '" transport="' . $attrs['transport'] . '"/>';
973
+                $portType_xml .= "\n<portType name=\"" . $attrs['portType'] . '">';
974
+                foreach($attrs['operations'] as $opName => $opParts) {
975
+                    $binding_xml .= "\n" . '  <operation name="' . $opName . '">';
976
+                    $binding_xml .= "\n" . '    <soap:operation soapAction="' . $opParts['soapAction'] . '" style="'. $opParts['style'] . '"/>';
977
+                    if (isset($opParts['input']['encodingStyle']) && $opParts['input']['encodingStyle'] != '') {
978
+                        $enc_style = ' encodingStyle="' . $opParts['input']['encodingStyle'] . '"';
979
+                    } else {
980
+                        $enc_style = '';
981
+                    }
982
+                    $binding_xml .= "\n" . '    <input><soap:body use="' . $opParts['input']['use'] . '" namespace="' . $opParts['input']['namespace'] . '"' . $enc_style . '/></input>';
983
+                    if (isset($opParts['output']['encodingStyle']) && $opParts['output']['encodingStyle'] != '') {
984
+                        $enc_style = ' encodingStyle="' . $opParts['output']['encodingStyle'] . '"';
985
+                    } else {
986
+                        $enc_style = '';
987
+                    }
988
+                    $binding_xml .= "\n" . '    <output><soap:body use="' . $opParts['output']['use'] . '" namespace="' . $opParts['output']['namespace'] . '"' . $enc_style . '/></output>';
989
+                    $binding_xml .= "\n" . '  </operation>';
990
+                    $portType_xml .= "\n" . '  <operation name="' . $opParts['name'] . '"';
991
+                    if (isset($opParts['parameterOrder'])) {
992
+                        $portType_xml .= ' parameterOrder="' . $opParts['parameterOrder'] . '"';
993
+                    }
994
+                    $portType_xml .= '>';
995
+                    if(isset($opParts['documentation']) && $opParts['documentation'] != '') {
996
+                        $portType_xml .= "\n" . '    <documentation>' . htmlspecialchars($opParts['documentation']) . '</documentation>';
997
+                    }
998
+                    $portType_xml .= "\n" . '    <input message="tns:' . $opParts['input']['message'] . '"/>';
999
+                    $portType_xml .= "\n" . '    <output message="tns:' . $opParts['output']['message'] . '"/>';
1000
+                    $portType_xml .= "\n" . '  </operation>';
1001
+                }
1002
+                $portType_xml .= "\n" . '</portType>';
1003
+                $binding_xml .= "\n" . '</binding>';
1004
+            }
1005
+            $xml .= $portType_xml . $binding_xml;
1006
+        }
1007
+        // services
1008
+        $xml .= "\n<service name=\"" . $this->serviceName . '">';
1009
+        if (count($this->ports) >= 1) {
1010
+            foreach($this->ports as $pName => $attrs) {
1011
+                $xml .= "\n" . '  <port name="' . $pName . '" binding="tns:' . $attrs['binding'] . '">';
1012
+                $xml .= "\n" . '    <soap:address location="' . $attrs['location'] . ($debug ? '?debug=1' : '') . '"/>';
1013
+                $xml .= "\n" . '  </port>';
1014
+            }
1015
+        }
1016
+        $xml .= "\n" . '</service>';
1017
+        return $xml . "\n</definitions>";
1018
+    }
1019 1019
 
1020
-	/**
1021
-	 * determine whether a set of parameters are unwrapped
1022
-	 * when they are expect to be wrapped, Microsoft-style.
1023
-	 *
1024
-	 * @param string $type the type (element name) of the wrapper
1025
-	 * @param array $parameters the parameter values for the SOAP call
1026
-	 * @return boolean whether they parameters are unwrapped (and should be wrapped)
1027
-	 * @access private
1028
-	 */
1029
-	function parametersMatchWrapped($type, &$parameters) {
1030
-		$this->debug("in parametersMatchWrapped type=$type, parameters=");
1031
-		$this->appendDebug($this->varDump($parameters));
1020
+    /**
1021
+     * determine whether a set of parameters are unwrapped
1022
+     * when they are expect to be wrapped, Microsoft-style.
1023
+     *
1024
+     * @param string $type the type (element name) of the wrapper
1025
+     * @param array $parameters the parameter values for the SOAP call
1026
+     * @return boolean whether they parameters are unwrapped (and should be wrapped)
1027
+     * @access private
1028
+     */
1029
+    function parametersMatchWrapped($type, &$parameters) {
1030
+        $this->debug("in parametersMatchWrapped type=$type, parameters=");
1031
+        $this->appendDebug($this->varDump($parameters));
1032 1032
 
1033
-		// split type into namespace:unqualified-type
1034
-		if (strpos($type, ':')) {
1035
-			$uqType = substr($type, strrpos($type, ':') + 1);
1036
-			$ns = substr($type, 0, strrpos($type, ':'));
1037
-			$this->debug("in parametersMatchWrapped: got a prefixed type: $uqType, $ns");
1038
-			if ($this->getNamespaceFromPrefix($ns)) {
1039
-				$ns = $this->getNamespaceFromPrefix($ns);
1040
-				$this->debug("in parametersMatchWrapped: expanded prefixed type: $uqType, $ns");
1041
-			}
1042
-		} else {
1043
-			// TODO: should the type be compared to types in XSD, and the namespace
1044
-			// set to XSD if the type matches?
1045
-			$this->debug("in parametersMatchWrapped: No namespace for type $type");
1046
-			$ns = '';
1047
-			$uqType = $type;
1048
-		}
1033
+        // split type into namespace:unqualified-type
1034
+        if (strpos($type, ':')) {
1035
+            $uqType = substr($type, strrpos($type, ':') + 1);
1036
+            $ns = substr($type, 0, strrpos($type, ':'));
1037
+            $this->debug("in parametersMatchWrapped: got a prefixed type: $uqType, $ns");
1038
+            if ($this->getNamespaceFromPrefix($ns)) {
1039
+                $ns = $this->getNamespaceFromPrefix($ns);
1040
+                $this->debug("in parametersMatchWrapped: expanded prefixed type: $uqType, $ns");
1041
+            }
1042
+        } else {
1043
+            // TODO: should the type be compared to types in XSD, and the namespace
1044
+            // set to XSD if the type matches?
1045
+            $this->debug("in parametersMatchWrapped: No namespace for type $type");
1046
+            $ns = '';
1047
+            $uqType = $type;
1048
+        }
1049 1049
 
1050
-		// get the type information
1051
-		if (!$typeDef = $this->getTypeDef($uqType, $ns)) {
1052
-			$this->debug("in parametersMatchWrapped: $type ($uqType) is not a supported type.");
1053
-			return false;
1054
-		}
1055
-		$this->debug("in parametersMatchWrapped: found typeDef=");
1056
-		$this->appendDebug($this->varDump($typeDef));
1057
-		if (substr($uqType, -1) == '^') {
1058
-			$uqType = substr($uqType, 0, -1);
1059
-		}
1060
-		$phpType = $typeDef['phpType'];
1061
-		$arrayType = (isset($typeDef['arrayType']) ? $typeDef['arrayType'] : '');
1062
-		$this->debug("in parametersMatchWrapped: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: $arrayType");
1050
+        // get the type information
1051
+        if (!$typeDef = $this->getTypeDef($uqType, $ns)) {
1052
+            $this->debug("in parametersMatchWrapped: $type ($uqType) is not a supported type.");
1053
+            return false;
1054
+        }
1055
+        $this->debug("in parametersMatchWrapped: found typeDef=");
1056
+        $this->appendDebug($this->varDump($typeDef));
1057
+        if (substr($uqType, -1) == '^') {
1058
+            $uqType = substr($uqType, 0, -1);
1059
+        }
1060
+        $phpType = $typeDef['phpType'];
1061
+        $arrayType = (isset($typeDef['arrayType']) ? $typeDef['arrayType'] : '');
1062
+        $this->debug("in parametersMatchWrapped: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: $arrayType");
1063 1063
 
1064
-		// we expect a complexType or element of complexType
1065
-		if ($phpType != 'struct') {
1066
-			$this->debug("in parametersMatchWrapped: not a struct");
1067
-			return false;
1068
-		}
1064
+        // we expect a complexType or element of complexType
1065
+        if ($phpType != 'struct') {
1066
+            $this->debug("in parametersMatchWrapped: not a struct");
1067
+            return false;
1068
+        }
1069 1069
 
1070
-		// see whether the parameter names match the elements
1071
-		if (isset($typeDef['elements']) && is_array($typeDef['elements'])) {
1072
-			$elements = 0;
1073
-			$matches = 0;
1074
-			foreach ($typeDef['elements'] as $name => $attrs) {
1075
-				if (isset($parameters[$name])) {
1076
-					$this->debug("in parametersMatchWrapped: have parameter named $name");
1077
-					$matches++;
1078
-				} else {
1079
-					$this->debug("in parametersMatchWrapped: do not have parameter named $name");
1080
-				}
1081
-				$elements++;
1082
-			}
1070
+        // see whether the parameter names match the elements
1071
+        if (isset($typeDef['elements']) && is_array($typeDef['elements'])) {
1072
+            $elements = 0;
1073
+            $matches = 0;
1074
+            foreach ($typeDef['elements'] as $name => $attrs) {
1075
+                if (isset($parameters[$name])) {
1076
+                    $this->debug("in parametersMatchWrapped: have parameter named $name");
1077
+                    $matches++;
1078
+                } else {
1079
+                    $this->debug("in parametersMatchWrapped: do not have parameter named $name");
1080
+                }
1081
+                $elements++;
1082
+            }
1083 1083
 
1084
-			$this->debug("in parametersMatchWrapped: $matches parameter names match $elements wrapped parameter names");
1085
-			if ($matches == 0) {
1086
-				return false;
1087
-			}
1088
-			return true;
1089
-		}
1084
+            $this->debug("in parametersMatchWrapped: $matches parameter names match $elements wrapped parameter names");
1085
+            if ($matches == 0) {
1086
+                return false;
1087
+            }
1088
+            return true;
1089
+        }
1090 1090
 
1091
-		// since there are no elements for the type, if the user passed no
1092
-		// parameters, the parameters match wrapped.
1093
-		$this->debug("in parametersMatchWrapped: no elements type $ns:$uqType");
1094
-		return count($parameters) == 0;
1095
-	}
1091
+        // since there are no elements for the type, if the user passed no
1092
+        // parameters, the parameters match wrapped.
1093
+        $this->debug("in parametersMatchWrapped: no elements type $ns:$uqType");
1094
+        return count($parameters) == 0;
1095
+    }
1096 1096
 
1097
-	/**
1098
-	 * serialize PHP values according to a WSDL message definition
1099
-	 * contrary to the method name, this is not limited to RPC
1100
-	 *
1101
-	 * TODO
1102
-	 * - multi-ref serialization
1103
-	 * - validate PHP values against type definitions, return errors if invalid
1104
-	 *
1105
-	 * @param string $operation operation name
1106
-	 * @param string $direction (input|output)
1107
-	 * @param mixed $parameters parameter value(s)
1108
-	 * @param string $bindingType (soap|soap12)
1109
-	 * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1110
-	 * @access public
1111
-	 */
1112
-	function serializeRPCParameters($operation, $direction, $parameters, $bindingType = 'soap') {
1113
-		$this->debug("in serializeRPCParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion, bindingType=$bindingType");
1114
-		$this->appendDebug('parameters=' . $this->varDump($parameters));
1097
+    /**
1098
+     * serialize PHP values according to a WSDL message definition
1099
+     * contrary to the method name, this is not limited to RPC
1100
+     *
1101
+     * TODO
1102
+     * - multi-ref serialization
1103
+     * - validate PHP values against type definitions, return errors if invalid
1104
+     *
1105
+     * @param string $operation operation name
1106
+     * @param string $direction (input|output)
1107
+     * @param mixed $parameters parameter value(s)
1108
+     * @param string $bindingType (soap|soap12)
1109
+     * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1110
+     * @access public
1111
+     */
1112
+    function serializeRPCParameters($operation, $direction, $parameters, $bindingType = 'soap') {
1113
+        $this->debug("in serializeRPCParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion, bindingType=$bindingType");
1114
+        $this->appendDebug('parameters=' . $this->varDump($parameters));
1115 1115
 
1116
-		if ($direction != 'input' && $direction != 'output') {
1117
-			$this->debug('The value of the \$direction argument needs to be either "input" or "output"');
1118
-			$this->setError('The value of the \$direction argument needs to be either "input" or "output"');
1119
-			return false;
1120
-		}
1121
-		if (!$opData = $this->getOperationData($operation, $bindingType)) {
1122
-			$this->debug('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1123
-			$this->setError('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1124
-			return false;
1125
-		}
1126
-		$this->debug('in serializeRPCParameters: opData:');
1127
-		$this->appendDebug($this->varDump($opData));
1116
+        if ($direction != 'input' && $direction != 'output') {
1117
+            $this->debug('The value of the \$direction argument needs to be either "input" or "output"');
1118
+            $this->setError('The value of the \$direction argument needs to be either "input" or "output"');
1119
+            return false;
1120
+        }
1121
+        if (!$opData = $this->getOperationData($operation, $bindingType)) {
1122
+            $this->debug('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1123
+            $this->setError('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1124
+            return false;
1125
+        }
1126
+        $this->debug('in serializeRPCParameters: opData:');
1127
+        $this->appendDebug($this->varDump($opData));
1128 1128
 
1129
-		// Get encoding style for output and set to current
1130
-		$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1131
-		if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1132
-			$encodingStyle = $opData['output']['encodingStyle'];
1133
-			$enc_style = $encodingStyle;
1134
-		}
1129
+        // Get encoding style for output and set to current
1130
+        $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1131
+        if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1132
+            $encodingStyle = $opData['output']['encodingStyle'];
1133
+            $enc_style = $encodingStyle;
1134
+        }
1135 1135
 
1136
-		// set input params
1137
-		$xml = '';
1138
-		if (isset($opData[$direction]['parts']) && sizeof($opData[$direction]['parts']) > 0) {
1139
-			$parts = &$opData[$direction]['parts'];
1140
-			$part_count = sizeof($parts);
1141
-			$style = $opData['style'];
1142
-			$use = $opData[$direction]['use'];
1143
-			$this->debug("have $part_count part(s) to serialize using $style/$use");
1144
-			if (is_array($parameters)) {
1145
-				$parametersArrayType = $this->isArraySimpleOrStruct($parameters);
1146
-				$parameter_count = count($parameters);
1147
-				$this->debug("have $parameter_count parameter(s) provided as $parametersArrayType to serialize");
1148
-				// check for Microsoft-style wrapped parameters
1149
-				if ($style == 'document' && $use == 'literal' && $part_count == 1 && isset($parts['parameters'])) {
1150
-					$this->debug('check whether the caller has wrapped the parameters');
1151
-					if ($direction == 'output' && $parametersArrayType == 'arraySimple' && $parameter_count == 1) {
1152
-						// TODO: consider checking here for double-wrapping, when
1153
-						// service function wraps, then NuSOAP wraps again
1154
-						$this->debug("change simple array to associative with 'parameters' element");
1155
-						$parameters['parameters'] = $parameters[0];
1156
-						unset($parameters[0]);
1157
-					}
1158
-					if (($parametersArrayType == 'arrayStruct' || $parameter_count == 0) && !isset($parameters['parameters'])) {
1159
-						$this->debug('check whether caller\'s parameters match the wrapped ones');
1160
-						if ($this->parametersMatchWrapped($parts['parameters'], $parameters)) {
1161
-							$this->debug('wrap the parameters for the caller');
1162
-							$parameters = array('parameters' => $parameters);
1163
-							$parameter_count = 1;
1164
-						}
1165
-					}
1166
-				}
1167
-				foreach ($parts as $name => $type) {
1168
-					$this->debug("serializing part $name of type $type");
1169
-					// Track encoding style
1170
-					if (isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1171
-						$encodingStyle = $opData[$direction]['encodingStyle'];
1172
-						$enc_style = $encodingStyle;
1173
-					} else {
1174
-						$enc_style = false;
1175
-					}
1176
-					// NOTE: add error handling here
1177
-					// if serializeType returns false, then catch global error and fault
1178
-					if ($parametersArrayType == 'arraySimple') {
1179
-						$p = array_shift($parameters);
1180
-						$this->debug('calling serializeType w/indexed param');
1181
-						$xml .= $this->serializeType($name, $type, $p, $use, $enc_style);
1182
-					} elseif (isset($parameters[$name])) {
1183
-						$this->debug('calling serializeType w/named param');
1184
-						$xml .= $this->serializeType($name, $type, $parameters[$name], $use, $enc_style);
1185
-					} else {
1186
-						// TODO: only send nillable
1187
-						$this->debug('calling serializeType w/null param');
1188
-						$xml .= $this->serializeType($name, $type, null, $use, $enc_style);
1189
-					}
1190
-				}
1191
-			} else {
1192
-				$this->debug('no parameters passed.');
1193
-			}
1194
-		}
1195
-		$this->debug("serializeRPCParameters returning: $xml");
1196
-		return $xml;
1197
-	}
1136
+        // set input params
1137
+        $xml = '';
1138
+        if (isset($opData[$direction]['parts']) && sizeof($opData[$direction]['parts']) > 0) {
1139
+            $parts = &$opData[$direction]['parts'];
1140
+            $part_count = sizeof($parts);
1141
+            $style = $opData['style'];
1142
+            $use = $opData[$direction]['use'];
1143
+            $this->debug("have $part_count part(s) to serialize using $style/$use");
1144
+            if (is_array($parameters)) {
1145
+                $parametersArrayType = $this->isArraySimpleOrStruct($parameters);
1146
+                $parameter_count = count($parameters);
1147
+                $this->debug("have $parameter_count parameter(s) provided as $parametersArrayType to serialize");
1148
+                // check for Microsoft-style wrapped parameters
1149
+                if ($style == 'document' && $use == 'literal' && $part_count == 1 && isset($parts['parameters'])) {
1150
+                    $this->debug('check whether the caller has wrapped the parameters');
1151
+                    if ($direction == 'output' && $parametersArrayType == 'arraySimple' && $parameter_count == 1) {
1152
+                        // TODO: consider checking here for double-wrapping, when
1153
+                        // service function wraps, then NuSOAP wraps again
1154
+                        $this->debug("change simple array to associative with 'parameters' element");
1155
+                        $parameters['parameters'] = $parameters[0];
1156
+                        unset($parameters[0]);
1157
+                    }
1158
+                    if (($parametersArrayType == 'arrayStruct' || $parameter_count == 0) && !isset($parameters['parameters'])) {
1159
+                        $this->debug('check whether caller\'s parameters match the wrapped ones');
1160
+                        if ($this->parametersMatchWrapped($parts['parameters'], $parameters)) {
1161
+                            $this->debug('wrap the parameters for the caller');
1162
+                            $parameters = array('parameters' => $parameters);
1163
+                            $parameter_count = 1;
1164
+                        }
1165
+                    }
1166
+                }
1167
+                foreach ($parts as $name => $type) {
1168
+                    $this->debug("serializing part $name of type $type");
1169
+                    // Track encoding style
1170
+                    if (isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1171
+                        $encodingStyle = $opData[$direction]['encodingStyle'];
1172
+                        $enc_style = $encodingStyle;
1173
+                    } else {
1174
+                        $enc_style = false;
1175
+                    }
1176
+                    // NOTE: add error handling here
1177
+                    // if serializeType returns false, then catch global error and fault
1178
+                    if ($parametersArrayType == 'arraySimple') {
1179
+                        $p = array_shift($parameters);
1180
+                        $this->debug('calling serializeType w/indexed param');
1181
+                        $xml .= $this->serializeType($name, $type, $p, $use, $enc_style);
1182
+                    } elseif (isset($parameters[$name])) {
1183
+                        $this->debug('calling serializeType w/named param');
1184
+                        $xml .= $this->serializeType($name, $type, $parameters[$name], $use, $enc_style);
1185
+                    } else {
1186
+                        // TODO: only send nillable
1187
+                        $this->debug('calling serializeType w/null param');
1188
+                        $xml .= $this->serializeType($name, $type, null, $use, $enc_style);
1189
+                    }
1190
+                }
1191
+            } else {
1192
+                $this->debug('no parameters passed.');
1193
+            }
1194
+        }
1195
+        $this->debug("serializeRPCParameters returning: $xml");
1196
+        return $xml;
1197
+    }
1198 1198
 
1199
-	/**
1200
-	 * serialize a PHP value according to a WSDL message definition
1201
-	 *
1202
-	 * TODO
1203
-	 * - multi-ref serialization
1204
-	 * - validate PHP values against type definitions, return errors if invalid
1205
-	 *
1206
-	 * @param string $operation operation name
1207
-	 * @param string $direction (input|output)
1208
-	 * @param mixed $parameters parameter value(s)
1209
-	 * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1210
-	 * @access public
1211
-	 * @deprecated
1212
-	 */
1213
-	function serializeParameters($operation, $direction, $parameters)
1214
-	{
1215
-		$this->debug("in serializeParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion");
1216
-		$this->appendDebug('parameters=' . $this->varDump($parameters));
1199
+    /**
1200
+     * serialize a PHP value according to a WSDL message definition
1201
+     *
1202
+     * TODO
1203
+     * - multi-ref serialization
1204
+     * - validate PHP values against type definitions, return errors if invalid
1205
+     *
1206
+     * @param string $operation operation name
1207
+     * @param string $direction (input|output)
1208
+     * @param mixed $parameters parameter value(s)
1209
+     * @return mixed parameters serialized as XML or false on error (e.g. operation not found)
1210
+     * @access public
1211
+     * @deprecated
1212
+     */
1213
+    function serializeParameters($operation, $direction, $parameters)
1214
+    {
1215
+        $this->debug("in serializeParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion");
1216
+        $this->appendDebug('parameters=' . $this->varDump($parameters));
1217 1217
 
1218
-		if ($direction != 'input' && $direction != 'output') {
1219
-			$this->debug('The value of the \$direction argument needs to be either "input" or "output"');
1220
-			$this->setError('The value of the \$direction argument needs to be either "input" or "output"');
1221
-			return false;
1222
-		}
1223
-		if (!$opData = $this->getOperationData($operation)) {
1224
-			$this->debug('Unable to retrieve WSDL data for operation: ' . $operation);
1225
-			$this->setError('Unable to retrieve WSDL data for operation: ' . $operation);
1226
-			return false;
1227
-		}
1228
-		$this->debug('opData:');
1229
-		$this->appendDebug($this->varDump($opData));
1218
+        if ($direction != 'input' && $direction != 'output') {
1219
+            $this->debug('The value of the \$direction argument needs to be either "input" or "output"');
1220
+            $this->setError('The value of the \$direction argument needs to be either "input" or "output"');
1221
+            return false;
1222
+        }
1223
+        if (!$opData = $this->getOperationData($operation)) {
1224
+            $this->debug('Unable to retrieve WSDL data for operation: ' . $operation);
1225
+            $this->setError('Unable to retrieve WSDL data for operation: ' . $operation);
1226
+            return false;
1227
+        }
1228
+        $this->debug('opData:');
1229
+        $this->appendDebug($this->varDump($opData));
1230 1230
 
1231
-		// Get encoding style for output and set to current
1232
-		$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1233
-		if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1234
-			$encodingStyle = $opData['output']['encodingStyle'];
1235
-			$enc_style = $encodingStyle;
1236
-		}
1231
+        // Get encoding style for output and set to current
1232
+        $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1233
+        if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1234
+            $encodingStyle = $opData['output']['encodingStyle'];
1235
+            $enc_style = $encodingStyle;
1236
+        }
1237 1237
 
1238
-		// set input params
1239
-		$xml = '';
1240
-		if (isset($opData[$direction]['parts']) && sizeof($opData[$direction]['parts']) > 0) {
1238
+        // set input params
1239
+        $xml = '';
1240
+        if (isset($opData[$direction]['parts']) && sizeof($opData[$direction]['parts']) > 0) {
1241 1241
 
1242
-			$use = $opData[$direction]['use'];
1243
-			$this->debug("use=$use");
1244
-			$this->debug('got ' . count($opData[$direction]['parts']) . ' part(s)');
1245
-			if (is_array($parameters)) {
1246
-				$parametersArrayType = $this->isArraySimpleOrStruct($parameters);
1247
-				$this->debug('have ' . $parametersArrayType . ' parameters');
1248
-				foreach($opData[$direction]['parts'] as $name => $type) {
1249
-					$this->debug('serializing part "'.$name.'" of type "'.$type.'"');
1250
-					// Track encoding style
1251
-					if(isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1252
-						$encodingStyle = $opData[$direction]['encodingStyle'];
1253
-						$enc_style = $encodingStyle;
1254
-					} else {
1255
-						$enc_style = false;
1256
-					}
1257
-					// NOTE: add error handling here
1258
-					// if serializeType returns false, then catch global error and fault
1259
-					if ($parametersArrayType == 'arraySimple') {
1260
-						$p = array_shift($parameters);
1261
-						$this->debug('calling serializeType w/indexed param');
1262
-						$xml .= $this->serializeType($name, $type, $p, $use, $enc_style);
1263
-					} elseif (isset($parameters[$name])) {
1264
-						$this->debug('calling serializeType w/named param');
1265
-						$xml .= $this->serializeType($name, $type, $parameters[$name], $use, $enc_style);
1266
-					} else {
1267
-						// TODO: only send nillable
1268
-						$this->debug('calling serializeType w/null param');
1269
-						$xml .= $this->serializeType($name, $type, null, $use, $enc_style);
1270
-					}
1271
-				}
1272
-			} else {
1273
-				$this->debug('no parameters passed.');
1274
-			}
1275
-		}
1276
-		$this->debug("serializeParameters returning: $xml");
1277
-		return $xml;
1278
-	}
1242
+            $use = $opData[$direction]['use'];
1243
+            $this->debug("use=$use");
1244
+            $this->debug('got ' . count($opData[$direction]['parts']) . ' part(s)');
1245
+            if (is_array($parameters)) {
1246
+                $parametersArrayType = $this->isArraySimpleOrStruct($parameters);
1247
+                $this->debug('have ' . $parametersArrayType . ' parameters');
1248
+                foreach($opData[$direction]['parts'] as $name => $type) {
1249
+                    $this->debug('serializing part "'.$name.'" of type "'.$type.'"');
1250
+                    // Track encoding style
1251
+                    if(isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1252
+                        $encodingStyle = $opData[$direction]['encodingStyle'];
1253
+                        $enc_style = $encodingStyle;
1254
+                    } else {
1255
+                        $enc_style = false;
1256
+                    }
1257
+                    // NOTE: add error handling here
1258
+                    // if serializeType returns false, then catch global error and fault
1259
+                    if ($parametersArrayType == 'arraySimple') {
1260
+                        $p = array_shift($parameters);
1261
+                        $this->debug('calling serializeType w/indexed param');
1262
+                        $xml .= $this->serializeType($name, $type, $p, $use, $enc_style);
1263
+                    } elseif (isset($parameters[$name])) {
1264
+                        $this->debug('calling serializeType w/named param');
1265
+                        $xml .= $this->serializeType($name, $type, $parameters[$name], $use, $enc_style);
1266
+                    } else {
1267
+                        // TODO: only send nillable
1268
+                        $this->debug('calling serializeType w/null param');
1269
+                        $xml .= $this->serializeType($name, $type, null, $use, $enc_style);
1270
+                    }
1271
+                }
1272
+            } else {
1273
+                $this->debug('no parameters passed.');
1274
+            }
1275
+        }
1276
+        $this->debug("serializeParameters returning: $xml");
1277
+        return $xml;
1278
+    }
1279 1279
 
1280
-	/**
1281
-	 * serializes a PHP value according a given type definition
1282
-	 *
1283
-	 * @param string $name name of value (part or element)
1284
-	 * @param string $type XML schema type of value (type or element)
1285
-	 * @param mixed $value a native PHP value (parameter value)
1286
-	 * @param string $use use for part (encoded|literal)
1287
-	 * @param string $encodingStyle SOAP encoding style for the value (if different than the enclosing style)
1288
-	 * @param boolean $unqualified a kludge for what should be XML namespace form handling
1289
-	 * @return string value serialized as an XML string
1290
-	 * @access private
1291
-	 */
1292
-	function serializeType($name, $type, $value, $use='encoded', $encodingStyle=false, $unqualified=false)
1293
-	{
1294
-		$this->debug("in serializeType: name=$name, type=$type, use=$use, encodingStyle=$encodingStyle, unqualified=" . ($unqualified ? "unqualified" : "qualified"));
1295
-		$this->appendDebug("value=" . $this->varDump($value));
1296
-		if($use == 'encoded' && $encodingStyle) {
1297
-			$encodingStyle = ' SOAP-ENV:encodingStyle="' . $encodingStyle . '"';
1298
-		}
1280
+    /**
1281
+     * serializes a PHP value according a given type definition
1282
+     *
1283
+     * @param string $name name of value (part or element)
1284
+     * @param string $type XML schema type of value (type or element)
1285
+     * @param mixed $value a native PHP value (parameter value)
1286
+     * @param string $use use for part (encoded|literal)
1287
+     * @param string $encodingStyle SOAP encoding style for the value (if different than the enclosing style)
1288
+     * @param boolean $unqualified a kludge for what should be XML namespace form handling
1289
+     * @return string value serialized as an XML string
1290
+     * @access private
1291
+     */
1292
+    function serializeType($name, $type, $value, $use='encoded', $encodingStyle=false, $unqualified=false)
1293
+    {
1294
+        $this->debug("in serializeType: name=$name, type=$type, use=$use, encodingStyle=$encodingStyle, unqualified=" . ($unqualified ? "unqualified" : "qualified"));
1295
+        $this->appendDebug("value=" . $this->varDump($value));
1296
+        if($use == 'encoded' && $encodingStyle) {
1297
+            $encodingStyle = ' SOAP-ENV:encodingStyle="' . $encodingStyle . '"';
1298
+        }
1299 1299
 
1300
-		// if a soapval has been supplied, let its type override the WSDL
1301
-    	if (is_object($value) && get_class($value) == 'soapval') {
1302
-    		if ($value->type_ns) {
1303
-    			$type = $value->type_ns . ':' . $value->type;
1304
-		    	$forceType = true;
1305
-		    	$this->debug("in serializeType: soapval overrides type to $type");
1306
-    		} elseif ($value->type) {
1307
-	    		$type = $value->type;
1308
-		    	$forceType = true;
1309
-		    	$this->debug("in serializeType: soapval overrides type to $type");
1310
-	    	} else {
1311
-	    		$forceType = false;
1312
-		    	$this->debug("in serializeType: soapval does not override type");
1313
-	    	}
1314
-	    	$attrs = $value->attributes;
1315
-	    	$value = $value->value;
1316
-	    	$this->debug("in serializeType: soapval overrides value to $value");
1317
-	    	if ($attrs) {
1318
-	    		if (!is_array($value)) {
1319
-	    			$value['!'] = $value;
1320
-	    		}
1321
-	    		foreach ($attrs as $n => $v) {
1322
-	    			$value['!' . $n] = $v;
1323
-	    		}
1324
-		    	$this->debug("in serializeType: soapval provides attributes");
1325
-		    }
1300
+        // if a soapval has been supplied, let its type override the WSDL
1301
+        if (is_object($value) && get_class($value) == 'soapval') {
1302
+            if ($value->type_ns) {
1303
+                $type = $value->type_ns . ':' . $value->type;
1304
+                $forceType = true;
1305
+                $this->debug("in serializeType: soapval overrides type to $type");
1306
+            } elseif ($value->type) {
1307
+                $type = $value->type;
1308
+                $forceType = true;
1309
+                $this->debug("in serializeType: soapval overrides type to $type");
1310
+            } else {
1311
+                $forceType = false;
1312
+                $this->debug("in serializeType: soapval does not override type");
1313
+            }
1314
+            $attrs = $value->attributes;
1315
+            $value = $value->value;
1316
+            $this->debug("in serializeType: soapval overrides value to $value");
1317
+            if ($attrs) {
1318
+                if (!is_array($value)) {
1319
+                    $value['!'] = $value;
1320
+                }
1321
+                foreach ($attrs as $n => $v) {
1322
+                    $value['!' . $n] = $v;
1323
+                }
1324
+                $this->debug("in serializeType: soapval provides attributes");
1325
+            }
1326 1326
         } else {
1327
-        	$forceType = false;
1327
+            $forceType = false;
1328 1328
         }
1329 1329
 
1330
-		$xml = '';
1331
-		if (strpos($type, ':')) {
1332
-			$uqType = substr($type, strrpos($type, ':') + 1);
1333
-			$ns = substr($type, 0, strrpos($type, ':'));
1334
-			$this->debug("in serializeType: got a prefixed type: $uqType, $ns");
1335
-			if ($this->getNamespaceFromPrefix($ns)) {
1336
-				$ns = $this->getNamespaceFromPrefix($ns);
1337
-				$this->debug("in serializeType: expanded prefixed type: $uqType, $ns");
1338
-			}
1330
+        $xml = '';
1331
+        if (strpos($type, ':')) {
1332
+            $uqType = substr($type, strrpos($type, ':') + 1);
1333
+            $ns = substr($type, 0, strrpos($type, ':'));
1334
+            $this->debug("in serializeType: got a prefixed type: $uqType, $ns");
1335
+            if ($this->getNamespaceFromPrefix($ns)) {
1336
+                $ns = $this->getNamespaceFromPrefix($ns);
1337
+                $this->debug("in serializeType: expanded prefixed type: $uqType, $ns");
1338
+            }
1339 1339
 
1340
-			if($ns == $this->XMLSchemaVersion || $ns == 'http://schemas.xmlsoap.org/soap/encoding/'){
1341
-				$this->debug('in serializeType: type namespace indicates XML Schema or SOAP Encoding type');
1342
-				if ($unqualified && $use == 'literal') {
1343
-					$elementNS = " xmlns=\"\"";
1344
-				} else {
1345
-					$elementNS = '';
1346
-				}
1347
-				if (is_null($value)) {
1348
-					if ($use == 'literal') {
1349
-						// TODO: depends on minOccurs
1350
-						$xml = "<$name$elementNS/>";
1351
-					} else {
1352
-						// TODO: depends on nillable, which should be checked before calling this method
1353
-						$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1354
-					}
1355
-					$this->debug("in serializeType: returning: $xml");
1356
-					return $xml;
1357
-				}
1358
-				if ($uqType == 'Array') {
1359
-					// JBoss/Axis does this sometimes
1360
-					return $this->serialize_val($value, $name, false, false, false, false, $use);
1361
-				}
1362
-		    	if ($uqType == 'boolean') {
1363
-		    		if ((is_string($value) && $value == 'false') || (! $value)) {
1364
-						$value = 'false';
1365
-					} else {
1366
-						$value = 'true';
1367
-					}
1368
-				}
1369
-				if ($uqType == 'string' && gettype($value) == 'string') {
1370
-					$value = $this->expandEntities($value);
1371
-				}
1372
-				if (($uqType == 'long' || $uqType == 'unsignedLong') && gettype($value) == 'double') {
1373
-					$value = sprintf("%.0lf", $value);
1374
-				}
1375
-				// it's a scalar
1376
-				// TODO: what about null/nil values?
1377
-				// check type isn't a custom type extending xmlschema namespace
1378
-				if (!$this->getTypeDef($uqType, $ns)) {
1379
-					if ($use == 'literal') {
1380
-						if ($forceType) {
1381
-							$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1382
-						} else {
1383
-							$xml = "<$name$elementNS>$value</$name>";
1384
-						}
1385
-					} else {
1386
-						$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1387
-					}
1388
-					$this->debug("in serializeType: returning: $xml");
1389
-					return $xml;
1390
-				}
1391
-				$this->debug('custom type extends XML Schema or SOAP Encoding namespace (yuck)');
1392
-			} else if ($ns == 'http://xml.apache.org/xml-soap') {
1393
-				$this->debug('in serializeType: appears to be Apache SOAP type');
1394
-				if ($uqType == 'Map') {
1395
-					$tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1396
-					if (! $tt_prefix) {
1397
-						$this->debug('in serializeType: Add namespace for Apache SOAP type');
1398
-						$tt_prefix = 'ns' . rand(1000, 9999);
1399
-						$this->namespaces[$tt_prefix] = 'http://xml.apache.org/xml-soap';
1400
-						// force this to be added to usedNamespaces
1401
-						$tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1402
-					}
1403
-					$contents = '';
1404
-					foreach($value as $k => $v) {
1405
-						$this->debug("serializing map element: key $k, value $v");
1406
-						$contents .= '<item>';
1407
-						$contents .= $this->serialize_val($k,'key',false,false,false,false,$use);
1408
-						$contents .= $this->serialize_val($v,'value',false,false,false,false,$use);
1409
-						$contents .= '</item>';
1410
-					}
1411
-					if ($use == 'literal') {
1412
-						if ($forceType) {
1413
-							$xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\">$contents</$name>";
1414
-						} else {
1415
-							$xml = "<$name>$contents</$name>";
1416
-						}
1417
-					} else {
1418
-						$xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\"$encodingStyle>$contents</$name>";
1419
-					}
1420
-					$this->debug("in serializeType: returning: $xml");
1421
-					return $xml;
1422
-				}
1423
-				$this->debug('in serializeType: Apache SOAP type, but only support Map');
1424
-			}
1425
-		} else {
1426
-			// TODO: should the type be compared to types in XSD, and the namespace
1427
-			// set to XSD if the type matches?
1428
-			$this->debug("in serializeType: No namespace for type $type");
1429
-			$ns = '';
1430
-			$uqType = $type;
1431
-		}
1432
-		if(!$typeDef = $this->getTypeDef($uqType, $ns)){
1433
-			$this->setError("$type ($uqType) is not a supported type.");
1434
-			$this->debug("in serializeType: $type ($uqType) is not a supported type.");
1435
-			return false;
1436
-		} else {
1437
-			$this->debug("in serializeType: found typeDef");
1438
-			$this->appendDebug('typeDef=' . $this->varDump($typeDef));
1439
-			if (substr($uqType, -1) == '^') {
1440
-				$uqType = substr($uqType, 0, -1);
1441
-			}
1442
-		}
1443
-		if (!isset($typeDef['phpType'])) {
1444
-			$this->setError("$type ($uqType) has no phpType.");
1445
-			$this->debug("in serializeType: $type ($uqType) has no phpType.");
1446
-			return false;
1447
-		}
1448
-		$phpType = $typeDef['phpType'];
1449
-		$this->debug("in serializeType: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: " . (isset($typeDef['arrayType']) ? $typeDef['arrayType'] : '') );
1450
-		// if php type == struct, map value to the <all> element names
1451
-		if ($phpType == 'struct') {
1452
-			if (isset($typeDef['typeClass']) && $typeDef['typeClass'] == 'element') {
1453
-				$elementName = $uqType;
1454
-				if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1455
-					$elementNS = " xmlns=\"$ns\"";
1456
-				} else {
1457
-					$elementNS = " xmlns=\"\"";
1458
-				}
1459
-			} else {
1460
-				$elementName = $name;
1461
-				if ($unqualified) {
1462
-					$elementNS = " xmlns=\"\"";
1463
-				} else {
1464
-					$elementNS = '';
1465
-				}
1466
-			}
1467
-			if (is_null($value)) {
1468
-				if ($use == 'literal') {
1469
-					// TODO: depends on minOccurs and nillable
1470
-					$xml = "<$elementName$elementNS/>";
1471
-				} else {
1472
-					$xml = "<$elementName$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1473
-				}
1474
-				$this->debug("in serializeType: returning: $xml");
1475
-				return $xml;
1476
-			}
1477
-			if (is_object($value)) {
1478
-				$value = get_object_vars($value);
1479
-			}
1480
-			if (is_array($value)) {
1481
-				$elementAttrs = $this->serializeComplexTypeAttributes($typeDef, $value, $ns, $uqType);
1482
-				if ($use == 'literal') {
1483
-					if ($forceType) {
1484
-						$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">";
1485
-					} else {
1486
-						$xml = "<$elementName$elementNS$elementAttrs>";
1487
-					}
1488
-				} else {
1489
-					$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>";
1490
-				}
1340
+            if($ns == $this->XMLSchemaVersion || $ns == 'http://schemas.xmlsoap.org/soap/encoding/'){
1341
+                $this->debug('in serializeType: type namespace indicates XML Schema or SOAP Encoding type');
1342
+                if ($unqualified && $use == 'literal') {
1343
+                    $elementNS = " xmlns=\"\"";
1344
+                } else {
1345
+                    $elementNS = '';
1346
+                }
1347
+                if (is_null($value)) {
1348
+                    if ($use == 'literal') {
1349
+                        // TODO: depends on minOccurs
1350
+                        $xml = "<$name$elementNS/>";
1351
+                    } else {
1352
+                        // TODO: depends on nillable, which should be checked before calling this method
1353
+                        $xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1354
+                    }
1355
+                    $this->debug("in serializeType: returning: $xml");
1356
+                    return $xml;
1357
+                }
1358
+                if ($uqType == 'Array') {
1359
+                    // JBoss/Axis does this sometimes
1360
+                    return $this->serialize_val($value, $name, false, false, false, false, $use);
1361
+                }
1362
+                if ($uqType == 'boolean') {
1363
+                    if ((is_string($value) && $value == 'false') || (! $value)) {
1364
+                        $value = 'false';
1365
+                    } else {
1366
+                        $value = 'true';
1367
+                    }
1368
+                }
1369
+                if ($uqType == 'string' && gettype($value) == 'string') {
1370
+                    $value = $this->expandEntities($value);
1371
+                }
1372
+                if (($uqType == 'long' || $uqType == 'unsignedLong') && gettype($value) == 'double') {
1373
+                    $value = sprintf("%.0lf", $value);
1374
+                }
1375
+                // it's a scalar
1376
+                // TODO: what about null/nil values?
1377
+                // check type isn't a custom type extending xmlschema namespace
1378
+                if (!$this->getTypeDef($uqType, $ns)) {
1379
+                    if ($use == 'literal') {
1380
+                        if ($forceType) {
1381
+                            $xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1382
+                        } else {
1383
+                            $xml = "<$name$elementNS>$value</$name>";
1384
+                        }
1385
+                    } else {
1386
+                        $xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1387
+                    }
1388
+                    $this->debug("in serializeType: returning: $xml");
1389
+                    return $xml;
1390
+                }
1391
+                $this->debug('custom type extends XML Schema or SOAP Encoding namespace (yuck)');
1392
+            } else if ($ns == 'http://xml.apache.org/xml-soap') {
1393
+                $this->debug('in serializeType: appears to be Apache SOAP type');
1394
+                if ($uqType == 'Map') {
1395
+                    $tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1396
+                    if (! $tt_prefix) {
1397
+                        $this->debug('in serializeType: Add namespace for Apache SOAP type');
1398
+                        $tt_prefix = 'ns' . rand(1000, 9999);
1399
+                        $this->namespaces[$tt_prefix] = 'http://xml.apache.org/xml-soap';
1400
+                        // force this to be added to usedNamespaces
1401
+                        $tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1402
+                    }
1403
+                    $contents = '';
1404
+                    foreach($value as $k => $v) {
1405
+                        $this->debug("serializing map element: key $k, value $v");
1406
+                        $contents .= '<item>';
1407
+                        $contents .= $this->serialize_val($k,'key',false,false,false,false,$use);
1408
+                        $contents .= $this->serialize_val($v,'value',false,false,false,false,$use);
1409
+                        $contents .= '</item>';
1410
+                    }
1411
+                    if ($use == 'literal') {
1412
+                        if ($forceType) {
1413
+                            $xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\">$contents</$name>";
1414
+                        } else {
1415
+                            $xml = "<$name>$contents</$name>";
1416
+                        }
1417
+                    } else {
1418
+                        $xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\"$encodingStyle>$contents</$name>";
1419
+                    }
1420
+                    $this->debug("in serializeType: returning: $xml");
1421
+                    return $xml;
1422
+                }
1423
+                $this->debug('in serializeType: Apache SOAP type, but only support Map');
1424
+            }
1425
+        } else {
1426
+            // TODO: should the type be compared to types in XSD, and the namespace
1427
+            // set to XSD if the type matches?
1428
+            $this->debug("in serializeType: No namespace for type $type");
1429
+            $ns = '';
1430
+            $uqType = $type;
1431
+        }
1432
+        if(!$typeDef = $this->getTypeDef($uqType, $ns)){
1433
+            $this->setError("$type ($uqType) is not a supported type.");
1434
+            $this->debug("in serializeType: $type ($uqType) is not a supported type.");
1435
+            return false;
1436
+        } else {
1437
+            $this->debug("in serializeType: found typeDef");
1438
+            $this->appendDebug('typeDef=' . $this->varDump($typeDef));
1439
+            if (substr($uqType, -1) == '^') {
1440
+                $uqType = substr($uqType, 0, -1);
1441
+            }
1442
+        }
1443
+        if (!isset($typeDef['phpType'])) {
1444
+            $this->setError("$type ($uqType) has no phpType.");
1445
+            $this->debug("in serializeType: $type ($uqType) has no phpType.");
1446
+            return false;
1447
+        }
1448
+        $phpType = $typeDef['phpType'];
1449
+        $this->debug("in serializeType: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: " . (isset($typeDef['arrayType']) ? $typeDef['arrayType'] : '') );
1450
+        // if php type == struct, map value to the <all> element names
1451
+        if ($phpType == 'struct') {
1452
+            if (isset($typeDef['typeClass']) && $typeDef['typeClass'] == 'element') {
1453
+                $elementName = $uqType;
1454
+                if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1455
+                    $elementNS = " xmlns=\"$ns\"";
1456
+                } else {
1457
+                    $elementNS = " xmlns=\"\"";
1458
+                }
1459
+            } else {
1460
+                $elementName = $name;
1461
+                if ($unqualified) {
1462
+                    $elementNS = " xmlns=\"\"";
1463
+                } else {
1464
+                    $elementNS = '';
1465
+                }
1466
+            }
1467
+            if (is_null($value)) {
1468
+                if ($use == 'literal') {
1469
+                    // TODO: depends on minOccurs and nillable
1470
+                    $xml = "<$elementName$elementNS/>";
1471
+                } else {
1472
+                    $xml = "<$elementName$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1473
+                }
1474
+                $this->debug("in serializeType: returning: $xml");
1475
+                return $xml;
1476
+            }
1477
+            if (is_object($value)) {
1478
+                $value = get_object_vars($value);
1479
+            }
1480
+            if (is_array($value)) {
1481
+                $elementAttrs = $this->serializeComplexTypeAttributes($typeDef, $value, $ns, $uqType);
1482
+                if ($use == 'literal') {
1483
+                    if ($forceType) {
1484
+                        $xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">";
1485
+                    } else {
1486
+                        $xml = "<$elementName$elementNS$elementAttrs>";
1487
+                    }
1488
+                } else {
1489
+                    $xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>";
1490
+                }
1491 1491
 
1492
-				if (isset($typeDef['simpleContent']) && $typeDef['simpleContent'] == 'true') {
1493
-					if (isset($value['!'])) {
1494
-						$xml .= $value['!'];
1495
-						$this->debug("in serializeType: serialized simpleContent for type $type");
1496
-					} else {
1497
-						$this->debug("in serializeType: no simpleContent to serialize for type $type");
1498
-					}
1499
-				} else {
1500
-					// complexContent
1501
-					$xml .= $this->serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use, $encodingStyle);
1502
-				}
1503
-				$xml .= "</$elementName>";
1504
-			} else {
1505
-				$this->debug("in serializeType: phpType is struct, but value is not an array");
1506
-				$this->setError("phpType is struct, but value is not an array: see debug output for details");
1507
-				$xml = '';
1508
-			}
1509
-		} elseif ($phpType == 'array') {
1510
-			if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1511
-				$elementNS = " xmlns=\"$ns\"";
1512
-			} else {
1513
-				if ($unqualified) {
1514
-					$elementNS = " xmlns=\"\"";
1515
-				} else {
1516
-					$elementNS = '';
1517
-				}
1518
-			}
1519
-			if (is_null($value)) {
1520
-				if ($use == 'literal') {
1521
-					// TODO: depends on minOccurs
1522
-					$xml = "<$name$elementNS/>";
1523
-				} else {
1524
-					$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" .
1525
-						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1526
-						":Array\" " .
1527
-						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1528
-						':arrayType="' .
1529
-						$this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType'])) .
1530
-						':' .
1531
-						$this->getLocalPart($typeDef['arrayType'])."[0]\"/>";
1532
-				}
1533
-				$this->debug("in serializeType: returning: $xml");
1534
-				return $xml;
1535
-			}
1536
-			if (isset($typeDef['multidimensional'])) {
1537
-				$nv = array();
1538
-				foreach($value as $v) {
1539
-					$cols = ',' . sizeof($v);
1540
-					$nv = array_merge($nv, $v);
1541
-				}
1542
-				$value = $nv;
1543
-			} else {
1544
-				$cols = '';
1545
-			}
1546
-			if (is_array($value) && sizeof($value) >= 1) {
1547
-				$rows = sizeof($value);
1548
-				$contents = '';
1549
-				foreach($value as $k => $v) {
1550
-					//$this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]");
1551
-					//if (strpos($typeDef['arrayType'], ':') ) {
1552
-					if (!in_array($typeDef['arrayType'],$this->typemap['http://www.w3.org/2001/XMLSchema'])) {
1553
-					    $contents .= $this->serializeType('item', $typeDef['arrayType'], $v, $use);
1554
-					} else {
1555
-					    $contents .= $this->serialize_val($v, 'item', $typeDef['arrayType'], null, $this->XMLSchemaVersion, false, $use);
1556
-					}
1557
-				}
1558
-			} else {
1559
-				$rows = 0;
1560
-				$contents = null;
1561
-			}
1562
-			// TODO: for now, an empty value will be serialized as a zero element
1563
-			// array.  Revisit this when coding the handling of null/nil values.
1564
-			if ($use == 'literal') {
1565
-				$xml = "<$name$elementNS>"
1566
-					.$contents
1567
-					."</$name>";
1568
-			} else {
1569
-				$xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/').':Array" '.
1570
-					$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/')
1571
-					.':arrayType="'
1572
-					.$this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType']))
1573
-					.":".$this->getLocalPart($typeDef['arrayType'])."[$rows$cols]\">"
1574
-					.$contents
1575
-					."</$name>";
1576
-			}
1577
-		} elseif ($phpType == 'scalar') {
1578
-			if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1579
-				$elementNS = " xmlns=\"$ns\"";
1580
-			} else {
1581
-				if ($unqualified) {
1582
-					$elementNS = " xmlns=\"\"";
1583
-				} else {
1584
-					$elementNS = '';
1585
-				}
1586
-			}
1587
-			if ($use == 'literal') {
1588
-				if ($forceType) {
1589
-					$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1590
-				} else {
1591
-					$xml = "<$name$elementNS>$value</$name>";
1592
-				}
1593
-			} else {
1594
-				$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1595
-			}
1596
-		}
1597
-		$this->debug("in serializeType: returning: $xml");
1598
-		return $xml;
1599
-	}
1492
+                if (isset($typeDef['simpleContent']) && $typeDef['simpleContent'] == 'true') {
1493
+                    if (isset($value['!'])) {
1494
+                        $xml .= $value['!'];
1495
+                        $this->debug("in serializeType: serialized simpleContent for type $type");
1496
+                    } else {
1497
+                        $this->debug("in serializeType: no simpleContent to serialize for type $type");
1498
+                    }
1499
+                } else {
1500
+                    // complexContent
1501
+                    $xml .= $this->serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use, $encodingStyle);
1502
+                }
1503
+                $xml .= "</$elementName>";
1504
+            } else {
1505
+                $this->debug("in serializeType: phpType is struct, but value is not an array");
1506
+                $this->setError("phpType is struct, but value is not an array: see debug output for details");
1507
+                $xml = '';
1508
+            }
1509
+        } elseif ($phpType == 'array') {
1510
+            if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1511
+                $elementNS = " xmlns=\"$ns\"";
1512
+            } else {
1513
+                if ($unqualified) {
1514
+                    $elementNS = " xmlns=\"\"";
1515
+                } else {
1516
+                    $elementNS = '';
1517
+                }
1518
+            }
1519
+            if (is_null($value)) {
1520
+                if ($use == 'literal') {
1521
+                    // TODO: depends on minOccurs
1522
+                    $xml = "<$name$elementNS/>";
1523
+                } else {
1524
+                    $xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" .
1525
+                        $this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1526
+                        ":Array\" " .
1527
+                        $this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1528
+                        ':arrayType="' .
1529
+                        $this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType'])) .
1530
+                        ':' .
1531
+                        $this->getLocalPart($typeDef['arrayType'])."[0]\"/>";
1532
+                }
1533
+                $this->debug("in serializeType: returning: $xml");
1534
+                return $xml;
1535
+            }
1536
+            if (isset($typeDef['multidimensional'])) {
1537
+                $nv = array();
1538
+                foreach($value as $v) {
1539
+                    $cols = ',' . sizeof($v);
1540
+                    $nv = array_merge($nv, $v);
1541
+                }
1542
+                $value = $nv;
1543
+            } else {
1544
+                $cols = '';
1545
+            }
1546
+            if (is_array($value) && sizeof($value) >= 1) {
1547
+                $rows = sizeof($value);
1548
+                $contents = '';
1549
+                foreach($value as $k => $v) {
1550
+                    //$this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]");
1551
+                    //if (strpos($typeDef['arrayType'], ':') ) {
1552
+                    if (!in_array($typeDef['arrayType'],$this->typemap['http://www.w3.org/2001/XMLSchema'])) {
1553
+                        $contents .= $this->serializeType('item', $typeDef['arrayType'], $v, $use);
1554
+                    } else {
1555
+                        $contents .= $this->serialize_val($v, 'item', $typeDef['arrayType'], null, $this->XMLSchemaVersion, false, $use);
1556
+                    }
1557
+                }
1558
+            } else {
1559
+                $rows = 0;
1560
+                $contents = null;
1561
+            }
1562
+            // TODO: for now, an empty value will be serialized as a zero element
1563
+            // array.  Revisit this when coding the handling of null/nil values.
1564
+            if ($use == 'literal') {
1565
+                $xml = "<$name$elementNS>"
1566
+                    .$contents
1567
+                    ."</$name>";
1568
+            } else {
1569
+                $xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/').':Array" '.
1570
+                    $this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/')
1571
+                    .':arrayType="'
1572
+                    .$this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType']))
1573
+                    .":".$this->getLocalPart($typeDef['arrayType'])."[$rows$cols]\">"
1574
+                    .$contents
1575
+                    ."</$name>";
1576
+            }
1577
+        } elseif ($phpType == 'scalar') {
1578
+            if (isset($typeDef['form']) && ($typeDef['form'] == 'qualified')) {
1579
+                $elementNS = " xmlns=\"$ns\"";
1580
+            } else {
1581
+                if ($unqualified) {
1582
+                    $elementNS = " xmlns=\"\"";
1583
+                } else {
1584
+                    $elementNS = '';
1585
+                }
1586
+            }
1587
+            if ($use == 'literal') {
1588
+                if ($forceType) {
1589
+                    $xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1590
+                } else {
1591
+                    $xml = "<$name$elementNS>$value</$name>";
1592
+                }
1593
+            } else {
1594
+                $xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1595
+            }
1596
+        }
1597
+        $this->debug("in serializeType: returning: $xml");
1598
+        return $xml;
1599
+    }
1600 1600
 
1601
-	/**
1602
-	 * serializes the attributes for a complexType
1603
-	 *
1604
-	 * @param array $typeDef our internal representation of an XML schema type (or element)
1605
-	 * @param mixed $value a native PHP value (parameter value)
1606
-	 * @param string $ns the namespace of the type
1607
-	 * @param string $uqType the local part of the type
1608
-	 * @return string value serialized as an XML string
1609
-	 * @access private
1610
-	 */
1611
-	function serializeComplexTypeAttributes($typeDef, $value, $ns, $uqType) {
1612
-		$this->debug("serializeComplexTypeAttributes for XML Schema type $ns:$uqType");
1613
-		$xml = '';
1614
-		if (isset($typeDef['extensionBase'])) {
1615
-			$nsx = $this->getPrefix($typeDef['extensionBase']);
1616
-			$uqTypex = $this->getLocalPart($typeDef['extensionBase']);
1617
-			if ($this->getNamespaceFromPrefix($nsx)) {
1618
-				$nsx = $this->getNamespaceFromPrefix($nsx);
1619
-			}
1620
-			if ($typeDefx = $this->getTypeDef($uqTypex, $nsx)) {
1621
-				$this->debug("serialize attributes for extension base $nsx:$uqTypex");
1622
-				$xml .= $this->serializeComplexTypeAttributes($typeDefx, $value, $nsx, $uqTypex);
1623
-			} else {
1624
-				$this->debug("extension base $nsx:$uqTypex is not a supported type");
1625
-			}
1626
-		}
1627
-		if (isset($typeDef['attrs']) && is_array($typeDef['attrs'])) {
1628
-			$this->debug("serialize attributes for XML Schema type $ns:$uqType");
1629
-			if (is_array($value)) {
1630
-				$xvalue = $value;
1631
-			} elseif (is_object($value)) {
1632
-				$xvalue = get_object_vars($value);
1633
-			} else {
1634
-				$this->debug("value is neither an array nor an object for XML Schema type $ns:$uqType");
1635
-				$xvalue = array();
1636
-			}
1637
-			foreach ($typeDef['attrs'] as $aName => $attrs) {
1638
-				if (isset($xvalue['!' . $aName])) {
1639
-					$xname = '!' . $aName;
1640
-					$this->debug("value provided for attribute $aName with key $xname");
1641
-				} elseif (isset($xvalue[$aName])) {
1642
-					$xname = $aName;
1643
-					$this->debug("value provided for attribute $aName with key $xname");
1644
-				} elseif (isset($attrs['default'])) {
1645
-					$xname = '!' . $aName;
1646
-					$xvalue[$xname] = $attrs['default'];
1647
-					$this->debug('use default value of ' . $xvalue[$aName] . ' for attribute ' . $aName);
1648
-				} else {
1649
-					$xname = '';
1650
-					$this->debug("no value provided for attribute $aName");
1651
-				}
1652
-				if ($xname) {
1653
-					$xml .=  " $aName=\"" . $this->expandEntities($xvalue[$xname]) . "\"";
1654
-				}
1655
-			}
1656
-		} else {
1657
-			$this->debug("no attributes to serialize for XML Schema type $ns:$uqType");
1658
-		}
1659
-		return $xml;
1660
-	}
1601
+    /**
1602
+     * serializes the attributes for a complexType
1603
+     *
1604
+     * @param array $typeDef our internal representation of an XML schema type (or element)
1605
+     * @param mixed $value a native PHP value (parameter value)
1606
+     * @param string $ns the namespace of the type
1607
+     * @param string $uqType the local part of the type
1608
+     * @return string value serialized as an XML string
1609
+     * @access private
1610
+     */
1611
+    function serializeComplexTypeAttributes($typeDef, $value, $ns, $uqType) {
1612
+        $this->debug("serializeComplexTypeAttributes for XML Schema type $ns:$uqType");
1613
+        $xml = '';
1614
+        if (isset($typeDef['extensionBase'])) {
1615
+            $nsx = $this->getPrefix($typeDef['extensionBase']);
1616
+            $uqTypex = $this->getLocalPart($typeDef['extensionBase']);
1617
+            if ($this->getNamespaceFromPrefix($nsx)) {
1618
+                $nsx = $this->getNamespaceFromPrefix($nsx);
1619
+            }
1620
+            if ($typeDefx = $this->getTypeDef($uqTypex, $nsx)) {
1621
+                $this->debug("serialize attributes for extension base $nsx:$uqTypex");
1622
+                $xml .= $this->serializeComplexTypeAttributes($typeDefx, $value, $nsx, $uqTypex);
1623
+            } else {
1624
+                $this->debug("extension base $nsx:$uqTypex is not a supported type");
1625
+            }
1626
+        }
1627
+        if (isset($typeDef['attrs']) && is_array($typeDef['attrs'])) {
1628
+            $this->debug("serialize attributes for XML Schema type $ns:$uqType");
1629
+            if (is_array($value)) {
1630
+                $xvalue = $value;
1631
+            } elseif (is_object($value)) {
1632
+                $xvalue = get_object_vars($value);
1633
+            } else {
1634
+                $this->debug("value is neither an array nor an object for XML Schema type $ns:$uqType");
1635
+                $xvalue = array();
1636
+            }
1637
+            foreach ($typeDef['attrs'] as $aName => $attrs) {
1638
+                if (isset($xvalue['!' . $aName])) {
1639
+                    $xname = '!' . $aName;
1640
+                    $this->debug("value provided for attribute $aName with key $xname");
1641
+                } elseif (isset($xvalue[$aName])) {
1642
+                    $xname = $aName;
1643
+                    $this->debug("value provided for attribute $aName with key $xname");
1644
+                } elseif (isset($attrs['default'])) {
1645
+                    $xname = '!' . $aName;
1646
+                    $xvalue[$xname] = $attrs['default'];
1647
+                    $this->debug('use default value of ' . $xvalue[$aName] . ' for attribute ' . $aName);
1648
+                } else {
1649
+                    $xname = '';
1650
+                    $this->debug("no value provided for attribute $aName");
1651
+                }
1652
+                if ($xname) {
1653
+                    $xml .=  " $aName=\"" . $this->expandEntities($xvalue[$xname]) . "\"";
1654
+                }
1655
+            }
1656
+        } else {
1657
+            $this->debug("no attributes to serialize for XML Schema type $ns:$uqType");
1658
+        }
1659
+        return $xml;
1660
+    }
1661 1661
 
1662
-	/**
1663
-	 * serializes the elements for a complexType
1664
-	 *
1665
-	 * @param array $typeDef our internal representation of an XML schema type (or element)
1666
-	 * @param mixed $value a native PHP value (parameter value)
1667
-	 * @param string $ns the namespace of the type
1668
-	 * @param string $uqType the local part of the type
1669
-	 * @param string $use use for part (encoded|literal)
1670
-	 * @param string $encodingStyle SOAP encoding style for the value (if different than the enclosing style)
1671
-	 * @return string value serialized as an XML string
1672
-	 * @access private
1673
-	 */
1674
-	function serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use='encoded', $encodingStyle=false) {
1675
-		$this->debug("in serializeComplexTypeElements for XML Schema type $ns:$uqType");
1676
-		$xml = '';
1677
-		if (isset($typeDef['extensionBase'])) {
1678
-			$nsx = $this->getPrefix($typeDef['extensionBase']);
1679
-			$uqTypex = $this->getLocalPart($typeDef['extensionBase']);
1680
-			if ($this->getNamespaceFromPrefix($nsx)) {
1681
-				$nsx = $this->getNamespaceFromPrefix($nsx);
1682
-			}
1683
-			if ($typeDefx = $this->getTypeDef($uqTypex, $nsx)) {
1684
-				$this->debug("serialize elements for extension base $nsx:$uqTypex");
1685
-				$xml .= $this->serializeComplexTypeElements($typeDefx, $value, $nsx, $uqTypex, $use, $encodingStyle);
1686
-			} else {
1687
-				$this->debug("extension base $nsx:$uqTypex is not a supported type");
1688
-			}
1689
-		}
1690
-		if (isset($typeDef['elements']) && is_array($typeDef['elements'])) {
1691
-			$this->debug("in serializeComplexTypeElements, serialize elements for XML Schema type $ns:$uqType");
1692
-			if (is_array($value)) {
1693
-				$xvalue = $value;
1694
-			} elseif (is_object($value)) {
1695
-				$xvalue = get_object_vars($value);
1696
-			} else {
1697
-				$this->debug("value is neither an array nor an object for XML Schema type $ns:$uqType");
1698
-				$xvalue = array();
1699
-			}
1700
-			// toggle whether all elements are present - ideally should validate against schema
1701
-			if (count($typeDef['elements']) != count($xvalue)){
1702
-				$optionals = true;
1703
-			}
1704
-			foreach ($typeDef['elements'] as $eName => $attrs) {
1705
-				if (!isset($xvalue[$eName])) {
1706
-					if (isset($attrs['default'])) {
1707
-						$xvalue[$eName] = $attrs['default'];
1708
-						$this->debug('use default value of ' . $xvalue[$eName] . ' for element ' . $eName);
1709
-					}
1710
-				}
1711
-				// if user took advantage of a minOccurs=0, then only serialize named parameters
1712
-				if (isset($optionals)
1713
-				    && (!isset($xvalue[$eName]))
1714
-					&& ( (!isset($attrs['nillable'])) || $attrs['nillable'] != 'true')
1715
-					){
1716
-					if (isset($attrs['minOccurs']) && $attrs['minOccurs'] <> '0') {
1717
-						$this->debug("apparent error: no value provided for element $eName with minOccurs=" . $attrs['minOccurs']);
1718
-					}
1719
-					// do nothing
1720
-					$this->debug("no value provided for complexType element $eName and element is not nillable, so serialize nothing");
1721
-				} else {
1722
-					// get value
1723
-					if (isset($xvalue[$eName])) {
1724
-					    $v = $xvalue[$eName];
1725
-					} else {
1726
-					    $v = null;
1727
-					}
1728
-					if (isset($attrs['form'])) {
1729
-						$unqualified = ($attrs['form'] == 'unqualified');
1730
-					} else {
1731
-						$unqualified = false;
1732
-					}
1733
-					if (isset($attrs['maxOccurs']) && ($attrs['maxOccurs'] == 'unbounded' || $attrs['maxOccurs'] > 1) && isset($v) && is_array($v) && $this->isArraySimpleOrStruct($v) == 'arraySimple') {
1734
-						$vv = $v;
1735
-						foreach ($vv as $k => $v) {
1736
-							if (isset($attrs['type']) || isset($attrs['ref'])) {
1737
-								// serialize schema-defined type
1738
-							    $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1739
-							} else {
1740
-								// serialize generic type (can this ever really happen?)
1741
-							    $this->debug("calling serialize_val() for $v, $eName, false, false, false, false, $use");
1742
-							    $xml .= $this->serialize_val($v, $eName, false, false, false, false, $use);
1743
-							}
1744
-						}
1745
-					} else {
1746
-						if (is_null($v) && isset($attrs['minOccurs']) && $attrs['minOccurs'] == '0') {
1747
-							// do nothing
1748
-						} elseif (is_null($v) && isset($attrs['nillable']) && $attrs['nillable'] == 'true') {
1749
-							// TODO: serialize a nil correctly, but for now serialize schema-defined type
1750
-						    $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1751
-						} elseif (isset($attrs['type']) || isset($attrs['ref'])) {
1752
-							// serialize schema-defined type
1753
-						    $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1754
-						} else {
1755
-							// serialize generic type (can this ever really happen?)
1756
-						    $this->debug("calling serialize_val() for $v, $eName, false, false, false, false, $use");
1757
-						    $xml .= $this->serialize_val($v, $eName, false, false, false, false, $use);
1758
-						}
1759
-					}
1760
-				}
1761
-			}
1762
-		} else {
1763
-			$this->debug("no elements to serialize for XML Schema type $ns:$uqType");
1764
-		}
1765
-		return $xml;
1766
-	}
1662
+    /**
1663
+     * serializes the elements for a complexType
1664
+     *
1665
+     * @param array $typeDef our internal representation of an XML schema type (or element)
1666
+     * @param mixed $value a native PHP value (parameter value)
1667
+     * @param string $ns the namespace of the type
1668
+     * @param string $uqType the local part of the type
1669
+     * @param string $use use for part (encoded|literal)
1670
+     * @param string $encodingStyle SOAP encoding style for the value (if different than the enclosing style)
1671
+     * @return string value serialized as an XML string
1672
+     * @access private
1673
+     */
1674
+    function serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use='encoded', $encodingStyle=false) {
1675
+        $this->debug("in serializeComplexTypeElements for XML Schema type $ns:$uqType");
1676
+        $xml = '';
1677
+        if (isset($typeDef['extensionBase'])) {
1678
+            $nsx = $this->getPrefix($typeDef['extensionBase']);
1679
+            $uqTypex = $this->getLocalPart($typeDef['extensionBase']);
1680
+            if ($this->getNamespaceFromPrefix($nsx)) {
1681
+                $nsx = $this->getNamespaceFromPrefix($nsx);
1682
+            }
1683
+            if ($typeDefx = $this->getTypeDef($uqTypex, $nsx)) {
1684
+                $this->debug("serialize elements for extension base $nsx:$uqTypex");
1685
+                $xml .= $this->serializeComplexTypeElements($typeDefx, $value, $nsx, $uqTypex, $use, $encodingStyle);
1686
+            } else {
1687
+                $this->debug("extension base $nsx:$uqTypex is not a supported type");
1688
+            }
1689
+        }
1690
+        if (isset($typeDef['elements']) && is_array($typeDef['elements'])) {
1691
+            $this->debug("in serializeComplexTypeElements, serialize elements for XML Schema type $ns:$uqType");
1692
+            if (is_array($value)) {
1693
+                $xvalue = $value;
1694
+            } elseif (is_object($value)) {
1695
+                $xvalue = get_object_vars($value);
1696
+            } else {
1697
+                $this->debug("value is neither an array nor an object for XML Schema type $ns:$uqType");
1698
+                $xvalue = array();
1699
+            }
1700
+            // toggle whether all elements are present - ideally should validate against schema
1701
+            if (count($typeDef['elements']) != count($xvalue)){
1702
+                $optionals = true;
1703
+            }
1704
+            foreach ($typeDef['elements'] as $eName => $attrs) {
1705
+                if (!isset($xvalue[$eName])) {
1706
+                    if (isset($attrs['default'])) {
1707
+                        $xvalue[$eName] = $attrs['default'];
1708
+                        $this->debug('use default value of ' . $xvalue[$eName] . ' for element ' . $eName);
1709
+                    }
1710
+                }
1711
+                // if user took advantage of a minOccurs=0, then only serialize named parameters
1712
+                if (isset($optionals)
1713
+                    && (!isset($xvalue[$eName]))
1714
+                    && ( (!isset($attrs['nillable'])) || $attrs['nillable'] != 'true')
1715
+                    ){
1716
+                    if (isset($attrs['minOccurs']) && $attrs['minOccurs'] <> '0') {
1717
+                        $this->debug("apparent error: no value provided for element $eName with minOccurs=" . $attrs['minOccurs']);
1718
+                    }
1719
+                    // do nothing
1720
+                    $this->debug("no value provided for complexType element $eName and element is not nillable, so serialize nothing");
1721
+                } else {
1722
+                    // get value
1723
+                    if (isset($xvalue[$eName])) {
1724
+                        $v = $xvalue[$eName];
1725
+                    } else {
1726
+                        $v = null;
1727
+                    }
1728
+                    if (isset($attrs['form'])) {
1729
+                        $unqualified = ($attrs['form'] == 'unqualified');
1730
+                    } else {
1731
+                        $unqualified = false;
1732
+                    }
1733
+                    if (isset($attrs['maxOccurs']) && ($attrs['maxOccurs'] == 'unbounded' || $attrs['maxOccurs'] > 1) && isset($v) && is_array($v) && $this->isArraySimpleOrStruct($v) == 'arraySimple') {
1734
+                        $vv = $v;
1735
+                        foreach ($vv as $k => $v) {
1736
+                            if (isset($attrs['type']) || isset($attrs['ref'])) {
1737
+                                // serialize schema-defined type
1738
+                                $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1739
+                            } else {
1740
+                                // serialize generic type (can this ever really happen?)
1741
+                                $this->debug("calling serialize_val() for $v, $eName, false, false, false, false, $use");
1742
+                                $xml .= $this->serialize_val($v, $eName, false, false, false, false, $use);
1743
+                            }
1744
+                        }
1745
+                    } else {
1746
+                        if (is_null($v) && isset($attrs['minOccurs']) && $attrs['minOccurs'] == '0') {
1747
+                            // do nothing
1748
+                        } elseif (is_null($v) && isset($attrs['nillable']) && $attrs['nillable'] == 'true') {
1749
+                            // TODO: serialize a nil correctly, but for now serialize schema-defined type
1750
+                            $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1751
+                        } elseif (isset($attrs['type']) || isset($attrs['ref'])) {
1752
+                            // serialize schema-defined type
1753
+                            $xml .= $this->serializeType($eName, isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, $unqualified);
1754
+                        } else {
1755
+                            // serialize generic type (can this ever really happen?)
1756
+                            $this->debug("calling serialize_val() for $v, $eName, false, false, false, false, $use");
1757
+                            $xml .= $this->serialize_val($v, $eName, false, false, false, false, $use);
1758
+                        }
1759
+                    }
1760
+                }
1761
+            }
1762
+        } else {
1763
+            $this->debug("no elements to serialize for XML Schema type $ns:$uqType");
1764
+        }
1765
+        return $xml;
1766
+    }
1767 1767
 
1768
-	/**
1769
-	* adds an XML Schema complex type to the WSDL types
1770
-	*
1771
-	* @param string	$name
1772
-	* @param string $typeClass (complexType|simpleType|attribute)
1773
-	* @param string $phpType currently supported are array and struct (php assoc array)
1774
-	* @param string $compositor (all|sequence|choice)
1775
-	* @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
1776
-	* @param array $elements e.g. array ( name => array(name=>'',type=>'') )
1777
-	* @param array $attrs e.g. array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]'))
1778
-	* @param string $arrayType as namespace:name (xsd:string)
1779
-	* @see nusoap_xmlschema
1780
-	* @access public
1781
-	*/
1782
-	function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType='') {
1783
-		if (count($elements) > 0) {
1784
-			$eElements = array();
1785
-	    	foreach($elements as $n => $e){
1786
-	            // expand each element
1787
-	            $ee = array();
1788
-	            foreach ($e as $k => $v) {
1789
-		            $k = strpos($k,':') ? $this->expandQname($k) : $k;
1790
-		            $v = strpos($v,':') ? $this->expandQname($v) : $v;
1791
-		            $ee[$k] = $v;
1792
-		    	}
1793
-	    		$eElements[$n] = $ee;
1794
-	    	}
1795
-	    	$elements = $eElements;
1796
-		}
1768
+    /**
1769
+     * adds an XML Schema complex type to the WSDL types
1770
+     *
1771
+     * @param string	$name
1772
+     * @param string $typeClass (complexType|simpleType|attribute)
1773
+     * @param string $phpType currently supported are array and struct (php assoc array)
1774
+     * @param string $compositor (all|sequence|choice)
1775
+     * @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
1776
+     * @param array $elements e.g. array ( name => array(name=>'',type=>'') )
1777
+     * @param array $attrs e.g. array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]'))
1778
+     * @param string $arrayType as namespace:name (xsd:string)
1779
+     * @see nusoap_xmlschema
1780
+     * @access public
1781
+     */
1782
+    function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType='') {
1783
+        if (count($elements) > 0) {
1784
+            $eElements = array();
1785
+            foreach($elements as $n => $e){
1786
+                // expand each element
1787
+                $ee = array();
1788
+                foreach ($e as $k => $v) {
1789
+                    $k = strpos($k,':') ? $this->expandQname($k) : $k;
1790
+                    $v = strpos($v,':') ? $this->expandQname($v) : $v;
1791
+                    $ee[$k] = $v;
1792
+                }
1793
+                $eElements[$n] = $ee;
1794
+            }
1795
+            $elements = $eElements;
1796
+        }
1797 1797
 
1798
-		if (count($attrs) > 0) {
1799
-	    	foreach($attrs as $n => $a){
1800
-	            // expand each attribute
1801
-	            foreach ($a as $k => $v) {
1802
-		            $k = strpos($k,':') ? $this->expandQname($k) : $k;
1803
-		            $v = strpos($v,':') ? $this->expandQname($v) : $v;
1804
-		            $aa[$k] = $v;
1805
-		    	}
1806
-	    		$eAttrs[$n] = $aa;
1807
-	    	}
1808
-	    	$attrs = $eAttrs;
1809
-		}
1798
+        if (count($attrs) > 0) {
1799
+            foreach($attrs as $n => $a){
1800
+                // expand each attribute
1801
+                foreach ($a as $k => $v) {
1802
+                    $k = strpos($k,':') ? $this->expandQname($k) : $k;
1803
+                    $v = strpos($v,':') ? $this->expandQname($v) : $v;
1804
+                    $aa[$k] = $v;
1805
+                }
1806
+                $eAttrs[$n] = $aa;
1807
+            }
1808
+            $attrs = $eAttrs;
1809
+        }
1810 1810
 
1811
-		$restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1812
-		$arrayType = strpos($arrayType,':') ? $this->expandQname($arrayType) : $arrayType;
1811
+        $restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1812
+        $arrayType = strpos($arrayType,':') ? $this->expandQname($arrayType) : $arrayType;
1813 1813
 
1814
-		$typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1815
-		$this->schemas[$typens][0]->addComplexType($name,$typeClass,$phpType,$compositor,$restrictionBase,$elements,$attrs,$arrayType);
1816
-	}
1814
+        $typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1815
+        $this->schemas[$typens][0]->addComplexType($name,$typeClass,$phpType,$compositor,$restrictionBase,$elements,$attrs,$arrayType);
1816
+    }
1817 1817
 
1818
-	/**
1819
-	* adds an XML Schema simple type to the WSDL types
1820
-	*
1821
-	* @param string $name
1822
-	* @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
1823
-	* @param string $typeClass (should always be simpleType)
1824
-	* @param string $phpType (should always be scalar)
1825
-	* @param array $enumeration array of values
1826
-	* @see nusoap_xmlschema
1827
-	* @access public
1828
-	*/
1829
-	function addSimpleType($name, $restrictionBase='', $typeClass='simpleType', $phpType='scalar', $enumeration=array()) {
1830
-		$restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1818
+    /**
1819
+     * adds an XML Schema simple type to the WSDL types
1820
+     *
1821
+     * @param string $name
1822
+     * @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
1823
+     * @param string $typeClass (should always be simpleType)
1824
+     * @param string $phpType (should always be scalar)
1825
+     * @param array $enumeration array of values
1826
+     * @see nusoap_xmlschema
1827
+     * @access public
1828
+     */
1829
+    function addSimpleType($name, $restrictionBase='', $typeClass='simpleType', $phpType='scalar', $enumeration=array()) {
1830
+        $restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1831 1831
 
1832
-		$typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1833
-		$this->schemas[$typens][0]->addSimpleType($name, $restrictionBase, $typeClass, $phpType, $enumeration);
1834
-	}
1832
+        $typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1833
+        $this->schemas[$typens][0]->addSimpleType($name, $restrictionBase, $typeClass, $phpType, $enumeration);
1834
+    }
1835 1835
 
1836
-	/**
1837
-	* adds an element to the WSDL types
1838
-	*
1839
-	* @param array $attrs attributes that must include name and type
1840
-	* @see nusoap_xmlschema
1841
-	* @access public
1842
-	*/
1843
-	function addElement($attrs) {
1844
-		$typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1845
-		$this->schemas[$typens][0]->addElement($attrs);
1846
-	}
1836
+    /**
1837
+     * adds an element to the WSDL types
1838
+     *
1839
+     * @param array $attrs attributes that must include name and type
1840
+     * @see nusoap_xmlschema
1841
+     * @access public
1842
+     */
1843
+    function addElement($attrs) {
1844
+        $typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1845
+        $this->schemas[$typens][0]->addElement($attrs);
1846
+    }
1847 1847
 
1848
-	/**
1849
-	* register an operation with the server
1850
-	*
1851
-	* @param string $name operation (method) name
1852
-	* @param array $in assoc array of input values: key = param name, value = param type
1853
-	* @param array $out assoc array of output values: key = param name, value = param type
1854
-	* @param string $namespace optional The namespace for the operation
1855
-	* @param string $soapaction optional The soapaction for the operation
1856
-	* @param string $style (rpc|document) optional The style for the operation Note: when 'document' is specified, parameter and return wrappers are created for you automatically
1857
-	* @param string $use (encoded|literal) optional The use for the parameters (cannot mix right now)
1858
-	* @param string $documentation optional The description to include in the WSDL
1859
-	* @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
1860
-	* @access public
1861
-	*/
1862
-	function addOperation($name, $in = false, $out = false, $namespace = false, $soapaction = false, $style = 'rpc', $use = 'encoded', $documentation = '', $encodingStyle = ''){
1863
-		if ($use == 'encoded' && $encodingStyle == '') {
1864
-			$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1865
-		}
1848
+    /**
1849
+     * register an operation with the server
1850
+     *
1851
+     * @param string $name operation (method) name
1852
+     * @param array $in assoc array of input values: key = param name, value = param type
1853
+     * @param array $out assoc array of output values: key = param name, value = param type
1854
+     * @param string $namespace optional The namespace for the operation
1855
+     * @param string $soapaction optional The soapaction for the operation
1856
+     * @param string $style (rpc|document) optional The style for the operation Note: when 'document' is specified, parameter and return wrappers are created for you automatically
1857
+     * @param string $use (encoded|literal) optional The use for the parameters (cannot mix right now)
1858
+     * @param string $documentation optional The description to include in the WSDL
1859
+     * @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
1860
+     * @access public
1861
+     */
1862
+    function addOperation($name, $in = false, $out = false, $namespace = false, $soapaction = false, $style = 'rpc', $use = 'encoded', $documentation = '', $encodingStyle = ''){
1863
+        if ($use == 'encoded' && $encodingStyle == '') {
1864
+            $encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1865
+        }
1866 1866
 
1867
-		if ($style == 'document') {
1868
-			$elements = array();
1869
-			foreach ($in as $n => $t) {
1870
-				$elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1871
-			}
1872
-			$this->addComplexType($name . 'RequestType', 'complexType', 'struct', 'all', '', $elements);
1873
-			$this->addElement(array('name' => $name, 'type' => $name . 'RequestType'));
1874
-			$in = array('parameters' => 'tns:' . $name . '^');
1867
+        if ($style == 'document') {
1868
+            $elements = array();
1869
+            foreach ($in as $n => $t) {
1870
+                $elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1871
+            }
1872
+            $this->addComplexType($name . 'RequestType', 'complexType', 'struct', 'all', '', $elements);
1873
+            $this->addElement(array('name' => $name, 'type' => $name . 'RequestType'));
1874
+            $in = array('parameters' => 'tns:' . $name . '^');
1875 1875
 
1876
-			$elements = array();
1877
-			foreach ($out as $n => $t) {
1878
-				$elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1879
-			}
1880
-			$this->addComplexType($name . 'ResponseType', 'complexType', 'struct', 'all', '', $elements);
1881
-			$this->addElement(array('name' => $name . 'Response', 'type' => $name . 'ResponseType', 'form' => 'qualified'));
1882
-			$out = array('parameters' => 'tns:' . $name . 'Response' . '^');
1883
-		}
1876
+            $elements = array();
1877
+            foreach ($out as $n => $t) {
1878
+                $elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1879
+            }
1880
+            $this->addComplexType($name . 'ResponseType', 'complexType', 'struct', 'all', '', $elements);
1881
+            $this->addElement(array('name' => $name . 'Response', 'type' => $name . 'ResponseType', 'form' => 'qualified'));
1882
+            $out = array('parameters' => 'tns:' . $name . 'Response' . '^');
1883
+        }
1884 1884
 
1885
-		// get binding
1886
-		$this->bindings[ $this->serviceName . 'Binding' ]['operations'][$name] =
1887
-		array(
1888
-		'name' => $name,
1889
-		'binding' => $this->serviceName . 'Binding',
1890
-		'endpoint' => $this->endpoint,
1891
-		'soapAction' => $soapaction,
1892
-		'style' => $style,
1893
-		'input' => array(
1894
-			'use' => $use,
1895
-			'namespace' => $namespace,
1896
-			'encodingStyle' => $encodingStyle,
1897
-			'message' => $name . 'Request',
1898
-			'parts' => $in),
1899
-		'output' => array(
1900
-			'use' => $use,
1901
-			'namespace' => $namespace,
1902
-			'encodingStyle' => $encodingStyle,
1903
-			'message' => $name . 'Response',
1904
-			'parts' => $out),
1905
-		'namespace' => $namespace,
1906
-		'transport' => 'http://schemas.xmlsoap.org/soap/http',
1907
-		'documentation' => $documentation);
1908
-		// add portTypes
1909
-		// add messages
1910
-		if($in)
1911
-		{
1912
-			foreach($in as $pName => $pType)
1913
-			{
1914
-				if(strpos($pType,':')) {
1915
-					$pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1916
-				}
1917
-				$this->messages[$name.'Request'][$pName] = $pType;
1918
-			}
1919
-		} else {
1885
+        // get binding
1886
+        $this->bindings[ $this->serviceName . 'Binding' ]['operations'][$name] =
1887
+        array(
1888
+        'name' => $name,
1889
+        'binding' => $this->serviceName . 'Binding',
1890
+        'endpoint' => $this->endpoint,
1891
+        'soapAction' => $soapaction,
1892
+        'style' => $style,
1893
+        'input' => array(
1894
+            'use' => $use,
1895
+            'namespace' => $namespace,
1896
+            'encodingStyle' => $encodingStyle,
1897
+            'message' => $name . 'Request',
1898
+            'parts' => $in),
1899
+        'output' => array(
1900
+            'use' => $use,
1901
+            'namespace' => $namespace,
1902
+            'encodingStyle' => $encodingStyle,
1903
+            'message' => $name . 'Response',
1904
+            'parts' => $out),
1905
+        'namespace' => $namespace,
1906
+        'transport' => 'http://schemas.xmlsoap.org/soap/http',
1907
+        'documentation' => $documentation);
1908
+        // add portTypes
1909
+        // add messages
1910
+        if($in)
1911
+        {
1912
+            foreach($in as $pName => $pType)
1913
+            {
1914
+                if(strpos($pType,':')) {
1915
+                    $pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1916
+                }
1917
+                $this->messages[$name.'Request'][$pName] = $pType;
1918
+            }
1919
+        } else {
1920 1920
             $this->messages[$name.'Request']= '0';
1921 1921
         }
1922
-		if($out)
1923
-		{
1924
-			foreach($out as $pName => $pType)
1925
-			{
1926
-				if(strpos($pType,':')) {
1927
-					$pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1928
-				}
1929
-				$this->messages[$name.'Response'][$pName] = $pType;
1930
-			}
1931
-		} else {
1922
+        if($out)
1923
+        {
1924
+            foreach($out as $pName => $pType)
1925
+            {
1926
+                if(strpos($pType,':')) {
1927
+                    $pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1928
+                }
1929
+                $this->messages[$name.'Response'][$pName] = $pType;
1930
+            }
1931
+        } else {
1932 1932
             $this->messages[$name.'Response']= '0';
1933 1933
         }
1934
-		return true;
1935
-	}
1934
+        return true;
1935
+    }
1936 1936
 }
1937 1937
 
1938 1938
 ?>
Please login to merge, or discard this patch.
Spacing   +205 added lines, -207 removed lines patch added patch discarded remove patch
@@ -47,13 +47,13 @@  discard block
 block discarded – undo
47 47
 	var $proxypassword = '';
48 48
 	var $timeout = 0;
49 49
 	var $response_timeout = 30;
50
-	var $curl_options = array();	// User-specified cURL options
51
-	var $use_curl = false;			// whether to always try to use cURL
50
+	var $curl_options = array(); // User-specified cURL options
51
+	var $use_curl = false; // whether to always try to use cURL
52 52
 	// for HTTP authentication
53
-	var $username = '';				// Username for HTTP authentication
54
-	var $password = '';				// Password for HTTP authentication
55
-	var $authtype = '';				// Type of HTTP authentication
56
-	var $certRequest = array();		// Certificate for HTTP SSL authentication
53
+	var $username = ''; // Username for HTTP authentication
54
+	var $password = ''; // Password for HTTP authentication
55
+	var $authtype = ''; // Type of HTTP authentication
56
+	var $certRequest = array(); // Certificate for HTTP SSL authentication
57 57
 
58 58
     /**
59 59
      * constructor
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	 * @param boolean $use_curl try to use cURL
70 70
      * @access public
71 71
      */
72
-    function wsdl($wsdl = '',$proxyhost=false,$proxyport=false,$proxyusername=false,$proxypassword=false,$timeout=0,$response_timeout=30,$curl_options=null,$use_curl=false){
72
+    function wsdl($wsdl = '', $proxyhost = false, $proxyport = false, $proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $curl_options = null, $use_curl = false) {
73 73
 		parent::nusoap_base();
74 74
 		$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
75 75
         $this->proxyhost = $proxyhost;
@@ -105,19 +105,19 @@  discard block
 block discarded – undo
105 105
     		// Schema imports
106 106
     		foreach ($this->schemas as $ns => $list) {
107 107
     			foreach ($list as $xs) {
108
-					$wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
108
+					$wsdlparts = parse_url($this->wsdl); // this is bogusly simple!
109 109
 		            foreach ($xs->imports as $ns2 => $list2) {
110 110
 		                for ($ii = 0; $ii < count($list2); $ii++) {
111
-		                	if (! $list2[$ii]['loaded']) {
111
+		                	if (!$list2[$ii]['loaded']) {
112 112
 		                		$this->schemas[$ns]->imports[$ns2][$ii]['loaded'] = true;
113 113
 		                		$url = $list2[$ii]['location'];
114 114
 								if ($url != '') {
115 115
 									$urlparts = parse_url($url);
116 116
 									if (!isset($urlparts['host'])) {
117
-										$url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' .$wsdlparts['port'] : '') .
118
-												substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
117
+										$url = $wsdlparts['scheme'].'://'.$wsdlparts['host'].(isset($wsdlparts['port']) ? ':'.$wsdlparts['port'] : '').
118
+												substr($wsdlparts['path'], 0, strrpos($wsdlparts['path'], '/') + 1).$urlparts['path'];
119 119
 									}
120
-									if (! in_array($url, $imported_urls)) {
120
+									if (!in_array($url, $imported_urls)) {
121 121
 					                	$this->parseWSDL($url);
122 122
 				                		$imported++;
123 123
 				                		$imported_urls[] = $url;
@@ -131,19 +131,19 @@  discard block
 block discarded – undo
131 131
     			}
132 132
     		}
133 133
     		// WSDL imports
134
-			$wsdlparts = parse_url($this->wsdl);	// this is bogusly simple!
134
+			$wsdlparts = parse_url($this->wsdl); // this is bogusly simple!
135 135
             foreach ($this->import as $ns => $list) {
136 136
                 for ($ii = 0; $ii < count($list); $ii++) {
137
-                	if (! $list[$ii]['loaded']) {
137
+                	if (!$list[$ii]['loaded']) {
138 138
                 		$this->import[$ns][$ii]['loaded'] = true;
139 139
                 		$url = $list[$ii]['location'];
140 140
 						if ($url != '') {
141 141
 							$urlparts = parse_url($url);
142 142
 							if (!isset($urlparts['host'])) {
143
-								$url = $wsdlparts['scheme'] . '://' . $wsdlparts['host'] . (isset($wsdlparts['port']) ? ':' . $wsdlparts['port'] : '') .
144
-										substr($wsdlparts['path'],0,strrpos($wsdlparts['path'],'/') + 1) .$urlparts['path'];
143
+								$url = $wsdlparts['scheme'].'://'.$wsdlparts['host'].(isset($wsdlparts['port']) ? ':'.$wsdlparts['port'] : '').
144
+										substr($wsdlparts['path'], 0, strrpos($wsdlparts['path'], '/') + 1).$urlparts['path'];
145 145
 							}
146
-							if (! in_array($url, $imported_urls)) {
146
+							if (!in_array($url, $imported_urls)) {
147 147
 			                	$this->parseWSDL($url);
148 148
 		                		$imported++;
149 149
 		                		$imported_urls[] = $url;
@@ -156,30 +156,28 @@  discard block
 block discarded – undo
156 156
             }
157 157
 		}
158 158
         // add new data to operation data
159
-        foreach($this->bindings as $binding => $bindingData) {
159
+        foreach ($this->bindings as $binding => $bindingData) {
160 160
             if (isset($bindingData['operations']) && is_array($bindingData['operations'])) {
161
-                foreach($bindingData['operations'] as $operation => $data) {
162
-                    $this->debug('post-parse data gathering for ' . $operation);
161
+                foreach ($bindingData['operations'] as $operation => $data) {
162
+                    $this->debug('post-parse data gathering for '.$operation);
163 163
                     $this->bindings[$binding]['operations'][$operation]['input'] =
164 164
 						isset($this->bindings[$binding]['operations'][$operation]['input']) ?
165
-						array_merge($this->bindings[$binding]['operations'][$operation]['input'], $this->portTypes[ $bindingData['portType'] ][$operation]['input']) :
166
-						$this->portTypes[ $bindingData['portType'] ][$operation]['input'];
165
+						array_merge($this->bindings[$binding]['operations'][$operation]['input'], $this->portTypes[$bindingData['portType']][$operation]['input']) : $this->portTypes[$bindingData['portType']][$operation]['input'];
167 166
                     $this->bindings[$binding]['operations'][$operation]['output'] =
168 167
 						isset($this->bindings[$binding]['operations'][$operation]['output']) ?
169
-						array_merge($this->bindings[$binding]['operations'][$operation]['output'], $this->portTypes[ $bindingData['portType'] ][$operation]['output']) :
170
-						$this->portTypes[ $bindingData['portType'] ][$operation]['output'];
171
-                    if(isset($this->messages[ $this->bindings[$binding]['operations'][$operation]['input']['message'] ])){
172
-						$this->bindings[$binding]['operations'][$operation]['input']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['input']['message'] ];
168
+						array_merge($this->bindings[$binding]['operations'][$operation]['output'], $this->portTypes[$bindingData['portType']][$operation]['output']) : $this->portTypes[$bindingData['portType']][$operation]['output'];
169
+                    if (isset($this->messages[$this->bindings[$binding]['operations'][$operation]['input']['message']])) {
170
+						$this->bindings[$binding]['operations'][$operation]['input']['parts'] = $this->messages[$this->bindings[$binding]['operations'][$operation]['input']['message']];
173 171
 					}
174
-					if(isset($this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ])){
175
-                   		$this->bindings[$binding]['operations'][$operation]['output']['parts'] = $this->messages[ $this->bindings[$binding]['operations'][$operation]['output']['message'] ];
172
+					if (isset($this->messages[$this->bindings[$binding]['operations'][$operation]['output']['message']])) {
173
+                   		$this->bindings[$binding]['operations'][$operation]['output']['parts'] = $this->messages[$this->bindings[$binding]['operations'][$operation]['output']['message']];
176 174
                     }
177 175
                     // Set operation style if necessary, but do not override one already provided
178 176
 					if (isset($bindingData['style']) && !isset($this->bindings[$binding]['operations'][$operation]['style'])) {
179 177
                         $this->bindings[$binding]['operations'][$operation]['style'] = $bindingData['style'];
180 178
                     }
181 179
                     $this->bindings[$binding]['operations'][$operation]['transport'] = isset($bindingData['transport']) ? $bindingData['transport'] : '';
182
-                    $this->bindings[$binding]['operations'][$operation]['documentation'] = isset($this->portTypes[ $bindingData['portType'] ][$operation]['documentation']) ? $this->portTypes[ $bindingData['portType'] ][$operation]['documentation'] : '';
180
+                    $this->bindings[$binding]['operations'][$operation]['documentation'] = isset($this->portTypes[$bindingData['portType']][$operation]['documentation']) ? $this->portTypes[$bindingData['portType']][$operation]['documentation'] : '';
183 181
                     $this->bindings[$binding]['operations'][$operation]['endpoint'] = isset($bindingData['endpoint']) ? $bindingData['endpoint'] : '';
184 182
                 }
185 183
             }
@@ -205,13 +203,13 @@  discard block
 block discarded – undo
205 203
         $wsdl_props = parse_url($wsdl);
206 204
 
207 205
         if (isset($wsdl_props['scheme']) && ($wsdl_props['scheme'] == 'http' || $wsdl_props['scheme'] == 'https')) {
208
-            $this->debug('getting WSDL http(s) URL ' . $wsdl);
206
+            $this->debug('getting WSDL http(s) URL '.$wsdl);
209 207
         	// get wsdl
210 208
 	        $tr = new soap_transport_http($wsdl, $this->curl_options, $this->use_curl);
211 209
 			$tr->request_method = 'GET';
212 210
 			$tr->useSOAPAction = false;
213
-			if($this->proxyhost && $this->proxyport){
214
-				$tr->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
211
+			if ($this->proxyhost && $this->proxyport) {
212
+				$tr->setProxy($this->proxyhost, $this->proxyport, $this->proxyusername, $this->proxypassword);
215 213
 			}
216 214
 			if ($this->authtype != '') {
217 215
 				$tr->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
@@ -222,8 +220,8 @@  discard block
 block discarded – undo
222 220
 			//$this->debug("WSDL response\n" . $tr->incoming_payload);
223 221
 			$this->appendDebug($tr->getDebug());
224 222
 			// catch errors
225
-			if($err = $tr->getError() ){
226
-				$errstr = 'Getting ' . $wsdl . ' - HTTP ERROR: '.$err;
223
+			if ($err = $tr->getError()) {
224
+				$errstr = 'Getting '.$wsdl.' - HTTP ERROR: '.$err;
227 225
 				$this->debug($errstr);
228 226
 	            $this->setError($errstr);
229 227
 				unset($tr);
@@ -234,11 +232,11 @@  discard block
 block discarded – undo
234 232
         } else {
235 233
             // $wsdl is not http(s), so treat it as a file URL or plain file path
236 234
         	if (isset($wsdl_props['scheme']) && ($wsdl_props['scheme'] == 'file') && isset($wsdl_props['path'])) {
237
-        		$path = isset($wsdl_props['host']) ? ($wsdl_props['host'] . ':' . $wsdl_props['path']) : $wsdl_props['path'];
235
+        		$path = isset($wsdl_props['host']) ? ($wsdl_props['host'].':'.$wsdl_props['path']) : $wsdl_props['path'];
238 236
         	} else {
239 237
         		$path = $wsdl;
240 238
         	}
241
-            $this->debug('getting WSDL file ' . $path);
239
+            $this->debug('getting WSDL file '.$path);
242 240
             if ($fp = @fopen($path, 'r')) {
243 241
                 $wsdl_string = '';
244 242
                 while ($data = fread($fp, 32768)) {
@@ -274,7 +272,7 @@  discard block
 block discarded – undo
274 272
                 xml_error_string(xml_get_error_code($this->parser))
275 273
                 );
276 274
             $this->debug($errstr);
277
-			$this->debug("XML payload:\n" . $wsdl_string);
275
+			$this->debug("XML payload:\n".$wsdl_string);
278 276
             $this->setError($errstr);
279 277
             return false;
280 278
         }
@@ -282,7 +280,7 @@  discard block
 block discarded – undo
282 280
         xml_parser_free($this->parser);
283 281
         $this->debug('Parsing WSDL done');
284 282
 		// catch wsdl parse errors
285
-		if($this->getError()){
283
+		if ($this->getError()) {
286 284
 			return false;
287 285
 		}
288 286
         return true;
@@ -320,21 +318,21 @@  discard block
 block discarded – undo
320 318
             // process attributes
321 319
             if (count($attrs) > 0) {
322 320
 				// register namespace declarations
323
-                foreach($attrs as $k => $v) {
324
-                    if (preg_match('/^xmlns/',$k)) {
321
+                foreach ($attrs as $k => $v) {
322
+                    if (preg_match('/^xmlns/', $k)) {
325 323
                         if ($ns_prefix = substr(strrchr($k, ':'), 1)) {
326 324
                             $this->namespaces[$ns_prefix] = $v;
327 325
                         } else {
328
-                            $this->namespaces['ns' . (count($this->namespaces) + 1)] = $v;
326
+                            $this->namespaces['ns'.(count($this->namespaces) + 1)] = $v;
329 327
                         }
330 328
                         if ($v == 'http://www.w3.org/2001/XMLSchema' || $v == 'http://www.w3.org/1999/XMLSchema' || $v == 'http://www.w3.org/2000/10/XMLSchema') {
331 329
                             $this->XMLSchemaVersion = $v;
332
-                            $this->namespaces['xsi'] = $v . '-instance';
330
+                            $this->namespaces['xsi'] = $v.'-instance';
333 331
                         }
334 332
                     }
335 333
                 }
336 334
                 // expand each attribute prefix to its namespace
337
-                foreach($attrs as $k => $v) {
335
+                foreach ($attrs as $k => $v) {
338 336
                     $k = strpos($k, ':') ? $this->expandQname($k) : $k;
339 337
                     if ($k != 'location' && $k != 'soapAction' && $k != 'namespace') {
340 338
                         $v = strpos($v, ':') ? $this->expandQname($v) : $v;
@@ -360,12 +358,12 @@  discard block
 block discarded – undo
360 358
                 case 'message':
361 359
                     if ($name == 'part') {
362 360
 			            if (isset($attrs['type'])) {
363
-		                    $this->debug("msg " . $this->currentMessage . ": found part (with type) $attrs[name]: " . implode(',', $attrs));
361
+		                    $this->debug("msg ".$this->currentMessage.": found part (with type) $attrs[name]: ".implode(',', $attrs));
364 362
 		                    $this->messages[$this->currentMessage][$attrs['name']] = $attrs['type'];
365 363
             			}
366 364
 			            if (isset($attrs['element'])) {
367
-		                    $this->debug("msg " . $this->currentMessage . ": found part (with element) $attrs[name]: " . implode(',', $attrs));
368
-			                $this->messages[$this->currentMessage][$attrs['name']] = $attrs['element'] . '^';
365
+		                    $this->debug("msg ".$this->currentMessage.": found part (with element) $attrs[name]: ".implode(',', $attrs));
366
+			                $this->messages[$this->currentMessage][$attrs['name']] = $attrs['element'].'^';
369 367
 			            }
370 368
         			}
371 369
         			break;
@@ -434,15 +432,15 @@  discard block
 block discarded – undo
434 432
 					switch ($name) {
435 433
 					    case 'port':
436 434
 					        $this->currentPort = $attrs['name'];
437
-					        $this->debug('current port: ' . $this->currentPort);
435
+					        $this->debug('current port: '.$this->currentPort);
438 436
 					        $this->ports[$this->currentPort]['binding'] = $this->getLocalPart($attrs['binding']);
439 437
 
440 438
 					        break;
441 439
 					    case 'address':
442 440
 					        $this->ports[$this->currentPort]['location'] = $attrs['location'];
443 441
 					        $this->ports[$this->currentPort]['bindingType'] = $namespace;
444
-					        $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['bindingType'] = $namespace;
445
-					        $this->bindings[ $this->ports[$this->currentPort]['binding'] ]['endpoint'] = $attrs['location'];
442
+					        $this->bindings[$this->ports[$this->currentPort]['binding']]['bindingType'] = $namespace;
443
+					        $this->bindings[$this->ports[$this->currentPort]['binding']]['endpoint'] = $attrs['location'];
446 444
 					        break;
447 445
 					}
448 446
 					break;
@@ -452,13 +450,13 @@  discard block
 block discarded – undo
452 450
 			case 'import':
453 451
 			    if (isset($attrs['location'])) {
454 452
                     $this->import[$attrs['namespace']][] = array('location' => $attrs['location'], 'loaded' => false);
455
-                    $this->debug('parsing import ' . $attrs['namespace']. ' - ' . $attrs['location'] . ' (' . count($this->import[$attrs['namespace']]).')');
453
+                    $this->debug('parsing import '.$attrs['namespace'].' - '.$attrs['location'].' ('.count($this->import[$attrs['namespace']]).')');
456 454
 				} else {
457 455
                     $this->import[$attrs['namespace']][] = array('location' => '', 'loaded' => true);
458
-					if (! $this->getPrefixFromNamespace($attrs['namespace'])) {
459
-						$this->namespaces['ns'.(count($this->namespaces)+1)] = $attrs['namespace'];
456
+					if (!$this->getPrefixFromNamespace($attrs['namespace'])) {
457
+						$this->namespaces['ns'.(count($this->namespaces) + 1)] = $attrs['namespace'];
460 458
 					}
461
-                    $this->debug('parsing import ' . $attrs['namespace']. ' - [no location] (' . count($this->import[$attrs['namespace']]).')');
459
+                    $this->debug('parsing import '.$attrs['namespace'].' - [no location] ('.count($this->import[$attrs['namespace']]).')');
462 460
 				}
463 461
 				break;
464 462
 			//wait for schema
@@ -485,13 +483,13 @@  discard block
 block discarded – undo
485 483
 					}
486 484
 					$this->status = 'binding';
487 485
 					$this->bindings[$this->currentBinding]['portType'] = $this->getLocalPart($attrs['type']);
488
-					$this->debug("current binding: $this->currentBinding of portType: " . $attrs['type']);
486
+					$this->debug("current binding: $this->currentBinding of portType: ".$attrs['type']);
489 487
 				}
490 488
 				break;
491 489
 			case 'service':
492 490
 				$this->serviceName = $attrs['name'];
493 491
 				$this->status = 'service';
494
-				$this->debug('current service: ' . $this->serviceName);
492
+				$this->debug('current service: '.$this->serviceName);
495 493
 				break;
496 494
 			case 'definitions':
497 495
 				foreach ($attrs as $name => $value) {
@@ -509,7 +507,7 @@  discard block
 block discarded – undo
509 507
 	* @param string $name element name
510 508
 	* @access private
511 509
 	*/
512
-	function end_element($parser, $name){
510
+	function end_element($parser, $name) {
513 511
 		// unset schema status
514 512
 		if (/*preg_match('/types$/', $name) ||*/ preg_match('/schema$/', $name)) {
515 513
 			$this->status = "";
@@ -594,8 +592,8 @@  discard block
 block discarded – undo
594 592
 		}
595 593
 		$this->debug("getOperations for port '$portName' bindingType $bindingType");
596 594
 		// loop thru ports
597
-		foreach($this->ports as $port => $portData) {
598
-			$this->debug("getOperations checking port $port bindingType " . $portData['bindingType']);
595
+		foreach ($this->ports as $port => $portData) {
596
+			$this->debug("getOperations checking port $port bindingType ".$portData['bindingType']);
599 597
 			if ($portName == '' || $port == $portName) {
600 598
 				// binding type of port matches parameter
601 599
 				if ($portData['bindingType'] == $bindingType) {
@@ -603,8 +601,8 @@  discard block
 block discarded – undo
603 601
 					//$this->debug("port data: " . $this->varDump($portData));
604 602
 					//$this->debug("bindings: " . $this->varDump($this->bindings[ $portData['binding'] ]));
605 603
 					// merge bindings
606
-					if (isset($this->bindings[ $portData['binding'] ]['operations'])) {
607
-						$ops = array_merge ($ops, $this->bindings[ $portData['binding'] ]['operations']);
604
+					if (isset($this->bindings[$portData['binding']]['operations'])) {
605
+						$ops = array_merge($ops, $this->bindings[$portData['binding']]['operations']);
608 606
 					}
609 607
 				}
610 608
 			}
@@ -631,15 +629,15 @@  discard block
 block discarded – undo
631 629
 			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
632 630
 		}
633 631
 		// loop thru ports
634
-		foreach($this->ports as $port => $portData) {
632
+		foreach ($this->ports as $port => $portData) {
635 633
 			// binding type of port matches parameter
636 634
 			if ($portData['bindingType'] == $bindingType) {
637 635
 				// get binding
638 636
 				//foreach($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
639
-				foreach(array_keys($this->bindings[ $portData['binding'] ]['operations']) as $bOperation) {
637
+				foreach (array_keys($this->bindings[$portData['binding']]['operations']) as $bOperation) {
640 638
 					// note that we could/should also check the namespace here
641 639
 					if ($operation == $bOperation) {
642
-						$opData = $this->bindings[ $portData['binding'] ]['operations'][$operation];
640
+						$opData = $this->bindings[$portData['binding']]['operations'][$operation];
643 641
 					    return $opData;
644 642
 					}
645 643
 				}
@@ -662,11 +660,11 @@  discard block
 block discarded – undo
662 660
 			$bindingType = 'http://schemas.xmlsoap.org/wsdl/soap12/';
663 661
 		}
664 662
 		// loop thru ports
665
-		foreach($this->ports as $port => $portData) {
663
+		foreach ($this->ports as $port => $portData) {
666 664
 			// binding type of port matches parameter
667 665
 			if ($portData['bindingType'] == $bindingType) {
668 666
 				// loop through operations for the binding
669
-				foreach ($this->bindings[ $portData['binding'] ]['operations'] as $bOperation => $opData) {
667
+				foreach ($this->bindings[$portData['binding']]['operations'] as $bOperation => $opData) {
670 668
 					if ($opData['soapAction'] == $soapAction) {
671 669
 					    return $opData;
672 670
 					}
@@ -695,7 +693,7 @@  discard block
 block discarded – undo
695 693
     */
696 694
 	function getTypeDef($type, $ns) {
697 695
 		$this->debug("in getTypeDef: type=$type, ns=$ns");
698
-		if ((! $ns) && isset($this->namespaces['tns'])) {
696
+		if ((!$ns) && isset($this->namespaces['tns'])) {
699 697
 			$ns = $this->namespaces['tns'];
700 698
 			$this->debug("in getTypeDef: type namespace forced to $ns");
701 699
 		}
@@ -753,7 +751,7 @@  discard block
 block discarded – undo
753 751
     *
754 752
     * @access private
755 753
     */
756
-    function webDescription(){
754
+    function webDescription() {
757 755
     	global $HTTP_SERVER_VARS;
758 756
 
759 757
 		if (isset($_SERVER)) {
@@ -847,19 +845,19 @@  discard block
 block discarded – undo
847 845
 				<p>View the <a href="'.$PHP_SELF.'?wsdl">WSDL</a> for the service.
848 846
 				Click on an operation name to view it&apos;s details.</p>
849 847
 				<ul>';
850
-				foreach($this->getOperations() as $op => $data){
848
+				foreach ($this->getOperations() as $op => $data) {
851 849
 				    $b .= "<li><a href='#' onclick=\"popout();popup('$op')\">$op</a></li>";
852 850
 				    // create hidden div
853 851
 				    $b .= "<div id='$op' class='hidden'>
854 852
 				    <a href='#' onclick='popout()'><font color='#ffffff'>Close</font></a><br><br>";
855
-				    foreach($data as $donnie => $marie){ // loop through opdata
856
-						if($donnie == 'input' || $donnie == 'output'){ // show input/output data
853
+				    foreach ($data as $donnie => $marie) { // loop through opdata
854
+						if ($donnie == 'input' || $donnie == 'output') { // show input/output data
857 855
 						    $b .= "<font color='white'>".ucfirst($donnie).':</font><br>';
858
-						    foreach($marie as $captain => $tenille){ // loop through data
859
-								if($captain == 'parts'){ // loop thru parts
856
+						    foreach ($marie as $captain => $tenille) { // loop through data
857
+								if ($captain == 'parts') { // loop thru parts
860 858
 								    $b .= "&nbsp;&nbsp;$captain:<br>";
861 859
 					                //if(is_array($tenille)){
862
-								    	foreach($tenille as $joanie => $chachi){
860
+								    	foreach ($tenille as $joanie => $chachi) {
863 861
 											$b .= "&nbsp;&nbsp;&nbsp;&nbsp;$joanie: $chachi<br>";
864 862
 								    	}
865 863
 					        		//}
@@ -891,31 +889,31 @@  discard block
 block discarded – undo
891 889
 	{
892 890
 		$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
893 891
 		$xml .= "\n<definitions";
894
-		foreach($this->namespaces as $k => $v) {
892
+		foreach ($this->namespaces as $k => $v) {
895 893
 			$xml .= " xmlns:$k=\"$v\"";
896 894
 		}
897 895
 		// 10.9.02 - add poulter fix for wsdl and tns declarations
898 896
 		if (isset($this->namespaces['wsdl'])) {
899
-			$xml .= " xmlns=\"" . $this->namespaces['wsdl'] . "\"";
897
+			$xml .= " xmlns=\"".$this->namespaces['wsdl']."\"";
900 898
 		}
901 899
 		if (isset($this->namespaces['tns'])) {
902
-			$xml .= " targetNamespace=\"" . $this->namespaces['tns'] . "\"";
900
+			$xml .= " targetNamespace=\"".$this->namespaces['tns']."\"";
903 901
 		}
904 902
 		$xml .= '>';
905 903
 		// imports
906 904
 		if (sizeof($this->import) > 0) {
907
-			foreach($this->import as $ns => $list) {
905
+			foreach ($this->import as $ns => $list) {
908 906
 				foreach ($list as $ii) {
909 907
 					if ($ii['location'] != '') {
910
-						$xml .= '<import location="' . $ii['location'] . '" namespace="' . $ns . '" />';
908
+						$xml .= '<import location="'.$ii['location'].'" namespace="'.$ns.'" />';
911 909
 					} else {
912
-						$xml .= '<import namespace="' . $ns . '" />';
910
+						$xml .= '<import namespace="'.$ns.'" />';
913 911
 					}
914 912
 				}
915 913
 			}
916 914
 		}
917 915
 		// types
918
-		if (count($this->schemas)>=1) {
916
+		if (count($this->schemas) >= 1) {
919 917
 			$xml .= "\n<types>\n";
920 918
 			foreach ($this->schemas as $ns => $list) {
921 919
 				foreach ($list as $xs) {
@@ -926,10 +924,10 @@  discard block
 block discarded – undo
926 924
 		}
927 925
 		// messages
928 926
 		if (count($this->messages) >= 1) {
929
-			foreach($this->messages as $msgName => $msgParts) {
930
-				$xml .= "\n<message name=\"" . $msgName . '">';
931
-				if(is_array($msgParts)){
932
-					foreach($msgParts as $partName => $partType) {
927
+			foreach ($this->messages as $msgName => $msgParts) {
928
+				$xml .= "\n<message name=\"".$msgName.'">';
929
+				if (is_array($msgParts)) {
930
+					foreach ($msgParts as $partName => $partType) {
933 931
 						// print 'serializing '.$partType.', sv: '.$this->XMLSchemaVersion.'<br>';
934 932
 						if (strpos($partType, ':')) {
935 933
 						    $typePrefix = $this->getPrefixFromNamespace($this->getPrefix($partType));
@@ -937,7 +935,7 @@  discard block
 block discarded – undo
937 935
 						    // print 'checking typemap: '.$this->XMLSchemaVersion.'<br>';
938 936
 						    $typePrefix = 'xsd';
939 937
 						} else {
940
-						    foreach($this->typemap as $ns => $types) {
938
+						    foreach ($this->typemap as $ns => $types) {
941 939
 						        if (isset($types[$partType])) {
942 940
 						            $typePrefix = $this->getPrefixFromNamespace($ns);
943 941
 						        }
@@ -957,7 +955,7 @@  discard block
 block discarded – undo
957 955
 						} else {
958 956
 							$elementortype = 'type';
959 957
 						}
960
-						$xml .= "\n" . '  <part name="' . $partName . '" ' . $elementortype . '="' . $typePrefix . ':' . $localPart . '" />';
958
+						$xml .= "\n".'  <part name="'.$partName.'" '.$elementortype.'="'.$typePrefix.':'.$localPart.'" />';
961 959
 					}
962 960
 				}
963 961
 				$xml .= '</message>';
@@ -967,54 +965,54 @@  discard block
 block discarded – undo
967 965
 		if (count($this->bindings) >= 1) {
968 966
 			$binding_xml = '';
969 967
 			$portType_xml = '';
970
-			foreach($this->bindings as $bindingName => $attrs) {
971
-				$binding_xml .= "\n<binding name=\"" . $bindingName . '" type="tns:' . $attrs['portType'] . '">';
972
-				$binding_xml .= "\n" . '  <soap:binding style="' . $attrs['style'] . '" transport="' . $attrs['transport'] . '"/>';
973
-				$portType_xml .= "\n<portType name=\"" . $attrs['portType'] . '">';
974
-				foreach($attrs['operations'] as $opName => $opParts) {
975
-					$binding_xml .= "\n" . '  <operation name="' . $opName . '">';
976
-					$binding_xml .= "\n" . '    <soap:operation soapAction="' . $opParts['soapAction'] . '" style="'. $opParts['style'] . '"/>';
968
+			foreach ($this->bindings as $bindingName => $attrs) {
969
+				$binding_xml .= "\n<binding name=\"".$bindingName.'" type="tns:'.$attrs['portType'].'">';
970
+				$binding_xml .= "\n".'  <soap:binding style="'.$attrs['style'].'" transport="'.$attrs['transport'].'"/>';
971
+				$portType_xml .= "\n<portType name=\"".$attrs['portType'].'">';
972
+				foreach ($attrs['operations'] as $opName => $opParts) {
973
+					$binding_xml .= "\n".'  <operation name="'.$opName.'">';
974
+					$binding_xml .= "\n".'    <soap:operation soapAction="'.$opParts['soapAction'].'" style="'.$opParts['style'].'"/>';
977 975
 					if (isset($opParts['input']['encodingStyle']) && $opParts['input']['encodingStyle'] != '') {
978
-						$enc_style = ' encodingStyle="' . $opParts['input']['encodingStyle'] . '"';
976
+						$enc_style = ' encodingStyle="'.$opParts['input']['encodingStyle'].'"';
979 977
 					} else {
980 978
 						$enc_style = '';
981 979
 					}
982
-					$binding_xml .= "\n" . '    <input><soap:body use="' . $opParts['input']['use'] . '" namespace="' . $opParts['input']['namespace'] . '"' . $enc_style . '/></input>';
980
+					$binding_xml .= "\n".'    <input><soap:body use="'.$opParts['input']['use'].'" namespace="'.$opParts['input']['namespace'].'"'.$enc_style.'/></input>';
983 981
 					if (isset($opParts['output']['encodingStyle']) && $opParts['output']['encodingStyle'] != '') {
984
-						$enc_style = ' encodingStyle="' . $opParts['output']['encodingStyle'] . '"';
982
+						$enc_style = ' encodingStyle="'.$opParts['output']['encodingStyle'].'"';
985 983
 					} else {
986 984
 						$enc_style = '';
987 985
 					}
988
-					$binding_xml .= "\n" . '    <output><soap:body use="' . $opParts['output']['use'] . '" namespace="' . $opParts['output']['namespace'] . '"' . $enc_style . '/></output>';
989
-					$binding_xml .= "\n" . '  </operation>';
990
-					$portType_xml .= "\n" . '  <operation name="' . $opParts['name'] . '"';
986
+					$binding_xml .= "\n".'    <output><soap:body use="'.$opParts['output']['use'].'" namespace="'.$opParts['output']['namespace'].'"'.$enc_style.'/></output>';
987
+					$binding_xml .= "\n".'  </operation>';
988
+					$portType_xml .= "\n".'  <operation name="'.$opParts['name'].'"';
991 989
 					if (isset($opParts['parameterOrder'])) {
992
-					    $portType_xml .= ' parameterOrder="' . $opParts['parameterOrder'] . '"';
990
+					    $portType_xml .= ' parameterOrder="'.$opParts['parameterOrder'].'"';
993 991
 					}
994 992
 					$portType_xml .= '>';
995
-					if(isset($opParts['documentation']) && $opParts['documentation'] != '') {
996
-						$portType_xml .= "\n" . '    <documentation>' . htmlspecialchars($opParts['documentation']) . '</documentation>';
993
+					if (isset($opParts['documentation']) && $opParts['documentation'] != '') {
994
+						$portType_xml .= "\n".'    <documentation>'.htmlspecialchars($opParts['documentation']).'</documentation>';
997 995
 					}
998
-					$portType_xml .= "\n" . '    <input message="tns:' . $opParts['input']['message'] . '"/>';
999
-					$portType_xml .= "\n" . '    <output message="tns:' . $opParts['output']['message'] . '"/>';
1000
-					$portType_xml .= "\n" . '  </operation>';
996
+					$portType_xml .= "\n".'    <input message="tns:'.$opParts['input']['message'].'"/>';
997
+					$portType_xml .= "\n".'    <output message="tns:'.$opParts['output']['message'].'"/>';
998
+					$portType_xml .= "\n".'  </operation>';
1001 999
 				}
1002
-				$portType_xml .= "\n" . '</portType>';
1003
-				$binding_xml .= "\n" . '</binding>';
1000
+				$portType_xml .= "\n".'</portType>';
1001
+				$binding_xml .= "\n".'</binding>';
1004 1002
 			}
1005
-			$xml .= $portType_xml . $binding_xml;
1003
+			$xml .= $portType_xml.$binding_xml;
1006 1004
 		}
1007 1005
 		// services
1008
-		$xml .= "\n<service name=\"" . $this->serviceName . '">';
1006
+		$xml .= "\n<service name=\"".$this->serviceName.'">';
1009 1007
 		if (count($this->ports) >= 1) {
1010
-			foreach($this->ports as $pName => $attrs) {
1011
-				$xml .= "\n" . '  <port name="' . $pName . '" binding="tns:' . $attrs['binding'] . '">';
1012
-				$xml .= "\n" . '    <soap:address location="' . $attrs['location'] . ($debug ? '?debug=1' : '') . '"/>';
1013
-				$xml .= "\n" . '  </port>';
1008
+			foreach ($this->ports as $pName => $attrs) {
1009
+				$xml .= "\n".'  <port name="'.$pName.'" binding="tns:'.$attrs['binding'].'">';
1010
+				$xml .= "\n".'    <soap:address location="'.$attrs['location'].($debug ? '?debug=1' : '').'"/>';
1011
+				$xml .= "\n".'  </port>';
1014 1012
 			}
1015 1013
 		}
1016
-		$xml .= "\n" . '</service>';
1017
-		return $xml . "\n</definitions>";
1014
+		$xml .= "\n".'</service>';
1015
+		return $xml."\n</definitions>";
1018 1016
 	}
1019 1017
 
1020 1018
 	/**
@@ -1111,7 +1109,7 @@  discard block
 block discarded – undo
1111 1109
 	 */
1112 1110
 	function serializeRPCParameters($operation, $direction, $parameters, $bindingType = 'soap') {
1113 1111
 		$this->debug("in serializeRPCParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion, bindingType=$bindingType");
1114
-		$this->appendDebug('parameters=' . $this->varDump($parameters));
1112
+		$this->appendDebug('parameters='.$this->varDump($parameters));
1115 1113
 
1116 1114
 		if ($direction != 'input' && $direction != 'output') {
1117 1115
 			$this->debug('The value of the \$direction argument needs to be either "input" or "output"');
@@ -1119,8 +1117,8 @@  discard block
 block discarded – undo
1119 1117
 			return false;
1120 1118
 		}
1121 1119
 		if (!$opData = $this->getOperationData($operation, $bindingType)) {
1122
-			$this->debug('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1123
-			$this->setError('Unable to retrieve WSDL data for operation: ' . $operation . ' bindingType: ' . $bindingType);
1120
+			$this->debug('Unable to retrieve WSDL data for operation: '.$operation.' bindingType: '.$bindingType);
1121
+			$this->setError('Unable to retrieve WSDL data for operation: '.$operation.' bindingType: '.$bindingType);
1124 1122
 			return false;
1125 1123
 		}
1126 1124
 		$this->debug('in serializeRPCParameters: opData:');
@@ -1128,7 +1126,7 @@  discard block
 block discarded – undo
1128 1126
 
1129 1127
 		// Get encoding style for output and set to current
1130 1128
 		$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1131
-		if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1129
+		if (($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1132 1130
 			$encodingStyle = $opData['output']['encodingStyle'];
1133 1131
 			$enc_style = $encodingStyle;
1134 1132
 		}
@@ -1213,7 +1211,7 @@  discard block
 block discarded – undo
1213 1211
 	function serializeParameters($operation, $direction, $parameters)
1214 1212
 	{
1215 1213
 		$this->debug("in serializeParameters: operation=$operation, direction=$direction, XMLSchemaVersion=$this->XMLSchemaVersion");
1216
-		$this->appendDebug('parameters=' . $this->varDump($parameters));
1214
+		$this->appendDebug('parameters='.$this->varDump($parameters));
1217 1215
 
1218 1216
 		if ($direction != 'input' && $direction != 'output') {
1219 1217
 			$this->debug('The value of the \$direction argument needs to be either "input" or "output"');
@@ -1221,8 +1219,8 @@  discard block
 block discarded – undo
1221 1219
 			return false;
1222 1220
 		}
1223 1221
 		if (!$opData = $this->getOperationData($operation)) {
1224
-			$this->debug('Unable to retrieve WSDL data for operation: ' . $operation);
1225
-			$this->setError('Unable to retrieve WSDL data for operation: ' . $operation);
1222
+			$this->debug('Unable to retrieve WSDL data for operation: '.$operation);
1223
+			$this->setError('Unable to retrieve WSDL data for operation: '.$operation);
1226 1224
 			return false;
1227 1225
 		}
1228 1226
 		$this->debug('opData:');
@@ -1230,7 +1228,7 @@  discard block
 block discarded – undo
1230 1228
 
1231 1229
 		// Get encoding style for output and set to current
1232 1230
 		$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1233
-		if(($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1231
+		if (($direction == 'input') && isset($opData['output']['encodingStyle']) && ($opData['output']['encodingStyle'] != $encodingStyle)) {
1234 1232
 			$encodingStyle = $opData['output']['encodingStyle'];
1235 1233
 			$enc_style = $encodingStyle;
1236 1234
 		}
@@ -1241,14 +1239,14 @@  discard block
 block discarded – undo
1241 1239
 
1242 1240
 			$use = $opData[$direction]['use'];
1243 1241
 			$this->debug("use=$use");
1244
-			$this->debug('got ' . count($opData[$direction]['parts']) . ' part(s)');
1242
+			$this->debug('got '.count($opData[$direction]['parts']).' part(s)');
1245 1243
 			if (is_array($parameters)) {
1246 1244
 				$parametersArrayType = $this->isArraySimpleOrStruct($parameters);
1247
-				$this->debug('have ' . $parametersArrayType . ' parameters');
1248
-				foreach($opData[$direction]['parts'] as $name => $type) {
1245
+				$this->debug('have '.$parametersArrayType.' parameters');
1246
+				foreach ($opData[$direction]['parts'] as $name => $type) {
1249 1247
 					$this->debug('serializing part "'.$name.'" of type "'.$type.'"');
1250 1248
 					// Track encoding style
1251
-					if(isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1249
+					if (isset($opData[$direction]['encodingStyle']) && $encodingStyle != $opData[$direction]['encodingStyle']) {
1252 1250
 						$encodingStyle = $opData[$direction]['encodingStyle'];
1253 1251
 						$enc_style = $encodingStyle;
1254 1252
 					} else {
@@ -1289,18 +1287,18 @@  discard block
 block discarded – undo
1289 1287
 	 * @return string value serialized as an XML string
1290 1288
 	 * @access private
1291 1289
 	 */
1292
-	function serializeType($name, $type, $value, $use='encoded', $encodingStyle=false, $unqualified=false)
1290
+	function serializeType($name, $type, $value, $use = 'encoded', $encodingStyle = false, $unqualified = false)
1293 1291
 	{
1294
-		$this->debug("in serializeType: name=$name, type=$type, use=$use, encodingStyle=$encodingStyle, unqualified=" . ($unqualified ? "unqualified" : "qualified"));
1295
-		$this->appendDebug("value=" . $this->varDump($value));
1296
-		if($use == 'encoded' && $encodingStyle) {
1297
-			$encodingStyle = ' SOAP-ENV:encodingStyle="' . $encodingStyle . '"';
1292
+		$this->debug("in serializeType: name=$name, type=$type, use=$use, encodingStyle=$encodingStyle, unqualified=".($unqualified ? "unqualified" : "qualified"));
1293
+		$this->appendDebug("value=".$this->varDump($value));
1294
+		if ($use == 'encoded' && $encodingStyle) {
1295
+			$encodingStyle = ' SOAP-ENV:encodingStyle="'.$encodingStyle.'"';
1298 1296
 		}
1299 1297
 
1300 1298
 		// if a soapval has been supplied, let its type override the WSDL
1301 1299
     	if (is_object($value) && get_class($value) == 'soapval') {
1302 1300
     		if ($value->type_ns) {
1303
-    			$type = $value->type_ns . ':' . $value->type;
1301
+    			$type = $value->type_ns.':'.$value->type;
1304 1302
 		    	$forceType = true;
1305 1303
 		    	$this->debug("in serializeType: soapval overrides type to $type");
1306 1304
     		} elseif ($value->type) {
@@ -1319,7 +1317,7 @@  discard block
 block discarded – undo
1319 1317
 	    			$value['!'] = $value;
1320 1318
 	    		}
1321 1319
 	    		foreach ($attrs as $n => $v) {
1322
-	    			$value['!' . $n] = $v;
1320
+	    			$value['!'.$n] = $v;
1323 1321
 	    		}
1324 1322
 		    	$this->debug("in serializeType: soapval provides attributes");
1325 1323
 		    }
@@ -1337,7 +1335,7 @@  discard block
 block discarded – undo
1337 1335
 				$this->debug("in serializeType: expanded prefixed type: $uqType, $ns");
1338 1336
 			}
1339 1337
 
1340
-			if($ns == $this->XMLSchemaVersion || $ns == 'http://schemas.xmlsoap.org/soap/encoding/'){
1338
+			if ($ns == $this->XMLSchemaVersion || $ns == 'http://schemas.xmlsoap.org/soap/encoding/') {
1341 1339
 				$this->debug('in serializeType: type namespace indicates XML Schema or SOAP Encoding type');
1342 1340
 				if ($unqualified && $use == 'literal') {
1343 1341
 					$elementNS = " xmlns=\"\"";
@@ -1350,7 +1348,7 @@  discard block
 block discarded – undo
1350 1348
 						$xml = "<$name$elementNS/>";
1351 1349
 					} else {
1352 1350
 						// TODO: depends on nillable, which should be checked before calling this method
1353
-						$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1351
+						$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\"/>";
1354 1352
 					}
1355 1353
 					$this->debug("in serializeType: returning: $xml");
1356 1354
 					return $xml;
@@ -1360,7 +1358,7 @@  discard block
 block discarded – undo
1360 1358
 					return $this->serialize_val($value, $name, false, false, false, false, $use);
1361 1359
 				}
1362 1360
 		    	if ($uqType == 'boolean') {
1363
-		    		if ((is_string($value) && $value == 'false') || (! $value)) {
1361
+		    		if ((is_string($value) && $value == 'false') || (!$value)) {
1364 1362
 						$value = 'false';
1365 1363
 					} else {
1366 1364
 						$value = 'true';
@@ -1378,12 +1376,12 @@  discard block
 block discarded – undo
1378 1376
 				if (!$this->getTypeDef($uqType, $ns)) {
1379 1377
 					if ($use == 'literal') {
1380 1378
 						if ($forceType) {
1381
-							$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1379
+							$xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\">$value</$name>";
1382 1380
 						} else {
1383 1381
 							$xml = "<$name$elementNS>$value</$name>";
1384 1382
 						}
1385 1383
 					} else {
1386
-						$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1384
+						$xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\"$encodingStyle>$value</$name>";
1387 1385
 					}
1388 1386
 					$this->debug("in serializeType: returning: $xml");
1389 1387
 					return $xml;
@@ -1393,29 +1391,29 @@  discard block
 block discarded – undo
1393 1391
 				$this->debug('in serializeType: appears to be Apache SOAP type');
1394 1392
 				if ($uqType == 'Map') {
1395 1393
 					$tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1396
-					if (! $tt_prefix) {
1394
+					if (!$tt_prefix) {
1397 1395
 						$this->debug('in serializeType: Add namespace for Apache SOAP type');
1398
-						$tt_prefix = 'ns' . rand(1000, 9999);
1396
+						$tt_prefix = 'ns'.rand(1000, 9999);
1399 1397
 						$this->namespaces[$tt_prefix] = 'http://xml.apache.org/xml-soap';
1400 1398
 						// force this to be added to usedNamespaces
1401 1399
 						$tt_prefix = $this->getPrefixFromNamespace('http://xml.apache.org/xml-soap');
1402 1400
 					}
1403 1401
 					$contents = '';
1404
-					foreach($value as $k => $v) {
1402
+					foreach ($value as $k => $v) {
1405 1403
 						$this->debug("serializing map element: key $k, value $v");
1406 1404
 						$contents .= '<item>';
1407
-						$contents .= $this->serialize_val($k,'key',false,false,false,false,$use);
1408
-						$contents .= $this->serialize_val($v,'value',false,false,false,false,$use);
1405
+						$contents .= $this->serialize_val($k, 'key', false, false, false, false, $use);
1406
+						$contents .= $this->serialize_val($v, 'value', false, false, false, false, $use);
1409 1407
 						$contents .= '</item>';
1410 1408
 					}
1411 1409
 					if ($use == 'literal') {
1412 1410
 						if ($forceType) {
1413
-							$xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\">$contents</$name>";
1411
+							$xml = "<$name xsi:type=\"".$tt_prefix.":$uqType\">$contents</$name>";
1414 1412
 						} else {
1415 1413
 							$xml = "<$name>$contents</$name>";
1416 1414
 						}
1417 1415
 					} else {
1418
-						$xml = "<$name xsi:type=\"" . $tt_prefix . ":$uqType\"$encodingStyle>$contents</$name>";
1416
+						$xml = "<$name xsi:type=\"".$tt_prefix.":$uqType\"$encodingStyle>$contents</$name>";
1419 1417
 					}
1420 1418
 					$this->debug("in serializeType: returning: $xml");
1421 1419
 					return $xml;
@@ -1429,13 +1427,13 @@  discard block
 block discarded – undo
1429 1427
 			$ns = '';
1430 1428
 			$uqType = $type;
1431 1429
 		}
1432
-		if(!$typeDef = $this->getTypeDef($uqType, $ns)){
1430
+		if (!$typeDef = $this->getTypeDef($uqType, $ns)) {
1433 1431
 			$this->setError("$type ($uqType) is not a supported type.");
1434 1432
 			$this->debug("in serializeType: $type ($uqType) is not a supported type.");
1435 1433
 			return false;
1436 1434
 		} else {
1437 1435
 			$this->debug("in serializeType: found typeDef");
1438
-			$this->appendDebug('typeDef=' . $this->varDump($typeDef));
1436
+			$this->appendDebug('typeDef='.$this->varDump($typeDef));
1439 1437
 			if (substr($uqType, -1) == '^') {
1440 1438
 				$uqType = substr($uqType, 0, -1);
1441 1439
 			}
@@ -1446,7 +1444,7 @@  discard block
 block discarded – undo
1446 1444
 			return false;
1447 1445
 		}
1448 1446
 		$phpType = $typeDef['phpType'];
1449
-		$this->debug("in serializeType: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: " . (isset($typeDef['arrayType']) ? $typeDef['arrayType'] : '') );
1447
+		$this->debug("in serializeType: uqType: $uqType, ns: $ns, phptype: $phpType, arrayType: ".(isset($typeDef['arrayType']) ? $typeDef['arrayType'] : ''));
1450 1448
 		// if php type == struct, map value to the <all> element names
1451 1449
 		if ($phpType == 'struct') {
1452 1450
 			if (isset($typeDef['typeClass']) && $typeDef['typeClass'] == 'element') {
@@ -1469,7 +1467,7 @@  discard block
 block discarded – undo
1469 1467
 					// TODO: depends on minOccurs and nillable
1470 1468
 					$xml = "<$elementName$elementNS/>";
1471 1469
 				} else {
1472
-					$xml = "<$elementName$elementNS xsi:nil=\"true\" xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"/>";
1470
+					$xml = "<$elementName$elementNS xsi:nil=\"true\" xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\"/>";
1473 1471
 				}
1474 1472
 				$this->debug("in serializeType: returning: $xml");
1475 1473
 				return $xml;
@@ -1481,12 +1479,12 @@  discard block
 block discarded – undo
1481 1479
 				$elementAttrs = $this->serializeComplexTypeAttributes($typeDef, $value, $ns, $uqType);
1482 1480
 				if ($use == 'literal') {
1483 1481
 					if ($forceType) {
1484
-						$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">";
1482
+						$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\">";
1485 1483
 					} else {
1486 1484
 						$xml = "<$elementName$elementNS$elementAttrs>";
1487 1485
 					}
1488 1486
 				} else {
1489
-					$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>";
1487
+					$xml = "<$elementName$elementNS$elementAttrs xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\"$encodingStyle>";
1490 1488
 				}
1491 1489
 
1492 1490
 				if (isset($typeDef['simpleContent']) && $typeDef['simpleContent'] == 'true') {
@@ -1521,13 +1519,13 @@  discard block
 block discarded – undo
1521 1519
 					// TODO: depends on minOccurs
1522 1520
 					$xml = "<$name$elementNS/>";
1523 1521
 				} else {
1524
-					$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"" .
1525
-						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1526
-						":Array\" " .
1527
-						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/') .
1528
-						':arrayType="' .
1529
-						$this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType'])) .
1530
-						':' .
1522
+					$xml = "<$name$elementNS xsi:nil=\"true\" xsi:type=\"".
1523
+						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/').
1524
+						":Array\" ".
1525
+						$this->getPrefixFromNamespace('http://schemas.xmlsoap.org/soap/encoding/').
1526
+						':arrayType="'.
1527
+						$this->getPrefixFromNamespace($this->getPrefix($typeDef['arrayType'])).
1528
+						':'.
1531 1529
 						$this->getLocalPart($typeDef['arrayType'])."[0]\"/>";
1532 1530
 				}
1533 1531
 				$this->debug("in serializeType: returning: $xml");
@@ -1535,8 +1533,8 @@  discard block
 block discarded – undo
1535 1533
 			}
1536 1534
 			if (isset($typeDef['multidimensional'])) {
1537 1535
 				$nv = array();
1538
-				foreach($value as $v) {
1539
-					$cols = ',' . sizeof($v);
1536
+				foreach ($value as $v) {
1537
+					$cols = ','.sizeof($v);
1540 1538
 					$nv = array_merge($nv, $v);
1541 1539
 				}
1542 1540
 				$value = $nv;
@@ -1546,10 +1544,10 @@  discard block
 block discarded – undo
1546 1544
 			if (is_array($value) && sizeof($value) >= 1) {
1547 1545
 				$rows = sizeof($value);
1548 1546
 				$contents = '';
1549
-				foreach($value as $k => $v) {
1547
+				foreach ($value as $k => $v) {
1550 1548
 					//$this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]");
1551 1549
 					//if (strpos($typeDef['arrayType'], ':') ) {
1552
-					if (!in_array($typeDef['arrayType'],$this->typemap['http://www.w3.org/2001/XMLSchema'])) {
1550
+					if (!in_array($typeDef['arrayType'], $this->typemap['http://www.w3.org/2001/XMLSchema'])) {
1553 1551
 					    $contents .= $this->serializeType('item', $typeDef['arrayType'], $v, $use);
1554 1552
 					} else {
1555 1553
 					    $contents .= $this->serialize_val($v, 'item', $typeDef['arrayType'], null, $this->XMLSchemaVersion, false, $use);
@@ -1586,12 +1584,12 @@  discard block
 block discarded – undo
1586 1584
 			}
1587 1585
 			if ($use == 'literal') {
1588 1586
 				if ($forceType) {
1589
-					$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\">$value</$name>";
1587
+					$xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\">$value</$name>";
1590 1588
 				} else {
1591 1589
 					$xml = "<$name$elementNS>$value</$name>";
1592 1590
 				}
1593 1591
 			} else {
1594
-				$xml = "<$name$elementNS xsi:type=\"" . $this->getPrefixFromNamespace($ns) . ":$uqType\"$encodingStyle>$value</$name>";
1592
+				$xml = "<$name$elementNS xsi:type=\"".$this->getPrefixFromNamespace($ns).":$uqType\"$encodingStyle>$value</$name>";
1595 1593
 			}
1596 1594
 		}
1597 1595
 		$this->debug("in serializeType: returning: $xml");
@@ -1635,22 +1633,22 @@  discard block
 block discarded – undo
1635 1633
 				$xvalue = array();
1636 1634
 			}
1637 1635
 			foreach ($typeDef['attrs'] as $aName => $attrs) {
1638
-				if (isset($xvalue['!' . $aName])) {
1639
-					$xname = '!' . $aName;
1636
+				if (isset($xvalue['!'.$aName])) {
1637
+					$xname = '!'.$aName;
1640 1638
 					$this->debug("value provided for attribute $aName with key $xname");
1641 1639
 				} elseif (isset($xvalue[$aName])) {
1642 1640
 					$xname = $aName;
1643 1641
 					$this->debug("value provided for attribute $aName with key $xname");
1644 1642
 				} elseif (isset($attrs['default'])) {
1645
-					$xname = '!' . $aName;
1643
+					$xname = '!'.$aName;
1646 1644
 					$xvalue[$xname] = $attrs['default'];
1647
-					$this->debug('use default value of ' . $xvalue[$aName] . ' for attribute ' . $aName);
1645
+					$this->debug('use default value of '.$xvalue[$aName].' for attribute '.$aName);
1648 1646
 				} else {
1649 1647
 					$xname = '';
1650 1648
 					$this->debug("no value provided for attribute $aName");
1651 1649
 				}
1652 1650
 				if ($xname) {
1653
-					$xml .=  " $aName=\"" . $this->expandEntities($xvalue[$xname]) . "\"";
1651
+					$xml .= " $aName=\"".$this->expandEntities($xvalue[$xname])."\"";
1654 1652
 				}
1655 1653
 			}
1656 1654
 		} else {
@@ -1671,7 +1669,7 @@  discard block
 block discarded – undo
1671 1669
 	 * @return string value serialized as an XML string
1672 1670
 	 * @access private
1673 1671
 	 */
1674
-	function serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use='encoded', $encodingStyle=false) {
1672
+	function serializeComplexTypeElements($typeDef, $value, $ns, $uqType, $use = 'encoded', $encodingStyle = false) {
1675 1673
 		$this->debug("in serializeComplexTypeElements for XML Schema type $ns:$uqType");
1676 1674
 		$xml = '';
1677 1675
 		if (isset($typeDef['extensionBase'])) {
@@ -1698,23 +1696,23 @@  discard block
 block discarded – undo
1698 1696
 				$xvalue = array();
1699 1697
 			}
1700 1698
 			// toggle whether all elements are present - ideally should validate against schema
1701
-			if (count($typeDef['elements']) != count($xvalue)){
1699
+			if (count($typeDef['elements']) != count($xvalue)) {
1702 1700
 				$optionals = true;
1703 1701
 			}
1704 1702
 			foreach ($typeDef['elements'] as $eName => $attrs) {
1705 1703
 				if (!isset($xvalue[$eName])) {
1706 1704
 					if (isset($attrs['default'])) {
1707 1705
 						$xvalue[$eName] = $attrs['default'];
1708
-						$this->debug('use default value of ' . $xvalue[$eName] . ' for element ' . $eName);
1706
+						$this->debug('use default value of '.$xvalue[$eName].' for element '.$eName);
1709 1707
 					}
1710 1708
 				}
1711 1709
 				// if user took advantage of a minOccurs=0, then only serialize named parameters
1712 1710
 				if (isset($optionals)
1713 1711
 				    && (!isset($xvalue[$eName]))
1714
-					&& ( (!isset($attrs['nillable'])) || $attrs['nillable'] != 'true')
1715
-					){
1712
+					&& ((!isset($attrs['nillable'])) || $attrs['nillable'] != 'true')
1713
+					) {
1716 1714
 					if (isset($attrs['minOccurs']) && $attrs['minOccurs'] <> '0') {
1717
-						$this->debug("apparent error: no value provided for element $eName with minOccurs=" . $attrs['minOccurs']);
1715
+						$this->debug("apparent error: no value provided for element $eName with minOccurs=".$attrs['minOccurs']);
1718 1716
 					}
1719 1717
 					// do nothing
1720 1718
 					$this->debug("no value provided for complexType element $eName and element is not nillable, so serialize nothing");
@@ -1779,15 +1777,15 @@  discard block
 block discarded – undo
1779 1777
 	* @see nusoap_xmlschema
1780 1778
 	* @access public
1781 1779
 	*/
1782
-	function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType='') {
1780
+	function addComplexType($name, $typeClass = 'complexType', $phpType = 'array', $compositor = '', $restrictionBase = '', $elements = array(), $attrs = array(), $arrayType = '') {
1783 1781
 		if (count($elements) > 0) {
1784 1782
 			$eElements = array();
1785
-	    	foreach($elements as $n => $e){
1783
+	    	foreach ($elements as $n => $e) {
1786 1784
 	            // expand each element
1787 1785
 	            $ee = array();
1788 1786
 	            foreach ($e as $k => $v) {
1789
-		            $k = strpos($k,':') ? $this->expandQname($k) : $k;
1790
-		            $v = strpos($v,':') ? $this->expandQname($v) : $v;
1787
+		            $k = strpos($k, ':') ? $this->expandQname($k) : $k;
1788
+		            $v = strpos($v, ':') ? $this->expandQname($v) : $v;
1791 1789
 		            $ee[$k] = $v;
1792 1790
 		    	}
1793 1791
 	    		$eElements[$n] = $ee;
@@ -1796,11 +1794,11 @@  discard block
 block discarded – undo
1796 1794
 		}
1797 1795
 
1798 1796
 		if (count($attrs) > 0) {
1799
-	    	foreach($attrs as $n => $a){
1797
+	    	foreach ($attrs as $n => $a) {
1800 1798
 	            // expand each attribute
1801 1799
 	            foreach ($a as $k => $v) {
1802
-		            $k = strpos($k,':') ? $this->expandQname($k) : $k;
1803
-		            $v = strpos($v,':') ? $this->expandQname($v) : $v;
1800
+		            $k = strpos($k, ':') ? $this->expandQname($k) : $k;
1801
+		            $v = strpos($v, ':') ? $this->expandQname($v) : $v;
1804 1802
 		            $aa[$k] = $v;
1805 1803
 		    	}
1806 1804
 	    		$eAttrs[$n] = $aa;
@@ -1808,11 +1806,11 @@  discard block
 block discarded – undo
1808 1806
 	    	$attrs = $eAttrs;
1809 1807
 		}
1810 1808
 
1811
-		$restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1812
-		$arrayType = strpos($arrayType,':') ? $this->expandQname($arrayType) : $arrayType;
1809
+		$restrictionBase = strpos($restrictionBase, ':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1810
+		$arrayType = strpos($arrayType, ':') ? $this->expandQname($arrayType) : $arrayType;
1813 1811
 
1814 1812
 		$typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1815
-		$this->schemas[$typens][0]->addComplexType($name,$typeClass,$phpType,$compositor,$restrictionBase,$elements,$attrs,$arrayType);
1813
+		$this->schemas[$typens][0]->addComplexType($name, $typeClass, $phpType, $compositor, $restrictionBase, $elements, $attrs, $arrayType);
1816 1814
 	}
1817 1815
 
1818 1816
 	/**
@@ -1826,8 +1824,8 @@  discard block
 block discarded – undo
1826 1824
 	* @see nusoap_xmlschema
1827 1825
 	* @access public
1828 1826
 	*/
1829
-	function addSimpleType($name, $restrictionBase='', $typeClass='simpleType', $phpType='scalar', $enumeration=array()) {
1830
-		$restrictionBase = strpos($restrictionBase,':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1827
+	function addSimpleType($name, $restrictionBase = '', $typeClass = 'simpleType', $phpType = 'scalar', $enumeration = array()) {
1828
+		$restrictionBase = strpos($restrictionBase, ':') ? $this->expandQname($restrictionBase) : $restrictionBase;
1831 1829
 
1832 1830
 		$typens = isset($this->namespaces['types']) ? $this->namespaces['types'] : $this->namespaces['tns'];
1833 1831
 		$this->schemas[$typens][0]->addSimpleType($name, $restrictionBase, $typeClass, $phpType, $enumeration);
@@ -1859,7 +1857,7 @@  discard block
 block discarded – undo
1859 1857
 	* @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
1860 1858
 	* @access public
1861 1859
 	*/
1862
-	function addOperation($name, $in = false, $out = false, $namespace = false, $soapaction = false, $style = 'rpc', $use = 'encoded', $documentation = '', $encodingStyle = ''){
1860
+	function addOperation($name, $in = false, $out = false, $namespace = false, $soapaction = false, $style = 'rpc', $use = 'encoded', $documentation = '', $encodingStyle = '') {
1863 1861
 		if ($use == 'encoded' && $encodingStyle == '') {
1864 1862
 			$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
1865 1863
 		}
@@ -1869,24 +1867,24 @@  discard block
 block discarded – undo
1869 1867
 			foreach ($in as $n => $t) {
1870 1868
 				$elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1871 1869
 			}
1872
-			$this->addComplexType($name . 'RequestType', 'complexType', 'struct', 'all', '', $elements);
1873
-			$this->addElement(array('name' => $name, 'type' => $name . 'RequestType'));
1874
-			$in = array('parameters' => 'tns:' . $name . '^');
1870
+			$this->addComplexType($name.'RequestType', 'complexType', 'struct', 'all', '', $elements);
1871
+			$this->addElement(array('name' => $name, 'type' => $name.'RequestType'));
1872
+			$in = array('parameters' => 'tns:'.$name.'^');
1875 1873
 
1876 1874
 			$elements = array();
1877 1875
 			foreach ($out as $n => $t) {
1878 1876
 				$elements[$n] = array('name' => $n, 'type' => $t, 'form' => 'unqualified');
1879 1877
 			}
1880
-			$this->addComplexType($name . 'ResponseType', 'complexType', 'struct', 'all', '', $elements);
1881
-			$this->addElement(array('name' => $name . 'Response', 'type' => $name . 'ResponseType', 'form' => 'qualified'));
1882
-			$out = array('parameters' => 'tns:' . $name . 'Response' . '^');
1878
+			$this->addComplexType($name.'ResponseType', 'complexType', 'struct', 'all', '', $elements);
1879
+			$this->addElement(array('name' => $name.'Response', 'type' => $name.'ResponseType', 'form' => 'qualified'));
1880
+			$out = array('parameters' => 'tns:'.$name.'Response'.'^');
1883 1881
 		}
1884 1882
 
1885 1883
 		// get binding
1886
-		$this->bindings[ $this->serviceName . 'Binding' ]['operations'][$name] =
1884
+		$this->bindings[$this->serviceName.'Binding']['operations'][$name] =
1887 1885
 		array(
1888 1886
 		'name' => $name,
1889
-		'binding' => $this->serviceName . 'Binding',
1887
+		'binding' => $this->serviceName.'Binding',
1890 1888
 		'endpoint' => $this->endpoint,
1891 1889
 		'soapAction' => $soapaction,
1892 1890
 		'style' => $style,
@@ -1894,42 +1892,42 @@  discard block
 block discarded – undo
1894 1892
 			'use' => $use,
1895 1893
 			'namespace' => $namespace,
1896 1894
 			'encodingStyle' => $encodingStyle,
1897
-			'message' => $name . 'Request',
1895
+			'message' => $name.'Request',
1898 1896
 			'parts' => $in),
1899 1897
 		'output' => array(
1900 1898
 			'use' => $use,
1901 1899
 			'namespace' => $namespace,
1902 1900
 			'encodingStyle' => $encodingStyle,
1903
-			'message' => $name . 'Response',
1901
+			'message' => $name.'Response',
1904 1902
 			'parts' => $out),
1905 1903
 		'namespace' => $namespace,
1906 1904
 		'transport' => 'http://schemas.xmlsoap.org/soap/http',
1907 1905
 		'documentation' => $documentation);
1908 1906
 		// add portTypes
1909 1907
 		// add messages
1910
-		if($in)
1908
+		if ($in)
1911 1909
 		{
1912
-			foreach($in as $pName => $pType)
1910
+			foreach ($in as $pName => $pType)
1913 1911
 			{
1914
-				if(strpos($pType,':')) {
1912
+				if (strpos($pType, ':')) {
1915 1913
 					$pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1916 1914
 				}
1917 1915
 				$this->messages[$name.'Request'][$pName] = $pType;
1918 1916
 			}
1919 1917
 		} else {
1920
-            $this->messages[$name.'Request']= '0';
1918
+            $this->messages[$name.'Request'] = '0';
1921 1919
         }
1922
-		if($out)
1920
+		if ($out)
1923 1921
 		{
1924
-			foreach($out as $pName => $pType)
1922
+			foreach ($out as $pName => $pType)
1925 1923
 			{
1926
-				if(strpos($pType,':')) {
1924
+				if (strpos($pType, ':')) {
1927 1925
 					$pType = $this->getNamespaceFromPrefix($this->getPrefix($pType)).":".$this->getLocalPart($pType);
1928 1926
 				}
1929 1927
 				$this->messages[$name.'Response'][$pName] = $pType;
1930 1928
 			}
1931 1929
 		} else {
1932
-            $this->messages[$name.'Response']= '0';
1930
+            $this->messages[$name.'Response'] = '0';
1933 1931
         }
1934 1932
 		return true;
1935 1933
 	}
Please login to merge, or discard this patch.
Braces   +3 added lines, -2 removed lines patch added patch discarded remove patch
@@ -78,8 +78,9 @@
 block discarded – undo
78 78
 		$this->proxypassword = $proxypassword;
79 79
 		$this->timeout = $timeout;
80 80
 		$this->response_timeout = $response_timeout;
81
-		if (is_array($curl_options))
82
-			$this->curl_options = $curl_options;
81
+		if (is_array($curl_options)) {
82
+					$this->curl_options = $curl_options;
83
+		}
83 84
 		$this->use_curl = $use_curl;
84 85
 		$this->fetchWSDL($wsdl);
85 86
     }
Please login to merge, or discard this patch.