Implement #015359: access.php - new MatchOrder=host_uri
[tinyz:tinyz.git] / soap.php
1 <?php
2 //
3 // Created on: <11-Oct-2004 15:41:12 kk>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 /*! \file soap.php
30 */
31
32 /*!
33   \brief The SOAP file will handle all eZ Publish soap requests.
34
35   SOAP functions are
36 */
37
38 ob_start();
39
40 ini_set( "display_errors" , "0" );
41
42 // Set a default time zone if none is given. The time zone can be overriden
43 // in config.php or php.ini.
44 if ( !ini_get( "date.timezone" ) )
45 {
46     date_default_timezone_set( "UTC" );
47 }
48
49 require 'autoload.php';
50
51 /*!
52  Reads settings from site.ini and passes them to eZDebug.
53 */
54 function eZUpdateDebugSettings()
55 {
56     $ini = eZINI::instance();
57
58     list( $debugSettings['debug-enabled'], $debugSettings['debug-by-ip'], $debugSettings['debug-by-user'], $debugSettings['debug-ip-list'], $debugSettings['debug-user-list'] ) =
59         $ini->variableMulti( 'DebugSettings', array( 'DebugOutput', 'DebugByIP', 'DebugByUser', 'DebugIPList', 'DebugUserIDList' ), array ( 'enabled', 'enabled', 'enabled' ) );
60     eZDebug::updateSettings( $debugSettings );
61 }
62
63 $ini = eZINI::instance();
64
65 // Initialize/set the index file.
66 eZSys::init( 'soap.php', $ini->variable( 'SiteAccessSettings', 'ForceVirtualHost' ) == 'true' );
67 $uri = eZURI::instance( eZSys::requestURI() );
68 $GLOBALS['eZRequestedURI'] = $uri;
69
70 // Check for extension
71 require_once( 'kernel/common/ezincludefunctions.php' );
72 eZExtension::activateExtensions( 'default' );
73 // Extension check end
74
75 // Activate correct siteaccess
76 include_once( 'access.php' );
77 $soapINI = eZINI::instance( 'soap.ini' );
78 if ( $soapINI->variable( 'GeneralSettings', 'UseDefaultAccess' ) === 'enabled' )
79 {
80     $access = array( 'name' => $ini->variable( 'SiteSettings', 'DefaultAccess' ),
81                      'type' => eZSiteAccess::TYPE_DEFAULT );
82 }
83 else
84 {
85     $access = eZSiteAccess::match( $uri,
86                           eZSys::hostname(),
87                           eZSys::serverPort(),
88                           eZSys::indexFile() );
89 }
90 $access = eZSiteAccess::change( $access );
91 // Siteaccess activation end
92
93 // Check for activating Debug by user ID (Final checking. The first was in eZDebug::updateSettings())
94 eZDebug::checkDebugByUser();
95
96 // Check for siteaccess extension
97 eZExtension::activateExtensions( 'access' );
98 // Siteaccess extension check end
99
100 // reload soap.ini cache now that override paths have changed
101 $soapINI->loadCache();
102
103 /*!
104  Reads settings from i18n.ini and passes them to eZTextCodec.
105 */
106 function eZUpdateTextCodecSettings()
107 {
108     $ini = eZINI::instance( 'i18n.ini' );
109
110     list( $i18nSettings['internal-charset'], $i18nSettings['http-charset'], $i18nSettings['mbstring-extension'] ) =
111         $ini->variableMulti( 'CharacterSettings', array( 'Charset', 'HTTPCharset', 'MBStringExtension' ), array( false, false, 'enabled' ) );
112
113     eZTextCodec::updateSettings( $i18nSettings );
114 }
115
116 // Initialize text codec settings
117 eZUpdateTextCodecSettings();
118
119 // Initialize module loading
120 $moduleRepositories = eZModule::activeModuleRepositories();
121 eZModule::setGlobalPathList( $moduleRepositories );
122
123 // Load soap extensions
124 $enableSOAP = $soapINI->variable( 'GeneralSettings', 'EnableSOAP' );
125
126 if ( $enableSOAP == 'true' )
127 {
128     eZSys::init( 'soap.php' );
129
130     // Login if we have username and password.
131     if ( eZHTTPTool::username() and eZHTTPTool::password() )
132         eZUser::loginUser( eZHTTPTool::username(), eZHTTPTool::password() );
133
134     $server = new eZSOAPServer();
135
136     foreach( $soapINI->variable( 'ExtensionSettings', 'SOAPExtensions' ) as $extension )
137     {
138         include_once( eZExtension::baseDirectory() . '/' . $extension . '/soap/initialize.php' );
139     }
140
141     $server->processRequest();
142 }
143
144 ob_end_flush();
145
146 eZExecution::cleanExit();
147
148 ?>