File indexing completed on 2024-12-22 05:37:13

0001 <?php
0002 /**
0003  * Zend Framework
0004  *
0005  * LICENSE
0006  *
0007  * This source file is subject to the new BSD license that is bundled
0008  * with this package in the file LICENSE.txt.
0009  * It is also available through the world-wide-web at this URL:
0010  * http://framework.zend.com/license/new-bsd
0011  * If you did not receive a copy of the license and are unable to
0012  * obtain it through the world-wide-web, please send an email
0013  * to license@zend.com so we can send you a copy immediately.
0014  *
0015  * @category   Zend
0016  * @package    Zend_View
0017  * @subpackage Helper
0018  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0019  * @version    $Id$
0020  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0021  */
0022 
0023 /** @see Zend_View_Helper_Abstract */
0024 // require_once 'Zend/View/Helper/Abstract.php';
0025 
0026 /**
0027  * Helper for retrieving the BaseUrl
0028  *
0029  * @package    Zend_View
0030  * @subpackage Helper
0031  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0032  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0033  */
0034 class Zend_View_Helper_BaseUrl extends Zend_View_Helper_Abstract
0035 {
0036     /**
0037      * BaseUrl
0038      *
0039      * @var string
0040      */
0041     protected $_baseUrl;
0042 
0043     /**
0044      * Returns site's base url, or file with base url prepended
0045      *
0046      * $file is appended to the base url for simplicity
0047      *
0048      * @param  string|null $file
0049      * @return string
0050      */
0051     public function baseUrl($file = null)
0052     {
0053         // Get baseUrl
0054         $baseUrl = $this->getBaseUrl();
0055 
0056         // Remove trailing slashes
0057         if (null !== $file) {
0058             $file = '/' . ltrim($file, '/\\');
0059         }
0060 
0061         return $baseUrl . $file;
0062     }
0063 
0064     /**
0065      * Set BaseUrl
0066      *
0067      * @param  string $base
0068      * @return Zend_View_Helper_BaseUrl
0069      */
0070     public function setBaseUrl($base)
0071     {
0072         $this->_baseUrl = rtrim($base, '/\\');
0073         return $this;
0074     }
0075 
0076     /**
0077      * Get BaseUrl
0078      *
0079      * @return string
0080      */
0081     public function getBaseUrl()
0082     {
0083         if ($this->_baseUrl === null) {
0084             /** @see Zend_Controller_Front */
0085             // require_once 'Zend/Controller/Front.php';
0086             $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
0087 
0088             // Remove scriptname, eg. index.php from baseUrl
0089             $baseUrl = $this->_removeScriptName($baseUrl);
0090 
0091             $this->setBaseUrl($baseUrl);
0092         }
0093 
0094         return $this->_baseUrl;
0095     }
0096 
0097     /**
0098      * Remove Script filename from baseurl
0099      *
0100      * @param  string $url
0101      * @return string
0102      */
0103     protected function _removeScriptName($url)
0104     {
0105         if (!isset($_SERVER['SCRIPT_NAME'])) {
0106             // We can't do much now can we? (Well, we could parse out by ".")
0107             return $url;
0108         }
0109 
0110         if (($pos = strripos($url, basename($_SERVER['SCRIPT_NAME']))) !== false) {
0111             $url = substr($url, 0, $pos);
0112         }
0113 
0114         return $url;
0115     }
0116 }