Subversion Repositories DevTools

Rev

Rev 6497 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5266 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'   _json_Notifications.asp
5
'   Ajax support Package Notification Manipulation
6
'       updateProjects
7
'
8
'=====================================================
9
%>
10
<%
11
Option explicit
12
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
13
Response.ContentType = "text/html"
14
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
15
Response.CodePage = 65001
16
Response.CharSet = "UTF-8"
17
%>
18
<!--#include file="common/conf.asp"-->
19
<!--#include file="common/globals.asp"-->
20
<!--#include file="common/qstr.asp"-->
21
<!--#include file="common/common_subs.asp"-->
6048 dpurdie 22
<% '------------ ACCESS CONTROL ------------------ %>
6181 dpurdie 23
<!--#include file="_access_control_login_optional.asp"-->
5266 dpurdie 24
<!--#include file="_access_control_general.asp"-->
25
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
26
<%
27
'------------ Variable Definition -------------
28
Dim parOpr
29
Dim result
30
Dim SqlQry
31
Dim rsQry
32
 
33
parOpr = QStrPar("Opr")
34
 
35
' Init the output JSON class
36
'   Operations can add data
37
'   Default data will be added at the end
38
Dim oJSON
39
Set oJSON = New aspJSON
40
Dim newitem
41
 
42
Function canModify
43
    canModify = canActionInProject()
44
    If NOT canModify Then
45
        result = -4
46
        oJSON.data("error") = 1
47
        oJSON.data("emsgSummary") = "Permission denied"
48
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
49
    End If
50
End Function
51
 
52
'
53
'   Prefill error indications
54
'   
55
result = -1
56
oJSON.data("emsgSummary") = "JSON Operation:" & parOpr
57
oJSON.data("emsgDetails") = "Internal Problem. Error not reported" 
58
 
59
'   
60
'   Perform the body of the operations within a Sub and use
61
'   On Error Resule Next to catch errors that accur in the code
62
'
63
On Error Resume Next
64
 
65
If (parOpr = "updateProjects") Then
66
    If canModify() Then updateProjects
6497 dpurdie 67
ElseIf (parOpr = "RemoveUserFromProject") Then
68
    If canModify() Then RemoveUserFromProject
6510 dpurdie 69
ElseIf (parOpr = "addAutoBuildNotification" ) Then
70
    If canModify() Then addAutoBuildNotification
5266 dpurdie 71
 
72
Else
73
    oJSON.data("error") = 1
74
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
75
    oJSON.data("emsgDetails") = "JSON operation is not supported: " & parOpr
76
End If
77
 
78
 
79
' SQL error detection and reporting
80
If objEH.LastOraFailed Then
81
    oJSON.data("error") = 1
82
    result = -1
83
 
84
    oJSON.data("emsgSummary") = objEH.MessageSummary
85
    oJSON.data("emsgDetails") = objEH.MessageDetails
86
    oJSON.data("SqlQry") = SqlQry
87
'
88
'   Detect program errors
89
ElseIf Err.number <> 0 Then
90
    result = -3
91
    oJSON.data("error") = 2
92
    oJSON.data("errnum") = Err.number
93
    oJSON.data("errtxt") = Err.description
94
    oJSON.data("errsrc") = Err.source
95
    oJSON.data("emsgSummary") = "Internal VBScript Error:"
96
    oJSON.data("emsgDetails") = Err.number &  ":" & Err.description
97
End If
98
On error goto 0
99
'Write single value
100
oJSON.data("result") = result
101
If result = 0 Then
102
    oJSON.data.Remove("emsgSummary")
103
    oJSON.data.Remove("emsgDetails")
104
End If
105
 
106
'function Sleep(seconds)
107
'    dim oshell, cmd
108
'    set oShell = CreateObject("Wscript.Shell")
109
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
110
'    oShell.Run cmd,0,1
111
'End function
112
'
113
'Sleep(2)
114
 
115
 
116
' DEBUG: A Hash of the user provided requests
117
<!--oJSON.data("QueryString") = Request.QueryString       -->
118
<!--                                                      -->
119
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
120
<!--Set oJSON.data("Request") = requestSet                -->
121
<!--Dim variableName                                      -->
122
<!--for each variableName in Request.QueryString          -->
123
<!--    requestSet.add variableName, Request(variableName)-->
124
<!--next                                                  -->
125
<!--for each variableName in Request.Form                 -->
126
<!--    requestSet.add variableName, Request(variableName)-->
127
<!--next                                                  -->
128
 
129
 
130
'Return the object
131
Response.Write oJSON.JSONoutput()
5957 dpurdie 132
Set oJSON = Nothing
133
Call Destroy_All_Objects
5266 dpurdie 134
%>
135
<%
136
'-------------------------------------------------
137
' Function:    updateProjects
138
' Description: Add/Del the Named projects to the current users notification list
139
'              pkg_id   - Package to process
140
'              alist    - comma seperated list of projects to add
141
'              rlist    - comma seperated list of projects to remove
142
Sub updateProjects
143
 
144
    Dim  parPkgId : parPkgId = QStrPar("pkg_id")
145
    Dim  parAlist : parAlist = QStrPar("alist")
146
    Dim  parRlist : parRlist = QStrPar("rlist")
147
    If parPkgId <> "" Then
148
 
149
        Dim arrAfield : arrAfield=Split(parAlist,",")
150
        Dim arrRfield : arrRfield=Split(parRlist,",")
151
        Dim elem
152
 
153
        objEH.ErrorRedirect = FALSE
