-
Notifications
You must be signed in to change notification settings - Fork 241
/
soap.php
122 lines (94 loc) · 3.68 KB
/
soap.php
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
<?php
/**
* @copyright Copyright (C) eZ Systems AS. All rights reserved.
* @license For full copyright and license information view LICENSE file distributed with this source code.
* @version //autogentag//
* @package kernel
*/
/*!
\brief The SOAP file will handle all eZ Publish soap requests.
SOAP functions are
*/
ob_start();
ini_set( "display_errors" , "0" );
// Set a default time zone if none is given. The time zone can be overriden
// in config.php or php.ini.
if ( !ini_get( "date.timezone" ) )
{
date_default_timezone_set( "UTC" );
}
require 'autoload.php';
/*!
Reads settings from site.ini and passes them to eZDebug.
*/
function eZUpdateDebugSettings()
{
$ini = eZINI::instance();
list( $debugSettings['debug-enabled'], $debugSettings['debug-by-ip'], $debugSettings['debug-by-user'], $debugSettings['debug-ip-list'], $debugSettings['debug-user-list'] ) =
$ini->variableMulti( 'DebugSettings', array( 'DebugOutput', 'DebugByIP', 'DebugByUser', 'DebugIPList', 'DebugUserIDList' ), array ( 'enabled', 'enabled', 'enabled' ) );
eZDebug::updateSettings( $debugSettings );
}
$ini = eZINI::instance();
// Initialize/set the index file.
eZSys::init( 'soap.php', $ini->variable( 'SiteAccessSettings', 'ForceVirtualHost' ) === 'true' );
$uri = eZURI::instance( eZSys::requestURI() );
$GLOBALS['eZRequestedURI'] = $uri;
// Check for extension
eZExtension::activateExtensions( 'default' );
// Extension check end
// Activate correct siteaccess
$soapINI = eZINI::instance( 'soap.ini' );
if ( $soapINI->variable( 'GeneralSettings', 'UseDefaultAccess' ) === 'enabled' )
{
$access = array( 'name' => $ini->variable( 'SiteSettings', 'DefaultAccess' ),
'type' => eZSiteAccess::TYPE_DEFAULT );
}
else
{
$access = eZSiteAccess::match( $uri,
eZSys::hostname(),
eZSys::serverPort(),
eZSys::indexFile() );
}
$access = eZSiteAccess::change( $access );
// Siteaccess activation end
// Check for activating Debug by user ID (Final checking. The first was in eZDebug::updateSettings())
eZDebug::checkDebugByUser();
// Check for siteaccess extension
eZExtension::activateExtensions( 'access' );
// Siteaccess extension check end
// Now that all extensions are activated and siteaccess has been changed, reset
// all eZINI instances as they may not take into account siteaccess specific settings.
eZINI::resetAllInstances( false );
/*!
Reads settings from i18n.ini and passes them to eZTextCodec.
*/
function eZUpdateTextCodecSettings()
{
$ini = eZINI::instance( 'i18n.ini' );
list( $i18nSettings['internal-charset'], $i18nSettings['http-charset'], $i18nSettings['mbstring-extension'] ) =
$ini->variableMulti( 'CharacterSettings', array( 'Charset', 'HTTPCharset', 'MBStringExtension' ), array( false, false, 'enabled' ) );
eZTextCodec::updateSettings( $i18nSettings );
}
// Initialize text codec settings
eZUpdateTextCodecSettings();
// Initialize module loading
$moduleRepositories = eZModule::activeModuleRepositories();
eZModule::setGlobalPathList( $moduleRepositories );
// Load soap extensions
$enableSOAP = $soapINI->variable( 'GeneralSettings', 'EnableSOAP' );
if ( $enableSOAP == 'true' )
{
// Login if we have username and password.
if ( eZHTTPTool::username() and eZHTTPTool::password() )
eZUser::loginUser( eZHTTPTool::username(), eZHTTPTool::password() );
$server = new eZSOAPServer();
foreach( $soapINI->variable( 'ExtensionSettings', 'SOAPExtensions' ) as $extension )
{
include_once( eZExtension::baseDirectory() . '/' . $extension . '/soap/initialize.php' );
}
$server->processRequest();
}
ob_end_flush();
eZExecution::cleanExit();
?>