-
Notifications
You must be signed in to change notification settings - Fork 1
/
updateToolDevSpec.php
60 lines (45 loc) · 2.27 KB
/
updateToolDevSpec.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
<?php
require __DIR__."/../../config/bootstrap.php";
if($_REQUEST){
$data_json = json_decode($_REQUEST['json_tool'], true);
if(!isset($data_json["_id"])) {
$_SESSION['errorData']['Error'][] = "You are not allowed to remove '_id' field.";
redirect($GLOBALS['BASEURL'].'admin/jsonSpecValidator.php?id='.$_REQUEST['toolid']);
}
if($data_json["_id"] != $_REQUEST['toolid']) {
$_SESSION['errorData']['Error'][] = "You are not allowed to change '_id' value.";
redirect($GLOBALS['BASEURL'].'admin/jsonSpecValidator.php?id='.$_REQUEST['toolid']);
}
$data = $GLOBALS['toolsDevMetaCol']->findOne(array('_id' => $_REQUEST['toolid']));
if(!isset($data)) {
$_SESSION['errorData']['Error'][] = "Tool id unexisting.";
redirect($GLOBALS['BASEURL'].'admin/jsonSpecValidator.php?id='.$_REQUEST['toolid']);
}
// Validate
$validator = new JsonSchema\Validator();
$validator->check(json_decode($_REQUEST['json_tool']), (object) array('$ref' => 'file://'.$GLOBALS['tool_json_schema']));
if ($validator->isValid()) {
$validated = true;
$msg = "Tool specification complete, please submit tool.";
} else {
$validated = false;
$msg = "Tool specification saved but it doesn't validate against our JSON Schema.";
}
/*$GLOBALS['toolsDevCol']->remove(array('_id'=> $_REQUEST["toolid"]));
$GLOBALS['toolsDevCol']->insert($data_json);*/
/*$GLOBALS['toolsDevMetaCol']->update(array('_id' => $_REQUEST['toolid']),
array('$set' => array('step1' => $validated, 'json_validated' => $validated)));*/
$GLOBALS['toolsDevMetaCol']->update(array('_id' => $_REQUEST['toolid']),
array('$set' => array('last_status_date' => date('Y/m/d H:i:s'), 'step3.tool_spec' => $data_json, 'step3.date' => date('Y/m/d H:i:s'), 'step3.status' => $validated, 'step3.tool_spec_validated' => $validated, 'step3.tool_spec_saved' => true)));
//$data_json["name"]
$working_dir = $GLOBALS['dataDir']."/".$_SESSION['User']['id']."/".$GLOBALS['devUser_dir'].$data_json["_id"];
$working_dir = preg_replace('#/+#','/',$working_dir);
if (!is_dir($working_dir)){
mkpath($working_dir);
generateLogo($_REQUEST['toolid']);
}
$_SESSION['errorData']['Info'][] = $msg;
redirect($GLOBALS['BASEURL'].'admin/myNewTools.php');
}else{
redirect($GLOBALS['BASEURL']);
}