Пример #1
0
 /**
  * parseUrl sets up the parameters list by breaking up the URL and providing some 
  * default variables.
  */
 private function parseUrl(&$parameters)
 {
     $urlConfigRoot = new ezcUrlConfiguration();
     $urlConfigRoot->script = 'index.php';
     $urlConfigRoot->addOrderedParameter('module');
     $url = new ezcUrl($_SERVER['REQUEST_URI'], $urlConfigRoot);
     $moduleIdentifier = $url->getParam('module');
     $urlConfig = $this->urlConfigs[$moduleIdentifier];
     if (!$urlConfig) {
         $urlConfig = $this->urlConfigs['notfound'];
         $url = new ezcURL('/notfound/notfound/notfound', $urlConfigRoot);
     }
     $url->applyConfiguration($urlConfig);
     // var_dump($url->params);
     $parameters = array_merge($url->getQuery(), $_POST);
     $parameters['url'] = $url;
     $parameters['method'] = strtolower($_SERVER['REQUEST_METHOD']);
     $parameters['client_ip'] = $_SERVER['REMOTE_ADDR'];
     $parameters['client_port'] = $_SERVER['REMOTE_PORT'];
     //            var_dump($url->path);
 }
Пример #2
0
 /**
  * Test for bug #12825 (URL parser doesn't like empty elements.)
  */
 public function testGetUnorderedParameterMissing()
 {
     $urlCfg = new ezcUrlConfiguration();
     $urlCfg->basedir = 'mydir/';
     $urlCfg->script = 'index.php';
     $urlCfg->addUnorderedParameter('language');
     // should have been http://www.example.com/mydir/index.php/(language)/en
     $url = new ezcUrl('http://www.example.com/mydir/index.php//en', $urlCfg);
     $this->assertEquals(null, $url->getParam('language'));
 }
<?php

require_once 'tutorial_autoload.php';
// create an ezcUrlConfiguration object
$urlCfg = new ezcUrlConfiguration();
$urlCfg->basedir = '/mydir/shop';
$urlCfg->script = 'index.php';
$urlCfg->addOrderedParameter('module');
$url = new ezcUrl('http://www.example.com/mydir/shop/index.php/order/Software/PHP/Version/5.2/Extension/XDebug/Extension/openssl', $urlCfg);
// get the unordered parameters as a flat array
var_dump($url->getParams());
// will output array( 'Software', 'PHP', 'Version', '5.2', 'Extension', 'XDebug', 'Extension', 'openssl' )
Пример #4
0
<?php

