| [ Index ] |
|
Code source de eZ Publish 3.9.0 |
1 <?php 2 // 3 // Created on: <30-Aug-2002 17:06:01 bf> 4 // 5 // SOFTWARE NAME: eZ publish 6 // SOFTWARE RELEASE: 3.9.0 7 // BUILD VERSION: 17785 8 // COPYRIGHT NOTICE: Copyright (C) 1999-2006 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 27 include_once ( "kernel/common/template.php" ); 28 29 $tpl =& templateInit(); 30 31 $module =& $Params['Module']; 32 $errorType = $Params['Type']; 33 $errorNumber = $Params['Number']; 34 $extraErrorParameters = $Params['ExtraParameters']; 35 36 $tpl->setVariable( 'parameters', $extraErrorParameters ); 37 38 $siteBasics = $GLOBALS['eZSiteBasics']; 39 $userObjectRequired = $siteBasics['user-object-required']; 40 41 $ini =& eZINI::instance(); 42 43 if ( $userObjectRequired ) 44 { 45 // include user class 46 include_once ( "kernel/classes/datatypes/ezuser/ezuser.php" ); 47 48 $currentUser =& eZUser::currentUser(); 49 $tpl->setVariable( "current_user", $currentUser ); 50 $tpl->setVariable( "anonymous_user_id", $ini->variable( 'UserSettings', 'AnonymousUserID' ) ); 51 } 52 else 53 { 54 $tpl->setVariable( "current_user", false ); 55 $tpl->setVariable( "anonymous_user_id", false ); 56 } 57 58 $embedContent = false; 59 60 $GLOBALS["eZRequestError"] = true; 61 eZDebug::writeError( "Error ocurred using URI: " . $_SERVER['REQUEST_URI'] , "error/view.php" ); 62 63 // if ( $errorType == 'kernel' ) 64 { 65 $errorINI =& eZINI::instance( 'error.ini' ); 66 67 // Redirect if error.ini tells us to 68 $errorHandlerList = $errorINI->variable( 'ErrorSettings-' . $errorType, 'ErrorHandler' ); 69 $redirectURLList = $errorINI->variable( 'ErrorSettings-' . $errorType, 'RedirectURL' ); 70 $rerunURLList = $errorINI->variable( 'ErrorSettings-' . $errorType, 'RerunURL' ); 71 $embedURLList = $errorINI->variable( 'ErrorSettings-' . $errorType, 'EmbedURL' ); 72 73 $errorHandlerType = $errorINI->variable( 'ErrorSettings', 'DefaultErrorHandler' ); 74 if ( isset( $errorHandlerList[$errorNumber] ) ) 75 $errorHandlerType = $errorHandlerList[$errorNumber]; 76 77 if ( $errorHandlerType != 'redirect' ) 78 { 79 // Set apache error headers if error.ini tells us to 80 if ( $errorINI->hasVariable( 'ErrorSettings-' . $errorType, 'HTTPError' ) ) 81 { 82 $errorMap = $errorINI->variable( 'ErrorSettings-' . $errorType, 'HTTPError' ); 83 if ( isset( $errorMap[$errorNumber] ) ) 84 { 85 $httpErrorCode = $errorMap[$errorNumber]; 86 if ( $errorINI->hasVariable( 'HTTPError-' . $httpErrorCode, 'HTTPName' ) ) 87 { 88 $httpErrorName = $errorINI->variable( 'HTTPError-' . $httpErrorCode, 'HTTPName' ); 89 $httpErrorString = "$httpErrorCode $httpErrorName"; 90 header( eZSys::serverVariable( 'SERVER_PROTOCOL' ) . " $httpErrorString" ); 91 header( "Status: $httpErrorString" ); 92 if ( $errorNumber == EZ_ERROR_KERNEL_MOVED ) 93 { 94 $location = eZSys::indexDir() . "/" . $extraErrorParameters['new_location']; 95 // Set moved permanently headers. 96 header( $_SERVER['SERVER_PROTOCOL'] . " 301 Moved Permanently" ); 97 header( "Status: 301 Moved Permanently" ); 98 header( "Location: " . $location ); 99 } 100 } 101 } 102 } 103 } 104 if ( $errorHandlerType == 'redirect' ) 105 { 106 $errorRedirectURL = $errorINI->variable( 'ErrorSettings', 'DefaultRedirectURL' ); 107 if ( isset( $redirectURLList[$errorNumber] ) ) 108 $errorRedirectURL = $redirectURLList[$errorNumber]; 109 return $module->redirectTo( $errorRedirectURL ); 110 } 111 else if ( $errorHandlerType == 'rerun' ) 112 { 113 $errorRerunURL = $errorINI->variable( 'ErrorSettings', 'DefaultRerunURL' ); 114 if ( isset( $rerunURLList[$errorNumber] ) ) 115 $errorRerunURL = $rerunURLList[$errorNumber]; 116 $Result = array(); 117 $Result['content'] = false; 118 $Result['rerun_uri'] = $errorRerunURL; 119 $module->setExitStatus( EZ_MODULE_STATUS_RERUN ); 120 return $Result; 121 } 122 else if ( $errorHandlerType == 'embed' ) 123 { 124 $errorEmbedURL = $errorINI->variable( 'ErrorSettings', 'DefaultEmbedURL' ); 125 if ( isset( $embedURLList[$errorNumber] ) ) 126 $errorEmbedURL = $embedURLList[$errorNumber]; 127 $uri = new eZURI( $errorEmbedURL ); 128 $moduleName = $uri->element(); 129 $embedModule = eZModule::exists( $moduleName ); 130 if ( get_class( $module ) == "ezmodule" ) 131 { 132 $uri->increase(); 133 $viewName = false; 134 if ( !$embedModule->singleFunction() ) 135 { 136 $viewName = $uri->element(); 137 $uri->increase(); 138 } 139 $embedParameters = $uri->elements( false ); 140 $embedResult =& $embedModule->run( $viewName, $embedParameters ); 141 $embedContent = $embedResult['content']; 142 } 143 144 // write reason to debug 145 // $accessMessage = print_r($Params['ExtraParameters']['AccessList']['FunctionRequired'], true); 146 // Function required 147 if ( isset( $Params['ExtraParameters']['AccessList'] ) ) 148 { 149 $accessMessage = "Function required:\n"; 150 if ( is_array( $Params['ExtraParameters']['AccessList']['FunctionRequired'] ) ) 151 { 152 foreach ( array_keys ( $Params['ExtraParameters']['AccessList']['FunctionRequired'] ) as $key ) 153 { 154 $accessMessage .= " $key : " . $Params['ExtraParameters']['AccessList']['FunctionRequired'][$key] . "\n" ; 155 } 156 } 157 $accessMessage .= "Policies that didn't match:\n"; 158 if ( is_array( $Params['ExtraParameters']['AccessList']['PolicyList'] ) ) 159 { 160 foreach ( $Params['ExtraParameters']['AccessList']['PolicyList'] as $policy ) 161 { 162 $accessMessage .= " PolicyID : " . $policy['PolicyID'] . "\n" ; 163 $accessMessage .= " Limitation : " . $policy['LimitationList']['Limitation'] . "\n" ; 164 $accessMessage .= " Required : "; 165 foreach ( $policy['LimitationList']['Required'] as $required ) 166 $accessMessage .= "$required, "; 167 $accessMessage .= "\n"; 168 } 169 } 170 171 eZDebug::writeWarning($accessMessage, "Insufficient permissions", "kernel/error/view.php"); 172 } 173 174 } 175 } 176 177 178 $userRedirectURI = ''; 179 $requestedURI =& $GLOBALS['eZRequestedURI']; 180 if ( get_class( $requestedURI ) == 'ezuri' ) 181 { 182 $userRedirectURI = $requestedURI->uriString( true ); 183 } 184 $tpl->setVariable( 'redirect_uri', $userRedirectURI ); 185 $tpl->setVariable( 'embed_content', $embedContent ); 186 187 if ( (isset( $Params['ExtraParameters']['AccessList'] ) ) and ( $ini->variable( 'RoleSettings', 'ShowAccessDeniedReason' ) === "enabled" ) ) 188 { 189 $tpl->setVariable( 'module_required', $Params['ExtraParameters']['AccessList']['FunctionRequired']['Module'] ); 190 $tpl->setVariable( 'function_required', $Params['ExtraParameters']['AccessList']['FunctionRequired']['Function'] ); 191 } 192 193 $res =& eZTemplateDesignResource::instance(); 194 $res->setKeys( array( array( 'error_type', $errorType ), array( 'error_number', $errorNumber ) ) ); 195 196 $Result = array(); 197 $Result['content'] =& $tpl->fetch( "design:error/$errorType/$errorNumber.tpl" ); 198 $Result['path'] = array( array( 'text' => ezi18n( 'kernel/error', 'Error' ), 199 'url' => false ), 200 array( 'text' => "$errorType ($errorNumber)", 201 'url' => false ) ); 202 203 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Sat Feb 24 10:30:04 2007 | par Balluche grâce à PHPXref 0.7 |