API16

JURI/getInstance

From Joomla! Documentation

< API16:JURI
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The "API16" 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 the global JURI object, only creating it if it doesn't already exist.



Syntax[edit]

static 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]

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



Examples[edit]

Code Examples[edit]