Пример #1
0
	/**
	 * Prepare the main requests.
	 * 
	 */
	private function _setParams()
	{
		if (Phpfox::getParam('core.url_rewrite') == 3)
		{
			/**
			 * @todo This method needs to be tested a little more on different OSsss
			 */
			$aServer = explode('.', (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['SERVER_NAME']));
			if ($aServer[0] == 'www')
			{
				$aServer[0] = Phpfox::getParam('core.module_core');
			}
			$_GET[PHPFOX_GET_METHOD] = '/' . $aServer[0] . '/' . (isset($_GET[PHPFOX_GET_METHOD]) ? $_GET[PHPFOX_GET_METHOD] : '');			
		}		
		
		if (!isset($_GET[PHPFOX_GET_METHOD]))
		{
			return '';
		}
		
		if (!defined('PHPFOX_INSTALLER'))
		{
			$oModule = Phpfox::getLib('module');
			$sDefaultModule = Phpfox::getParam('core.module_core');
		}

		$sRequest = $_GET[PHPFOX_GET_METHOD];		
		$aRequest = explode("/", $sRequest);				
		$iCnt = 0;
		foreach($aRequest as $sVar)
		{
			$sVar = trim($sVar);
			if (!empty($sVar))
			{
				if ($sVar == 'mobile')
				{
					self::$_isMobile = true;
					
					continue;
				}				
				
				$iCnt++;	
				
				$bPass = true;
				if ($iCnt == 1 && !preg_match("/^frame_(.*)$/", $sVar))
				{
					$bPass = false;	
				}				
	
				if ($bPass && preg_match('/\_/', $sVar))
				{
					$aPart = explode('_', $sVar);
					if (isset($aPart[0]))
					{
						if (count($aPart) > 2)
						{
							$this->_aParams[$aPart[0]] = (substr_replace($sVar, '', 0, (strlen($aPart[0]) + 1)));
						}
						else 
						{							
							$this->_aParams[$aPart[0]] = (isset($aPart[1]) ? $aPart[1] : '');
						}
					}
				}
				else
				{					
					// Override our default requests incase the user has created some special URL rewrites
					/**
					 * @todo We need to look over this routine. Currently it might be eating up a little too 
					 * much extra memory, however from recent tests it seems to be working fine.
					 */					
					if (($iCnt == 1 && isset($this->aRewrite[$sVar])))						 
					{	
						$this->_aParams['req1'] = $this->aRewrite[$sVar]['module'];															
						if ($this->aRewrite[$sVar]['component'] != 'index')
						{							
							$this->_aParams['req2'] = $this->aRewrite[$sVar]['component'];
							$iCnt++;
						}
						continue;						
					}
					
					if (!defined('PHPFOX_INSTALLER') && $iCnt == 1 && $sDefaultModule != PHPFOX_MODULE_CORE && isset($this->aRewrite['']['module']) && ($sModule = $this->aRewrite['']['module']) == $sDefaultModule && !$oModule->isModule($sVar))
					{
						$this->_aParams['req1'] = strtolower($sDefaultModule);
						$this->_aParams['req2'] = $sVar;
						$iCnt++;
						continue;
					}					
		
					$sVar = rawurldecode($sVar);
					$sVar = rawurlencode($sVar);
					$this->_aParams['req' . $iCnt] = $sVar;
				}
			}
		}
	}	
