Scripts/Reskit9/All Resources/xWordPress/DscResources/xIisWordPressSite/xIisWordPressSite.Schema.psm1

# Composite configuration to install the IIS WordPress IIS site
# This does not setup the actual WordPress Site
configuration xIisWordPressSite
{
    param
    (
        [Parameter(Mandatory = $true)]
        [string] $DestinationPath,

        [Parameter(Mandatory = $true)]
        [string] $DownloadUri,

        [Parameter(Mandatory = $true)]
        [string] $PackageFolder,

        [Parameter(Mandatory = $true)]
        [string] $Configuration
    )

        [string] $BinaryFolder = Join-Path $DestinationPath "WordPress"

            # Make sure the WordPress site folder is present
            File WordPressFolder
            {
                DestinationPath = $BinaryFolder
                Type = "Directory"
                Ensure = "Present"

            }

            # Make sure the default IIS does not interfere with the WordPress site
            # Should be removed once WordPress site launches by it is own URL and not using iis default url
            xWebSite DefaultIisSite
            {
                Name = "Default Web Site"
                PhysicalPath = "$env:SystemDrive\inetpub\wwwroot"
                Ensure = "Present"
                State = "Started"
                BindingInfo     = MSFT_xWebBindingInformation 
                            { 
                            Protocol              = "HTTP" 
                            Port                  = 9090 
                            } 
            }

            # Make sure the WordPress Iis site is present
            xWebSite WordPressIisSite
            {
                Name = "WordPress"
                PhysicalPath = $BinaryFolder
                Ensure = "Present"
                State = "Started"
                DefaultPage = @("index.php") 
                DependsOn = @("[File]WordPressFolder","[xWebSite]DefaultIisSite")
            }

            $WordPressZip = Join-Path $PackageFolder "WordPress.zip"
            # Make sure the WordPress archive is in the package folder
            xRemoteFile WordPressArchive 
            {
                Uri = $DownloadUri
                DestinationPath = $WordPressZip
            }

            # Make sure the WordPress archive contents are in the WordPress root folder
            xArchive WordPress
            {
                Path = $WordPressZip
                Destination = $DestinationPath
                DependsOn = @("[xRemoteFile]WordPressArchive","[File]WordPressFolder")
            }
            
            # Make sure the WordPress configuration file is present
            File WordPressConfig
            {
                Contents = $Configuration
                DestinationPath = (Join-Path $BinaryFolder "wp-config.php")
                DependsOn = @("[xArchive]WordPress")
                MatchSource = $true
            }
}