Neos.Neos/Classes/Command/SiteCommandController.php
public function createCommand($name, $packageKey, $nodeType = 'Neos.NodeTypes:Page', $nodeName = null, $inactive = false)
    {
        if ($nodeName === null) {
            $nodeName = $this->nodeService->generateUniqueNodeName(SiteService::SITES_ROOT_PATH, $name);
        }

        if ($this->siteRepository->findOneByNodeName($nodeName)) {
            $this->outputLine('<error>A site with siteNodeName "%s" already exists</error>', [$nodeName]);
            $this->quit(1);
        }

        if ($this->packageManager->isPackageAvailable($packageKey) === false) {
            $this->outputLine('<error>Could not find package "%s"</error>', [$packageKey]);
            $this->quit(1);
        }

        $siteNodeType = $this->nodeTypeManager->getNodeType($nodeType);

        if ($siteNodeType === null || $siteNodeType->getName() === 'Neos.Neos:FallbackNode') {
            $this->outputLine('<error>The given node type "%s" was not found</error>', [$nodeType]);
            $this->quit(1);
        }
        if ($siteNodeType->isOfType('Neos.Neos:Document') === false) {
            $this->outputLine('<error>The given node type "%s" is not based on the superType "%s"</error>', [$nodeType, 'Neos.Neos:Document']);
            $this->quit(1);
        }

        $rootNode = $this->nodeContextFactory->create()->getRootNode();
        // We fetch the workspace to be sure it's known to the persistence manager and persist all
        // so the workspace and site node are persisted before we import any nodes to it.
        $rootNode->getContext()->getWorkspace();
        $this->persistenceManager->persistAll();
        $sitesNode = $rootNode->getNode(SiteService::SITES_ROOT_PATH);
        if ($sitesNode === null) {
            $sitesNode = $rootNode->createNode(NodePaths::getNodeNameFromPath(SiteService::SITES_ROOT_PATH));
        }

        $siteNode = $sitesNode->createNode($nodeName, $siteNodeType);
        $siteNode->setProperty('title', $name);

        $site = new Site($nodeName);
        $site->setSiteResourcesPackageKey($packageKey);
        $site->setState($inactive ? Site::STATE_OFFLINE : Site::STATE_ONLINE);
        $site->setName($name);

        $this->siteRepository->add($site);

        $this->outputLine('Successfully created site "%s" with siteNode "%s", type "%s", packageKey "%s" and state "%s"', [$name, $nodeName, $nodeType, $packageKey, $inactive ? 'offline' : 'online']);
    }
public function createCommand($name, $packageKey, $nodeType = 'Neos.NodeTypes:Page', $nodeName = null, $inactive = false)
    {
        if ($nodeName === null) {
            $nodeName = $this->nodeService->generateUniqueNodeName(SiteService::SITES_ROOT_PATH, $name);
        }

        if ($this->siteRepository->findOneByNodeName($nodeName)) {
            $this->outputLine('<error>A site with siteNodeName "%s" already exists</error>', [$nodeName]);
            $this->quit(1);
        }

        if ($this->packageManager->isPackageAvailable($packageKey) === false) {
            $this->outputLine('<error>Could not find package "%s"</error>', [$packageKey]);
            $this->quit(1);
        }

        $siteNodeType = $this->nodeTypeManager->getNodeType($nodeType);

        if ($siteNodeType === null || $siteNodeType->getName() === 'Neos.Neos:FallbackNode') {
            $this->outputLine('<error>The given node type "%s" was not found</error>', [$nodeType]);
            $this->quit(1);
        }
        if ($siteNodeType->isOfType('Neos.Neos:Document') === false) {
            $this->outputLine('<error>The given node type "%s" is not based on the superType "%s"</error>', [$nodeType, 'Neos.Neos:Document']);
            $this->quit(1);
        }

        $rootNode = $this->nodeContextFactory->create()->getRootNode();
        // We fetch the workspace to be sure it's known to the persistence manager and persist all
        // so the workspace and site node are persisted before we import any nodes to it.
        $rootNode->getContext()->getWorkspace();
        $this->persistenceManager->persistAll();
        $sitesNode = $rootNode->getNode(SiteService::SITES_ROOT_PATH);
        if ($sitesNode === null) {
            $sitesNode = $rootNode->createNode(NodePaths::getNodeNameFromPath(SiteService::SITES_ROOT_PATH));
        }

        $siteNode = $sitesNode->createNode($nodeName, $siteNodeType);
        $siteNode->setProperty('title', $name);

        $site = new Site($nodeName);
        $site->setSiteResourcesPackageKey($packageKey);
        $site->setState($inactive ? Site::STATE_OFFLINE : Site::STATE_ONLINE);
        $site->setName($name);

        $this->siteRepository->add($site);

        $this->outputLine('Successfully created site "%s" with siteNode "%s", type "%s", packageKey "%s" and state "%s"', [$name, $nodeName, $nodeType, $packageKey, $inactive ? 'offline' : 'online']);
    }