Пример #2
0
 /**
  * Prepare the main requests.
  * 
  */
 private function _setParams()
 {
     if (PHPFOX_IS_AJAX) {
         if (isset($_REQUEST['params'])) {
             foreach ($_REQUEST['params'] as $sReq => $sVal) {
                 if (strpos($sVal, '_') !== false) {
                     $aParts = explode('_', $sVal);
                     $this->_aParams[$aParts[0]] = $aParts[1];
                 } else {
                     if (strpos($sReq, 'req') !== false) {
                         $this->_aParams[$sReq] = $sVal;
                     }
                 }
             }
         }
     }
     if (!isset($_GET[PHPFOX_GET_METHOD])) {
         $_GET[PHPFOX_GET_METHOD] = $this->getUri();
     }
     if (!defined('PHPFOX_INSTALLER')) {
         $oModule = Phpfox_Module::instance();
         $sDefaultModule = Phpfox::getParam('core.module_core');
     }
     $sRequest = $_GET[PHPFOX_GET_METHOD];
     $sRequest = trim($sRequest, '/');
     $aRequest = explode("/", $sRequest);
     $iCnt = 0;
     foreach ($aRequest as $sVar) {
         $sVar = trim($sVar);
         if (!empty($sVar)) {
             if ($iCnt == 0 && $sVar == 'mobile') {
                 self::$_isMobile = true;
                 // http://www.phpfox.com/tracker/view/15019/
                 $sRequest = preg_replace('/mobile\\//i', '', $sRequest, 1);
                 //$sRequest = str_replace('mobile/', '', $sRequest);
                 break;
             }
         }
     }
     $aRequest = explode("/", $sRequest);
     // Remove params from sRequest
     preg_match('/([a-z0-9]+_[a-z0-9]+)/i', $sRequest, $aParams);
     $sRequest = str_replace($aParams, '', $sRequest);
     $sRequest = trim($sRequest, '/');
     if (isset($this->aRewrite[$sRequest])) {
         // this is the final url, do not rewrite
     } else {
         if (isset($this->aReverseRewrite[$sRequest])) {
             $sRequest = $this->aReverseRewrite[$sRequest];
             $aRequest = explode('/', $sRequest);
             $iCnt++;
             foreach ($aRequest as $sReq) {
                 $this->_aParams['req' . $iCnt] = $sReq;
             }
             $iCnt = 0;
             if (!empty($aParams)) {
                 $aRequest = $aRequest + $aParams;
             }
         } else {
             if (isset($aRequest[0]) && isset($this->aReverseRewrite[$aRequest[0]])) {
                 $sRequest = $this->aReverseRewrite[$aRequest[0]];
                 $aRequest[0] = $sRequest;
                 $iCnt++;
                 foreach ($aRequest as $sReq) {
                     $this->_aParams['req' . $iCnt] = $sReq;
                 }
                 $iCnt = 0;
                 if (!empty($aParams)) {
                     $aRequest = $aRequest + $aParams;
                 }
             }
         }
     }
     $sRequest = trim($sRequest, '/');
     $bRedirected = false;
     if (isset($this->aReverseRewrite[$sRequest])) {
         // we already redirected and should stop now.
         $bRedirected = true;
     } else {
         if (isset($this->aRewrite[$sRequest])) {
         }
     }
     foreach ($aRequest as $sVar) {
         $sVar = trim($sVar);
         if (!empty($sVar)) {
             if ($iCnt == 0 && $sVar == 'mobile') {
                 self::$_isMobile = true;
                 continue;
             }
             $iCnt++;
             $bPass = true;
             if ($iCnt == 1 && !preg_match("/^frame_(.*)\$/", $sVar)) {
                 $bPass = false;
             }
             if ($bPass && preg_match('/\\_/', $sVar)) {
                 $aPart = explode('_', $sVar);
                 if (isset($aPart[0])) {
                     if (count($aPart) > 2) {
                         $this->_aParams[$aPart[0]] = substr_replace($sVar, '', 0, strlen($aPart[0]) + 1);
                     } else {
                         $this->_aParams[$aPart[0]] = isset($aPart[1]) ? $aPart[1] : '';
                     }
                 }
             } else {
                 // Override our default requests in case the user has created some special URL rewrites
                 /**
                  * @todo We need to look over this routine. Currently it might be eating up a little too 
                  * much extra memory, however from recent tests it seems to be working fine.
                  */
                 if (!defined('PHPFOX_INSTALLER') && $iCnt == 1 && $sDefaultModule != PHPFOX_MODULE_CORE && $bRedirected != true && isset($this->aRewrite['']['module']) && ($sModule = $this->aRewrite['']['module']) == $sDefaultModule && !$oModule->isModule($sVar)) {
                     $this->_aParams['req1'] = strtolower($sDefaultModule);
                     $this->_aParams['req2'] = $sVar;
                     $iCnt++;
                     continue;
                 }
                 $sVar = rawurldecode($sVar);
                 $sVar = rawurlencode($sVar);
                 $this->_aParams['req' . $iCnt] = $sVar;
             }
         }
     }
 }