src/FACTFinder/Core/Client/RequestParser.php
public function getClientRequestParameters()
    {
        if (is_null($this->clientRequestParameters))
        {
            if (isset($_SERVER['QUERY_STRING']))
            {
                // TODO: Respect variables_order so that conflicting variables
                //       lead to the same result as in $_REQUEST (save for
                //       $_COOKIE variables). This todo also goes for the second
                //       alternative.
                $parameters = FF::getInstance(
                    'Util\Parameters',
                    $_SERVER['QUERY_STRING']
                );

                $data = $_POST;

                if (!empty($data)) {
                    foreach ($data as $key => $value) {
                        if (is_array($value)) {
                            unset($data[$key]);
                        }
                    }
                }

                $parameters->setAll($data);
            }
            else if (isset($_GET))
            {
                $this->log->warn('$_SERVER[\'QUERY_STRING\'] is not available. '
                               . 'Using $_GET instead. This may cause problems '
                               . 'if the query string contains parameters with '
                               . 'non-[a-zA-Z0-9_] characters.');

                // Don't use $_REQUEST, because it also contains $_COOKIE.
                // Note that we don't have to URL decode here, because _GET is
                // already URL decoded.
                $parameters = FF::getInstance(
                    'Util\Parameters',
                    array_merge($_POST, $_GET)
                );
            }
            else
            {
                // For CLI use:
                $parameters = FF::getInstance('Util\Parameters');
            }
            
            if(isset($_SERVER['REQUEST_URI'])) {
                $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
                $seoPathPosition = strrpos($path, "/s/");
                if ($seoPathPosition > -1) {
                    $encodedSeoPath = substr($path, $seoPathPosition + 2);
                    $decodedSeoPath = urldecode($encodedSeoPath);  
                    $parameters['seoPath'] = $decodedSeoPath; 
                }
            }
            
            // Convert encoding and then the parameters themselves
            $this->clientRequestParameters = $this->encodingConverter != null ? $this->encodingConverter->decodeClientUrlData($parameters) : $parameters;
           
        }

        return $this->clientRequestParameters;
    }
public function getClientRequestParameters()
    {
        if (is_null($this->clientRequestParameters))
        {
            if (isset($_SERVER['QUERY_STRING']))
            {
                // TODO: Respect variables_order so that conflicting variables
                //       lead to the same result as in $_REQUEST (save for
                //       $_COOKIE variables). This todo also goes for the second
                //       alternative.
                $parameters = FF::getInstance(
                    'Util\Parameters',
                    $_SERVER['QUERY_STRING']
                );

                $data = $_POST;

                if (!empty($data)) {
                    foreach ($data as $key => $value) {
                        if (is_array($value)) {
                            unset($data[$key]);
                        }
                    }
                }

                $parameters->setAll($data);
            }
            else if (isset($_GET))
            {
                $this->log->warn('$_SERVER[\'QUERY_STRING\'] is not available. '
                               . 'Using $_GET instead. This may cause problems '
                               . 'if the query string contains parameters with '
                               . 'non-[a-zA-Z0-9_] characters.');

                // Don't use $_REQUEST, because it also contains $_COOKIE.
                // Note that we don't have to URL decode here, because _GET is
                // already URL decoded.
                $parameters = FF::getInstance(
                    'Util\Parameters',
                    array_merge($_POST, $_GET)
                );
            }
            else
            {
                // For CLI use:
                $parameters = FF::getInstance('Util\Parameters');
            }
            
            if(isset($_SERVER['REQUEST_URI'])) {
                $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
                $seoPathPosition = strrpos($path, "/s/");
                if ($seoPathPosition > -1) {
                    $encodedSeoPath = substr($path, $seoPathPosition + 2);
                    $decodedSeoPath = urldecode($encodedSeoPath);  
                    $parameters['seoPath'] = $decodedSeoPath; 
                }
            }
            
            // Convert encoding and then the parameters themselves
            $this->clientRequestParameters = $this->encodingConverter != null ? $this->encodingConverter->decodeClientUrlData($parameters) : $parameters;
           
        }

        return $this->clientRequestParameters;
    }
Loads parameters from the request and returns a Parameter object.
Also takes care of encoding conversion if necessary. However, the
parameters themselves are not converted (that is ignore, require and
mapping directives in the configuration are not taken into account).

You won't usually need this method unless you really want to get access
to some parameters that would be ignored or mapped otherwise.

For use with any other part of the library, use getRequestParameters()
instead, which converts the parameters for usage with the server.

@return Parameters Array of UTF-8 encoded parameters