Public/Unlock-DokuPage.ps1

function Unlock-DokuPage {
    <#
    .SYNOPSIS
        Unlocks a DokuWiki page
 
    .DESCRIPTION
        Unlocks the page so it can be modified by users again.
 
    .PARAMETER DokuSession
        The DokuSession in which to unlock the page
 
    .PARAMETER FullName
        The full name of the to-be-unlocked page, including parent namespace(s)
 
    .EXAMPLE
        PS C:\> Lock-DokuPage -DokuSession $DokuSession -FullName 'namespace:page'
 
    .OUTPUTS
        Nothing
 
    .NOTES
        AndyDLP - 2019-01-27
 
    .LINK
        https://github.com/AndyDLP/PSDokuWiki
#>


    [CmdletBinding(PositionalBinding = $true)]
    param
    (
        [Parameter(Mandatory = $true,
            Position = 1,
            HelpMessage = 'The DokuSession to add the page data to')]
        [ValidateNotNullOrEmpty()]
        [DokuWiki.Session.Detail]$DokuSession,
        [Parameter(Mandatory = $true,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName=$true,
            Position = 2,
            HelpMessage = 'The full name of the to-be-unlocked page, including parent namespace(s)')]
        [ValidateNotNullOrEmpty()]
        [string[]]$FullName
    )

    begin {

    } # begin

    process {
        # long random name in unlock array as its unlikely to be existing (do unlock in other function)
        $APIResponse = Invoke-DokuApiCall -DokuSession $DokuSession -MethodName 'dokuwiki.setLocks' -MethodParameters @(@{ 'lock' = @("341272da-9295-4362-939f-070baf351995341272da-9295-4362-939f-070baf351995341272da-9295-4362-939f-070baf351995"); 'unlock' = [array]$FullName })
        if ($APIResponse.CompletedSuccessfully -eq $true) {
            # do nothing except when locks fail
            # $locked = ($APIResponse.XMLPayloadResponse | Select-Xml -XPath "//array").Node[0].data.value.innertext
            # $lockfail = ($APIResponse.XMLPayloadResponse | Select-Xml -XPath "//array").Node[1].data.value.innertext
            # $unlocked = ($APIResponse.XMLPayloadResponse | Select-Xml -XPath "//array").Node[2].data.value.innertext
            $unlockfail = ($APIResponse.XMLPayloadResponse | Select-Xml -XPath "//array").Node[3].data.value.innertext
            if ($null -ne $unlockfail) {
                $unlockfail | ForEach-Object -Process { Write-Error "Failed to unlock page: $PSItem" }
            }
        } elseif ($null -eq $APIResponse.ExceptionMessage) {
            Write-Error "Fault code: $($APIResponse.FaultCode) - Fault string: $($APIResponse.FaultString)"
        } else {
            Write-Error "Exception: $($APIResponse.ExceptionMessage)"
        }
    } # process

    end {

    } # end
}