<?php

if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["step_code"] == "migration_create" && check_bitrix_sessid('send_sessid')) {
    /** @noinspection PhpIncludeInspection */
    require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_js.php";
    $description = isset($_POST['description']) ? $_POST['description'] : 0;
    $prefix = isset($_POST['prefix']) ? $_POST['prefix'] : '';
    $meta = $versionManager->createVersionFile($description, $prefix);
    if ($meta && $meta['class']) {
        Sprint\Migration\Out::outSuccess(GetMessage('SPRINT_MIGRATION_CREATED_SUCCESS', array('#VERSION#' => $meta['version'])));
    } else {
        Sprint\Migration\Out::outError(GetMessage('SPRINT_MIGRATION_CREATED_ERROR'));
    }
    /** @noinspection PhpIncludeInspection */
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin_js.php";
    die;
}
    if (!$version) {
        if ($nextAction == 'up' || $nextAction == 'down') {
            $version = 0;
            $action = $nextAction;
            $items = $versionManager->getVersions(array('status' => $action == 'up' ? 'new' : 'installed', 'search' => $search));
            foreach ($items as $aItem) {
                if (!in_array($aItem['version'], $skipVersions)) {
                    $version = $aItem['version'];
                    break;
                }
            }
        }
    }
    if ($version && $action) {
        if (!$restart) {
            Sprint\Migration\Out::out('[%s]%s (%s) start[/]', $action, $version, $action);
        }
        $success = $versionManager->startMigration($version, $action, $params);
        if ($versionManager->needRestart($version)) {
            $json = json_encode(array('params' => $versionManager->getRestartParams($version), 'action' => $action, 'version' => $version, 'next_action' => $nextAction, 'restart' => 1, 'search' => $search));
            ?>
<script>migrationExecuteStep('migration_execute', <?php 
            echo $json;
            ?>
);</script><?php 
        } elseif ($nextAction) {
            if (!$success) {
                $skipVersions[] = $version;
            }
            $json = json_encode(array('next_action' => $nextAction, 'skip_versions' => $skipVersions, 'search' => $search));
            ?>