-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathoptions.php
88 lines (76 loc) · 2.78 KB
/
options.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?
include __DIR__.'/prolog.php';
/** @var CMain $APPLICATION */
$APPLICATION;
$module = \WS\Migrations\Module::getInstance();
$localization = $module->getLocalization('setup');
$options = $module->getOptions();
$errors = array();
$fCreateDir = function ($dir) {
$parts = explode('/', $dir);
$dir = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
foreach ($parts as $part) {
if (!$part) {
continue;
}
$dir .= '/'.$part;
if (!mkdir($dir)) {
return false;
}
chmod($dir, 0777);
}
return true;
};
$fSave = function ($data) use (& $errors, $module, $options, $localization, $fCreateDir) {
$catalog = $data['catalog'];
$catalogError = false;
if (!$catalog) {
$errors[] = $localization->getDataByPath('errors.catalogFieldEmpty');
$catalogError = true;
}
$dir = $_SERVER['DOCUMENT_ROOT'] .$catalog;
if (!$catalogError && !is_dir($dir) && !$fCreateDir($catalog)) {
$catalogError = true;
$errors[] = $localization->getDataByPath('errors.notCreateDir');
}
if (!$catalogError && !is_dir($dir)) {
$errors[] = $localization->getDataByPath('errors.notCreateDir');
} elseif(!$catalogError) {
$catalog && $options->catalogPath = $catalog;
}
$options->useAutotests = (bool)$data['tests'];
foreach ($module->getSubjectHandlers() as $handler) {
$handlerClass = get_class($handler);
$handlerClassValue = (bool)$data['handlers'][$handlerClass];
$handlerClassValue && $module->enableSubjectHandler($handlerClass);
!$handlerClassValue && $module->disableSubjectHandler($handlerClass);
}
};
$_POST['data'] && $fSave($_POST['data']);
$errors && CAdminMessage::ShowMessage(
array(
"MESSAGE" => implode(', ', $errors),
"TYPE" => "ERROR"
)
);
$form = new CAdminForm('form', array(
array(
'DIV' => 't1',
'TAB' => $localization->getDataByPath('tab'),
)
));
echo BeginNote();
echo $localization->getDataByPath('description');
echo EndNote();
$form->Begin(array(
'FORM_ACTION' => $APPLICATION->GetCurUri()
));
$form->BeginNextFormTab();
$form->AddEditField('data[catalog]', $localization->getDataByPath('fields.catalog'), true, array(), $options->catalogPath ?: '/migrations');
//$form->AddCheckBoxField('data[tests]', $localization->getDataByPath('fields.useAutotests'), true, '1', (bool)$options->useAutotests);
$form->AddSection('disableHandlers', $localization->getDataByPath('section.disableHandlers'));
foreach ($module->getSubjectHandlers() as $handler) {
$form->AddCheckBoxField('data[handlers]['.get_class($handler).']', $handler->getName(), true, '1', $options->isEnableSubjectHandler(get_class($handler)));
}
$form->Buttons(array('btnSave' => false, 'btnÀpply' => true));
$form->Show();