DNRoot::doPostSnapshot PHP Method

doPostSnapshot() public method

public doPostSnapshot ( array $data, Form $form ) : SS_HTTPResponse
$data array
$form Form
return SS_HTTPResponse
    public function doPostSnapshot($data, $form)
    {
        $this->setCurrentActionType(self::ACTION_SNAPSHOT);
        $project = $this->getCurrentProject();
        if (!$project) {
            return $this->project404Response();
        }
        $validEnvs = $project->DNEnvironmentList()->filterByCallback(function ($item) {
            return $item->canUploadArchive();
        });
        // Validate $data['EnvironmentID'] by checking against $validEnvs.
        $environment = $validEnvs->find('ID', $data['EnvironmentID']);
        if (!$environment) {
            throw new LogicException('Invalid environment');
        }
        $dataArchive = DNDataArchive::create(['UploadToken' => DNDataArchive::generate_upload_token()]);
        $form->saveInto($dataArchive);
        $dataArchive->write();
        return $this->redirect(Controller::join_links($project->Link(), 'postsnapshotsuccess', $dataArchive->ID));
    }