# Проверка входных параметров
if ($args.Count -ne 2){
		Write-Host  -ForegroundColor Red "Не заданы или неверно заданы входные параметры. 
Описание: .\ReplaceUrlInLookupListMap.ps1 [имя_папки_с_экспортными_данными][адрес_сайта_РСИ_импорта]
Пример:   .\ReplaceUrlInLookupListMap.ps1 ee463fa4-c6c6-4e8b-a1c7-1d651f4de25f http://myportal:100/mysite/rci"
	    exit
}

# Входные параметры
$folderName = $args[0]
$webUrl = $args[1]

# Инициализация переменных
$execFolder = $(Split-Path -Path $MyInvocation.MyCommand.Definition -Parent)
$LIB_SUBFOLDER = "..\..\PS"
if (!(Test-Path -path $execFolder\$LIB_SUBFOLDER)) {
	$LIB_SUBFOLDER = "..\PS"
	if (!(Test-Path -path $execFolder\$LIB_SUBFOLDER)) {
		  Write-Host "folder 'PS' no found" -ForegroundColor Red
		  exit 
	}	
}
$libFolder = "$execFolder\$LIB_SUBFOLDER"

# Инициализация и подключение модулей
. $("$libFolder\sharepoint\ExportImportService.ps1")
. $("$libFolder\sharepoint\InitiatorService.ps1")

cls
start-transcript ReplaceUrlInLookupListMap.log

Start-SPAssignment


# Определяем относительный адрес узла импорта
$importWebUli = [System.Uri]$webUrl
$importRelativeUrl = $importWebUli.AbsolutePath
Write-Host "Относительный адрес узла импорта:" $importRelativeUrl


# Сканируем все папки с экспортными данными и обрабатываем те в которых есть файл LookupListMap.xml
$exportDataPath = "$execFolder/$folderName"
$dirs = Get-ChildItem $exportDataPath | Where-Object { $_.Attributes -band [System.IO.FileAttributes]::Directory }
$exportRelativeUrl = $null
foreach ($listFolder in $dirs)
{
  # Проверяем на наличие LookupListMap.xml
  $lookupListMapFile = $listFolder.FullName+"\LookupListMap.xml"
  if (test-path $lookupListMapFile)
  {
	# Определяем относительный адрес узла экспорта
	if(!$exportRelativeUrl)
	{
		$rootObjectMapFile = $listFolder.FullName+"\RootObjectMap.xml"
	    [xml]$rootObjectMapXml = gc $rootObjectMapFile	
		
		$mgr=new-object System.Xml.XmlNamespaceManager($rootObjectMapXml.Psbase.NameTable)
        $mgr.AddNamespace("e","urn:deployment-rootobjectmap-schema")
		$exportRelativeUrl = $rootObjectMapXml.SelectNodes("//e:RootObjects/e:RootObject",$mgr) | select WebUrl
		$exportRelativeUrl = $exportRelativeUrl.WebUrl	
		Write-Host "Относительный адрес узла экспорта:" $exportRelativeUrl
	}	
	
	Write-Host "Обрабатывается:" $listFolder.Name	  
	
	# В LookupListMap.xml производим замену URL c узла экспорта на узел импорта	
	$old = 'my old text'
    $new = 'my new text'
    (Get-Content $lookupListMapFile) | % {$_ -replace $exportRelativeUrl, $importRelativeUrl} | Set-Content -path $lookupListMapFile -ErrorAction Stop
  }  
}	

# Завершение
stop-transcript
Stop-SPAssignment -global
. $("$libFolder\sharepoint\FinalizerService.ps1")