-
Notifications
You must be signed in to change notification settings - Fork 1
/
manageProjects.php
122 lines (90 loc) · 3.47 KB
/
manageProjects.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
require __DIR__."/../../config/bootstrap.php";
if(!$_REQUEST){
redirect($GLOBALS['URL']);
}
if (!isset($_REQUEST['op'])){
$_SESSION['errorData']['Internal'][]="Error. Cannot manage project. No 'op' set.";
redirect($GLOBALS['BASEURL']."workspace/");
}
$dataDir_ant = $_SESSION['User']['dataDir'];
$dataDir_ant_name = getAttr_fromGSFileId($dataDir_ant,"name");
//
// set project data from form
$projData=array();
if ($_REQUEST['op'] == "new" || $_REQUEST['op'] == "edit"){
$projData = array(
"name" => $_REQUEST['pr_name'],
"description" => $_REQUEST['pr_ldesc'],
"keywords" => $_REQUEST['pr_keywords']
);
}
//
// create project folder
if ($_REQUEST['op'] == "new"){
// create project folder
$proj_code = createLabel_proj();
$proj_sd = $GLOBALS['sampleData_default'];
$proj_id = prepUserWorkSpace($_SESSION['User']['id'],$proj_code,$proj_sd,$projData);
if (!$proj_id){
// return error
$_SESSION['errorData']['Error'][] = "Project not created";
redirect($GLOBALS['BASEURL']."workspace/");
}
$_REQUEST['pr_id'] = $proj_id;
$_REQUEST['pr_code'] = $proj_code;
$_SESSION['errorData']['Info'][] = "Done! New project '".$projData['name']."' created.";
//
// edit project
}elseif($_REQUEST['op'] == "edit"){
$r = updateProject($_REQUEST['pr_id'],$projData);
if (!$r){
// return error
$_SESSION['errorData']['Error'][] = "Project not edited";
redirect($GLOBALS['BASEURL']."workspace/");
}
$_SESSION['errorData']['Info'][] = "Done! Project '".$projData['name']."' successfully edited.";
//
// delete project
}elseif($_REQUEST['op'] == "deleteMsg"){
print printProjectContent($_REQUEST['pr_id'],TRUE);
die(0);
}elseif($_REQUEST['op'] == "delete"){
$projs = getProjects_byOwner();
if (count($projs) < 2){
// return error
$_SESSION['errorData']['Error'][] = "Cannot delete project. User needs at least one project to work with. Please, create a new one before deleting this.";
redirect($GLOBALS['BASEURL']."workspace/");
}
$r = deleteProject($_REQUEST['pr_id']);
if (!$r){
// return error
$_SESSION['errorData']['Error'][] = "Project cannot be deleted";
redirect($GLOBALS['BASEURL']."workspace/");
}
$projs = getProjects_byOwner();
$_REQUEST['pr_id'] = array_keys($projs)[0];
$_SESSION['errorData']['Info'][] = "Done! Project successfully deleted";
}
//
// set active project (in SESSION and DB)
if ($_REQUEST['pr_id']){
$proj_code="";
if (!isset($_REQUEST['pr_code'])){
$proj_fn = getAttr_fromGSFileId($_REQUEST['pr_id'],"path");
$_REQUEST['pr_code']= basename($proj_fn);
}
// update session
$_SESSION['User']['activeProject']= $_REQUEST['pr_code'];
$_SESSION['User']['dataDir'] = $_REQUEST['pr_id'];
// update User in mongo
modifyUser($_SESSION['User']['_id'],"activeProject",$_SESSION['User']['activeProject']);
modifyUser($_SESSION['User']['_id'],"dataDir" ,$_SESSION['User']['dataDir']);
// print info message
if ($_SESSION['User']['dataDir'] != $dataDir_ant){
if (!isset($_REQUEST['pr_name'])){$_REQUEST['pr_name']= getAttr_fromGSFileId($_SESSION['User']['dataDir'],"name");}
$_SESSION['errorData']['Info'][] = "Moving displayed workspace from project <b>'$dataDir_ant_name'</b> to project <b>'".$_REQUEST['pr_name']."'</b>";
}
}
redirect($GLOBALS['BASEURL']."workspace/");
?>