Source for file URI.php

Documentation is available at URI.php

  1. <?php
  2. /**
  3.  * This application is free software; you can redistribute
  4.  * it and/or modify it under the terms of the GNU
  5.  * General Public License as published by the Free
  6.  * Software Foundation; either version 3 of the License,
  7.  * or (at your option) any later version.
  8.  * 
  9.  * This application is distributed in the hope that it will
  10.  * be useful, but WITHOUT ANY WARRANTY; without even the
  11.  * implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU General Public
  13.  * License for more details.
  14.  *
  15.  *
  16.  * @author Andrew Judd <contact@andrewjudd.ca>
  17.  * @copyright Andrew Judd, 2010
  18.  * @license http://www.gnu.org/licenses/gpl-3.0.txt GPLv3
  19.  *
  20.  * @project Mini MVC
  21.  * @name system/helpers/URI.php
  22.  * @description This class will be used as a helper in order to handle any of
  23.  *               the user's provided input from the URI.
  24.  */
  25.  
  26. /* Check if attempting for direct access */
  27. if !defined '__FULLPATH__' ) )
  28. {
  29.     die header 'HTTP/1.0 404 Not Found' ) );
  30. }
  31.  
  32. class URI extends Base
  33. {
  34.     /**
  35.      * This function is used statically in order to parse out the actual location
  36.      * where the user will be visiting.
  37.      */
  38.     public static function __parseURI ()
  39.     {
  40.         /* Make sure one of the values is set */
  41.         if !isset $_SERVER 'PATH_INFO' 
  42.             && !isset $_SERVER 'ORIG_PATH_INFO' )
  43.             && !isset $_SERVER 'REQUEST_URI' ) )
  44.         {
  45.             /* Server path not set, we won't be able to do anything */
  46.             return;
  47.         }
  48.  
  49.         /* Default the URI to empty */
  50.         $uri '';
  51.  
  52.         /*  Check if the 'PATH_INFO' array element is set*/
  53.         if isset $_SERVER 'PATH_INFO' ) )
  54.         {
  55.             $uri $_SERVER 'PATH_INFO' ];
  56.         }
  57.         /* See if we have a value for the path */
  58.         else if isset $_SERVER 'ORIG_PATH_INFO' ) )
  59.         {
  60.             /* It contained nothing, so try ORIG_PATH_INFO */
  61.             $uri $_SERVER 'ORIG_PATH_INFO' ];
  62.         }
  63.         /* Check if the 'REQUEST_URI' array is set */
  64.         else if isset $_SERVER 'REQUEST_URI' ) )
  65.         {
  66.             /* If 'REQUEST_URI' is set, then truncate the first part of the url  */
  67.             $uri substr $_SERVER 'REQUEST_URI' ]strpos $_SERVER 'REQUEST_URI' ]'/' ));
  68.         }
  69.  
  70.         /* 
  71.          * Now that we have the uri path, break it up.  When we split, we will
  72.          * left with the following (eliminating any of the empty fields):
  73.          * - $arr [ 0 ] = class to instantiate
  74.          * - $arr [ 1 ] = method to instantiate (if not set then we will use
  75.          *                whatever the default function is)
  76.          */
  77.         $split preg_split '/\//'$uri-1PREG_SPLIT_NO_EMPTY );
  78.  
  79.         /* Make sure we aren't trying to visit system pages */
  80.         $max count $split );
  81.  
  82.         for $x 0$x $max++$x )
  83.         {
  84.             /* Anything that contains '__' is a private method, so ignore it */
  85.             if $split $x == '_' && $split $x == '_' )
  86.             {
  87.                 /* Remove private calls */
  88.                 unset $split $x );
  89.             }
  90.         }
  91.  
  92.         /* See if we removed anything */
  93.         if count $split != $max )
  94.         {
  95.             /* We have removed one, so remove the empty spaces */
  96.             $x 0;
  97.  
  98.             foreach $split as $record )
  99.             {
  100.                 /* Assign the value */
  101.                 Base::$uri $x++ strtolower $record );
  102.             }
  103.         }
  104.         /* Otherwise, processing is done, so just save the value */
  105.         else
  106.         {
  107.             Base::$uri $split;
  108.         }
  109.  
  110.         /* Set the route */
  111.         Router::__setRoute ();
  112.     }
  113. }

Documentation generated on Thu, 01 Jul 2010 20:37:19 -0400 by phpDocumentor 1.4.3