API15

JURI/getInstance

From Joomla! Documentation

< API15:JURI

The "API15" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

Returns a reference to a global JURI object, only creating it if it doesn't already exist.

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Syntax[edit]

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

Returns[edit]

The URI object. 

Defined in[edit]

libraries/joomla/environment/uri.php

Importing[edit]

jimport( 'joomla.environment.uri' );

Source Body[edit]

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];
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples[edit]

Code Examples[edit]