Airship\Cabin\Bridge\Landing\PageManager::processMoveDir PHP Method

processMoveDir() protected method

Move/rename a directory.
protected processMoveDir ( array $dirInfo, array $post = [], string $oldCabin = '', array $cabins = [] ) : boolean
$dirInfo array
$post array
$oldCabin string
$cabins array
return boolean
    protected function processMoveDir(array $dirInfo, array $post = [], string $oldCabin = '', array $cabins = []) : bool
    {
        $targetID = (int) $dirInfo['directoryid'];
        if (\is_numeric($post['move_destination'])) {
            $destination = (int) $post['move_destination'];
            $newCabin = $this->pg->getCabinForDirectory($destination);
            $newPieces = $this->pg->getDirectoryPieces($destination);
            \array_pop($newPieces);
            $newPieces[] = Util::charWhitelist($post['url'], Util::NON_DIRECTORY);
            $newPath = \implode('/', $newPieces);
        } elseif (!\in_array($post['move_destination'], $cabins)) {
            // Cabin doesn't exist!
            return false;
        } else {
            $newCabin = $post['move_destination'];
            $newPath = Util::charWhitelist($post['url'], Util::NON_DIRECTORY);
        }
        if (!empty($post['create_redirect'])) {
            $old = ['cabin' => $oldCabin, 'path' => \implode('/', $this->pg->getDirectoryPieces($targetID))];
            $new = ['cabin' => $newCabin, 'path' => $newPath];
            $this->pg->createRedirectsForMove($old, $new);
        }
        return $this->pg->moveDir($targetID, $post['url'], $destination ?? 0, $newCabin);
    }