/usr/share/php/XML/RPC2/Backend.php is in php-xml-rpc2 1.1.2-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | <?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
// LICENSE AGREEMENT. If folded, press za here to unfold and read license {{{
/**
* +-----------------------------------------------------------------------------+
* | Copyright (c) 2004-2006 Sergio Goncalves Carvalho |
* +-----------------------------------------------------------------------------+
* | This file is part of XML_RPC2. |
* | |
* | XML_RPC2 is free software; you can redistribute it and/or modify |
* | it under the terms of the GNU Lesser General Public License as published by |
* | the Free Software Foundation; either version 2.1 of the License, or |
* | (at your option) any later version. |
* | |
* | XML_RPC2 is distributed in the hope that it will be useful, |
* | but WITHOUT ANY WARRANTY; without even the implied warranty of |
* | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* | GNU Lesser General Public License for more details. |
* | |
* | You should have received a copy of the GNU Lesser General Public License |
* | along with XML_RPC2; if not, write to the Free Software |
* | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
* | 02111-1307 USA |
* +-----------------------------------------------------------------------------+
* | Author: Sergio Carvalho <sergio.carvalho@portugalmail.com> |
* +-----------------------------------------------------------------------------+
*
* @category XML
* @package XML_RPC2
* @author Sergio Carvalho <sergio.carvalho@portugalmail.com>
* @copyright 2004-2006 Sergio Carvalho
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @version CVS: $Id$
* @link http://pear.php.net/package/XML_RPC2
*/
// }}}
// dependencies {{{
require_once 'XML/RPC2/Exception.php';
require_once 'PEAR.php';
// }}}
/**
* XML_RPC Backend class. The backend is responsible for the actual execution of
* a request, as well as payload encoding and decoding.
*
* The only external usage of this class is when explicitely setting the backend, as in
* <code>
* XML_RPC2_Backend::setBackend('php');
* // or
* XML_RPC2_Backend::setBackend('xmlrpcext');
* </code>
* Note that if you do not explicitely set the backend, it will be selected automatically.
*
* Internally, this class provides methods to obtain the relevant backend classes:
* - The server class
* - The client class
* - The value class
*
* @category XML
* @package XML_RPC2
* @author Sergio Carvalho <sergio.carvalho@portugalmail.com>
* @copyright 2004-2006 Sergio Carvalho
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/XML_RPC2
*/
abstract class XML_RPC2_Backend
{
// {{{ properties
/**
* current backend
*
* @var string
*/
protected static $currentBackend;
// }}}
// {{{ setBackend()
/**
* Backend setter.
*
* Currently, two backends exist: 'php' and 'XMLRPCext'.
* The PHP backend has no external dependencies, while the xmlrpcext
* requires the xmlrpc extension.
*
* The XMLRPCext backend is quite faster, and will be automatically
* selected when no explicit backend has been set and the extension
* is available.
*
* @param string The backend to select. Either 'php' or 'XMLRPCext'.
*/
public static function setBackend($backend)
{
$backend = ucfirst(strtolower($backend));
if (
$backend != 'Php' &&
$backend != 'Xmlrpcext'
) {
throw new XML_RPC2_Exception(sprintf('Backend %s does not exist', $backend));
}
if (
$backend == 'Xmlrpcext' &&
!function_exists('xmlrpc_server_create') &&
!( PEAR::loadExtension('php_xmlrpc') )
) {
throw new XML_RPC2_Exception('Unable to load xmlrpc extension.');
}
self::$currentBackend = $backend;
}
// }}}
// {{{ getBackend()
/**
* Backend getter.
*
* Return the current backend name. If no backend was previously selected
* select one and set it.
*
* The xmlrpcext backend is preferred, and will be automatically
* selected when no explicit backend has been set and the xmlrpc
* extension exists. If it does not exist, then the php backend is
* selected.
*
* @return string The current backend
*/
protected static function getBackend()
{
if (!isset(self::$currentBackend)) {
try {
self::setBackend('XMLRPCext'); // We prefer this one
} catch (XML_RPC2_Exception $e) {
// TODO According to PEAR CG logging should occur here
self::setBackend('php'); // But will settle with this one in case of error
}
}
return self::$currentBackend;
}
// }}}
// {{{ getServerClassname()
/**
* Include the relevant php files for the server class, and return the backend server
* class name.
*
* @return string The Server class name
*/
public static function getServerClassname() {
require_once(sprintf('XML/RPC2/Backend/%s/Server.php', self::getBackend()));
return sprintf('XML_RPC2_Backend_%s_Server', self::getBackend());
}
// }}}
// {{{ getClientClassname()
/**
* Include the relevant php files for the client class, and return the backend client
* class name.
*
* @return string The Client class name
*/
public static function getClientClassname() {
require_once(sprintf('XML/RPC2/Backend/%s/Client.php', self::getBackend()));
return sprintf('XML_RPC2_Backend_%s_Client', self::getBackend());
}
// }}}
// {{{ getValueClassname()
/**
* Include the relevant php files for the value class, and return the backend value
* class name.
*
* @return string The Value class name
*/
public static function getValueClassname() {
require_once(sprintf('XML/RPC2/Backend/%s/Value.php', self::getBackend()));
return sprintf('XML_RPC2_Backend_%s_Value', self::getBackend());
}
// }}}
}
|