require_once 'tutorial_autoload.php';
class customLazyUrlConfiguration implements ezcBaseConfigurationInitializer
{
    public static function configureObject($urlCfg)
    {
        // set the basedir and script values
        $urlCfg->basedir = 'mydir';
        $urlCfg->script = 'index.php';
        // define delimiters for unordered parameter names
        $urlCfg->unorderedDelimiters = array('(', ')');
        // define ordered parameters
        $urlCfg->addOrderedParameter('section');
        $urlCfg->addOrderedParameter('group');
        $urlCfg->addOrderedParameter('category');
        $urlCfg->addOrderedParameter('subcategory');
        // define unordered parameters
        $urlCfg->addUnorderedParameter('game');
    }
}
ezcBaseInit::setCallback('ezcUrlConfiguration', 'customLazyUrlConfiguration');
// Classes loaded and configured on first request
$url = new ezcUrl('http://www.example.com/mydir/index.php/groups/Games/Adventure/Adult/(game)/Larry/7', ezcUrlConfiguration::getInstance());
Пример #5
0
 static function runModule()
 {
     if (isset(self::$currentModule[self::$currentView])) {
         $Params = array();
         $Params['module'] = self::$currentModule[self::$currentView];
         $Params['module']['name'] = self::$currentModule;
         $Params['module']['view'] = self::$currentView;
         $urlCfgDefault = ezcUrlConfiguration::getInstance();
         $url = erLhcoreClassURL::getInstance();
         self::$currentModule[self::$currentView]['uparams'][] = 'page';
         foreach (self::$currentModule[self::$currentView]['params'] as $userParameter) {
             $urlCfgDefault->addOrderedParameter($userParameter);
         }
         foreach (self::$currentModule[self::$currentView]['uparams'] as $userParameter) {
             $urlCfgDefault->addUnorderedParameter($userParameter, isset(self::$currentModule[self::$currentView]['multiple_arguments']) && in_array($userParameter, self::$currentModule[self::$currentView]['multiple_arguments']) ? ezcUrlConfiguration::MULTIPLE_ARGUMENTS : null);
         }
         $url->applyConfiguration($urlCfgDefault);
         foreach (array_merge(self::$currentModule[self::$currentView]['uparams'], self::$currentModule[self::$currentView]['params']) as $userParameter) {
             $Params[in_array($userParameter, self::$currentModule[self::$currentView]['params']) ? 'user_parameters' : 'user_parameters_unordered'][$userParameter] = $url->getParam($userParameter);
         }
         // Function set, check permission
         if (isset($Params['module']['functions'])) {
             // Just to start session
             $currentUser = erLhcoreClassUser::instance();
             if (!$currentUser->hasAccessTo('lh' . self::$currentModuleName, $Params['module']['functions'])) {
                 if ($currentUser->isLogged()) {
                     include_once 'modules/lhkernel/nopermission.php';
                     $Result['pagelayout'] = 'login';
                     return $Result;
                 } else {
                     if (isset($Params['module']['ajax']) && $Params['module']['ajax'] == true) {
                         echo json_encode(array('error_url' => erLhcoreClassDesign::baseurl('user/login')));
                         exit;
                     } else {
                         self::redirect('user/login');
                         exit;
                     }
                 }
             }
         }
         if (isset($Params['module']['limitations'])) {
             // Just to start session
             $currentUser = erLhcoreClassUser::instance();
             $access = call_user_func($Params['module']['limitations']['self']['method'], $Params['user_parameters'][$Params['module']['limitations']['self']['param']], $currentUser->hasAccessTo('lh' . self::$currentModuleName, $Params['module']['limitations']['global']));
             if ($access == false) {
                 if ($currentUser->isLogged()) {
                     include_once 'modules/lhkernel/nopermissionobject.php';
                     $Result['pagelayout'] = 'login';
                     return $Result;
                 } else {
                     self::redirect('user/login');
                     exit;
                 }
             } else {
                 $Params['user_object'] = $access;
             }
         }
         try {
             if (isset($currentUser) && $currentUser->isLogged() && ($timeZone = $currentUser->getUserTimeZone()) != '') {
                 self::$defaultTimeZone = $timeZone;
                 date_default_timezone_set(self::$defaultTimeZone);
             } elseif (self::$defaultTimeZone != '') {
                 date_default_timezone_set(self::$defaultTimeZone);
             }
             if (self::$debugEnabled == false) {
                 $includeStatus = @(include self::getModuleFile());
             } else {
                 $includeStatus = (include self::getModuleFile());
             }
             // Inclusion failed
             if ($includeStatus === false) {
                 $CacheManager = erConfigClassLhCacheConfig::getInstance();
                 $CacheManager->expireCache();
                 if (self::$debugEnabled == true) {
                     // Just try reinclude
                     include self::getModuleFile(true);
                 } else {
                     // Just try reinclude
                     @(include self::getModuleFile(true));
                 }
                 if (!isset($Result)) {
                     self::redirect(self::$currentModuleName . '/' . self::$currentView);
                     exit;
                 }
             }
         } catch (Exception $e) {
             $CacheManager = erConfigClassLhCacheConfig::getInstance();
             $CacheManager->expireCache();
             if (erConfigClassLhConfig::getInstance()->getSetting('site', 'debug_output') == true) {
                 echo "<pre>";
                 print_r($e);
                 echo "</pre>";
                 exit;
             }
             if (erConfigClassLhConfig::getInstance()->getSetting('site', 'installed') == false) {
                 header('Location: ' . erLhcoreClassDesign::baseurldirect('site_admin/install/install'));
                 exit;
             }
             header('HTTP/1.1 503 Service Temporarily Unavailable');
             header('Status: 503 Service Temporarily Unavailable');
             header('Retry-After: 300');
             exit;
         }
         if (isset($Params['module']['pagelayout']) && !isset($Result['pagelayout'])) {
             $Result['pagelayout'] = $Params['module']['pagelayout'];
         }
         return $Result;
     } else {
         // Default module view
         if (($viewDefault = self::getModuleDefaultView(self::$currentModuleName)) !== false) {
             self::redirect(self::$currentModuleName . '/' . $viewDefault);
             exit;
         }
         // No sutch module etc, redirect to frontpage
         self::redirect();
         exit;
     }
 }
Пример #6
0
<?php

require_once 'tutorial_autoload.php';
// create an ezcUrlConfiguration object
$urlCfg = new ezcUrlConfiguration();
// set the basedir and script values
$urlCfg->basedir = 'mydir';
$urlCfg->script = 'index.php';
// define delimiters for unordered parameter names
$urlCfg->unorderedDelimiters = array('(', ')');
// define ordered parameters
$urlCfg->addOrderedParameter('section');
$urlCfg->addOrderedParameter('group');
$urlCfg->addOrderedParameter('category');
$urlCfg->addOrderedParameter('subcategory');
// define unordered parameters
$urlCfg->addUnorderedParameter('game', ezcUrlConfiguration::MULTIPLE_ARGUMENTS);
// create a new ezcUrl object from a string url and use the above $urlCfg
$url = new ezcUrl('http://www.example.com/mydir/index.php/groups/Games/Adventure/Adult/(game)/Larry/7', $urlCfg);
// get the parameter values from the url
var_dump($url->getParam('section'));
var_dump($url->getParam('group'));
var_dump($url->getParam('category'));
var_dump($url->getParam('subcategory'));
var_dump($url->getParam('game'));
// output the url (index.php will not be there)
var_dump($url->buildUrl());
// output the url (with index.php included)
var_dump($url->buildUrl(true));
Пример #7
0
<?php

