Actions

API16

JURI/getInstance

From Joomla! Documentation

< API16:JURI
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Returns the global JURI object, only creating it if it doesn't already exist.

[Edit Descripton]

Description:JURI/getInstance

Syntax

static getInstance($uri= 'SERVER')
Parameter Name Default Value Description
$uri 'SERVER' $uri The URI to parse. [optional: if null uses script URI]

Returns

The URI object. 

Defined in

libraries/joomla/environment/uri.php

Importing

jimport( 'joomla.environment.uri' );

Source Body

public static function getInstance($uri = 'SERVER')
{
        static $instances = array();
 
        if (!isset($instances[$uri]))
        {
                // Are we obtaining the URI from the server?
                if ($uri == 'SERVER')
                {
                        // Determine if the request was over SSL (HTTPS).
                        if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) {
                                $https = 's://';
                        }
                        else {
                                $https = '://';
                        }
 
                        /*
                         * Since we are assigning the URI from the server variables, we first need
                         * to determine if we are running on apache or IIS.  If PHP_SELF and REQUEST_URI
                         * are present, we will assume we are running on apache.
                         */
                        if (!empty($_SERVER['PHP_SELF']) && !empty ($_SERVER['REQUEST_URI']))
                        {
                                // To build the entire URI we need to prepend the protocol, and the http host
                                // to the URI string.
                                $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
 
                                // Since we do not have REQUEST_URI to work with, we will assume we are
                                // running on IIS and will therefore need to work some magic with the SCRIPT_NAME and
                                // QUERY_STRING environment variables.
                                //
                        }
                        else
                        {
                                // IIS uses the SCRIPT_NAME variable instead of a REQUEST_URI variable... thanks, MS
                                $theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
 
                                // If the query string exists append it to the URI string
                                if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
                                        $theURI .= '?' . $_SERVER['QUERY_STRING'];
                                }
                        }
 
                        // Now we need to clean what we got since we can't trust the server var
                        $theURI = urldecode($theURI);
                        $theURI = str_replace('"', '&quot;',$theURI);
                        $theURI = str_replace('<', '&lt;',$theURI);
                        $theURI = str_replace('>', '&gt;',$theURI);
                        $theURI = preg_replace('/eval\((.*)\)/', '', $theURI);
                        $theURI = preg_replace('/[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']/', '""', $theURI);
                }
                else
                {
                        // We were given a URI
                        $theURI = $uri;
                }
 
                // Create the new JURI instance
                $instances[$uri] = new JURI($theURI);
        }
        return $instances[$uri];
}

[Edit See Also] SeeAlso:JURI/getInstance

Examples

<CodeExamplesForm />