Exemplo n.º 1
0
 /**
  * Test that global siteaccess is untouched when asking for a specific siteaccess settings
  * & reading settings from plain siteaccess
  */
 public function testGetINI()
 {
     $current = eZSiteAccess::current();
     $ini = eZSiteAccess::getIni('plain');
     self::assertEquals($current, eZSiteAccess::current());
     // this is not totally correct way of testing, but one way of making "sure" we got correct sa
     self::assertEquals('plain', $ini->variable('DesignSettings', 'SiteDesign'));
 }
 /**
  * Executes multivatriate test secnarios
  *
  * @param int $nodeID
  * @return int
  */
 public function execute($nodeID)
 {
     $currentSiteAccess = eZSiteAccess::current();
     $testScenario = ezpMultivariateTestScenario::fetchEnabledByNodeID($nodeID);
     if ($testScenario instanceof ezpMultivariateTestScenario && in_array($currentSiteAccess['name'], eZINI::instance('content.ini')->variable('TestingSettings', 'EnabledForSiteAccessList'))) {
         $node = $testScenario->getRandomNode();
         if ($node instanceof eZContentObjectTreeNode) {
             $nodeID = $node->attribute('node_id');
         }
     }
     return $nodeID;
 }
 /**
  * Handles redirection to the mobile optimized interface
  *
  */
 public function redirect()
 {
     $http = eZHTTPTool::instance();
     $currentSiteAccess = eZSiteAccess::current();
     if ($http->hasGetVariable('notmobile')) {
         setcookie('eZMobileDeviceDetect', 1, time() + (int) eZINI::instance()->variable('SiteAccessSettings', 'MobileDeviceDetectCookieTimeout'), '/');
         $http->redirect(eZSys::indexDir());
         eZExecution::cleanExit();
     }
     if (!isset($_COOKIE['eZMobileDeviceDetect']) && !in_array($currentSiteAccess['name'], eZINI::instance()->variable('SiteAccessSettings', 'MobileSiteAccessList'))) {
         $http->redirect(eZINI::instance()->variable('SiteAccessSettings', 'MobileSiteAccessURL'));
         eZExecution::cleanExit();
     }
 }