public function createCommand ( $ name , $ packageKey , $ nodeType = 'Neos.NodeTypes:Page' , $ nodeName = null , $ inactive = false ) { if ( $ nodeName === null ) { $ nodeName = $ this -> nodeService -> generateUniqueNodeName ( SiteService :: SITES_ROOT_PATH , $ name ) ; } if ( $ this -> siteRepository -> findOneByNodeName ( $ nodeName ) ) { $ this -> outputLine ( '<error>A site with siteNodeName "%s" already exists</error>' , [ $ nodeName ] ) ; $ this -> quit ( 1 ) ; } if ( $ this -> packageManager -> isPackageAvailable ( $ packageKey ) === false ) { $ this -> outputLine ( '<error>Could not find package "%s"</error>' , [ $ packageKey ] ) ; $ this -> quit ( 1 ) ; } $ siteNodeType = $ this -> nodeTypeManager -> getNodeType ( $ nodeType ) ; if ( $ siteNodeType === null || $ siteNodeType -> getName ( ) === 'Neos.Neos:FallbackNode' ) { $ this -> outputLine ( '<error>The given node type "%s" was not found</error>' , [ $ nodeType ] ) ; $ this -> quit ( 1 ) ; } if ( $ siteNodeType -> isOfType ( 'Neos.Neos:Document' ) === false ) { $ this -> outputLine ( '<error>The given node type "%s" is not based on the superType "%s"</error>' , [ $ nodeType , 'Neos.Neos:Document' ] ) ; $ this -> quit ( 1 ) ; } $ rootNode = $ this -> nodeContextFactory -> create ( ) -> getRootNode ( ) ; // We fetch the workspace to be sure it's known to the persistence manager and persist all // so the workspace and site node are persisted before we import any nodes to it. $ rootNode -> getContext ( ) -> getWorkspace ( ) ; $ this -> persistenceManager -> persistAll ( ) ; $ sitesNode = $ rootNode -> getNode ( SiteService :: SITES_ROOT_PATH ) ; if ( $ sitesNode === null ) { $ sitesNode = $ rootNode -> createNode ( NodePaths :: getNodeNameFromPath ( SiteService :: SITES_ROOT_PATH ) ) ; } $ siteNode = $ sitesNode -> createNode ( $ nodeName , $ siteNodeType ) ; $ siteNode -> setProperty ( 'title' , $ name ) ; $ site = new Site ( $ nodeName ) ; $ site -> setSiteResourcesPackageKey ( $ packageKey ) ; $ site -> setState ( $ inactive ? Site :: STATE_OFFLINE : Site :: STATE_ONLINE ) ; $ site -> setName ( $ name ) ; $ this -> siteRepository -> add ( $ site ) ; $ this -> outputLine ( 'Successfully created site "%s" with siteNode "%s", type "%s", packageKey "%s" and state "%s"' , [ $ name , $ nodeName , $ nodeType , $ packageKey , $ inactive ? 'offline' : 'online' ] ) ; }
Create a new site

This command allows to create a blank site with just a single empty document in the default dimension.
The name of the site, the packageKey must be specified.

If no ``nodeType`` option is specified the command will use `Neos.NodeTypes:Page` as fallback. The node type
must already exists and have the superType ``Neos.Neos:Document``.

If no ``nodeName`` option is specified the command will create a unique node-name from the name of the site.
If a node name is given it has to be unique for the setup.

If the flag ``activate`` is set to false new site will not be activated.

@param string $name The name of the site
@param string $packageKey The site package
@param string $nodeType The node type to use for the site node. (Default = Neos.NodeTypes:Page)
@param string $nodeName The name of the site node. If no nodeName is given it will be determined from the siteName.
@param boolean $inactive The new site is not activated immediately (default = false).
@return void
Create a new site