[ Index ]
 

Code source de eZ Publish 3.9.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/kernel/error/ -> view.php (source)

   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  ?>


Généré le : Sat Feb 24 10:30:04 2007 par Balluche grâce à PHPXref 0.7