Exemplo n.º 4
0
 protected function requestInit()
 {
     if ($this->isInitialized) {
         return;
     }
     eZExecution::setCleanExit(false);
     $scriptStartTime = microtime(true);
     $GLOBALS['eZRedirection'] = false;
     $this->access = eZSiteAccess::current();
     eZDebug::setScriptStart($scriptStartTime);
     eZDebug::addTimingPoint("Script start");
     $this->uri = eZURI::instance(eZSys::requestURI());
     $GLOBALS['eZRequestedURI'] = $this->uri;
     // Be able to do general events early in process
     ezpEvent::getInstance()->notify('request/preinput', array($this->uri));
     // Initialize module loading
     $this->siteBasics['module-repositories'] = eZModule::activeModuleRepositories();
     eZModule::setGlobalPathList($this->siteBasics['module-repositories']);
     // make sure we get a new $ini instance now that it has been reset
     $ini = eZINI::instance();
     // start: eZCheckValidity
     // pre check, setup wizard related so needs to be before session/db init
     // TODO: Move validity check in the constructor? Setup is not meant to be launched at each (sub)request is it?
     if ($ini->variable('SiteAccessSettings', 'CheckValidity') === 'true') {
         $this->check = array('module' => 'setup', 'function' => 'init');
         // Turn off some features that won't bee needed yet
         $this->siteBasics['policy-check-omit-list'][] = 'setup';
         $this->siteBasics['show-page-layout'] = $ini->variable('SetupSettings', 'PageLayout');
         $this->siteBasics['validity-check-required'] = true;
         $this->siteBasics['session-required'] = $this->siteBasics['user-object-required'] = false;
         $this->siteBasics['db-required'] = $this->siteBasics['no-cache-adviced'] = $this->siteBasics['url-translator-allowed'] = false;
         $this->siteBasics['site-design-override'] = $ini->variable('SetupSettings', 'OverrideSiteDesign');
         $this->access = eZSiteAccess::change(array('name' => 'setup', 'type' => eZSiteAccess::TYPE_URI));
         eZTranslatorManager::enableDynamicTranslations();
     }
     // stop: eZCheckValidity
     if ($this->siteBasics['session-required']) {
         // Check if this should be run in a cronjob
         if ($ini->variable('Session', 'BasketCleanup') !== 'cronjob') {
             eZSession::addCallback('destroy_pre', function (eZDBInterface $db, $key, $escapedKey) {
                 $basket = eZBasket::fetch($key);
                 if ($basket instanceof eZBasket) {
                     $basket->remove();
                 }
             });
             eZSession::addCallback('gc_pre', function (eZDBInterface $db, $time) {
                 eZBasket::cleanupExpired($time);
             });
             eZSession::addCallback('cleanup_pre', function (eZDBInterface $db) {
                 eZBasket::cleanup();
             });
         }
         // addCallBack to update session id for shop basket on session regenerate
         eZSession::addCallback('regenerate_post', function (eZDBInterface $db, $escNewKey, $escOldKey) {
             $db->query("UPDATE ezbasket SET session_id='{$escNewKey}' WHERE session_id='{$escOldKey}'");
         });
         // TODO: Session starting should be made only once in the constructor
         $this->sessionInit();
     }
     // if $this->siteBasics['db-required'], open a db connection and check that db is connected
     if ($this->siteBasics['db-required'] && !eZDB::instance()->isConnected()) {
         $this->warningList[] = array('error' => array('type' => 'kernel', 'number' => eZError::KERNEL_NO_DB_CONNECTION), 'text' => 'No database connection could be made, the system might not behave properly.');
     }
     // eZCheckUser: pre check, RequireUserLogin & FORCE_LOGIN related so needs to be after session init
     if (!isset($this->check)) {
         $this->check = eZUserLoginHandler::preCheck($this->siteBasics, $this->uri);
     }
     ezpEvent::getInstance()->notify('request/input', array($this->uri));
     // Initialize with locale settings
     // TODO: Move to constructor? Is it relevant to init the locale/charset for each (sub)requests?
     $this->languageCode = eZLocale::instance()->httpLocaleCode();
     $phpLocale = trim($ini->variable('RegionalSettings', 'SystemLocale'));
     if ($phpLocale != '') {
         setlocale(LC_ALL, explode(',', $phpLocale));
     }
     $this->httpCharset = eZTextCodec::httpCharset();
     // TODO: are these parameters supposed to vary across potential sub-requests?
     $this->site = array('title' => $ini->variable('SiteSettings', 'SiteName'), 'design' => $ini->variable('DesignSettings', 'SiteDesign'), 'http_equiv' => array('Content-Type' => 'text/html; charset=' . $this->httpCharset, 'Content-language' => $this->languageCode));
     // Read role settings
     $this->siteBasics['policy-check-omit-list'] = array_merge($this->siteBasics['policy-check-omit-list'], $ini->variable('RoleSettings', 'PolicyOmitList'));
     $this->isInitialized = true;
 }
 /**
  * Handles redirection to the mobile optimized interface
  *
  */
 public function redirect()
 {
     $http = eZHTTPTool::instance();
     $currentSiteAccess = eZSiteAccess::current();
     if ($http->hasGetVariable('notmobile')) {
         setcookie('eZMobileDeviceDetect', 1, time() + (int) eZINI::instance()->variable('SiteAccessSettings', 'MobileDeviceDetectCookieTimeout'), '/');
         $http->redirect(eZSys::indexDir());
         eZExecution::cleanExit();
     }
     if (!isset($_COOKIE['eZMobileDeviceDetect']) && !in_array($currentSiteAccess['name'], eZINI::instance()->variable('SiteAccessSettings', 'MobileSiteAccessList'))) {
         $currentUrl = eZSys::serverURL() . eZSys::requestURI();
         $redirectUrl = eZINI::instance()->variable('SiteAccessSettings', 'MobileSiteAccessURL');
         // Do not redirect if already on the redirect url
         if (strpos($currentUrl, $redirectUrl) !== 0) {
             // Default siteaccess name needs to be removed from the uri when redirecting
             $uri = explode('/', ltrim(eZSys::requestURI(), '/'));
             if (array_shift($uri) == $currentSiteAccess['name']) {
                 $http->redirect($redirectUrl . '/' . implode('/', $uri));
             } else {
                 $http->redirect($redirectUrl . eZSys::requestURI());
             }
         }
         eZExecution::cleanExit();
     }
 }
 public static function filter($module, $node, $tpl, $viewMode)
 {
     //Make it compatable with patches before 5.2 and 5.2(no patch) because a patch reverse
     //Ref.https://github.com/ezsystems/ezpublish-legacy/commit/85ab7fb8374f31c5cba00450e71d27e456552878
     if (!$module instanceof eZModule) {
         $viewMode = $tpl;
         $tpl = $node;
         $node = $module;
         $module = null;
     }
     //End of compatability fix
     $ini = eZINI::instance('override.ini');
     $conditions = $ini->groups();
     $nodeID = $node->attribute('node_id');
     $object = $node->attribute('object');
     $classIdentifier = $object->attribute('class_identifier');
     $overrideClass = null;
     foreach ($conditions as $condition) {
         if (isset($condition['Match'])) {
             $matches = $condition['Match'];
             // node condition
             $matchNode = null;
             if (isset($matches['node'])) {
                 if ($matches['node'] == $nodeID) {
                     $matchNode = true;
                 } else {
                     $matchNode = false;
                 }
             }
             // class_identifier condition
             $matchClass = null;
             if (isset($matches['class_identifier'])) {
                 if ($matches['class_identifier'] == $classIdentifier) {
                     $matchClass = true;
                 } else {
                     $matchClass = false;
                 }
             }
             // view mode condition
             $matchViewmode = null;
             if (isset($matches['viewmode'])) {
                 if ($matches['viewmode'] == $viewMode) {
                     $matchViewmode = true;
                 } else {
                     $matchViewmode = false;
                 }
             }
             $useIt = false;
             // When viewmode is not set or viewmode matches
             if (!isset($matchViewmode) || $matchViewmode === true) {
                 // When class_identifier is not set or class_identifier matches
                 if (!isset($matchClass) || $matchClass === true) {
                     // When node(id) is not set or node(id) matches
                     if (!isset($matchNode) || $matchNode === true) {
                         if (isset($condition['Class'])) {
                             $overrideClass = $condition['Class'];
                             break;
                         }
                     }
                 }
             }
         }
     }
     //Support Match[attribute_<attribute_identifier>]=<value> in override.ini
     $object = $node->attribute('object');
     $dataMap = $object->dataMap();
     $ini = eZINI::instance('xoverride.ini');
     $siteAccessesMatch = false;
     if (!$ini->hasVariable('TemplateOverride', 'AvailableSiteAccess')) {
         $siteAccessesMatch = true;
     } else {
         $siteAccesses = $ini->variable('TemplateOverride', 'AvailableSiteAccess');
         $currentSiteAccessArray = eZSiteAccess::current();
         $currentSiteAccess = $currentSiteAccessArray['name'];
         if (is_array($siteAccesses) && (in_array($currentSiteAccess, $siteAccesses) or in_array('*', $siteAccesses))) {
             $siteAccessesMatch = true;
         }
     }
     if ($siteAccessesMatch) {
         $supportedDatatype = $ini->variable('General', 'SupportedDatatype');
         $keys = array();
         foreach ($dataMap as $attributeId => $attribute) {
             $dataType = $attribute->attribute('data_type_string');
             if (in_array($dataType, $supportedDatatype)) {
                 $value = $attribute->attribute('content');
                 $keys[] = array('attribute_' . $attributeId, $value);
             }
         }
         $res = eZTemplateDesignResource::instance();
         $res->setKeys($keys);
         if (!empty($overrideClass)) {
             $overrideView = new $overrideClass();
             $http = eZHTTPTool::instance();
             eZDebug::writeNotice("Loading nodeview render {$overrideClass}, node id: {$nodeID}", __METHOD__);
             $overrideView->initNodeview($module, $node, $tpl, $viewMode);
         }
     }
 }
