original_string: protected static function getBase($uri, $server)
      {
          $config = (array)Configure::read('App') + [
              'base' => null,
              'webroot' => null,
              'baseUrl' => null
          ];
          $base = $config['base'];
          $baseUrl = $config['baseUrl'];
          $webroot = $config['webroot'];
  
          if ($base !== false && $base !== null) {
              return [$base, $base . '/'];
          }
  
          if (!$baseUrl) {
              $base = dirname(Hash::get($server, 'PHP_SELF'));
              // Clean up additional / which cause following code to fail..
              $base = preg_replace('#/+#', '/', $base);
  
              $indexPos = strpos($base, '/' . $webroot . '/index.php');
              if ($indexPos !== false) {
                  $base = substr($base, 0, $indexPos) . '/' . $webroot;
              }
              if ($webroot === basename($base)) {
                  $base = dirname($base);
              }
  
              if ($base === DIRECTORY_SEPARATOR || $base === '.') {
                  $base = '';
              }
              $base = implode('/', array_map('rawurlencode', explode('/', $base)));
  
              return [$base, $base . '/'];
          }
  
          $file = '/' . basename($baseUrl);
          $base = dirname($baseUrl);
  
          if ($base === DIRECTORY_SEPARATOR || $base === '.') {
              $base = '';
          }
          $webrootDir = $base . '/';
  
          $docRoot = Hash::get($server, 'DOCUMENT_ROOT');
          $docRootContainsWebroot = strpos($docRoot, $webroot);
  
          if (!empty($base) || !$docRootContainsWebroot) {
              if (strpos($webrootDir, '/' . $webroot . '/') === false) {
                  $webrootDir .= $webroot . '/';
              }
          }
  
          return [$base . $file, $webrootDir];
      }
code: protected static function getBase($uri, $server)
      {
          $config = (array)Configure::read('App') + [
              'base' => null,
              'webroot' => null,
              'baseUrl' => null
          ];
          $base = $config['base'];
          $baseUrl = $config['baseUrl'];
          $webroot = $config['webroot'];
  
          if ($base !== false && $base !== null) {
              return [$base, $base . '/'];
          }
  
          if (!$baseUrl) {
              $base = dirname(Hash::get($server, 'PHP_SELF'));
              // Clean up additional / which cause following code to fail..
              $base = preg_replace('#/+#', '/', $base);
  
              $indexPos = strpos($base, '/' . $webroot . '/index.php');
              if ($indexPos !== false) {
                  $base = substr($base, 0, $indexPos) . '/' . $webroot;
              }
              if ($webroot === basename($base)) {
                  $base = dirname($base);
              }
  
              if ($base === DIRECTORY_SEPARATOR || $base === '.') {
                  $base = '';
              }
              $base = implode('/', array_map('rawurlencode', explode('/', $base)));
  
              return [$base, $base . '/'];
          }
  
          $file = '/' . basename($baseUrl);
          $base = dirname($baseUrl);
  
          if ($base === DIRECTORY_SEPARATOR || $base === '.') {
              $base = '';
          }
          $webrootDir = $base . '/';
  
          $docRoot = Hash::get($server, 'DOCUMENT_ROOT');
          $docRootContainsWebroot = strpos($docRoot, $webroot);
  
          if (!empty($base) || !$docRootContainsWebroot) {
              if (strpos($webrootDir, '/' . $webroot . '/') === false) {
                  $webrootDir .= $webroot . '/';
              }
          }
  
          return [$base . $file, $webrootDir];
      }
code_tokens: protected static function getBase ( $ uri , $ server ) { $ config = ( array ) Configure :: read ( 'App' ) + [ 'base' => null , 'webroot' => null , 'baseUrl' => null ] ; $ base = $ config [ 'base' ] ; $ baseUrl = $ config [ 'baseUrl' ] ; $ webroot = $ config [ 'webroot' ] ; if ( $ base !== false && $ base !== null ) { return [ $ base , $ base . '/' ] ; } if ( ! $ baseUrl ) { $ base = dirname ( Hash :: get ( $ server , 'PHP_SELF' ) ) ; // Clean up additional / which cause following code to fail.. $ base = preg_replace ( '#/+#' , '/' , $ base ) ; $ indexPos = strpos ( $ base , '/' . $ webroot . '/index.php' ) ; if ( $ indexPos !== false ) { $ base = substr ( $ base , 0 , $ indexPos ) . '/' . $ webroot ; } if ( $ webroot === basename ( $ base ) ) { $ base = dirname ( $ base ) ; } if ( $ base === DIRECTORY_SEPARATOR || $ base === '.' ) { $ base = '' ; } $ base = implode ( '/' , array_map ( 'rawurlencode' , explode ( '/' , $ base ) ) ) ; return [ $ base , $ base . '/' ] ; } $ file = '/' . basename ( $ baseUrl ) ; $ base = dirname ( $ baseUrl ) ; if ( $ base === DIRECTORY_SEPARATOR || $ base === '.' ) { $ base = '' ; } $ webrootDir = $ base . '/' ; $ docRoot = Hash :: get ( $ server , 'DOCUMENT_ROOT' ) ; $ docRootContainsWebroot = strpos ( $ docRoot , $ webroot ) ; if ( ! empty ( $ base ) || ! $ docRootContainsWebroot ) { if ( strpos ( $ webrootDir , '/' . $ webroot . '/' ) === false ) { $ webrootDir .= $ webroot . '/' ; } } return [ $ base . $ file , $ webrootDir ] ; }
docstring: Calculate the base directory and webroot directory.
  
  @param \Psr\Http\Message\UriInterface $uri The Uri instance.
  @param array $server The SERVER data to use.
  @return array An array containing the [baseDir, webroot]
docstring_tokens: Calculate the base directory and webroot directory .