/** * @param MMApplicationLibrary $app * @param string $path * @return MMApplicationLibrary */ public static function initFull( $app, $path ) { $applicationNameFull = substr($path, 1); $applicationLocalized = CacheApplicationTool::buildLocalizedApplication($applicationNameFull); if ( !($applicationLocalized instanceof ApplicationLocalized) ) { $errorUri = '/error'; return ApplicationFactory::fetchByUri( $errorUri ); } $app->_applicationFull = $applicationLocalized->applicationObject(); if($app->_applicationFull) $app->isFull = true; return $app; }
/** * @return string */ public function backUrl() { $baseUrl = eZINI::instance()->variable( 'SiteAccessSettings', 'BaseUrl' ); $serverUrl = $this->domain(); $backUrl = $serverUrl.$baseUrl; if( isset( $_SERVER['HTTP_REFERER'] ) && $this->checkRedirectUrl( $_SERVER['HTTP_REFERER'] ) ) { $skipPage = false; $noFullView = false; //if we are redirecting to an app we need to check app url if it is external page skipping exit page. $appUrl = str_replace($backUrl, '', $_SERVER['HTTP_REFERER']); $firstSlashPos = strpos($appUrl, '/'); if ( $firstSlashPos ) { $appUrl = substr($appUrl, 0, $firstSlashPos); } $localApp = CacheApplicationTool::buildLocalizedApplication($appUrl); if ( $localApp instanceof ApplicationLocalized ) { $skipPage = $localApp->getCustomParameter( 'SkipExitPage' ); $noFullView = $localApp->getCustomParameter( 'NoFullView' ); } if ( $skipPage && !$noFullView ) { $backUrl .= 'external/' . $appUrl; } elseif(!$noFullView) { $backUrl = $_SERVER['HTTP_REFERER']; } } return $backUrl; }
/** * @return eZTemplate */ public function tpl() { if(is_null($this->_tpl)) { eZTemplate::resetInstance(); $this->_tpl = eZTemplate::factory(); if (SolrSafeOperatorHelper::featureIsActive('showMedicalNewsDemo') && SolrSafeOperatorHelper::feature('ShowMedicalNewsDemo', 'showDemo')){ $showMedicalNewsDemo = true; }else { $showMedicalNewsDemo = false; } $this->_tpl->setVariable('showMedicalNewsDemo',$showMedicalNewsDemo); $this->_tpl->setVariable('language' , LocaleTool::languageISO639Code()); $this->_tpl->setVariable('application_class' , get_class($this) ); $this->_tpl->setVariable('view_parameters' , $this->_params['UserParameters']); $this->_tpl->setVariable('cluster_identifier', ClusterTool::clusterIdentifier()); $this->_tpl->setVariable('application_url' , $this->applicationName()); $this->_tpl->setVariable('consult' , $this->isConsult); $this->_tpl->setVariable('httpcontext' , array( 'host' => ContextTool::instance()->domain(), )); $environment = new MMEnvironment(); $this->_tpl->setVariable('environment' , $environment->env); $applicationLocalized = CacheApplicationTool::buildLocalizedApplication($this->applicationName()); if (empty($applicationLocalized)) $this->_tpl->setVariable('application_name' , $this->applicationName()); else { $applicationIdentifier = $applicationLocalized->applicationObject->attribute('identifier'); $this->_tpl->setVariable('application_name' , $applicationIdentifier ); $this->_tpl->setVariable('current_localized' , $applicationLocalized ); $this->_tpl->setVariable('current_application' , $applicationLocalized->applicationObject ); } } return $this->_tpl; }
/** * @param array $params * @param string $outputType * @param string $blockName * @param string $applicationName * @return ApplicationDefault */ static public function extendedFactory( $params, $outputType, $blockName, $applicationName ) { $applicationClasses = self::getApplicationClasses(); $applicationType = false; $applicationObject = false; $applicationLocalized = false; if ( !is_null($applicationName) ) { if ( $applicationName == 'page' ) { // Fetches page name as well $applicationUrl = $applicationName . '/' . $params['Parameters'][2]; $applicationLocalized = CacheApplicationTool::buildLocalizedApplication($applicationUrl); if ( !$applicationLocalized instanceof applicationLocalized ) $applicationLocalized = CacheApplicationTool::buildLocalizedApplication($applicationName); } else $applicationLocalized = CacheApplicationTool::buildLocalizedApplication($applicationName); $applicationObject = $applicationLocalized instanceof applicationLocalized ? $applicationLocalized->applicationObject : null; if ( !is_null($applicationObject) ) $applicationType = $applicationObject->applicationType->attribute('type_identifier'); } if ( is_null($applicationName) || !$applicationType ) { $errorUri = '/error'; $app = self::fetchByUri( $errorUri ); return $app; } $className = $applicationClasses[$applicationType]; /* @var $app ApplicationDefault */ $app = new $className( $params, $outputType, $blockName, $applicationName, $applicationObject, $applicationLocalized ); $regexPattern = '#^/'.$params['ModuleName'].'/'.$params['FunctionName'].'/'.$blockName.'/'.$applicationName.'(?<path>/[^?]+)#'; /* @type $app ApplicationDefault */ if( $applicationName != 'default' && preg_match( $regexPattern , $_SERVER['REQUEST_URI'], $m ) ) $app = $className::initFull($app, $m['path']); elseif ( $applicationName != 'default' ) { if ( $app->hasHomepage($app) ) $app->setStatus('homepage'); else $app->setStatus('list'); } if($app->node) { header('x-ez-node: ' . 'P' . $app->node->attribute('node_id') . 'P'); } elseif( isset($app->rootNodeIds) && is_array($app->rootNodeIds) && count($app->rootNodeIds) > 0 ) { $rootNodeIds = $app->rootNodeIds; if ( isset( $app->rootNodeIds[0] ) && is_array( $app->rootNodeIds[0] ) ) { $rootNodeIds = $app->rootNodeIds[0]; } header('x-ez-node: ' . 'P'.implode('PP', $rootNodeIds).'P'); } ApplicationDefault::setInstance($app); return $app; }