コード例 #1
0
    /**
     * 
     * @param ApplicationDefault $app
     * @param string $path
     * @return ApplicationDefault
     */
    public static function initFull($app, $path)
    {
        $blockName              = $app->blockName();
        $applicationName        = $app->applicationName();
        $params                 = $app->_params;
        $outputType             = $app->_outputType;
        $applicationObject      = $app->applicationObject;
        $applicationLocalized   = $app->applicationLocalized;
        $trimedPath             = trim($path, '/ ');

        // ajax call
        if( in_array( $trimedPath, $app->ajaxAllowedCall() ) )
            return $app;

        // view parameters
        if( preg_match('#^/\([^\)]+\)/#', $path) )
            return $app;
        
        if ( $app->hasHomepage($app) && preg_match('#^/list#', $path) )
        {
            $app->setStatus('list');
            return $app;
        }
            

        $node = method_exists($app, 'findNodeFromPath') ? $app::findNodeFromPath( $path, $app ) : self::findNodeFromPath( $path, $app );

        if ( $node instanceof ApplicationDefault )
        {
            $app->setStatus('list');
            return $app;
        }
        elseif( $node )
        {
            // content list application with external content
            /* @var $applicationObject ApplicationObject */

            if( $applicationObject->configurationContentService && $applicationObject->hasExternalLinkHandler() )
                $app = new ExternalApplication( $params, $outputType, $blockName, $applicationName, $applicationObject, $applicationLocalized );

            $app->setStatus('full');
            $app->node = $node;
        }
        else
        {
            if(SolrSafeOperatorHelper::seoIsEnabled($app->applicationObject()->identifier))
                $app = $app::initSeo($app, $path);

            if(!$app->isSeo)
                $app = self::extendedFactory( $params, $outputType, $blockName, null );
        }

        return $app;
    }