require_once 'tutorial_autoload.php';
// create a default url configuration
$urlCfgDefault = new ezcUrlConfiguration();
$urlCfgDefault->addOrderedParameter('section');
// create a configuration for artists
$urlCfgArtist = new ezcUrlConfiguration();
$urlCfgArtist->addOrderedParameter('section');
$urlCfgArtist->addOrderedParameter('artist_name');
// create a configuration for albums
$urlCfgAlbum = new ezcUrlConfiguration();
$urlCfgAlbum->addOrderedParameter('section');
$urlCfgAlbum->addOrderedParameter('artist_name');
$urlCfgAlbum->addOrderedParameter('album_name');
// create a configuration for music genres
$urlCfgGenre = new ezcUrlConfiguration();
$urlCfgGenre->addOrderedParameter('section');
$urlCfgGenre->addOrderedParameter('genre_name');
$url = new ezcUrl('http://mymusicsite.com/showartist/Beatles', $urlCfgDefault);
switch ($url->getParam('section')) {
    case 'showartist':
        $url->applyConfiguration($urlCfgArtist);
        $artist = $url->getParam('artist_name');
        // do stuff with $artist
        var_dump($artist);
        break;
    case 'showalbum':
        $url->applyConfiguration($urlCfgAlbum);
        $artist = $url->getParam('artist_name');
        $album = $url->getParam('album_name');
Пример #8
0
 public function testDelayedInit()
 {
     ezcBaseInit::setCallback('ezcUrlConfiguration', 'testDelayedInitUrlConfiguration');
     $urlCfg = ezcUrlConfiguration::getInstance();
     $this->assertEquals(array('section' => 0), $urlCfg->orderedParameters);
     $this->assertEquals(array('article' => 1), $urlCfg->unorderedParameters);
 }
Пример #9
0
<?php

require_once 'tutorial_autoload.php';
// create an ezcUrlConfiguration object
$urlCfg = new ezcUrlConfiguration();
// set the basedir and script values
$urlCfg->basedir = 'mydir';
$urlCfg->script = 'index.php';
// define delimiters for unordered parameter names
$urlCfg->unorderedDelimiters = array('(', ')');
// define ordered parameters
$urlCfg->addOrderedParameter('section');
$urlCfg->addOrderedParameter('group');
$urlCfg->addOrderedParameter('category');
$urlCfg->addOrderedParameter('subcategory');
// define unordered parameters
$urlCfg->addUnorderedParameter('game');
// visualize the $urlCfg object
var_dump($urlCfg);
// create a new ezcUrl object from a string url and use the above $urlCfg
$url = new ezcUrl('http://www.example.com/mydir/index.php/groups/Games/Adventure/Adult/(game)/Larry/7', $urlCfg);
Пример #10
0
 public static function getInstance()
 {
     if (is_null(self::$instance)) {
         $sysConfiguration = erLhcoreClassSystem::instance();
         $urlCfgDefault = ezcUrlConfiguration::getInstance();
         $urlCfgDefault->basedir = $sysConfiguration->WWWDir;
         $urlCfgDefault->script = $sysConfiguration->IndexFile;
         $urlCfgDefault->unorderedDelimiters = array('(', ')');
         $urlCfgDefault->orderedParameters = array();
         $urlCfgDefault->unorderedParameters = array();
         $urlCfgDefault->addOrderedParameter('siteaccess');
         $urlCfgDefault->addOrderedParameter('module');
         $urlCfgDefault->addOrderedParameter('function');
         $cfgSite = erConfigClassLhConfig::getInstance();
         $urlInstance = new erLhcoreClassURL(($cfgSite->getSetting('site', 'force_virtual_host', false) === false ? 'index.php' : '') . $sysConfiguration->RequestURI, $urlCfgDefault);
         $siteaccess = $urlInstance->getParam('siteaccess');
         $availableSiteaccess = $cfgSite->getSetting('site', 'available_site_access');
         $defaultSiteAccess = $cfgSite->getSetting('site', 'default_site_access');
         if ($defaultSiteAccess != $siteaccess && in_array($siteaccess, $availableSiteaccess)) {
             $optionsSiteAccess = $cfgSite->getSetting('site_access_options', $siteaccess);
             $sysConfiguration->Language = $siteaccess == 'site_admin' ? erLhcoreClassModelUserSetting::getSetting('user_language', $optionsSiteAccess['locale'], false, true) : $optionsSiteAccess['locale'];
             $sysConfiguration->ThemeSite = $optionsSiteAccess['theme'];
             $sysConfiguration->ContentLanguage = $optionsSiteAccess['content_language'];
             $sysConfiguration->WWWDirLang = '/' . $siteaccess;
             $sysConfiguration->SiteAccess = $siteaccess;
             if ($optionsSiteAccess['locale'] != 'en_EN') {
                 $urlInstance->setParam('module', $urlInstance->getParam('module'));
                 $urlInstance->setParam('function', $urlInstance->getParam('function'));
             }
             if (isset($_POST['switchLang']) && in_array($_POST['switchLang'], $availableSiteaccess)) {
                 $optionsSiteAccessOverride = $cfgSite->getSetting('site_access_options', $_POST['switchLang']);
                 $sysConfiguration->Language = $optionsSiteAccessOverride['locale'];
                 $sysConfiguration->SiteAccess = $_POST['switchLang'];
                 if ($defaultSiteAccess != $sysConfiguration->SiteAccess) {
                     $sysConfiguration->WWWDirLang = '/' . $sysConfiguration->SiteAccess;
                 } else {
                     $sysConfiguration->WWWDirLang = '';
                 }
             }
         } else {
             $optionsSiteAccess = $cfgSite->getSetting('site_access_options', $defaultSiteAccess);
             // Falling back
             $sysConfiguration->SiteAccess = $defaultSiteAccess;
             $sysConfiguration->Language = $siteaccess == 'site_admin' ? erLhcoreClassModelUserSetting::getSetting('user_language', $optionsSiteAccess['locale'], false, true) : $optionsSiteAccess['locale'];
             $sysConfiguration->ThemeSite = $optionsSiteAccess['theme'];
             $sysConfiguration->ContentLanguage = $optionsSiteAccess['content_language'];
             if (isset($_POST['switchLang']) && in_array($_POST['switchLang'], $availableSiteaccess)) {
                 $optionsSiteAccessOverride = $cfgSite->getSetting('site_access_options', $_POST['switchLang']);
                 $sysConfiguration->Language = $optionsSiteAccessOverride['locale'];
                 $sysConfiguration->SiteAccess = $_POST['switchLang'];
                 if ($defaultSiteAccess != $sysConfiguration->SiteAccess) {
                     $sysConfiguration->WWWDirLang = '/' . $sysConfiguration->SiteAccess;
                 }
             }
             // To reset possition counter
             $urlCfgDefault->removeOrderedParameter('siteaccess');
             $urlCfgDefault->removeOrderedParameter('module');
             $urlCfgDefault->removeOrderedParameter('function');
             // Reinit parameters
             $urlCfgDefault->addOrderedParameter('module');
             $urlCfgDefault->addOrderedParameter('function');
             //Apply default configuration
             $urlInstance->applyConfiguration($urlCfgDefault);
             if ($optionsSiteAccess['locale'] != 'en_EN') {
                 $urlInstance->setParam('module', $urlInstance->getParam('module'));
                 $urlInstance->setParam('function', $urlInstance->getParam('function'));
             }
         }
         self::$instance = $urlInstance;
     }
     return self::$instance;
 }
Пример #11
0
 /**
  * Returns the instance of the class.
  *
  * @return ezcUrlConfiguration
  */
 public static function getInstance()
 {
     if (is_null(self::$instance)) {
         self::$instance = new ezcUrlConfiguration();
         ezcBaseInit::fetchConfig('ezcUrlConfiguration', self::$instance);
     }
     return self::$instance;
 }
Пример #12
0
<?php

require_once 'tutorial_autoload.php';
// create an ezcUrlConfiguration object
$urlCfg = new ezcUrlConfiguration();
// single parameter value
$urlCfg->addUnorderedParameter('param1');
$url = new ezcUrl('http://www.example.com/(param1)/x/(param1)/y/z', $urlCfg);
var_dump($url->getParam('param1'));
// will output "y"
// multiple parameter values
$urlCfg->addUnorderedParameter('param1', ezcUrlConfiguration::MULTIPLE_ARGUMENTS);
$url = new ezcUrl('http://www.example.com/(param1)/x/(param1)/y/z', $urlCfg);
var_dump($url->getParam('param1'));
// will output array( "y", "z" )
// multiple parameter values with aggregation
$urlCfg->addUnorderedParameter('param1', ezcUrlConfiguration::AGGREGATE_ARGUMENTS);
$url = new ezcUrl('http://www.example.com/(param1)/x/(param1)/y/z', $urlCfg);
var_dump($url->getParam('param1'));
// will output array( array( "x" ), array( "y", "z" ) )
// output the url (it will be similar to the input url)
var_dump($url->buildUrl());