154
        objEH.TryORA ( OraSession )
155
        On Error Resume Next
156
 
157
        OraDatabase.Parameters.Add "PROJ_ID",	0, ORAPARM_INPUT, ORATYPE_NUMBER
158
        OraDatabase.Parameters.Add "PKG_ID",	parPkgId, 	ORAPARM_INPUT, ORATYPE_NUMBER
159
        OraDatabase.Parameters.Add "USER_ID", 	objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
160
 
161
        For each elem in arrAfield
162
            OraDatabase.Parameters("PROJ_ID").value = elem
163
        	OraDatabase.ExecuteSQL "BEGIN ADD_PACKAGE_INTEREST ( :PROJ_ID, :PKG_ID, :USER_ID ); END;"
164
        Next
165
 
166
        For each elem in arrRfield
167
            OraDatabase.Parameters("PROJ_ID").value = elem
168
        	OraDatabase.ExecuteSQL "BEGIN REMOVE_PACKAGE_INTEREST ( :PROJ_ID, :PKG_ID, :USER_ID ); END;"
169
        Next
170
 
171
        OraDatabase.Parameters.Remove "PROJ_ID"
172
        OraDatabase.Parameters.Remove "PKG_ID"
173
        OraDatabase.Parameters.Remove "USER_ID"
174
 
175
        objEH.CatchORA ( OraSession )
176
        result = 0
177
    Else
6497 dpurdie 178
        oJSON.data("emsgSummary") = "updateProjects"
5266 dpurdie 179
        oJSON.data("emsgDetails") = "Insufficient arguments"
180
    End If
181
End Sub
182
 
6497 dpurdie 183
'-------------------------------------------------
184
' Function:    RemoveUserFromProject
185
' Description: Remove the named user from the specified project
186
'              pkg_id   - Package to process
187
'              user_id  - User to Remove
188
'              proj_id  - Project to remove the user from
189
 
190
Sub RemoveUserFromProject
191
    Dim  parPkgId : parPkgId = QStrPar("pkg_id")
192
    Dim  parUserId : parUserId = QStrPar("user_id")
193
    Dim  parProjId : parProjId = QStrPar("proj_id")
194
    If parPkgId <> "" AND parUserId<> "" AND parProjId <> "" Then
195
        objEH.ErrorRedirect = FALSE
196
        objEH.TryORA ( OraSession )
197
        'On Error Resume Next
198
 
199
        OraDatabase.Parameters.Add "PROJ_ID",	parProjId,  ORAPARM_INPUT, ORATYPE_NUMBER
200
        OraDatabase.Parameters.Add "PKG_ID",	parPkgId, 	ORAPARM_INPUT, ORATYPE_NUMBER
201
        OraDatabase.Parameters.Add "USER_ID", 	parUserId,  ORAPARM_INPUT, ORATYPE_NUMBER
202
 
203
        OraDatabase.ExecuteSQL "BEGIN REMOVE_PACKAGE_INTEREST ( :PROJ_ID, :PKG_ID, :USER_ID ); END;"
204
 
205
        OraDatabase.Parameters.Remove "PROJ_ID"
206
        OraDatabase.Parameters.Remove "PKG_ID"
207
        OraDatabase.Parameters.Remove "USER_ID"
208
 
209
        objEH.CatchORA ( OraSession )
210
        result = 0
211
 
212
    Else
213
        oJSON.data("emsgSummary") = "RemoveUserFromProject"
214
        oJSON.data("emsgDetails") = "Insufficient arguments"
215
    End If
216
End Sub 
6510 dpurdie 217
 
218
'-------------------------------------------------
219
' Function:    addAutoBuildNotification
220
' Description: Add users to an autobuild notification
221
'              user_id      - Comma sep list of users
222
'              base_view_id - Base view to which users are added
223
'              proj_id      - Project ID
224
 
225
Sub addAutoBuildNotification
226
    Dim  parViewId : parViewId = QStrPar("base_view_id")
227
    Dim  parUserId : parUserId = QStrPar("user_id")
228
    Dim  parProjId : parProjId = QStrPar("proj_id")
229
 
230
    If parViewId <> "" AND parUserId<> "" AND parProjId <> "" Then
231
        objEH.ErrorRedirect = FALSE
232
        objEH.TryORA ( OraSession )
233
        'On Error Resume Next
234
 
235
        OraDatabase.Parameters.Add "USER_ID_LIST", 		parUserId,      ORAPARM_INPUT, ORATYPE_VARCHAR2
236
	    OraDatabase.Parameters.Add "PROJ_ID", 			parProjId, 		ORAPARM_INPUT, ORATYPE_NUMBER
237
	    OraDatabase.Parameters.Add "VIEW_ID", 			parViewId, 		ORAPARM_INPUT, ORATYPE_NUMBER
238
 
239
        OraDatabase.ExecuteSQL "BEGIN ADD_AUTOBUILD_FAILURE_INFO ( :PROJ_ID, :VIEW_ID, :USER_ID_LIST ); END;"
240
 
241
        OraDatabase.Parameters.Remove "USER_ID_LIST"
242
        OraDatabase.Parameters.Remove "PROJ_ID"
243
        OraDatabase.Parameters.Remove "VIEW_ID"
244
 
245
        objEH.CatchORA ( OraSession )
246
        result = 0
247
 
248
    Else
249
        oJSON.data("emsgSummary") = "addAutoBuildNotification"
250
        oJSON.data("emsgDetails") = "Insufficient arguments"
251
    End If
252
 
253
End Sub
5266 dpurdie 254
%>