|
@@ -173,20 +173,20 @@ discard block |
|
|
block discarded – undo |
|
173
|
173
|
$callable = explode('::', $callable); |
|
174
|
174
|
} |
|
175
|
175
|
if (is_array($callable)) { |
|
176
|
|
- if (count($callable) < 2 || (!is_string($callable[0]) && !is_object($callable[0]))) { |
|
177
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': syntax for function to be wrapped is wrong'); |
|
|
176
|
+ if (count($callable)<2 || (!is_string($callable[0]) && !is_object($callable[0]))) { |
|
|
177
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': syntax for function to be wrapped is wrong'); |
|
178
|
178
|
return false; |
|
179
|
179
|
} |
|
180
|
180
|
if (is_string($callable[0])) { |
|
181
|
181
|
$plainFuncName = implode('::', $callable); |
|
182
|
182
|
} elseif (is_object($callable[0])) { |
|
183
|
|
- $plainFuncName = get_class($callable[0]) . '->' . $callable[1]; |
|
|
183
|
+ $plainFuncName = get_class($callable[0]).'->'.$callable[1]; |
|
184
|
184
|
} |
|
185
|
185
|
$exists = method_exists($callable[0], $callable[1]); |
|
186
|
186
|
} else if ($callable instanceof \Closure) { |
|
187
|
187
|
// we do not support creating code which wraps closures, as php does not allow to serialize them |
|
188
|
188
|
if (!$buildIt) { |
|
189
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': a closure can not be wrapped in generated source code'); |
|
|
189
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': a closure can not be wrapped in generated source code'); |
|
190
|
190
|
return false; |
|
191
|
191
|
} |
|
192
|
192
|
|
|
@@ -198,7 +198,7 @@ discard block |
|
|
block discarded – undo |
|
198
|
198
|
} |
|
199
|
199
|
|
|
200
|
200
|
if (!$exists) { |
|
201
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': function to be wrapped is not defined: ' . $plainFuncName); |
|
|
201
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': function to be wrapped is not defined: '.$plainFuncName); |
|
202
|
202
|
return false; |
|
203
|
203
|
} |
|
204
|
204
|
|
|
@@ -242,23 +242,23 @@ discard block |
|
|
block discarded – undo |
|
242
|
242
|
if (is_array($callable)) { |
|
243
|
243
|
$func = new \ReflectionMethod($callable[0], $callable[1]); |
|
244
|
244
|
if ($func->isPrivate()) { |
|
245
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': method to be wrapped is private: ' . $plainFuncName); |
|
|
245
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': method to be wrapped is private: '.$plainFuncName); |
|
246
|
246
|
return false; |
|
247
|
247
|
} |
|
248
|
248
|
if ($func->isProtected()) { |
|
249
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': method to be wrapped is protected: ' . $plainFuncName); |
|
|
249
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': method to be wrapped is protected: '.$plainFuncName); |
|
250
|
250
|
return false; |
|
251
|
251
|
} |
|
252
|
252
|
if ($func->isConstructor()) { |
|
253
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': method to be wrapped is the constructor: ' . $plainFuncName); |
|
|
253
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': method to be wrapped is the constructor: '.$plainFuncName); |
|
254
|
254
|
return false; |
|
255
|
255
|
} |
|
256
|
256
|
if ($func->isDestructor()) { |
|
257
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': method to be wrapped is the destructor: ' . $plainFuncName); |
|
|
257
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': method to be wrapped is the destructor: '.$plainFuncName); |
|
258
|
258
|
return false; |
|
259
|
259
|
} |
|
260
|
260
|
if ($func->isAbstract()) { |
|
261
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': method to be wrapped is abstract: ' . $plainFuncName); |
|
|
261
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': method to be wrapped is abstract: '.$plainFuncName); |
|
262
|
262
|
return false; |
|
263
|
263
|
} |
|
264
|
264
|
/// @todo add more checks for static vs. nonstatic? |
|
@@ -268,7 +268,7 @@ discard block |
|
|
block discarded – undo |
|
268
|
268
|
if ($func->isInternal()) { |
|
269
|
269
|
/// @todo from PHP 5.1.0 onward, we should be able to use invokeargs instead of getparameters to fully |
|
270
|
270
|
/// reflect internal php functions |
|
271
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': function to be wrapped is internal: ' . $plainFuncName); |
|
|
271
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': function to be wrapped is internal: '.$plainFuncName); |
|
272
|
272
|
return false; |
|
273
|
273
|
} |
|
274
|
274
|
|
|
@@ -328,7 +328,7 @@ discard block |
|
|
block discarded – undo |
|
328
|
328
|
$i = 0; |
|
329
|
329
|
foreach ($func->getParameters() as $paramObj) { |
|
330
|
330
|
$params[$i] = array(); |
|
331
|
|
- $params[$i]['name'] = '$' . $paramObj->getName(); |
|
|
331
|
+ $params[$i]['name'] = '$'.$paramObj->getName(); |
|
332
|
332
|
$params[$i]['isoptional'] = $paramObj->isOptional(); |
|
333
|
333
|
if (method_exists($paramObj, 'getType')) { |
|
334
|
334
|
$paramType = $paramObj->getType(); |
|
@@ -399,7 +399,7 @@ discard block |
|
|
block discarded – undo |
|
399
|
399
|
// build a signature |
|
400
|
400
|
$sig = array($this->php2XmlrpcType($funcDesc['returns'])); |
|
401
|
401
|
$pSig = array($funcDesc['returnsDocs']); |
|
402
|
|
- for ($i = 0; $i < count($pars); $i++) { |
|
|
402
|
+ for ($i = 0; $i<count($pars); $i++) { |
|
403
|
403
|
$name = strtolower($funcDesc['params'][$i]['name']); |
|
404
|
404
|
if (isset($funcDesc['paramDocs'][$name]['type'])) { |
|
405
|
405
|
$sig[] = $this->php2XmlrpcType($funcDesc['paramDocs'][$name]['type']); |
|
@@ -455,7 +455,7 @@ discard block |
|
|
block discarded – undo |
|
455
|
455
|
} |
|
456
|
456
|
} |
|
457
|
457
|
$numPars = $req->getNumParams(); |
|
458
|
|
- if ($numPars < $minPars || $numPars > $maxPars) { |
|
|
458
|
+ if ($numPars<$minPars || $numPars>$maxPars) { |
|
459
|
459
|
return new $responseClass(0, 3, 'Incorrect parameters passed to method'); |
|
460
|
460
|
} |
|
461
|
461
|
|
|
@@ -468,7 +468,7 @@ discard block |
|
|
block discarded – undo |
|
468
|
468
|
|
|
469
|
469
|
$result = call_user_func_array($callable, $params); |
|
470
|
470
|
|
|
471
|
|
- if (! is_a($result, $responseClass)) { |
|
|
471
|
+ if (!is_a($result, $responseClass)) { |
|
472
|
472
|
// q: why not do the same for int, float, bool, string? |
|
473
|
473
|
if ($funcDesc['returns'] == Value::$xmlrpcDateTime || $funcDesc['returns'] == Value::$xmlrpcBase64) { |
|
474
|
474
|
$result = new $valueClass($result, $funcDesc['returns']); |
|
@@ -507,9 +507,9 @@ discard block |
|
|
block discarded – undo |
|
507
|
507
|
if ($newFuncName == '') { |
|
508
|
508
|
if (is_array($callable)) { |
|
509
|
509
|
if (is_string($callable[0])) { |
|
510
|
|
- $xmlrpcFuncName = "{$prefix}_" . implode('_', $callable); |
|
|
510
|
+ $xmlrpcFuncName = "{$prefix}_".implode('_', $callable); |
|
511
|
511
|
} else { |
|
512
|
|
- $xmlrpcFuncName = "{$prefix}_" . get_class($callable[0]) . '_' . $callable[1]; |
|
|
512
|
+ $xmlrpcFuncName = "{$prefix}_".get_class($callable[0]).'_'.$callable[1]; |
|
513
|
513
|
} |
|
514
|
514
|
} else { |
|
515
|
515
|
if ($callable instanceof \Closure) { |
|
@@ -541,9 +541,9 @@ discard block |
|
|
block discarded – undo |
|
541
|
541
|
*/ |
|
542
|
542
|
protected function buildWrapFunctionSource($callable, $newFuncName, $extraOptions, $plainFuncName, $funcDesc) |
|
543
|
543
|
{ |
|
544
|
|
- $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool)$extraOptions['encode_nulls'] : false; |
|
545
|
|
- $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool)$extraOptions['encode_php_objs'] : false; |
|
546
|
|
- $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool)$extraOptions['decode_php_objs'] : false; |
|
|
544
|
+ $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool) $extraOptions['encode_nulls'] : false; |
|
|
545
|
+ $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool) $extraOptions['encode_php_objs'] : false; |
|
|
546
|
+ $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool) $extraOptions['decode_php_objs'] : false; |
|
547
|
547
|
$catchWarnings = isset($extraOptions['suppress_warnings']) && $extraOptions['suppress_warnings'] ? '@' : ''; |
|
548
|
548
|
|
|
549
|
549
|
$i = 0; |
|
@@ -578,9 +578,9 @@ discard block |
|
|
block discarded – undo |
|
578
|
578
|
// build body of new function |
|
579
|
579
|
|
|
580
|
580
|
$innerCode = " \$paramCount = \$req->getNumParams();\n"; |
|
581
|
|
- $innerCode .= " if (\$paramCount < $minPars || \$paramCount > $maxPars) return new " . static::$namespace . "Response(0, " . PhpXmlRpc::$xmlrpcerr['incorrect_params'] . ", '" . PhpXmlRpc::$xmlrpcstr['incorrect_params'] . "');\n"; |
|
|
581
|
+ $innerCode .= " if (\$paramCount < $minPars || \$paramCount > $maxPars) return new ".static::$namespace."Response(0, ".PhpXmlRpc::$xmlrpcerr['incorrect_params'].", '".PhpXmlRpc::$xmlrpcstr['incorrect_params']."');\n"; |
|
582
|
582
|
|
|
583
|
|
- $innerCode .= " \$encoder = new " . static::$namespace . "Encoder();\n"; |
|
|
583
|
+ $innerCode .= " \$encoder = new ".static::$namespace."Encoder();\n"; |
|
584
|
584
|
if ($decodePhpObjects) { |
|
585
|
585
|
$innerCode .= " \$params = \$encoder->decode(\$req, array('decode_php_objs'));\n"; |
|
586
|
586
|
} else { |
|
@@ -593,23 +593,23 @@ discard block |
|
|
block discarded – undo |
|
593
|
593
|
static::holdObject($newFuncName, $callable[0]); |
|
594
|
594
|
$class = get_class($callable[0]); |
|
595
|
595
|
if ($class[0] !== '\\') { |
|
596
|
|
- $class = '\\' . $class; |
|
|
596
|
+ $class = '\\'.$class; |
|
597
|
597
|
} |
|
598
|
598
|
$innerCode .= " /// @var $class \$obj\n"; |
|
599
|
599
|
$innerCode .= " \$obj = PhpXmlRpc\\Wrapper::getHeldObject('$newFuncName');\n"; |
|
600
|
|
- $realFuncName = '$obj->' . $callable[1]; |
|
|
600
|
+ $realFuncName = '$obj->'.$callable[1]; |
|
601
|
601
|
} else { |
|
602
|
602
|
$realFuncName = $plainFuncName; |
|
603
|
603
|
} |
|
604
|
604
|
foreach ($parsVariations as $i => $pars) { |
|
605
|
|
- $innerCode .= " if (\$paramCount == " . count($pars) . ") \$retVal = {$catchWarnings}$realFuncName(" . implode(',', $pars) . ");\n"; |
|
606
|
|
- if ($i < (count($parsVariations) - 1)) |
|
|
605
|
+ $innerCode .= " if (\$paramCount == ".count($pars).") \$retVal = {$catchWarnings}$realFuncName(".implode(',', $pars).");\n"; |
|
|
606
|
+ if ($i<(count($parsVariations)-1)) |
|
607
|
607
|
$innerCode .= " else\n"; |
|
608
|
608
|
} |
|
609
|
|
- $innerCode .= " if (is_a(\$retVal, '" . static::$namespace . "Response'))\n return \$retVal;\n else\n"; |
|
|
609
|
+ $innerCode .= " if (is_a(\$retVal, '".static::$namespace."Response'))\n return \$retVal;\n else\n"; |
|
610
|
610
|
/// q: why not do the same for int, float, bool, string? |
|
611
|
611
|
if ($funcDesc['returns'] == Value::$xmlrpcDateTime || $funcDesc['returns'] == Value::$xmlrpcBase64) { |
|
612
|
|
- $innerCode .= " return new " . static::$namespace . "Response(new " . static::$namespace . "Value(\$retVal, '{$funcDesc['returns']}'));"; |
|
|
612
|
+ $innerCode .= " return new ".static::$namespace."Response(new ".static::$namespace."Value(\$retVal, '{$funcDesc['returns']}'));"; |
|
613
|
613
|
} else { |
|
614
|
614
|
$encodeOptions = array(); |
|
615
|
615
|
if ($encodeNulls) { |
|
@@ -620,18 +620,18 @@ discard block |
|
|
block discarded – undo |
|
620
|
620
|
} |
|
621
|
621
|
|
|
622
|
622
|
if ($encodeOptions) { |
|
623
|
|
- $innerCode .= " return new " . static::$namespace . "Response(\$encoder->encode(\$retVal, array('" . |
|
624
|
|
- implode("', '", $encodeOptions) . "')));"; |
|
|
623
|
+ $innerCode .= " return new ".static::$namespace."Response(\$encoder->encode(\$retVal, array('". |
|
|
624
|
+ implode("', '", $encodeOptions)."')));"; |
|
625
|
625
|
} else { |
|
626
|
|
- $innerCode .= " return new " . static::$namespace . "Response(\$encoder->encode(\$retVal));"; |
|
|
626
|
+ $innerCode .= " return new ".static::$namespace."Response(\$encoder->encode(\$retVal));"; |
|
627
|
627
|
} |
|
628
|
628
|
} |
|
629
|
629
|
// shall we exclude functions returning by ref? |
|
630
|
630
|
// if ($func->returnsReference()) |
|
631
|
631
|
// return false; |
|
632
|
632
|
|
|
633
|
|
- $code = "/**\n * @param \PhpXmlRpc\Request \$req\n * @return \PhpXmlRpc\Response\n * @throws \\Exception\n */\n" . |
|
634
|
|
- "function $newFuncName(\$req)\n{\n" . $innerCode . "\n}"; |
|
|
633
|
+ $code = "/**\n * @param \PhpXmlRpc\Request \$req\n * @return \PhpXmlRpc\Response\n * @throws \\Exception\n */\n". |
|
|
634
|
+ "function $newFuncName(\$req)\n{\n".$innerCode."\n}"; |
|
635
|
635
|
|
|
636
|
636
|
return $code; |
|
637
|
637
|
} |
|
@@ -691,7 +691,7 @@ discard block |
|
|
block discarded – undo |
|
691
|
691
|
protected function generateMethodNameForClassMethod($className, $classMethod, $extraOptions = array()) |
|
692
|
692
|
{ |
|
693
|
693
|
if (isset($extraOptions['replace_class_name']) && $extraOptions['replace_class_name']) { |
|
694
|
|
- return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '') . $classMethod; |
|
|
694
|
+ return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '').$classMethod; |
|
695
|
695
|
} |
|
696
|
696
|
|
|
697
|
697
|
if (is_object($className)) { |
|
@@ -699,7 +699,7 @@ discard block |
|
|
block discarded – undo |
|
699
|
699
|
} else { |
|
700
|
700
|
$realClassName = $className; |
|
701
|
701
|
} |
|
702
|
|
- return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '') . "$realClassName.$classMethod"; |
|
|
702
|
+ return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '')."$realClassName.$classMethod"; |
|
703
|
703
|
} |
|
704
|
704
|
|
|
705
|
705
|
/** |
|
@@ -795,14 +795,14 @@ discard block |
|
|
block discarded – undo |
|
795
|
795
|
*/ |
|
796
|
796
|
protected function retrieveMethodSignature($client, $methodName, array $extraOptions = array()) |
|
797
|
797
|
{ |
|
798
|
|
- $reqClass = static::$namespace . 'Request'; |
|
799
|
|
- $valClass = static::$namespace . 'Value'; |
|
800
|
|
- $decoderClass = static::$namespace . 'Encoder'; |
|
|
798
|
+ $reqClass = static::$namespace.'Request'; |
|
|
799
|
+ $valClass = static::$namespace.'Value'; |
|
|
800
|
+ $decoderClass = static::$namespace.'Encoder'; |
|
801
|
801
|
|
|
802
|
802
|
$debug = isset($extraOptions['debug']) ? ($extraOptions['debug']) : 0; |
|
803
|
|
- $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0; |
|
|
803
|
+ $timeout = isset($extraOptions['timeout']) ? (int) $extraOptions['timeout'] : 0; |
|
804
|
804
|
$protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : ''; |
|
805
|
|
- $sigNum = isset($extraOptions['signum']) ? (int)$extraOptions['signum'] : 0; |
|
|
805
|
+ $sigNum = isset($extraOptions['signum']) ? (int) $extraOptions['signum'] : 0; |
|
806
|
806
|
|
|
807
|
807
|
$req = new $reqClass('system.methodSignature'); |
|
808
|
808
|
$req->addParam(new $valClass($methodName)); |
|
@@ -812,7 +812,7 @@ discard block |
|
|
block discarded – undo |
|
812
|
812
|
$response = $client->send($req, $timeout, $protocol); |
|
813
|
813
|
$client->setDebug($origDebug); |
|
814
|
814
|
if ($response->faultCode()) { |
|
815
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': could not retrieve method signature from remote server for method ' . $methodName); |
|
|
815
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': could not retrieve method signature from remote server for method '.$methodName); |
|
816
|
816
|
return false; |
|
817
|
817
|
} |
|
818
|
818
|
|
|
@@ -823,8 +823,8 @@ discard block |
|
|
block discarded – undo |
|
823
|
823
|
$mSig = $decoder->decode($mSig); |
|
824
|
824
|
} |
|
825
|
825
|
|
|
826
|
|
- if (!is_array($mSig) || count($mSig) <= $sigNum) { |
|
827
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': could not retrieve method signature nr.' . $sigNum . ' from remote server for method ' . $methodName); |
|
|
826
|
+ if (!is_array($mSig) || count($mSig)<=$sigNum) { |
|
|
827
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': could not retrieve method signature nr.'.$sigNum.' from remote server for method '.$methodName); |
|
828
|
828
|
return false; |
|
829
|
829
|
} |
|
830
|
830
|
|
|
@@ -839,11 +839,11 @@ discard block |
|
|
block discarded – undo |
|
839
|
839
|
*/ |
|
840
|
840
|
protected function retrieveMethodHelp($client, $methodName, array $extraOptions = array()) |
|
841
|
841
|
{ |
|
842
|
|
- $reqClass = static::$namespace . 'Request'; |
|
843
|
|
- $valClass = static::$namespace . 'Value'; |
|
|
842
|
+ $reqClass = static::$namespace.'Request'; |
|
|
843
|
+ $valClass = static::$namespace.'Value'; |
|
844
|
844
|
|
|
845
|
845
|
$debug = isset($extraOptions['debug']) ? ($extraOptions['debug']) : 0; |
|
846
|
|
- $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0; |
|
|
846
|
+ $timeout = isset($extraOptions['timeout']) ? (int) $extraOptions['timeout'] : 0; |
|
847
|
847
|
$protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : ''; |
|
848
|
848
|
|
|
849
|
849
|
$mDesc = ''; |
|
@@ -880,11 +880,11 @@ discard block |
|
|
block discarded – undo |
|
880
|
880
|
$clientClone = $this->cloneClientForClosure($client); |
|
881
|
881
|
$function = function() use($clientClone, $methodName, $extraOptions, $mSig) |
|
882
|
882
|
{ |
|
883
|
|
- $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0; |
|
|
883
|
+ $timeout = isset($extraOptions['timeout']) ? (int) $extraOptions['timeout'] : 0; |
|
884
|
884
|
$protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : ''; |
|
885
|
|
- $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool)$extraOptions['encode_php_objs'] : false; |
|
886
|
|
- $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool)$extraOptions['decode_php_objs'] : false; |
|
887
|
|
- $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool)$extraOptions['encode_nulls'] : false; |
|
|
885
|
+ $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool) $extraOptions['encode_php_objs'] : false; |
|
|
886
|
+ $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool) $extraOptions['decode_php_objs'] : false; |
|
|
887
|
+ $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool) $extraOptions['encode_nulls'] : false; |
|
888
|
888
|
$throwFault = false; |
|
889
|
889
|
$decodeFault = false; |
|
890
|
890
|
$faultResponse = null; |
|
@@ -895,9 +895,9 @@ discard block |
|
|
block discarded – undo |
|
895
|
895
|
$faultResponse = $extraOptions['return_on_fault']; |
|
896
|
896
|
} |
|
897
|
897
|
|
|
898
|
|
- $reqClass = static::$namespace . 'Request'; |
|
899
|
|
- $encoderClass = static::$namespace . 'Encoder'; |
|
900
|
|
- $valueClass = static::$namespace . 'Value'; |
|
|
898
|
+ $reqClass = static::$namespace.'Request'; |
|
|
899
|
+ $encoderClass = static::$namespace.'Encoder'; |
|
|
900
|
+ $valueClass = static::$namespace.'Value'; |
|
901
|
901
|
|
|
902
|
902
|
$encoder = new $encoderClass(); |
|
903
|
903
|
$encodeOptions = array(); |
|
@@ -979,14 +979,14 @@ discard block |
|
|
block discarded – undo |
|
979
|
979
|
* @param string $mDesc |
|
980
|
980
|
* @return string[] keys: source, docstring |
|
981
|
981
|
*/ |
|
982
|
|
- public function buildWrapMethodSource($client, $methodName, array $extraOptions, $newFuncName, $mSig, $mDesc='') |
|
|
982
|
+ public function buildWrapMethodSource($client, $methodName, array $extraOptions, $newFuncName, $mSig, $mDesc = '') |
|
983
|
983
|
{ |
|
984
|
|
- $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0; |
|
|
984
|
+ $timeout = isset($extraOptions['timeout']) ? (int) $extraOptions['timeout'] : 0; |
|
985
|
985
|
$protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : ''; |
|
986
|
|
- $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool)$extraOptions['encode_php_objs'] : false; |
|
987
|
|
- $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool)$extraOptions['decode_php_objs'] : false; |
|
988
|
|
- $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool)$extraOptions['encode_nulls'] : false; |
|
989
|
|
- $clientCopyMode = isset($extraOptions['simple_client_copy']) ? (int)($extraOptions['simple_client_copy']) : 0; |
|
|
986
|
+ $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool) $extraOptions['encode_php_objs'] : false; |
|
|
987
|
+ $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool) $extraOptions['decode_php_objs'] : false; |
|
|
988
|
+ $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool) $extraOptions['encode_nulls'] : false; |
|
|
989
|
+ $clientCopyMode = isset($extraOptions['simple_client_copy']) ? (int) ($extraOptions['simple_client_copy']) : 0; |
|
990
|
990
|
$prefix = isset($extraOptions['prefix']) ? $extraOptions['prefix'] : 'xmlrpc'; |
|
991
|
991
|
$throwFault = false; |
|
992
|
992
|
$decodeFault = false; |
|
@@ -999,10 +999,10 @@ discard block |
|
|
block discarded – undo |
|
999
|
999
|
} |
|
1000
|
1000
|
|
|
1001
|
1001
|
$code = "function $newFuncName("; |
|
1002
|
|
- if ($clientCopyMode < 2) { |
|
|
1002
|
+ if ($clientCopyMode<2) { |
|
1003
|
1003
|
// client copy mode 0 or 1 == full / partial client copy in emitted code |
|
1004
|
1004
|
$verbatimClientCopy = !$clientCopyMode; |
|
1005
|
|
- $innerCode = ' ' . str_replace("\n", "\n ", $this->buildClientWrapperCode($client, $verbatimClientCopy, $prefix, static::$namespace)); |
|
|
1005
|
+ $innerCode = ' '.str_replace("\n", "\n ", $this->buildClientWrapperCode($client, $verbatimClientCopy, $prefix, static::$namespace)); |
|
1006
|
1006
|
$innerCode .= "\$client->setDebug(\$debug);\n"; |
|
1007
|
1007
|
$this_ = ''; |
|
1008
|
1008
|
} else { |
|
@@ -1010,28 +1010,28 @@ discard block |
|
|
block discarded – undo |
|
1010
|
1010
|
$innerCode = ''; |
|
1011
|
1011
|
$this_ = 'this->'; |
|
1012
|
1012
|
} |
|
1013
|
|
- $innerCode .= " \$req = new " . static::$namespace . "Request('$methodName');\n"; |
|
|
1013
|
+ $innerCode .= " \$req = new ".static::$namespace."Request('$methodName');\n"; |
|
1014
|
1014
|
|
|
1015
|
1015
|
if ($mDesc != '') { |
|
1016
|
1016
|
// take care that PHP comment is not terminated unwillingly by method description |
|
1017
|
1017
|
/// @todo according to the spec, method desc can have html in it. We should run it through strip_tags... |
|
1018
|
|
- $mDesc = "/**\n * " . str_replace(array("\n", '*/'), array("\n * ", '* /'), $mDesc) . "\n"; |
|
|
1018
|
+ $mDesc = "/**\n * ".str_replace(array("\n", '*/'), array("\n * ", '* /'), $mDesc)."\n"; |
|
1019
|
1019
|
} else { |
|
1020
|
1020
|
$mDesc = "/**\n * Function $newFuncName.\n"; |
|
1021
|
1021
|
} |
|
1022
|
1022
|
|
|
1023
|
1023
|
// param parsing |
|
1024
|
|
- $innerCode .= " \$encoder = new " . static::$namespace . "Encoder();\n"; |
|
|
1024
|
+ $innerCode .= " \$encoder = new ".static::$namespace."Encoder();\n"; |
|
1025
|
1025
|
$plist = array(); |
|
1026
|
1026
|
$pCount = count($mSig); |
|
1027
|
|
- for ($i = 1; $i < $pCount; $i++) { |
|
|
1027
|
+ for ($i = 1; $i<$pCount; $i++) { |
|
1028
|
1028
|
$plist[] = "\$p$i"; |
|
1029
|
1029
|
$pType = $mSig[$i]; |
|
1030
|
1030
|
if ($pType == 'i4' || $pType == 'i8' || $pType == 'int' || $pType == 'boolean' || $pType == 'double' || |
|
1031
|
1031
|
$pType == 'string' || $pType == 'dateTime.iso8601' || $pType == 'base64' || $pType == 'null' |
|
1032
|
1032
|
) { |
|
1033
|
1033
|
// only build directly xml-rpc values when type is known and scalar |
|
1034
|
|
- $innerCode .= " \$p$i = new " . static::$namespace . "Value(\$p$i, '$pType');\n"; |
|
|
1034
|
+ $innerCode .= " \$p$i = new ".static::$namespace."Value(\$p$i, '$pType');\n"; |
|
1035
|
1035
|
} else { |
|
1036
|
1036
|
if ($encodePhpObjects || $encodeNulls) { |
|
1037
|
1037
|
$encOpts = array(); |
|
@@ -1042,26 +1042,26 @@ discard block |
|
|
block discarded – undo |
|
1042
|
1042
|
$encOpts[] = 'null_extension'; |
|
1043
|
1043
|
} |
|
1044
|
1044
|
|
|
1045
|
|
- $innerCode .= " \$p$i = \$encoder->encode(\$p$i, array( '" . implode("', '", $encOpts) . "'));\n"; |
|
|
1045
|
+ $innerCode .= " \$p$i = \$encoder->encode(\$p$i, array( '".implode("', '", $encOpts)."'));\n"; |
|
1046
|
1046
|
} else { |
|
1047
|
1047
|
$innerCode .= " \$p$i = \$encoder->encode(\$p$i);\n"; |
|
1048
|
1048
|
} |
|
1049
|
1049
|
} |
|
1050
|
1050
|
$innerCode .= " \$req->addParam(\$p$i);\n"; |
|
1051
|
|
- $mDesc .= " * @param " . $this->xmlrpc2PhpType($pType) . " \$p$i\n"; |
|
|
1051
|
+ $mDesc .= " * @param ".$this->xmlrpc2PhpType($pType)." \$p$i\n"; |
|
1052
|
1052
|
} |
|
1053
|
|
- if ($clientCopyMode < 2) { |
|
|
1053
|
+ if ($clientCopyMode<2) { |
|
1054
|
1054
|
$plist[] = '$debug = 0'; |
|
1055
|
1055
|
$mDesc .= " * @param int \$debug when 1 (or 2) will enable debugging of the underlying {$prefix} call (defaults to 0)\n"; |
|
1056
|
1056
|
} |
|
1057
|
1057
|
$plist = implode(', ', $plist); |
|
1058
|
|
- $mDesc .= ' * @return ' . $this->xmlrpc2PhpType($mSig[0]); |
|
|
1058
|
+ $mDesc .= ' * @return '.$this->xmlrpc2PhpType($mSig[0]); |
|
1059
|
1059
|
if ($throwFault) { |
|
1060
|
|
- $mDesc .= "\n * @throws " . (is_string($throwFault) ? $throwFault : '\\PhpXmlRpc\\Exception'); |
|
|
1060
|
+ $mDesc .= "\n * @throws ".(is_string($throwFault) ? $throwFault : '\\PhpXmlRpc\\Exception'); |
|
1061
|
1061
|
} else if ($decodeFault) { |
|
1062
|
|
- $mDesc .= '|' . gettype($faultResponse) . " (a " . gettype($faultResponse) . " if call fails)"; |
|
|
1062
|
+ $mDesc .= '|'.gettype($faultResponse)." (a ".gettype($faultResponse)." if call fails)"; |
|
1063
|
1063
|
} else { |
|
1064
|
|
- $mDesc .= '|' . static::$namespace . "Response (a " . static::$namespace . "Response obj instance if call fails)"; |
|
|
1064
|
+ $mDesc .= '|'.static::$namespace."Response (a ".static::$namespace."Response obj instance if call fails)"; |
|
1065
|
1065
|
} |
|
1066
|
1066
|
$mDesc .= "\n */\n"; |
|
1067
|
1067
|
|
|
@@ -1074,9 +1074,9 @@ discard block |
|
|
block discarded – undo |
|
1074
|
1074
|
$respCode = "throw new $throwFault(\$res->faultString(), \$res->faultCode())"; |
|
1075
|
1075
|
} else if ($decodeFault) { |
|
1076
|
1076
|
if (is_string($faultResponse) && ((strpos($faultResponse, '%faultCode%') !== false) || (strpos($faultResponse, '%faultString%') !== false))) { |
|
1077
|
|
- $respCode = "return str_replace(array('%faultCode%', '%faultString%'), array(\$res->faultCode(), \$res->faultString()), '" . str_replace("'", "''", $faultResponse) . "')"; |
|
|
1077
|
+ $respCode = "return str_replace(array('%faultCode%', '%faultString%'), array(\$res->faultCode(), \$res->faultString()), '".str_replace("'", "''", $faultResponse)."')"; |
|
1078
|
1078
|
} else { |
|
1079
|
|
- $respCode = 'return ' . var_export($faultResponse, true); |
|
|
1079
|
+ $respCode = 'return '.var_export($faultResponse, true); |
|
1080
|
1080
|
} |
|
1081
|
1081
|
} else { |
|
1082
|
1082
|
$respCode = 'return $res'; |
|
@@ -1087,7 +1087,7 @@ discard block |
|
|
block discarded – undo |
|
1087
|
1087
|
$innerCode .= " if (\$res->faultCode()) $respCode; else return \$encoder->decode(\$res->value());"; |
|
1088
|
1088
|
} |
|
1089
|
1089
|
|
|
1090
|
|
- $code = $code . $plist . ")\n{\n" . $innerCode . "\n}\n"; |
|
|
1090
|
+ $code = $code.$plist.")\n{\n".$innerCode."\n}\n"; |
|
1091
|
1091
|
|
|
1092
|
1092
|
return array('source' => $code, 'docstring' => $mDesc); |
|
1093
|
1093
|
} |
|
@@ -1117,26 +1117,26 @@ discard block |
|
|
block discarded – undo |
|
1117
|
1117
|
public function wrapXmlrpcServer($client, $extraOptions = array()) |
|
1118
|
1118
|
{ |
|
1119
|
1119
|
$methodFilter = isset($extraOptions['method_filter']) ? $extraOptions['method_filter'] : ''; |
|
1120
|
|
- $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0; |
|
|
1120
|
+ $timeout = isset($extraOptions['timeout']) ? (int) $extraOptions['timeout'] : 0; |
|
1121
|
1121
|
$protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : ''; |
|
1122
|
1122
|
$newClassName = isset($extraOptions['new_class_name']) ? $extraOptions['new_class_name'] : ''; |
|
1123
|
|
- $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool)$extraOptions['encode_nulls'] : false; |
|
1124
|
|
- $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool)$extraOptions['encode_php_objs'] : false; |
|
1125
|
|
- $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool)$extraOptions['decode_php_objs'] : false; |
|
|
1123
|
+ $encodeNulls = isset($extraOptions['encode_nulls']) ? (bool) $extraOptions['encode_nulls'] : false; |
|
|
1124
|
+ $encodePhpObjects = isset($extraOptions['encode_php_objs']) ? (bool) $extraOptions['encode_php_objs'] : false; |
|
|
1125
|
+ $decodePhpObjects = isset($extraOptions['decode_php_objs']) ? (bool) $extraOptions['decode_php_objs'] : false; |
|
1126
|
1126
|
$verbatimClientCopy = isset($extraOptions['simple_client_copy']) ? !($extraOptions['simple_client_copy']) : true; |
|
1127
|
|
- $throwOnFault = isset($extraOptions['throw_on_fault']) ? (bool)$extraOptions['throw_on_fault'] : false; |
|
|
1127
|
+ $throwOnFault = isset($extraOptions['throw_on_fault']) ? (bool) $extraOptions['throw_on_fault'] : false; |
|
1128
|
1128
|
$buildIt = isset($extraOptions['return_source']) ? !($extraOptions['return_source']) : true; |
|
1129
|
1129
|
$prefix = isset($extraOptions['prefix']) ? $extraOptions['prefix'] : 'xmlrpc'; |
|
1130
|
1130
|
|
|
1131
|
|
- $reqClass = static::$namespace . 'Request'; |
|
1132
|
|
- $decoderClass = static::$namespace . 'Encoder'; |
|
|
1131
|
+ $reqClass = static::$namespace.'Request'; |
|
|
1132
|
+ $decoderClass = static::$namespace.'Encoder'; |
|
1133
|
1133
|
|
|
1134
|
1134
|
// retrieve the list of methods |
|
1135
|
1135
|
$req = new $reqClass('system.listMethods'); |
|
1136
|
1136
|
/// @todo move setting of timeout, protocol to outside the send() call |
|
1137
|
1137
|
$response = $client->send($req, $timeout, $protocol); |
|
1138
|
1138
|
if ($response->faultCode()) { |
|
1139
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': could not retrieve method list from remote server'); |
|
|
1139
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': could not retrieve method list from remote server'); |
|
1140
|
1140
|
|
|
1141
|
1141
|
return false; |
|
1142
|
1142
|
} |
|
@@ -1147,7 +1147,7 @@ discard block |
|
|
block discarded – undo |
|
1147
|
1147
|
$mList = $decoder->decode($mList); |
|
1148
|
1148
|
} |
|
1149
|
1149
|
if (!is_array($mList) || !count($mList)) { |
|
1150
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': could not retrieve meaningful method list from remote server'); |
|
|
1150
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': could not retrieve meaningful method list from remote server'); |
|
1151
|
1151
|
|
|
1152
|
1152
|
return false; |
|
1153
|
1153
|
} |
|
@@ -1157,8 +1157,8 @@ discard block |
|
|
block discarded – undo |
|
1157
|
1157
|
$xmlrpcClassName = $newClassName; |
|
1158
|
1158
|
} else { |
|
1159
|
1159
|
/// @todo direct access to $client->server is now deprecated |
|
1160
|
|
- $xmlrpcClassName = $prefix . '_' . preg_replace(array('/\./', '/[^a-zA-Z0-9_\x7f-\xff]/'), array('_', ''), |
|
1161
|
|
- $client->server) . '_client'; |
|
|
1160
|
+ $xmlrpcClassName = $prefix.'_'.preg_replace(array('/\./', '/[^a-zA-Z0-9_\x7f-\xff]/'), array('_', ''), |
|
|
1161
|
+ $client->server).'_client'; |
|
1162
|
1162
|
} |
|
1163
|
1163
|
while ($buildIt && class_exists($xmlrpcClassName)) { |
|
1164
|
1164
|
$xmlrpcClassName .= 'x'; |
|
@@ -1166,7 +1166,7 @@ discard block |
|
|
block discarded – undo |
|
1166
|
1166
|
|
|
1167
|
1167
|
$source = "class $xmlrpcClassName\n{\n public \$client;\n\n"; |
|
1168
|
1168
|
$source .= " function __construct()\n {\n"; |
|
1169
|
|
- $source .= ' ' . str_replace("\n", "\n ", $this->buildClientWrapperCode($client, $verbatimClientCopy, $prefix, static::$namespace)); |
|
|
1169
|
+ $source .= ' '.str_replace("\n", "\n ", $this->buildClientWrapperCode($client, $verbatimClientCopy, $prefix, static::$namespace)); |
|
1170
|
1170
|
$source .= "\$this->client = \$client;\n }\n\n"; |
|
1171
|
1171
|
$opts = array( |
|
1172
|
1172
|
'return_source' => true, |
|
@@ -1189,28 +1189,28 @@ discard block |
|
|
block discarded – undo |
|
1189
|
1189
|
$methodWrap = $this->wrapXmlrpcMethod($client, $mName, $opts); |
|
1190
|
1190
|
if ($methodWrap) { |
|
1191
|
1191
|
if ($buildIt) { |
|
1192
|
|
- $source .= $methodWrap['source'] . "\n"; |
|
|
1192
|
+ $source .= $methodWrap['source']."\n"; |
|
1193
|
1193
|
|
|
1194
|
1194
|
} else { |
|
1195
|
|
- $source .= ' ' . str_replace("\n", "\n ", $methodWrap['docstring']); |
|
1196
|
|
- $source .= str_replace("\n", "\n ", $methodWrap['source']). "\n"; |
|
|
1195
|
+ $source .= ' '.str_replace("\n", "\n ", $methodWrap['docstring']); |
|
|
1196
|
+ $source .= str_replace("\n", "\n ", $methodWrap['source'])."\n"; |
|
1197
|
1197
|
} |
|
1198
|
1198
|
|
|
1199
|
1199
|
} else { |
|
1200
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': will not create class method to wrap remote method ' . $mName); |
|
|
1200
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': will not create class method to wrap remote method '.$mName); |
|
1201
|
1201
|
} |
|
1202
|
1202
|
} |
|
1203
|
1203
|
} |
|
1204
|
1204
|
$source .= "}\n"; |
|
1205
|
1205
|
if ($buildIt) { |
|
1206
|
1206
|
$allOK = 0; |
|
1207
|
|
- eval($source . '$allOK=1;'); |
|
|
1207
|
+ eval($source.'$allOK=1;'); |
|
1208
|
1208
|
if ($allOK) { |
|
1209
|
1209
|
return $xmlrpcClassName; |
|
1210
|
1210
|
} else { |
|
1211
|
1211
|
/// @todo direct access to $client->server is now deprecated |
|
1212
|
|
- $this->getLogger()->error('XML-RPC: ' . __METHOD__ . ': could not create class ' . $xmlrpcClassName . |
|
1213
|
|
- ' to wrap remote server ' . $client->server); |
|
|
1212
|
+ $this->getLogger()->error('XML-RPC: '.__METHOD__.': could not create class '.$xmlrpcClassName. |
|
|
1213
|
+ ' to wrap remote server '.$client->server); |
|
1214
|
1214
|
return false; |
|
1215
|
1215
|
} |
|
1216
|
1216
|
} else { |
|
@@ -1229,7 +1229,7 @@ discard block |
|
|
block discarded – undo |
|
1229
|
1229
|
*/ |
|
1230
|
1230
|
protected function buildClientWrapperCode($client, $verbatimClientCopy, $prefix = 'xmlrpc', $namespace = '\\PhpXmlRpc\\') |
|
1231
|
1231
|
{ |
|
1232
|
|
- $code = "\$client = new {$namespace}Client('" . str_replace(array("\\", "'"), array("\\\\", "\'"), $client->getUrl()) . |
|
|
1232
|
+ $code = "\$client = new {$namespace}Client('".str_replace(array("\\", "'"), array("\\\\", "\'"), $client->getUrl()). |
|
1233
|
1233
|
"');\n"; |
|
1234
|
1234
|
|
|
1235
|
1235
|
// copy all client fields to the client that will be generated runtime |