Exemplo n.º 7
0
// This should be looked as a temporary fix as ideally all cache-blocks
// should be disabled by this view.
$cacheKey = 'styleeditorvisual-' + time();
$nodeResult['title_path'] = array(array('text' => 'Visual'), array('text' => $node->attribute('name')));
$httpCharset = eZTextCodec::httpCharset();
$locale = eZLocale::instance();
$languageCode = $locale->httpLocaleCode();
$title = $ini->variable('SiteSettings', 'SiteName');
$uri = eZURI::instance();
$GLOBALS['eZRequestedURI'] = $uri;
$site = array('title' => $title, 'uri' => $uri, 'design' => $ini->variable('DesignSettings', 'SiteDesign'), 'http_equiv' => array('Content-Type' => 'text/html; charset=' . $httpCharset, 'Content-language' => $languageCode));
$currentUser = eZUser::currentUser();
$tpl->setVariable('current_user', $currentUser);
$tpl->setVariable('ui_context', '');
$lastAccessURI = '/';
if ($http->hasSessionVariable('LastAccessesURI')) {
    $lastAccessURI = $http->sessionVariable('LastAccessesURI');
}
$tpl->setVariable('last_access_uri', $lastAccessURI);
$tpl->setVariable('access_type', eZSiteAccess::current());
$tpl->setVariable('uri_string', $uri->uriString());
$tpl->setVariable('site', $site);
$tpl->setVariable('extra_cache_key', $cacheKey);
$tpl->setVariable('module_result', $nodeResult);
$tpl->setVariable('node', $node);
$tpl->setVariable('display_styleeditor_visualtoolbar', true);
$pagelayoutResult = $tpl->fetch('design:pagelayout.tpl');
eZDisplayResult($pagelayoutResult);
// Stop execution at this point, if we do not we'll have the
// pagelayout.tpl inside another pagelayout.tpl.
eZExecution::cleanExit();
 private function isNodeInCurrentSiteaccess($node)
 {
     if (!$node instanceof eZContentObjectTreeNode) {
         return true;
     }
     $currentSiteaccess = eZSiteAccess::current();
     $pathPrefixExclude = eZINI::instance()->variable('SiteAccessSettings', 'PathPrefixExclude');
     $aliasArray = explode('/', $node->attribute('url_alias'));
     //eZDebug::writeError( var_export($aliasArray,1), __METHOD__ );
     //eZDebug::writeError( $pathPrefixExclude, __METHOD__ );
     foreach ($pathPrefixExclude as $ppe) {
         if (strtolower($aliasArray[0]) == $ppe) {
             return true;
         }
     }
     $pathArray = $node->attribute('path_array');
     $contentIni = eZINI::instance('content.ini');
     $rootNodeArray = array('RootNode', 'UserRootNode', 'MediaRootNode');
     foreach ($rootNodeArray as $rootNodeID) {
         $rootNode = $contentIni->variable('NodeSettings', $rootNodeID);
         if (in_array($rootNode, $pathArray)) {
             return true;
         }
     }
     eZDebug::writeError('Il nodo ' . $node->attribute('name') . ' non si trova nel Siteaccess ' . $currentSiteaccess, __METHOD__);
     return false;
 }
Exemplo n.º 9
0
$cli = eZCLI::instance();
$script = eZScript::instance( array(
    'description'    => 'Create JSON configuration and fill SEO data for the given siteaccess',
    'use-session'    => false,
    'use-modules'    => true,
    'use-extensions' => true
));
$script->startup();
$script->getOptions();
$script->initialize();

$date = new DateTime();
$cli->output($date->format("Y-m-d H:i:s").' - BEGIN');

// Get cluster identifier
$siteAccess = eZSiteAccess::current();
$clusterMapping = ClusterTool::getMappingSiteAccess($siteAccess);
if(!$clusterMapping)
{
    $cli->output('Cannot find the cluster identifier for site access "'.$siteAccess['name'].'"');
    $date = new DateTime();
    $cli->output($date->format("Y-m-d H:i:s")." - END");
    $script->shutdown(1);
}
$clusterIdentifier = key($clusterMapping);

// Get JSON config
if ( !SolrSafeOperatorHelper::featureIsActive('Seo') )
{
    $script->shutdown(0);
}