Subversion Repositories DevTools

Rev

Rev 6874 | Rev 6879 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
119 ghuddy 1
<%
2
'=====================================================
129 ghuddy 3
'                COMMON SUBs Part 1
119 ghuddy 4
'=====================================================
5098 dpurdie 5
Const haveCommonSubs = 1
119 ghuddy 6
%>
7
<%
8
'-----------------------------------------------------------------------------------------------------------------------------
9
Sub CloseWindow
10
%>
11
<SCRIPT language="JavaScript" type="text/javascript">
12
<!--
13
self.close();
14
//-->
15
</SCRIPT>
16
<%
5957 dpurdie 17
Call Destroy_All_Objects
5590 dpurdie 18
Response.End
119 ghuddy 19
End Sub
20
'-----------------------------------------------------------------------------------------------------------------------------
21
Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll )
129 ghuddy 22
   Dim scrlBar
23
   If BBscroll Then
24
      scrlBar = "yes"
25
   Else
26
      scrlBar = "no"
27
   End If
119 ghuddy 28
%>
129 ghuddy 29
   <script language="JavaScript" type="text/javascript">
30
   <!--
31
   window.open('<%=SSurl%>','<%=SStitle%>','scrollbars=<%=scrlBar%>,resizable=yes,width=<%=SSW%>,height=<%=SSH%>')
32
   //-->
33
   </script>
119 ghuddy 34
<%
35
End Sub
36
'-----------------------------------------------------------------------------------------------------------------------------
5590 dpurdie 37
'	Iframes do not have a window.opener
119 ghuddy 38
Sub OpenInParentWindow ( SSurl )
39
%>
129 ghuddy 40
   <script language="JavaScript" type="text/javascript">
41
   <!--
5590 dpurdie 42
	if (window.opener) {
43
	   window.opener.document.location='<%=SSurl%>';
44
   } else {
45
	   window.parent.location.href='<%=SSurl%>';
46
   }
129 ghuddy 47
   //-->
48
   </script>
119 ghuddy 49
<%
50
End Sub
51
'-----------------------------------------------------------------------------------------------------------------------------
5590 dpurdie 52
'	Iframes do not have a window.opener
53
Sub ReloadParentWindow ()
5549 dpurdie 54
%>
55
   <script language="JavaScript" type="text/javascript">
56
   <!--
5590 dpurdie 57
	if (window.opener) {
58
	   window.opener.location.reload(false);
59
   } else {
60
	   window.parent.location.reload(false);
61
   }
5549 dpurdie 62
   //-->
63
   </script>
64
<%
65
End Sub
66
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 67
Sub OpenInWindow ( SSurl )
5957 dpurdie 68
   Call Destroy_All_Objects
129 ghuddy 69
   Response.Redirect ( SSurl )
119 ghuddy 70
End Sub
71
'-----------------------------------------------------------------------------------------------------------------------------
72
Function GetQuery ( sQryName )
129 ghuddy 73
   GetQuery = ReadFile( QUERIES_PATH &"\"& sQryName )
119 ghuddy 74
End Function
75
'-----------------------------------------------------------------------------------------------------------------------------
76
Sub RaiseMsg ( SSerrFile, SSerrDesc )
129 ghuddy 77
   ' Usage: enumERROR, parval1 &"|"& parval2 &"|"& parval3 ...
78
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
5957 dpurdie 79
   Call Destroy_All_Objects
129 ghuddy 80
   Response.Redirect ("messages/"& SSerrFile )
119 ghuddy 81
End Sub
82
'-----------------------------------------------------------------------------------------------------------------------------
83
Sub RaiseMsgInParent ( SSerrFile, SSerrDesc )
129 ghuddy 84
   Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDesc
85
   Call OpenInParentWindow ("messages/"& SSerrFile )
119 ghuddy 86
End Sub
87
'-----------------------------------------------------------------------------------------------------------------------------
88
Function ReadFile( SSpath )
129 ghuddy 89
   Dim filesys, rfile
90
   Set filesys = CreateObject("Scripting.FileSystemObject")
91
   Set rfile = filesys.OpenTextFile( SSpath, 1, false)
92
   ReadFile = rfile.ReadAll
93
   rfile.close
94
   Set filesys = nothing
119 ghuddy 95
End Function
96
'-----------------------------------------------------------------------------------------------------------------------------
97
Function HighlightSubstring ( SSstr, SSsubstr )
129 ghuddy 98
   Dim leftSTR, startPos
99
   startPos = InStr( 1, SSstr, SSsubstr, 1 )
119 ghuddy 100
 
129 ghuddy 101
   If startPos > 0 Then
102
      leftSTR = Left ( SSstr, startPos - 1 )
103
      HighlightSubstring = leftSTR &"<SPAN style='background:#ffff99;'>"& Mid( SSstr, startPos, Len(SSsubstr) ) &"</SPAN>"&  Right ( SSstr, Len(SSstr) - Len(leftSTR) - Len(SSsubstr)  )
104
   Else
105
      ' Subtring not found
106
      HighlightSubstring = SSstr
107
   End If
119 ghuddy 108
 
109
End Function
110
'-----------------------------------------------------------------------------------------------------------------------------
111
Sub DeleteFile( SSpath )
129 ghuddy 112
   Dim filesys
113
   Set filesys = CreateObject("Scripting.FileSystemObject")
114
   If filesys.FileExists(SSpath) Then
115
         filesys.DeleteFile SSpath, TRUE
116
   End If
117
   Set filesys = nothing
119 ghuddy 118
End Sub
119
'-----------------------------------------------------------------------------------------------------------------------------
120
Sub DeleteFolder( SSpath )
129 ghuddy 121
   Dim  filesys
122
   Set filesys = CreateObject ("Scripting.FileSystemObject")
123
   If filesys.FolderExists( SSpath ) Then
124
      'Set oFolder = filesys.GetFolder( SSpath )
125
      filesys.DeleteFolder SSpath ,TRUE
126
   End If
119 ghuddy 127
End Sub
128
'-----------------------------------------------------------------------------------------------------------------------------
129
Sub Create_Folder ( sCreateIn, sFolderName )
129 ghuddy 130
   Dim filesys, currfolder, folcoll, subfol
131
   Set filesys = CreateObject("Scripting.FileSystemObject")
132
   If filesys.FolderExists( sCreateIn ) Then
133
      Set currfolder = filesys.GetFolder( sCreateIn )
134
      Set folcoll = currfolder.SubFolders
135
      If NOT filesys.FolderExists( sCreateIn &"\"& sFolderName ) Then
136
         folcoll.Add( sFolderName )
137
      End If
138
   End If
119 ghuddy 139
End Sub
140
'-----------------------------------------------------------------------------------------------------------------------------
141
Function Folder_Is_Empty ( sPath )
129 ghuddy 142
   Dim filesys, oFolder
143
   Set filesys = CreateObject("Scripting.FileSystemObject")
119 ghuddy 144
 
129 ghuddy 145
   If filesys.FolderExists( sPath ) Then
146
      Set oFolder = filesys.GetFolder( sPath )
147
      If ( oFolder.Files.Count + oFolder.SubFolders.Count ) > 0 Then
148
         Folder_Is_Empty = FALSE
149
      Else
150
         Folder_Is_Empty = TRUE
151
      End If
152
   Else
153
      Folder_Is_Empty = TRUE
154
   End If
119 ghuddy 155
 
156
End Function
157
'-----------------------------------------------------------------------------------------------------------------------------
158
Function InStrPipes ( SSstr, SSsubstr )
129 ghuddy 159
   If InStr( SSstr, "|"& SSsubstr &"|") > 0 Then
160
      InStrPipes = true
161
   Else
162
      InStrPipes = false
163
   End If
119 ghuddy 164
End Function
165
'-----------------------------------------------------------------------------------------------------------------------------
166
Function RemoveFromStrPipes ( SSstr, SSsubstr )
129 ghuddy 167
   RemoveFromStrPipes = Replace( SSstr, "|"& SSsubstr &"|", "" )
119 ghuddy 168
End Function
169
'-----------------------------------------------------------------------------------------------------------------------------
170
Function View_Name_Exists ( SSviewname, NNused_id )
129 ghuddy 171
   Dim rsTemp, Query_String
172
   Query_String = _
173
   " SELECT view_name"&_
174
   "  FROM views"&_
175
   " WHERE UPPER(view_name) = UPPER('"& UCase(SSviewname) &"') AND owner_id = "& NNused_id
176
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
177
   If rsTemp.RecordCount > 0 Then
178
      View_Name_Exists = TRUE
179
   Else
180
      View_Name_Exists = FALSE
181
   End If
182
   rsTemp.Close
183
   Set rsTemp = nothing
119 ghuddy 184
End Function
185
'-----------------------------------------------------------------------------------------------------------------------------
186
Function User_Name_Exists ( SSusername )
129 ghuddy 187
   Dim rsTemp, Query_String
188
   Query_String = _
189
   " SELECT user_name"&_
190
   "  FROM users"&_
191
   " WHERE user_name = '"& SSusername &"'"
192
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
193
   If rsTemp.RecordCount > 0 Then
194
      User_Name_Exists = TRUE
195
   Else
196
      User_Name_Exists = FALSE
197
   End If
198
   rsTemp.Close
199
   Set rsTemp = nothing
119 ghuddy 200
End Function
201
'-----------------------------------------------------------------------------------------------------------------------------
202
Function This_View_Owner( NNview_id, NNuser_id )
129 ghuddy 203
   Dim rsTemp, Query_String
204
   Query_String = _
205
   " SELECT owner_id"&_
206
   "  FROM views"&_
207
   " WHERE view_id = "& NNview_id
208
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
209
   If rsTemp.RecordCount > 0 Then
210
      If CInt(rsTemp.Fields("owner_id")) = CInt(NNuser_id) Then
211
         This_View_Owner = TRUE
212
      Else
213
         This_View_Owner = FALSE
214
      End If
215
   Else
216
      ' view not found
5357 dpurdie 217
      Session("AdditionalParams") = "$ADMINEMAIL$,"& ADMIN_EMAIL
5957 dpurdie 218
      Call Destroy_All_Objects
129 ghuddy 219
      Response.Redirect("message.asp?msg=400-2")
220
   End If
221
   rsTemp.Close
222
   Set rsTemp = nothing
119 ghuddy 223
End Function
224
'-----------------------------------------------------------------------------------------------------------------------------
225
Function GetReleaseMode ( NNrtag_id )
5207 dpurdie 226
   GetReleaseInfo NNrtag_id
227
   GetReleaseMode = releaseInfoHash("official")
228
End Function
229
'-----------------------------------------------------------------------------------------------------------------------------
5251 dpurdie 230
'   Get basic Release Info on global releaseInfoHash
5207 dpurdie 231
'   List of fields may be extended as required (could use *)
232
Sub GetReleaseInfo ( NNrtag_id )
233
   Dim rsTemp, Query_String, item
129 ghuddy 234
   If NNrtag_id = "" Then NNrtag_id = "-1"
119 ghuddy 235
 
5207 dpurdie 236
   Set releaseInfoHash = CreateObject("Scripting.Dictionary")
119 ghuddy 237
 
5251 dpurdie 238
   Query_String = " SELECT rt.RTAG_ID ,rt.lxr, rt.official," &_
239
                  "   NVL(lx.lxrserver, 'N') as lxrserver" &_
240
                  " FROM Release_tags rt,"&_
241
                  "   lxr_state lx"&_
242
                  " WHERE rt.RTAG_ID = lx.RTAG_ID(+)"&_
243
                  " AND rt.RTAG_ID = " & NNrtag_id
244
 
129 ghuddy 245
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
246
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
5207 dpurdie 247
      For Each item In rsTemp.Fields 
5251 dpurdie 248
        'Response.Write("<br><pre> item:" & Lcase(item.name) & ":" & item & "</pre>")
5207 dpurdie 249
        releaseInfoHash.Add  Lcase(item.name), item.value
250
      Next
129 ghuddy 251
   End If
119 ghuddy 252
 
129 ghuddy 253
   rsTemp.Close
254
   Set rsTemp = nothing
5207 dpurdie 255
End Sub
256
 
119 ghuddy 257
'-----------------------------------------------------------------------------------------------------------------------------
5020 dpurdie 258
Function Get_Devl_Environment
259
   If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") <> "" Then
260
      If Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment") = "clearcase" Then
261
         Get_Devl_Environment = "jats"      'clear case does not have import
129 ghuddy 262
      Else
5020 dpurdie 263
         Get_Devl_Environment = Request.Cookies(COOKIE_RELEASEMANAGER_MEMORY)("devl_environment")
129 ghuddy 264
      End If
265
   Else
5020 dpurdie 266
      Get_Devl_Environment = "jats"      'JATS devl enviroment is set by default
129 ghuddy 267
   End If
119 ghuddy 268
End Function
269
'-----------------------------------------------------------------------------------------------------------------------------
270
Function Get_From_DUAL ( SSclm )
129 ghuddy 271
   Dim rsTemp, Query_String, OraSession2, OraDatabase2
272
   Set OraSession2 = CreateObject("OracleInProcServer.XOraSession")
273
   Set OraDatabase2 = OraSession2.OpenDatabase( TNS_NAME, DB_AUTHENTICATION, Cint(0))
119 ghuddy 274
 
129 ghuddy 275
   Query_String = _
276
   " SELECT "& SSclm &" AS result FROM DUAL"
277
   Set rsTemp = OraDatabase2.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 278
 
129 ghuddy 279
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
280
      Get_From_DUAL = (rsTemp.Fields("result"))
281
   End If
119 ghuddy 282
 
129 ghuddy 283
   rsTemp.Close
284
   Set rsTemp = nothing
285
   Set OraDatabase2 = nothing
286
   Set OraSession2 = nothing
119 ghuddy 287
End Function
288
'-----------------------------------------------------------------------------------------------------------------------------
6694 dpurdie 289
' Try to replace usage with : DB_PROJ_ID
119 ghuddy 290
Function Get_Proj_ID ( SSrtag_id )
129 ghuddy 291
   Dim rsTemp, Query_String
119 ghuddy 292
 
129 ghuddy 293
   Query_String = _
294
   " SELECT projects.proj_id"&_
295
   "   FROM projects projects, release_tags rel"&_
296
   "  WHERE projects.proj_id = rel.proj_id"&_
297
   "    AND rel.rtag_id = "& SSrtag_id
119 ghuddy 298
 
129 ghuddy 299
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 300
 
129 ghuddy 301
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
302
      Get_Proj_ID = (rsTemp.Fields("proj_id"))
303
   End If
119 ghuddy 304
 
129 ghuddy 305
   rsTemp.Close
306
   Set rsTemp = nothing
119 ghuddy 307
End Function
308
'-----------------------------------------------------------------------------------------------------------------------------
6694 dpurdie 309
' Try to replace usage with : DB_PROJ_NAME
119 ghuddy 310
Function Get_Proj_Name ( NNproj_id )
129 ghuddy 311
   Dim rsTemp, Query_String
119 ghuddy 312
 
159 ghuddy 313
   Get_Proj_Name = ""
314
 
129 ghuddy 315
   Query_String = _
316
   " SELECT proj_name "&_
317
   "   FROM projects pr "&_
119 ghuddy 318
  "  WHERE pr.proj_id = "& NNproj_id
319
 
129 ghuddy 320
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 321
 
129 ghuddy 322
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
323
      Get_Proj_Name = (rsTemp.Fields("proj_name"))
324
   End If
119 ghuddy 325
 
129 ghuddy 326
   rsTemp.Close
327
   Set rsTemp = nothing
119 ghuddy 328
End Function
329
'-----------------------------------------------------------------------------------------------------------------------------
159 ghuddy 330
Function Get_Release_Name ( NNrtag_id )
331
   Dim rsTemp, Query_String
332
 
333
   Get_Release_Name = ""
334
 
335
   Query_String = _
336
   " SELECT rtag_name "&_
337
   "   FROM release_tags rt "&_
338
  "  WHERE rt.rtag_id = "& NNrtag_id
339
 
340
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
341
 
342
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
343
      Get_Release_Name = (rsTemp.Fields("rtag_name"))
344
   End If
345
 
346
   rsTemp.Close
347
   Set rsTemp = nothing
348
End Function
349
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 350
Function Get_Base_URL ( NNproj_id )
129 ghuddy 351
   Dim rsTemp, Query_String
119 ghuddy 352
 
129 ghuddy 353
   Query_String = _
354
   " SELECT base_url "&_
355
   "   FROM projects pr "&_
119 ghuddy 356
  "  WHERE pr.proj_id = "& NNproj_id
357
 
129 ghuddy 358
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 359
 
129 ghuddy 360
   Get_Base_URL = rsTemp("base_url")
119 ghuddy 361
 
129 ghuddy 362
   rsTemp.Close()
363
   Set rsTemp = nothing
119 ghuddy 364
End Function
365
'-----------------------------------------------------------------------------------------------------------------------------
366
Function Get_Categories ( NNrtag_id )
129 ghuddy 367
   Get_Categories = _
368
   " SELECT vi.view_id, vi.view_name"&_
369
   "  FROM release_content rel,"&_
370
   "       views vi"&_
371
   " WHERE rel.base_view_id = vi.view_id"&_
372
   "   AND rtag_id = "& NNrtag_id &_
373
   " GROUP BY vi.view_id, vi.view_name   "&_
374
   " ORDER BY vi.view_name ASC "
119 ghuddy 375
End Function
376
'-----------------------------------------------------------------------------------------------------------------------------
377
Function Get_PV_IDs_In_Release ( NNrtag_id )
378
    Dim rsTemp, Query_String, tempSTR
129 ghuddy 379
   tempSTR = "-1"
380
   Query_String = _
381
   "SELECT pv_id FROM release_content WHERE rtag_id = "& NNrtag_id
119 ghuddy 382
 
129 ghuddy 383
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 384
 
129 ghuddy 385
   While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
386
      tempSTR = tempSTR &","& rsTemp.Fields("pv_id")
387
      rsTemp.MoveNext
388
   WEnd
389
   Get_PV_IDs_In_Release = tempSTR
390
   rsTemp.Close
391
   Set rsTemp = nothing
119 ghuddy 392
End Function
393
'-----------------------------------------------------------------------------------------------------------------------------
394
Sub Get_Pkg_Info ( SSpv_id, NNrtag )
4687 dpurdie 395
   Dim rsTemp, Query_String, isaRelease
6184 dpurdie 396
   Dim opCodeListString, opCodeList, opCodeStr
397
 
4687 dpurdie 398
   OraDatabase.Parameters.Add "PV_ID",         SSpv_id,   ORAPARM_INPUT, ORATYPE_NUMBER
399
   OraDatabase.Parameters.Add "RTAG_ID",       NNrtag,    ORAPARM_INPUT, ORATYPE_NUMBER
183 brianf 400
   OraDatabase.Parameters.Add "RETURN_NUMBER", NULL,      ORAPARM_OUTPUT, ORATYPE_NUMBER   
6184 dpurdie 401
   OraDatabase.Parameters.Add "OP_CODE_LIST",  NULL,      ORAPARM_OUTPUT, ORATYPE_VARCHAR2
119 ghuddy 402
 
6497 dpurdie 403
   isaRelease = NOT ((NNrtag = "") or (IsNull(NNrtag)))
404
   pkgInfoHash.Add "isaRelease", isaRelease
6176 dpurdie 405
 
4767 dpurdie 406
   '-- can_unofficial
407
   '   Limits the ability to unrelease a package version
129 ghuddy 408
   pkgInfoHash.Item ("can_unofficial") = "false"
119 ghuddy 409
 
4767 dpurdie 410
   '--  can_edit_in_project
411
   '    Property of the release, the user and the package
412
   '    Limits the ability to add a package to a release
413
   '        
414
   pkgInfoHash.Item ("can_edit_in_project") = "0"
415
 
4687 dpurdie 416
   '-- Get Package Details
129 ghuddy 417
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0))
119 ghuddy 418
 
129 ghuddy 419
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
420
      pkgInfoHash.Add "pv_id", (rsTemp.Fields("pv_id"))
421
      pkgInfoHash.Add "pkg_id", (rsTemp.Fields("pkg_id"))
422
      pkgInfoHash.Add "pkg_name", (rsTemp.Fields("pkg_name"))
423
      pkgInfoHash.Add "pkg_version", (rsTemp.Fields("pkg_version"))
424
      pkgInfoHash.Add "v_ext", (rsTemp.Fields("v_ext"))
425
      pkgInfoHash.Add "comments", (rsTemp.Fields("comments"))
119 ghuddy 426
 
129 ghuddy 427
      pkgInfoHash.Add "modified_stamp", (rsTemp.Fields("modified_stamp"))
428
      pkgInfoHash.Add "modifier", (rsTemp.Fields("modifier"))
429
      pkgInfoHash.Add "modifier_id", (rsTemp.Fields("modifier_id"))
430
      pkgInfoHash.Add "modifier_email", (rsTemp.Fields("modifier_email"))
119 ghuddy 431
 
129 ghuddy 432
      pkgInfoHash.Add "created_stamp", (rsTemp.Fields("created_stamp"))
433
      pkgInfoHash.Add "creator", (rsTemp.Fields("creator"))
5929 dpurdie 434
      pkgInfoHash.Add "creator_id", (rsTemp.Fields("creator_id"))
129 ghuddy 435
      pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email"))
119 ghuddy 436
 
129 ghuddy 437
      pkgInfoHash.Add "owner", (rsTemp.Fields("owner"))
5929 dpurdie 438
      pkgInfoHash.Add "owner_id", (rsTemp.Fields("owner_id"))
129 ghuddy 439
      pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email"))
119 ghuddy 440
 
129 ghuddy 441
      pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked"))
4687 dpurdie 442
 
129 ghuddy 443
      pkgInfoHash.Add "pkg_label", (rsTemp.Fields("pkg_label"))
444
      pkgInfoHash.Add "src_path", (rsTemp.Fields("src_path"))
445
      pkgInfoHash.Add "pv_description", (rsTemp.Fields("pv_description"))
446
      pkgInfoHash.Add "last_pv_id", (rsTemp.Fields("last_pv_id"))
447
      pkgInfoHash.Add "previous_version", (rsTemp.Fields("previous_version"))
448
      pkgInfoHash.Add "release_notes_info", (rsTemp.Fields("release_notes_info"))
119 ghuddy 449
 
129 ghuddy 450
      pkgInfoHash.Add "is_patch", (rsTemp.Fields("is_patch"))
451
      pkgInfoHash.Add "is_obsolete", (rsTemp.Fields("is_obsolete"))
452
      pkgInfoHash.Add "obsolete_comments", (rsTemp.Fields("obsolete_comments"))
119 ghuddy 453
 
129 ghuddy 454
      pkgInfoHash.Add "build_type", (rsTemp.Fields("build_type"))
455
      pkgInfoHash.Add "change_type", (rsTemp.Fields("change_type"))
456
      pkgInfoHash.Add "bs_id", (rsTemp.Fields("bs_id"))
457
      pkgInfoHash.Add "is_deployable", (rsTemp.Fields("is_deployable"))
458
      pkgInfoHash.Add "sbom_priority", (rsTemp.Fields("sbom_priority"))
459
      pkgInfoHash.Add "ripple_field", (rsTemp.Fields("ripple_field"))
460
   End If
119 ghuddy 461
 
6176 dpurdie 462
    If (pkgInfoHash.Item ("dlocked") = "Y") OR pkgInfoHash.Item("build_type") = "M" Then
463
        pkgInfoHash.Add "isInArchive", testArchiveAccessPkg(pkgInfoHash.Item ("pkg_name"), pkgInfoHash.Item ("pkg_version"))
464
    End If
465
 
4687 dpurdie 466
   If isaRelease Then
467
      '-- Find if package is editable in this project
4767 dpurdie 468
      '   Not editable if
469
      '     Imported via a Reference Package
5080 dpurdie 470
      '     Imported via an SDK
4767 dpurdie 471
      '     Release is not in Open or Restricted Mode
472
      '     Project extenstion is project specific - and not within the allowed project
473
      '     
4687 dpurdie 474
      OraDatabase.ExecuteSQL "BEGIN  :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID );  END;"
4767 dpurdie 475
      pkgInfoHash.Item ("can_edit_in_project") = CStr( OraDatabase.Parameters("RETURN_NUMBER").Value )
119 ghuddy 476
 
4687 dpurdie 477
       '-- Get Package Release Details
478
       Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageReleaseDetails.sql"), cint(0))
119 ghuddy 479
 
4687 dpurdie 480
       If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
481
          pkgInfoHash.Add "insert_stamp", (rsTemp.Fields("insert_stamp"))
482
          pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor"))
483
          pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email"))
484
          pkgInfoHash.Add "used_count", (rsTemp.Fields("used_count"))
119 ghuddy 485
 
4687 dpurdie 486
          pkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id"))
6642 dpurdie 487
          pkgInfoHash.Item ("view_name") = (rsTemp.Fields("view_name"))
4687 dpurdie 488
          pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state"))
489
          pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state"))
490
          pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state"))
119 ghuddy 491
 
4687 dpurdie 492
          pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
493
          pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
494
          pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
495
          pkgInfoHash.Add "product_state_used", (rsTemp.Fields("product_state_used"))
5080 dpurdie 496
          pkgInfoHash.Add "sdktag_id", (rsTemp.Fields("sdktag_id"))
497
          pkgInfoHash.Add "is_sdkpkg", (NOT IsNull(rsTemp.Fields("sdktag_id")))
5098 dpurdie 498
          pkgInfoHash.Add "is_pegged", (rsTemp.Fields("pegged") <> 0)
6440 dpurdie 499
          pkgInfoHash.Add "ripple_stop", rsTemp.Fields("ripple_stop")
500
          pkgInfoHash.Add "persist_ripple_stop", rsTemp.Fields("persist_ripple_stop")
6642 dpurdie 501
          pkgInfoHash.Add "advisory_ripple", rsTemp.Fields("advisory_ripple") <> 0
5080 dpurdie 502
 
4764 dpurdie 503
       Else
4767 dpurdie 504
          ' -- Package Version is not a member of the specified release
505
          '    Get Basic Release and Project Details
506
          Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
507
                         " from projects pj, release_tags rt" &_
508
                         " where rt.rtag_id=:RTAG_ID" &_
509
                         " and rt.PROJ_ID = pj.PROJ_ID"
510
 
511
          Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
512
 
513
          If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
514
              pkgInfoHash.Add "proj_id",   (rsTemp.Fields("proj_id"))
515
          	  pkgInfoHash.Add "rtag_id",   (rsTemp.Fields("rtag_id"))
516
          	  pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
517
          End If
4764 dpurdie 518
 
4767 dpurdie 519
          ' -- Determine if package is a member of this release
520
          '    Mark as Not in Release
5964 dpurdie 521
          Query_String = "select pv_id, 0 as env_area from work_in_progress where rtag_id=:RTAG_ID and pv_id=:PV_ID" &_
4767 dpurdie 522
                          " union" &_
5964 dpurdie 523
                          " select pv_id, 1 as env_area from planned where rtag_id=:RTAG_ID and pv_id=:PV_ID" &_
4767 dpurdie 524
                          " union" &_
5964 dpurdie 525
                          " select pv_id, 2 as env_area from RELEASE_CONTENT where rtag_id=:RTAG_ID and pv_id=:PV_ID"
4767 dpurdie 526
          Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
527
          If rsTemp.RecordCount < 1 Then
528
               pkgInfoHash.Item ("notInRelease") = true
5846 dpurdie 529
               '
530
               ' -- Determine related package that is in the release
531
               '    Use pkg_id and v_ext to locate package
5854 dpurdie 532
               If pkgInfoHash.Item ("pkg_id") <> "" Then
533
                   Query_String = "SELECT pv.PV_ID" &_
534
                                  " FROM RELEASE_CONTENT rc, package_versions pv " &_ 
535
                                  " WHERE rc.rtag_id = :RTAG_ID" &_
536
                                  " and rc.PV_ID = pv.pv_id" &_
537
                                  " and pv.pkg_id = " & pkgInfoHash.Item ("pkg_id") &_ 
538
                                  " and NVL(pv.v_ext,'') = NVL('"&pkgInfoHash.Item ("v_ext")&"', '')"
539
                   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
540
                   If rsTemp.RecordCount > 0 Then
541
                    pkgInfoHash.Item ("pv_id_InRelease") = (rsTemp.Fields("pv_id"))
542
                   End If
5846 dpurdie 543
               End If
5964 dpurdie 544
          Else
545
            If rsTemp("env_area") = 0 Then
546
                 pkgInfoHash.Item ("is_wip") = True
547
            End If
4767 dpurdie 548
          End If
4764 dpurdie 549
 
4687 dpurdie 550
       End If
119 ghuddy 551
 
6827 dpurdie 552
       ' Determine if user can make the the package 'unofficial'
4767 dpurdie 553
       If     (pkgInfoHash.Item ("dlocked") = "Y") _
129 ghuddy 554
         AND  (pkgInfoHash.Item ("build_type") = "M") _
555
         AND  (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) _
556
         AND  (pkgInfoHash.Item("can_edit_in_project") = "1" ) _
6188 dpurdie 557
       Then
558
            pkgInfoHash.Item ("can_unofficial") = "true"
559
       End If
560
 
561
      '
562
      ' Determine if there is a deamon instruction on this package in this release
563
      ' Also: OraDatabase.ExecuteSQL "BEGIN :OP_CODE_LIST := PK_BUILDAPI.daemon_ops_for_rtag("& nRtag_id & "); END;"
564
      objEH.TryORA ( OraSession )
565
      ON ERROR RESUME NEXT
566
      OraDatabase.ExecuteSQL "BEGIN :OP_CODE_LIST := PK_BUILDAPI.daemon_ops_for_rtag_pvid(:RTAG_ID,:PV_ID); END;"
567
      objEH.CatchORA ( OraSession )
568
      ON ERROR GOTO 0
569
      opCodeListString  = OraDatabase.Parameters("OP_CODE_LIST").Value
570
 
571
      If NOT IsNull(opCodeListString) AND opCodeListString <> "" Then
572
         opCodeList = Split(opCodeListString, ",")
573
         For Each opCodeStr In opCodeList
574
            If opCodeStr = OP_CODE_0_RIPPLE_BUILD_PACKAGE  Then
575
                pkgInfoHash.Add "hasRippleInstr", 1
576
            End If
577
            If  opCodeStr = OP_CODE_1_TEST_BUILD_PACKAGE  Then
578
                pkgInfoHash.Add "hasTestInstr", 1
579
            End If
580
         Next
129 ghuddy 581
      End If
119 ghuddy 582
 
6184 dpurdie 583
   Else     ' NOT isaRelease
5951 dpurdie 584
      If pkgInfoHash.Exists ("modified_stamp") Then
585
          If NOT IsNull(pkgInfoHash.Item ("modified_stamp").Value) Then
586
              If (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) Then
587
                 ' Must be not older then a day
588
                 If (pkgInfoHash.Item ("dlocked") = "A")  OR   NOT IsNull(pkgInfoHash.Item("is_patch")) Then
589
                    pkgInfoHash.Item ("can_unofficial") = "true"
590
                 End If
591
              End If
592
          End If
593
     End If
6184 dpurdie 594
   End If   ' End isaRelease
119 ghuddy 595
 
4687 dpurdie 596
   '-- Get Patch Parent
129 ghuddy 597
   If pkgInfoHash.Item ("is_patch") = "Y" Then
598
      Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PatchParent.sql"), cint(0))
119 ghuddy 599
 
129 ghuddy 600
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
601
         pkgInfoHash.Add "patch_parent_id", (rsTemp.Fields("pv_id"))
602
      End If
603
   End If
119 ghuddy 604
 
129 ghuddy 605
   ' DEVI-45275 - Check if version is in the planned table and if so get its planned operation type
606
   ' which denotes whether it is an existing version being added to a release, an existing version
607
   ' being removed from a release, or a new version being prepared for a release.
608
   Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PlannedPackageVersionDetails.sql"), cint(0))
119 ghuddy 609
 
129 ghuddy 610
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
611
      pkgInfoHash.Add "planned_operation", (rsTemp.Fields("operation"))
612
   Else
613
      pkgInfoHash.Add "planned_operation", " "
614
   End If
119 ghuddy 615
 
129 ghuddy 616
   OraDatabase.Parameters.Remove "PV_ID"
617
   OraDatabase.Parameters.Remove "RTAG_ID"
618
   OraDatabase.Parameters.Remove "RETURN_NUMBER"
6184 dpurdie 619
   OraDatabase.Parameters.Remove "OP_CODE_LIST"
620
 
5964 dpurdie 621
   On Error Resume Next
119 ghuddy 622
 
183 brianf 623
   ' check if package is released
5964 dpurdie 624
   If NOT isaRelease Then
183 brianf 625
     pkgInfoHash.Add "is_released", False
626
   Else
627
     Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT rc.pv_id FROM release_content rc WHERE rc.rtag_id = " & NNrtag & " AND rc.pv_id = " & SSpv_id, cint(0))
628
     pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0
629
   End If
630
 
5964 dpurdie 631
   ' check if package is excluded from build
183 brianf 632
   pkgInfoHash.Add "is_excluded", False
633
   pkgInfoHash.Add "has_build_failure", False
5964 dpurdie 634
   If isaRelease Then
183 brianf 635
     Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT dnr.pv_id,dnr.root_file FROM do_not_ripple dnr WHERE dnr.rtag_id = " & NNrtag & " AND dnr.pv_id = " & SSpv_id, cint(0))
636
     If rsTemp.RecordCount <> 0 Then
637
       pkgInfoHash("is_excluded") = True
638
       pkgInfoHash("has_build_failure") = Not IsNull(rsTemp("root_file"))
639
     End If
640
   End If
641
 
5964 dpurdie 642
   ' Check if Package is deprecated
643
   If isaRelease Then
644
     Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT * FROM DEPRECATED_PACKAGES WHERE RTAG_ID ="& NNrtag &" AND "& EmptyToNullString("V_EXT", pkgInfoHash.Item ("v_ext")) &" AND PKG_ID = "& pkgInfoHash.Item ("pkg_id") &"", cint(0))
645
     If rsTemp.RecordCount > 0 Then
646
        pkgInfoHash.Add "is_deprecated", True
647
     End If
648
   End If
649
 
6497 dpurdie 650
 
651
   ' Check if package is a NEW package - only one version in existence
652
   Set rsTemp = OraDatabase.DbCreateDynaset( "select count(*) as count from package_versions pv where pkg_id = " & pkgInfoHash.Item ("pkg_id"), cint(0))
653
   pkgInfoHash.Add "pkg_count" , rsTemp("count")
654
 
129 ghuddy 655
   rsTemp.Close
656
   Set rsTemp = nothing
183 brianf 657
 
119 ghuddy 658
End Sub
659
'-----------------------------------------------------------------------------------------------------------------------------
4703 dpurdie 660
' Get Package Info - when we don't have a package
661
Sub Get_NoPkg_Info(NNrtag)
662
	Dim rsTemp, Query_String
663
	OraDatabase.Parameters.Add "RTAG_ID", 		NNrtag,		ORAPARM_INPUT, ORATYPE_NUMBER
664
 
665
	pkgInfoHash.Item ("can_unofficial") = "false"
666
	pkgInfoHash.Item ("noPackage") = true
667
 
668
	'/* Get Basic Details */
669
    Query_String = " select pj.PROJ_ID, rt.RTAG_ID,rt.rtag_name " &_
670
                   " from projects pj, release_tags rt" &_
671
                   " where rt.rtag_id=:RTAG_ID" &_
672
                   " and rt.PROJ_ID = pj.PROJ_ID"
673
 
674
	Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
675
 
676
	If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
677
		pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))
678
		pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))
679
		pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))
680
	End If
681
 
682
   OraDatabase.Parameters.Remove "RTAG_ID"
683
End Sub
684
 
685
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 686
Sub Get_Pkg_Short_Info( SSparPv_id, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked )
129 ghuddy 687
   Dim rsTemp, Query_String
688
   If IsEmpty(SSparPv_id) Then Exit Sub
119 ghuddy 689
 
129 ghuddy 690
   Query_String = _
691
   " SELECT pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.src_path, pv.pv_description, pv.dlocked"&_
692
   "  FROM packages pkg, package_versions pv"&_
693
   " WHERE pkg.pkg_id = pv.pkg_id  AND pv.pv_id ="& SSparPv_id
119 ghuddy 694
 
129 ghuddy 695
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 696
 
129 ghuddy 697
   If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
698
      SSpkgID = rsTemp.Fields("pkg_id")
699
      SSpkgName = rsTemp.Fields("pkg_name")
700
      SSpkgVersion = rsTemp.Fields("pkg_version")
701
      SSsrc_path = rsTemp.Fields("src_path")
702
      SSpkgDesc = rsTemp.Fields("pv_description")
703
      BBdlocked = rsTemp.Fields("dlocked")
704
   End If
119 ghuddy 705
 
129 ghuddy 706
   rsTemp.Close
707
   Set rsTemp = nothing
119 ghuddy 708
End Sub
709
'-----------------------------------------------------------------------------------------------------------------------------
710
Private Function IsDomainAuthOK( SSusername, SSpassword, SSdomainName )
129 ghuddy 711
   Dim objLoginAuth, return, tempSTR
119 ghuddy 712
 
129 ghuddy 713
   Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")
714
   return = objLoginAuth.AuthenticateUser ( SSusername, SSpassword, SSdomainName )
119 ghuddy 715
 
129 ghuddy 716
   'Response.write "LOGIN"& SSusername &"-"& SSpassword &"-"& SSdomainName &"-"& return
119 ghuddy 717
 
129 ghuddy 718
   If (return = 0) OR (return = 1385) Then
719
      ' From MSDN System Error Codes
720
      ' 0 - The operation completed successfully.
721
      ' 1326 - Logon failure: unknown user name or bad password.
722
      ' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.
723
      ' 1909 - The referenced account is currently locked out and may not be used to log on.
119 ghuddy 724
 
129 ghuddy 725
      'Login ok
726
      IsDomainAuthOK = True
727
   Else
728
      IsDomainAuthOK = False
729
   End If
119 ghuddy 730
 
129 ghuddy 731
   Set objLoginAuth = Nothing
119 ghuddy 732
End Function
733
'-----------------------------------------------------------------------------------------------------------------------------
734
Function ReadUserPreferences ( SSitem )
129 ghuddy 735
   'ReadUserPreferences = Request.Cookies("RELEASEMANAGER_USER_PREFERENCES")( SSitem )
736
   ReadUserPreferences = "0"
119 ghuddy 737
End Function
738
'-----------------------------------------------------------------------------------------------------------------------------
739
Function Requred_Parameters_String ( SScurrent, SSstr )
129 ghuddy 740
   'returns "&par1=val1&&parn=valn&"            must use & as it will not be used on parameter name or value
741
   Dim tempARR, parameter, tempSTR
742
   tempARR = Split( SSstr, "," )
743
   tempSTR = SScurrent
119 ghuddy 744
 
129 ghuddy 745
   For Each parameter In tempARR
746
      tempSTR = tempSTR &"&"& parameter &"="& QStrPar( parameter ) &"&"
747
   Next
119 ghuddy 748
 
129 ghuddy 749
   Requred_Parameters_String = tempSTR
119 ghuddy 750
End Function
751
'-----------------------------------------------------------------------------------------------------------------------------
752
Function Quick_Help ( SStipname )
6827 dpurdie 753
   Quick_Help = "<span onMouseOver=""formTips.show('"& SStipname &"')"" onMouseOut=""formTips.hide()""><img src='images/i_help.gif' width='12' height='12' hspace='2' align='absmiddle' border='0' ></span>"
119 ghuddy 754
End Function
6623 dpurdie 755
Function Quick_HelpImg ( SStipname, SSimage )
6827 dpurdie 756
   Quick_HelpImg = "<span onMouseOver=""formTips.show('"& SStipname &"')"" onMouseOut=""formTips.hide()""><img src='"&SSimage&"' width='12' height='12' hspace='2' align='absmiddle' border='0' ></span>"
6623 dpurdie 757
End Function
758
 
119 ghuddy 759
'-----------------------------------------------------------------------------------------------------------------------------
760
Function LogError ( SSlog, SSstr )
129 ghuddy 761
   '|errstr1||errstr2||errstr3|...
762
   LogError = SSlog &"|"& SSstr &"|"
119 ghuddy 763
End Function
764
'-----------------------------------------------------------------------------------------------------------------------------
5168 dpurdie 765
'   Send an email
766
'   Args:   SSfromName      - Text Name of sender
767
'           SSfrom          - email address of sender
6624 dpurdie 768
'           SSto            - email address of receipient. May be comma sep list or a some type of object
5168 dpurdie 769
'           SSsubject       - email subject
770
'           SSbody          - Body of the email. Email is sent as html.
771
'           oAttachments    - email attachments. May be empty, a file or a HashRef of files
772
'
119 ghuddy 773
Sub Send_Email ( SSfromName, SSfrom, SSto, SSsubject, SSbody, oAttachments )
129 ghuddy 774
   Dim Mail, Keys, Key, canSend
4028 dpurdie 775
'Response.write "<pre>Send_Email:SSfromName:" & SSfromName
776
'Response.write "<br>Send_Email:SSfrom:" & SSfrom
777
'Response.write "<br>Send_Email:SSto:" & SSto
778
'Response.write "<br>Send_Email:SSsubject:" & SSsubject
779
'Response.write "<br>Send_Email:SSbody:" & SSbody
119 ghuddy 780
 
129 ghuddy 781
   canSend = FALSE
782
   Set Mail = Server.CreateObject("Persits.MailSender")
3959 dpurdie 783
   Mail.Host = MAIL_SERVER
129 ghuddy 784
   Mail.From = SSfrom
785
   Mail.FromName = SSfromName
119 ghuddy 786
 
129 ghuddy 787
   ' Send TO:
4028 dpurdie 788
   ' Handle a Dictionary of names
789
   If IsObject(SSto) AND (TypeName(SSto) <> "IOraField") Then
129 ghuddy 790
      Keys = SSto.Keys
791
      For Each Key In Keys
792
         Mail.AddAddress Key, SSto.Item( Key )
793
      Next
119 ghuddy 794
 
129 ghuddy 795
      If SSto.Count > 0 Then canSend = TRUE
796
   Else
119 ghuddy 797
 
129 ghuddy 798
      Mail.AddAddress SSto
799
      If SSto <> "" Then canSend = TRUE
800
   End If
119 ghuddy 801
 
129 ghuddy 802
   Mail.Subject = SSsubject
803
   Mail.IsHTML = True
804
   Mail.Body = SSbody
119 ghuddy 805
 
4028 dpurdie 806
   If NOT IsEmpty(oAttachments) AND NOT IsNull(oAttachments) Then
807
       ' Add Attachments     DDDDDDD  Sash,
808
       ' It appears as if AddEmbededImage is premium functionality that costs money, can we just do a normal add attachment?
809
       If IsObject( oAttachments ) Then
810
          Keys = oAttachments.Keys
811
          For Each Key In Keys
812
       '      Mail.AddEmbeddedImage rootPath & Key, oAttachments.Item( Key )
813
              Mail.AddAttachment oAttachments.Item( Key )
814
          Next
815
        Else
816
              Mail.AddAttachment oAttachments
817
       End If
818
    End If
119 ghuddy 819
 
129 ghuddy 820
   On Error Resume Next
821
   If canSend Then   Mail.Send   ' send message
119 ghuddy 822
 
823
End Sub
5168 dpurdie 824
 
825
'-----------------------------------------------------------------------------------------------------------------
826
'   Record and Report a Release Manager event
827
'       Record in the machines Event Log
828
'       Report via email
829
'   Used to report error conditions that need to be bought to the attention of some sys admin
830
'   Args:   eventType       - one of enumEVENT_* ( ie:enumEVENT_ERROR)
831
'           SSlocation      - Indication of location/operation
832
'           SSvalues        - Values. Will be added into the message
833
'           SSerror_message - Error message
834
'
835
Sub Report_Event ( eventType, SSlocation, SSvalues, SSerror_message  )
836
    On Error Resume Next
837
    Dim WshNetwork, SSmsg
838
    Set WshNetwork = Server.CreateObject("WScript.Network")
839
 
840
   ' Compose Message
841
   SSmsg = _
842
   "-- User Info  --"& VBNewLine &_
843
   "Logged In: " & objAccessControl.UserLogedIn & VBNewLine &_
844
   "Domain: " & objAccessControl.Domain & VBNewLine &_
845
   "UserName: " & objAccessControl.UserName & VBNewLine &_
846
   "FullName: " & objAccessControl.FullName & VBNewLine &_
847
   "UserEmail: " & objAccessControl.UserEmail & VBNewLine &_
848
   "UserId: " & objAccessControl.UserId & VBNewLine &_
849
   VBNewLine &_
850
   "-- Script Info  --"& VBNewLine &_
851
   "Host Name: "& Request.ServerVariables("SERVER_NAME") & ":" & Request.ServerVariables("SERVER_PORT") & VBNewLine &_
852
   "Script Name: "& Request.ServerVariables("SCRIPT_NAME") & VBNewLine &_
853
   VBNewLine &_
854
   "-- Error Location --"& VBNewLine &_
855
   SSlocation & VBNewLine &_
856
   VBNewLine &_
857
   "-- Values --"& VBNewLine &_
858
   SSvalues & VBNewLine &_
859
   VBNewLine &_
860
   "-- Error Message --"& VBNewLine &_
861
   SSerror_message & VBNewLine
862
 
863
    '-- Raise this message at these places...
864
    '-- Create an event in the system event log
865
    '-- Send out an email
866
    Call Send_Event( eventType, SSmsg )
867
    Call Send_Email ( "Release Manager Notification", _
5357 dpurdie 868
                       ADMIN_EMAIL, _
5168 dpurdie 869
                       FAULT_EMAIL_LIST, _
870
                       "Release Manager Error", _
871
                       Replace(SSmsg,VBNewLine, "<br>"), _
872
                       null )
873
 
874
    '----------------------------------------
875
   Set WshNetwork = Nothing
876
End Sub
877
 
119 ghuddy 878
'-----------------------------------------------------------------------------------------------------------------------------
5168 dpurdie 879
'   Record Event in OS log
880
'   Create an event in the system event log
881
'
882
'   Args:   eventType       - one of enumEVENT_* ( ie:enumEVENT_ERROR)
883
'           SSmsg           - Message Body
884
Sub Send_Event( eventType, SSmsg )
885
    On Error Resume Next
886
    Dim WshShell
887
    Set WshShell = Server.CreateObject("WScript.Shell")
888
    WshShell.LogEvent eventType, SSmsg
889
    Set WshShell = Nothing
890
End Sub
891
 
892
'-----------------------------------------------------------------------------------------------------------------------------
119 ghuddy 893
Sub Iterate_UP_the_tree ( NNrtag_id, HHstart_with, HHresult )
129 ghuddy 894
   Dim rsTemp, Query_String
895
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 896
 
129 ghuddy 897
   seekPKGs = Join(HHstart_with.Keys, ",")
898
   If seekPKGs = "" Then seekPKGs = "-1"
899
   seekNOTpkgs = "-1"
119 ghuddy 900
 
129 ghuddy 901
   Do While seekPKGs <> "-1"
902
      Query_String = _
903
      " SELECT DISTINCT dep.pkg_id"&_
904
      "    FROM package_dependencies dep, release_content rel"&_
905
      "   WHERE rel.pv_id = dep.pv_id"&_
906
      "     AND rel.rtag_id = "& NNrtag_id &_
907
      "     AND dpkg_id IN ( "& seekPKGs &" ) "&_
908
      "     AND pkg_id NOT IN ( "& seekNOTpkgs &" )"
909
      '"     AND dep.dpv_id NOT IN ( SELECT iw.iw_id FROM ignore_warnings iw WHERE iw.rtag_id = "& NNrtag_id &" )"
910
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 911
 
129 ghuddy 912
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 913
 
129 ghuddy 914
      seekPKGs = "-1"
915
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
916
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("pkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("pkg_id")), ""
917
         seekPKGs = seekPKGs &","& rsTemp.Fields("pkg_id")
918
         rsTemp.MoveNext
919
      WEnd
119 ghuddy 920
 
129 ghuddy 921
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
922
   Loop
119 ghuddy 923
 
924
End Sub
925
'-----------------------------------------------------------------------------------------------------------------------------
129 ghuddy 926
Sub Iterate_DOWN_the_tree (   NNrtag_id, HHstart_with, HHresult )
927
   Dim rsTemp, Query_String
928
   Dim seekPKGs, seekNOTpkgs
119 ghuddy 929
 
129 ghuddy 930
   seekPKGs = Join(HHstart_with.Keys, ",")
931
   If seekPKGs = "" Then seekPKGs = "-1"
932
   seekNOTpkgs = "-1"
119 ghuddy 933
 
129 ghuddy 934
   Do While seekPKGs <> "-1"
935
      Query_String = _
936
      " SELECT DISTINCT dep.dpkg_id"&_
937
      "    FROM package_dependencies dep, release_content rel"&_
938
      "   WHERE rel.pv_id = dep.pv_id"&_
939
      "     AND rel.rtag_id = "& NNrtag_id &_
940
      "     AND pkg_id IN ( "& seekPKGs &" ) "&_
941
      "     AND dpkg_id NOT IN ( "& seekNOTpkgs &" )"
942
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
119 ghuddy 943
 
129 ghuddy 944
      If rsTemp.RecordCount < 1 Then Exit Do
119 ghuddy 945
 
129 ghuddy 946
      seekPKGs = "-1"
947
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
948
         If NOT HHresult.Exists(Cstr(rsTemp.Fields("dpkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("dpkg_id")), ""
949
         seekPKGs = seekPKGs &","& rsTemp.Fields("dpkg_id")
950
         rsTemp.MoveNext
951
      WEnd
119 ghuddy 952
 
129 ghuddy 953
      seekNOTpkgs = seekNOTpkgs &","& seekPKGs
954
   Loop
119 ghuddy 955
 
956
End Sub
957
'-----------------------------------------------------------------------------------------------------------------------------
958
Class TempSession
129 ghuddy 959
   Function Value ()
960
      Value = Session("RELEASEMANAGER_temp")
961
   End Function
119 ghuddy 962
 
129 ghuddy 963
   Sub Add ( SSstr )
964
      Session("RELEASEMANAGER_temp") = Session("RELEASEMANAGER_temp") & SSstr
965
   End Sub
119 ghuddy 966
 
129 ghuddy 967
   Sub Clean ()
968
      Session("RELEASEMANAGER_temp") = NULL
969
   End Sub
119 ghuddy 970
End Class
971
'-----------------------------------------------------------------------------------------------------------------------------
972
Sub DisplayInfo ( SSmsg, SSwidth )
129 ghuddy 973
   Dim msg
974
   If SSmsg = "" Then Exit Sub
119 ghuddy 975
 
129 ghuddy 976
   Select Case UCase( SSmsg )
977
   Case "ISSUES_IMPORTED"
978
      msg = "Import is complete. <br>Click on Close button if you are finished."
979
   Case "MAKE_OFFICIAL_WARNING"
980
      msg = "Note that making a package official will prevent any further change to it."
981
   Case "APPLY_LABEL_TO_ALL_WARNING"
982
      msg = "This will overwrite any existing labels on selected packages."
983
   Case "BLANK_LABEL_WARNING"
984
      msg = "Some dependencies in the export list above, do not have a label!"
985
   Case "PERSONAL_VIEW_NOT_SETUP"
986
      msg = "<span class='err_alert'><b>Your View is not setup!</b></span><span class='sublbox_txt'><br><br>Either set your view using My&nbsp;Account&nbsp;&gt;&nbsp;Views menu<br><br>OR<br><br>switch to Base view (Full view) by clicking on <img src='images/abtn_personal_view.gif' width='25' height='25' border='0'> icon above.</span>"
987
   Case "EMPTY_RELEASE_CONTENTS"
988
      msg = "<span class='err_alert'><b>Release content is empty!</b></span><span class='sublbox_txt'><br><br>Use + button to add packages to a release.</span>"
989
   Case "PKG_NAME_REQUIRED"
990
      msg = "<span class='err_alert'><b>Package Name required!</b></span><span class='sublbox_txt'><br>You are required to select at least one package name.</span>"
991
   Case "ADD_PATCH_WARNING"
992
      msg = "Note that patches cannot be used in your build dependencies."
993
   Case "NEW_PATCH_AVAILABLE"
994
      msg = "<b>New Patch is Required</b><br>One or more Build Dependencies have been patched.<br>Please click Add button to create patch for this package."
119 ghuddy 995
 
129 ghuddy 996
   Case "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES"
5142 dpurdie 997
      msg = "<b>Regenerating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."
129 ghuddy 998
   Case "FAILED_GENERATING_RELEASE_NOTES"
6610 dpurdie 999
      msg = "<span class='err_alert'><b>Failed generating release notes!</b></span>"
129 ghuddy 1000
   Case "GENERATING_RELEASE_NOTES"
1001
      msg = "<b>Generating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."
1002
   Case "NO_PREVIOUS_VERSION_RELEASE_NOTES"
1003
       msg = "<b>Previous Version is Unknown</b>!<br>Please specify previous version by clicking on 'Show Details...' above.<br>Release notes are not generated."
4705 dpurdie 1004
   Case "RELEASE_NOTES_PLACEHOLDER_PACKAGE"
5751 dpurdie 1005
       msg = "<b>Place Holding Package</b>!<br>This package is manually built, does not have a build standard and does not exist in dpkg_archive. It is used as a placeholder.<br>Release notes are not generated."
119 ghuddy 1006
 
129 ghuddy 1007
   Case "PACKAGE_FOUND_IN_OTHER_LOCATIONS"
1008
      msg = "This package is also found in other locations."
1009
   Case "DOC_NUMBER_NOTFOUND"
1010
      msg = "<span class='err_alert'>Document number "& Request("doc_num") &" does not correspond to any document!</span>"
1011
   Case "DOC_NUMBER_FOUND"
1012
      msg = "Document found. Click &quot;Import&quot; to link the document."
1013
   Case "UNIT_TEST_NOT_DONE"
6873 dpurdie 1014
      msg = "<b>Unit test is Not Done!</b><br><span href='_wform_reason_for_unit_test_not_done.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"'class='pointer txt_linked vixIframeDialog' title='Edit Reason'>Click here</span> to supply/edit reason."
129 ghuddy 1015
   Case "PACKAGE_NOT_PART_OF_RELEASE"
1016
      msg = "<b>Package is Not Part of This Release Anymore!</b><br>This package cannot be found in the list on the left-hand side.<br>You can use 'lookup:' on the left-hand side to find the package inside this release. "
119 ghuddy 1017
 
129 ghuddy 1018
   Case "NOT_FOUND_IN_PKG_ARCHIVE_FILE_GENERATE"
5172 dpurdie 1019
      msg = "<b>This package is not found in dpkg_archive!</b><br>Files and folders are not captured."
129 ghuddy 1020
   Case "NO_PRODUCT_FILES_CAPTURED"
1021
      msg = "<b>Files and Folders not found for this product!</b><br>Capture of product components can only be done during the build time."
119 ghuddy 1022
 
129 ghuddy 1023
   Case "MASS REF REFERENCE"
1024
      msg = "<span class='err_alert'><b>New Version can only be created in the Release's associated MASS REF: <a href=""dependencies.asp?pv_id="& pkgInfoHash.Item("pv_id") &"&rtag_id="& AssocMASSREFValue &""">"& pkgInfoHash.Item("pkg_name") &" "& pkgInfoHash.Item("pkg_version") &"</a></b></span>"
119 ghuddy 1025
 
129 ghuddy 1026
   Case "REPEAT_SCHEDULE_NOT_SELECTED"
1027
      msg = "<span class='err_alert'><b>YOU MUST SELECT A VALUE FOR REPEAT SCHEDULED DOWNTIME</b></span>"
119 ghuddy 1028
 
129 ghuddy 1029
   Case "PKG_NAME_INVALID"
1030
      msg = "<span class='err_alert'><b>Package Name Invalid!</b></span><span class='sublbox_txt'><br>This package name is invalid. Package names must only consist of alpha-numeric characters, underscores and dashes (A-Z 0-9 _ -), and cannot include spaces or any other symbols.</span>"
119 ghuddy 1031
 
129 ghuddy 1032
   Case "PKG_NAME_EXISTS"
1033
      msg = "<span class='err_alert'><b>Package Name Already Exists!</b></span><span class='sublbox_txt'><br>This package name already exists, please try again.</span>"
119 ghuddy 1034
 
129 ghuddy 1035
   End Select
119 ghuddy 1036
%>
1037
<table width="<%=SSwidth%>" border="0" cellspacing="0" cellpadding="1">
1038
  <tr>
1039
    <td background="images/bg_bage_dark.gif">
129 ghuddy 1040
     <table width="100%" border="0" cellspacing="0" cellpadding="3">
6874 dpurdie 1041
        <tr class='bg_help'>
1042
          <td width="1%" valign="top"><img src="images/i_qhelp.gif" width="16" height="16"></td>
1043
          <td width="100%" class="form_txt"><%=msg%></td>
119 ghuddy 1044
        </tr>
1045
      </table></td>
1046
  </tr>
1047
</table>
1048
<br>
1049
<%
1050
 
1051
End Sub
1052
'-----------------------------------------------------------------------------------------------------------------------------
1053
Sub Messenger ( sMessage, nMessageType, sWidth )
129 ghuddy 1054
   Dim msgTemplate, Img
119 ghuddy 1055
 
129 ghuddy 1056
   If (sMessage = "") OR IsNull(sMessage) Then Exit Sub
119 ghuddy 1057
 
129 ghuddy 1058
   Select Case CStr(nMessageType)
1059
      Case "1"
1060
         Img = "s_critical.gif"
1061
      Case "2"
1062
         Img = "s_warning.gif"
1063
      Case "3"
1064
         Img = "s_note.gif"
1065
      Case Else
1066
         Img = nMessageType
1067
   End Select
119 ghuddy 1068
 
1069
 
129 ghuddy 1070
   msgTemplate = ReadFile( APP_ROOT &"\scripts\message_style.html" )
1071
   msgTemplate = Replace( msgTemplate, "%WIDTH%", sWidth )
1072
   msgTemplate = Replace( msgTemplate, "%IMAGE%", Img )
1073
   msgTemplate = Replace( msgTemplate, "%MESSAGE%", sMessage )
119 ghuddy 1074
 
129 ghuddy 1075
   Response.write msgTemplate
119 ghuddy 1076
End Sub
1077
'-----------------------------------------------------------------------------------------------------------------------------
4203 dpurdie 1078
Function Default_Label ( SSpv_id, SSbuild_type, SSchange_type, SSpkg_name, SSpkg_version, SSv_ext )
3959 dpurdie 1079
    If SSbuild_type = "A" Then
4203 dpurdie 1080
        If  SSchange_type = "F" Then
1081
            Default_Label = SSpkg_name & "_" & SSpkg_version & ".WIP"
1082
        else
1083
            Default_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext) & ".WIP"
1084
        End If
3959 dpurdie 1085
    Else
4203 dpurdie 1086
        Default_Label = SSpkg_name & "_" & SSpkg_version
3959 dpurdie 1087
    End If
119 ghuddy 1088
End Function
1089
'-----------------------------------------------------------------------------------------------------------------------------
1090
Function Format_Version ( SSpkg_version, SSv_ext )
129 ghuddy 1091
   Dim tempArr, tempVersion, patchArr, seg, myVersion
1092
   myVersion = SSpkg_version
119 ghuddy 1093
 
129 ghuddy 1094
   If NOT IsNull(SSv_ext) Then
1095
      myVersion = Left ( myVersion, Len(myVersion) - Len(SSv_ext) )
1096
   End If
119 ghuddy 1097
 
129 ghuddy 1098
   tempArr = Split (myVersion, ".")
1099
   For Each seg In tempArr
1100
      If Len(seg) < 2 Then
1101
         ' single digit number
1102
         tempVersion = tempVersion &"0"& seg
119 ghuddy 1103
 
129 ghuddy 1104
      Else
1105
         seg = Replace(seg, "_", "-")   ' make sure that there is no _ in segment
1106
         If InStr( seg, "-" ) > 0 Then
1107
            ' patch version supplied
1108
            patchArr = Split(seg, "-")
1109
            If Len(patchArr(0)) < 2 Then
1110
               ' single digit number
1111
               tempVersion = tempVersion &"0"& patchArr(0) &"_0"& patchArr(1)
1112
            Else
1113
               ' double digit number
1114
               tempVersion = tempVersion & patchArr(0) &"_0"& patchArr(1)
1115
            End If
119 ghuddy 1116
 
129 ghuddy 1117
         Else
1118
            ' double digit no patch
1119
            tempVersion = tempVersion & seg
1120
         End If
119 ghuddy 1121
 
129 ghuddy 1122
      End If
119 ghuddy 1123
 
129 ghuddy 1124
   Next
119 ghuddy 1125
 
129 ghuddy 1126
   Format_Version = tempVersion
119 ghuddy 1127
End Function
1128
'-----------------------------------------------------------------------------------------------------------------------------
1129
Function DefineStateIcon ( NNpkg_state, CCdlocked, sIgnoreWarnings, cIsPatchIgnore, cBuildType, bForEnvironment )
5175 dpurdie 1130
 
1131
   If IsNull(NNpkg_state) Then
1132
	  DefineStateIcon = ""
1133
	  Exit Function
1134
   End If
119 ghuddy 1135
 
129 ghuddy 1136
   If NOT IsNull(sIgnoreWarnings) Then
1137
      '-- Ignore Warning is on
1138
      If IsNull(cIsPatchIgnore) Then
1139
         DefineStateIcon = enum_imgIgnoring
1140
      Else
1141
         DefineStateIcon = enum_imgPatchIgnoring
1142
      End If
119 ghuddy 1143
 
129 ghuddy 1144
   Else
1145
      Select Case CInt( NNpkg_state )
1146
         Case enumPKG_STATE_OK
183 brianf 1147
            If (CCdlocked = "N") OR (CCdlocked = "R") Then
129 ghuddy 1148
               DefineStateIcon = enum_imgBuilding
183 brianf 1149
            ElseIf (CCdlocked = "P") Then
1150
               DefineStateIcon = enum_imgPending
129 ghuddy 1151
            Else
1152
               DefineStateIcon = enum_imgBlank
1153
            End If
119 ghuddy 1154
 
129 ghuddy 1155
         Case enumPKG_STATE_MAJOR
1156
            DefineStateIcon = enum_imgCritical
119 ghuddy 1157
 
129 ghuddy 1158
         Case enumPKG_STATE_MINOR
1159
            DefineStateIcon = enum_imgWarning
119 ghuddy 1160
 
129 ghuddy 1161
         Case enumPKG_STATE_MAJOR_READY
1162
            DefineStateIcon = enum_imgCReady
119 ghuddy 1163
 
129 ghuddy 1164
         Case enumPKG_STATE_MINOR_READY
1165
            DefineStateIcon = enum_imgWReady
119 ghuddy 1166
 
129 ghuddy 1167
         Case enumPKG_NOT_FOUND
1168
            DefineStateIcon = enum_imgNotFound
119 ghuddy 1169
 
129 ghuddy 1170
         Case enumPKG_STATE_NEW_PATCH
1171
            DefineStateIcon = enum_imgPatchAvailable
119 ghuddy 1172
 
129 ghuddy 1173
         Case enumPKG_STATE_DEPRECATED
1174
            DefineStateIcon = enum_imgDeprecated
119 ghuddy 1175
 
129 ghuddy 1176
         Case enumPKG_STATE_DEPRECATED_DEPENDENT
1177
            DefineStateIcon = enum_imgDeprecatedDependent
119 ghuddy 1178
 
129 ghuddy 1179
         Case enumPKG_ADVISORY_RIPPLE
1180
            DefineStateIcon = enum_imgAR
119 ghuddy 1181
 
129 ghuddy 1182
         Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
1183
            DefineStateIcon = enum_imgARD
119 ghuddy 1184
 
131 ghuddy 1185
         Case enumPKG_PEGGED_VERSION
1186
            DefineStateIcon = enum_imgGreenPin
5080 dpurdie 1187
 
1188
         Case enumPKG_SDK_IMPORT
1189
            DefineStateIcon = enum_imgSdkImport
1190
 
1191
         Case enumPKG_SDK_DEPENDENCY
1192
            DefineStateIcon = enum_imgSdkDep
1193
 
5899 dpurdie 1194
         Case enumPKG_UNBUILDABLE
1195
            DefineStateIcon = enum_imgUnBuildable
1196
 
129 ghuddy 1197
      End Select
119 ghuddy 1198
 
129 ghuddy 1199
      If (NOT bForEnvironment) AND _
1200
         (cBuildType = "A") AND _
1201
         (CCdlocked <> "Y") AND _
1202
         (DefineStateIcon <> enum_imgBlank) AND _
1203
         (DefineStateIcon <> enum_imgBuilding)  AND  _
1204
         (DefineStateIcon <> enum_imgNotFound) OR _
1205
         ( Request("rtag_id") = ""  AND  Request("FRrtag_id") = "")  _
1206
         Then
119 ghuddy 1207
 
129 ghuddy 1208
         DefineStateIcon = ""
119 ghuddy 1209
 
129 ghuddy 1210
       End If
4390 dpurdie 1211
   End If
1212
End Function
1213
'-----------------------------------------------------------------------------------------------------------------------------
1214
Function DefineStateIconSimple ( NNpkg_state, CCdlocked)
119 ghuddy 1215
 
4390 dpurdie 1216
      DefineStateIconSimple = ""
1217
      Select Case CInt( NNpkg_state )
1218
         Case enumPKG_STATE_OK
1219
            If (CCdlocked = "R") OR (CCdlocked = "A") Then
1220
               DefineStateIconSimple = enum_imgBuilding
1221
            ElseIf (CCdlocked = "P") Then
1222
               DefineStateIconSimple = enum_imgPending
1223
            ElseIf (CCdlocked = "Y") Then
1224
               DefineStateIconSimple = enum_imgReleasedLocked
1225
            ElseIf (CCdlocked = "N") Then
1226
               DefineStateIconSimple = enum_imgReleasedUnlocked
1227
            Else
1228
               DefineStateIconSimple = enum_imgBlank
1229
            End If
119 ghuddy 1230
 
4390 dpurdie 1231
         Case enumPKG_STATE_MAJOR
1232
            DefineStateIconSimple = enum_imgCritical
119 ghuddy 1233
 
4390 dpurdie 1234
         Case enumPKG_STATE_MINOR
1235
            DefineStateIconSimple = enum_imgWarning
119 ghuddy 1236
 
4390 dpurdie 1237
         Case enumPKG_STATE_MAJOR_READY
1238
            DefineStateIconSimple = enum_imgCReady
1239
 
1240
         Case enumPKG_STATE_MINOR_READY
1241
            DefineStateIconSimple = enum_imgWReady
1242
 
1243
         Case enumPKG_NOT_FOUND
1244
            DefineStateIconSimple = enum_imgNotFound
1245
 
1246
         Case enumPKG_STATE_NEW_PATCH
1247
            DefineStateIconSimple = enum_imgPatchAvailable
1248
 
1249
         Case enumPKG_STATE_DEPRECATED
1250
            DefineStateIconSimple = enum_imgDeprecated
1251
 
1252
         Case enumPKG_STATE_DEPRECATED_DEPENDENT
1253
            DefineStateIconSimple = enum_imgDeprecatedDependent
1254
 
1255
         Case enumPKG_ADVISORY_RIPPLE
1256
            DefineStateIconSimple = enum_imgAR
1257
 
1258
         Case enumPKG_ADVISORY_RIPPLE_DEPENDENT
1259
            DefineStateIconSimple = enum_imgARD
1260
 
1261
         Case enumPKG_PEGGED_VERSION
1262
            DefineStateIconSimple = enum_imgGreenPin
5080 dpurdie 1263
 
1264
         Case enumPKG_SDK_IMPORT
5085 dpurdie 1265
            DefineStateIconSimple = enum_imgSdkImport
5080 dpurdie 1266
 
1267
         Case enumPKG_SDK_DEPENDENCY
5085 dpurdie 1268
            DefineStateIconSimple = enum_imgSdkDep
5080 dpurdie 1269
 
4390 dpurdie 1270
      End Select
119 ghuddy 1271
End Function
1272
'-----------------------------------------------------------------------------------------------------------------------------
1273
Function DefineStateSmallIcon ( NNpkg_state, CCdlocked )
129 ghuddy 1274
   Select Case CInt( NNpkg_state )
1275
   Case enumPKG_STATE_OK
1276
      If CCdlocked = "N" Then
1277
         DefineStateSmallIcon = enum_SMALL_imgBuilding
1278
      Else
1279
         DefineStateSmallIcon = enum_SMALL_imgOK
1280
      End If
119 ghuddy 1281
 
129 ghuddy 1282
   Case enumPKG_STATE_MAJOR
1283
      DefineStateSmallIcon = enum_SMALL_imgCritical
119 ghuddy 1284
 
129 ghuddy 1285
   Case enumPKG_STATE_MINOR
1286
      DefineStateSmallIcon = enum_SMALL_imgWarning
119 ghuddy 1287
 
129 ghuddy 1288
   Case enumPKG_STATE_MAJOR_READY
1289
      DefineStateSmallIcon = enum_SMALL_imgCReady
119 ghuddy 1290
 
129 ghuddy 1291
   Case enumPKG_STATE_MINOR_READY
1292
      DefineStateSmallIcon = enum_SMALL_imgWReady
119 ghuddy 1293
 
129 ghuddy 1294
   End Select
119 ghuddy 1295
End Function
1296
'-----------------------------------------------------------------------------------------------------------------------------
1297
Function PatchIcon ( cIsPatch, cIsPatchObsolete )
129 ghuddy 1298
   If IsNull(cIsPatch) Then
1299
      PatchIcon = "<img src='images/rex_images/ext_blank.gif' width='16' height='16' border='0' align='absmiddle'>"
1300
   Else
1301
      If IsNull(cIsPatchObsolete) Then
1302
         PatchIcon = "<img src='images/i_patch_small.gif' width='16' height='16' border='0' align='absmiddle' >"
1303
      Else
1304
         PatchIcon = "<img src='images/i_patch_small_obsolete.gif' width='16' height='16' border='0' align='absmiddle' title='Patch is obsolete'>"
1305
      End If
1306
   End If
119 ghuddy 1307
End Function
1308
'-----------------------------------------------------------------------------------------------------------------------------
1309
' Function that returns true of false if the item exists in the array
1310
'-----------------------------------------------------------------------------------------------------------------------------
1311
Function inArray(item, aItems)
129 ghuddy 1312
   Dim element
1313
   inArray = false
1314
   for each element in aItems
1315
      If element = item Then
1316
         inArray=true
1317
      End If
1318
   next
119 ghuddy 1319
End Function
1320
'-----------------------------------------------------------------------------------------------------------------------------
1321
Function ProgressBar ()
6877 dpurdie 1322
   ProgressBar = "<span name='divProgressBar' id='divProgressBar' style='visibility:hidden;'><img src='icons/i_processing.gif' width='79' height='14'></span>"
119 ghuddy 1323
End Function
1324
'-----------------------------------------------------------------------------------------------------------------------------
5268 dpurdie 1325
' Function:     GetCurrentParameters    
1326
' Description:  Setup some very basic data that is common to (almost) pages
1327
'               Uses Request("proj_id"), Request("rtag_id") and Request("pv_id")
1328
'
1329
'               Given an rtag_id it will determine the enclosing project
1330
'
6577 dpurdie 1331
' Returns:      nProjId     proj_id of rtag_id
1332
'               sProjName
5268 dpurdie 1333
'               nRtagId     rtag_id
6577 dpurdie 1334
'               sRtagName
5268 dpurdie 1335
'               nPvid       pv_id
1336
'   
1337
'
1338
'
6577 dpurdie 1339
Function GetCurrentParameters( nProjId, sProjName, nRtagId, sRtagName, nPvId )
129 ghuddy 1340
   Dim rsQry,query
119 ghuddy 1341
 
129 ghuddy 1342
   ' Set defaults
1343
   nProjId    = -1
6577 dpurdie 1344
   sProjName  = ""
129 ghuddy 1345
   nRtagId    = -1
6577 dpurdie 1346
   sRtagName  = ""
5177 dpurdie 1347
   nPvId      = -1
119 ghuddy 1348
 
6577 dpurdie 1349
   ' Set the ID values from the url
1350
   If Request("pv_id") <> ""   Then nPvId   = CDbl(Request("pv_id"))
1351
   If Request("proj_id") <> "" Then nProjId = CDbl(Request("proj_id"))
1352
   If Request("rtag_id") <> "" Then nRtagId = CDbl(Request("rtag_id"))
1353
 
1354
 
129 ghuddy 1355
   ' Get parameters from database
6577 dpurdie 1356
   OraDatabase.Parameters.Add "PROJ_ID",       Request("proj_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
1357
   OraDatabase.Parameters.Add "RTAG_ID",       Request("rtag_id"),   ORAPARM_INPUT, ORATYPE_VARCHAR2
119 ghuddy 1358
 
6577 dpurdie 1359
   If Request("rtag_id") <> "" Then
119 ghuddy 1360
 
6577 dpurdie 1361
      query = _
1362
      " SELECT rel.rtag_id, rel.rtag_name, proj.proj_id, proj.proj_name" &_
1363
      " FROM release_tags rel, projects proj"&_
1364
      " WHERE rel.proj_id = proj.proj_id AND rel.rtag_id = :RTAG_ID"
119 ghuddy 1365
 
6577 dpurdie 1366
      Set rsQry = OraDatabase.DbCreateDynaset( query, cint(0))
1367
      If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
1368
         sProjName = UCase(rsQry.Fields("proj_name"))
1369
         nProjId = CDbl(rsQry.Fields("proj_id")) 
1370
         sRtagName = rsQry.Fields("rtag_name")
1371
      End If
1372
      rsQry.Close()
1373
      Set rsQry = nothing
119 ghuddy 1374
 
6577 dpurdie 1375
   ElseIf Request("proj_id") <> "" Then
1376
      query = _
1377
      " SELECT proj.proj_name, proj.proj_id"&_
1378
      " FROM projects proj"&_
1379
      " WHERE proj.proj_id = :PROJ_ID"
119 ghuddy 1380
 
6577 dpurdie 1381
      Set rsQry = OraDatabase.DbCreateDynaset( query, cint(0))
1382
      If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
1383
         sProjName = UCase(rsQry.Fields("proj_name"))
1384
      End If
1385
      rsQry.Close()
1386
      Set rsQry = nothing
1387
 
129 ghuddy 1388
   End If
119 ghuddy 1389
 
6577 dpurdie 1390
   OraDatabase.Parameters.Remove "PROJ_ID"
1391
   OraDatabase.Parameters.Remove "RTAG_ID"
119 ghuddy 1392
 
1393
End Function
1394
'-----------------------------------------------------------------------------------------------------------------------------
1395
Function GetEnvName ( nEnvTab )
129 ghuddy 1396
   Select Case CInt( nEnvTab )
1397
      Case enumENVTAB_WORK_IN_PROGRESS
1398
         GetEnvName = "Work In Progress"
119 ghuddy 1399
 
129 ghuddy 1400
      Case enumENVTAB_PLANNED
1401
         GetEnvName = "Pending"
119 ghuddy 1402
 
129 ghuddy 1403
      Case enumENVTAB_RELEASED
1404
         GetEnvName = "Released"
119 ghuddy 1405
 
129 ghuddy 1406
   End Select
119 ghuddy 1407
 
1408
End Function
1409
'-----------------------------------------------------------------------------------------------------------------------------
1410
Function Title (rtagId)
6770 dpurdie 1411
   Dim rsQry
119 ghuddy 1412
 
129 ghuddy 1413
   If rtagId = "" Then
1414
      Title = "Release Manager"
1415
   Else
1416
      Set rsQry = OraDatabase.DbCreateDynaset( "SELECT RT.RTAG_NAME, P.PROJ_NAME FROM PROJECTS P, RELEASE_TAGS RT WHERE RT.PROJ_ID = P.PROJ_ID AND RT.RTAG_ID="& rtagId, ORADYN_DEFAULT )
1417
      Title = rsQry("proj_name")&">"&rsQry("rtag_name")
1418
      rsQry.Close()
1419
      Set rsQry = Nothing
1420
   End If
119 ghuddy 1421
 
1422
End Function
1423
'-------------------------------------------------------------------------------------
1424
Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id)
129 ghuddy 1425
   Dim Query_String, rsQry
119 ghuddy 1426
 
129 ghuddy 1427
   Query_String = _
1428
   "   SELECT * "&_
1429
   "   FROM planned pl, package_versions pv "&_
1430
   "   WHERE pl.rtag_id = "& NNrtag_id &_
1431
   "   AND pv.pv_id = pl.pv_id "&_
1432
   "   AND pv.dlocked = 'A' "&_
1433
   "   AND pv.pkg_id = (SELECT pkg_id "&_
1434
       "                  FROM package_versions "&_
1435
       "                 WHERE pv_id = "& NNpv_id &") "&_
1436
   "   AND pv.v_ext = (SELECT v_ext "&_
1437
   "                  FROM package_versions "&_
1438
       "                 WHERE pv_id = "& NNpv_id &")"
119 ghuddy 1439
 
1440
 
129 ghuddy 1441
   Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
119 ghuddy 1442
 
129 ghuddy 1443
   Check_Package_WIP_Already_Exists = rsQry.RecordCount
119 ghuddy 1444
 
129 ghuddy 1445
   rsQry.Close()
1446
   Set rsQry = Nothing
119 ghuddy 1447
End Function
1448
'-----------------------------------------------------------------------------------------------------------------------------
1449
Function ValidateCodeReviewURL ( sCodeReviewURL )
1450
  Dim isValid
1451
  Dim sTempBaseURL
1452
  Dim httpRegEx
129 ghuddy 1453
   Set httpRegEx = new RegExp
119 ghuddy 1454
 
129 ghuddy 1455
   httpRegEx.Pattern = "^https?:\/\/"
119 ghuddy 1456
 
129 ghuddy 1457
   ' Removes ending slash from project's base URL for ease of comparison.
1458
   sTempBaseURL = Left(baseURL, Len(baseURL)-1)
1459
   ' Removes the project's base URL from the URL specified (if it's present).
1460
   codeReviewURL = Replace(sCodeReviewURL, sTempBaseURL, "")
1461
   ' Removes the slash from the beginning of the resulting URL (if it's present).
1462
   If InStr(codeReviewURL, "/") = 1 Then
1463
     codeReviewURL = Replace(codeReviewURL, "/", "", 1, 1)
1464
   End If
119 ghuddy 1465
 
129 ghuddy 1466
   ' If the URL doesn't contain the http:// prefix, assume that it's correct.
1467
   If NOT httpRegEx.Test(codeReviewURL) AND Len(codeReviewURL) > 0 Then
1468
     isValid = True
1469
   Else
1470
     ' If the URL still contains the http:// prefix and is longer than the base
1471
     ' URL, assume that it is an invalid URL because of a differing base URL.
1472
     If Len(sCodeReviewURL) > Len(baseURL) Then
1473
       Response.Write("<script type='text/javascript'>alert('Incorrect Base URL\n\nMust start with project\'s base url (" & baseURL &") if full URL specified.')</script>")
1474
     Else
1475
     ' If the URL still contains the http:// prefix and is shorter than the base
1476
     ' URL, assume that it is incomplete.
1477
       Response.Write("<script type='text/javascript'>alert('Incomplete Code Review URL')</script>")
1478
     End If
1479
     ' Otherwise, the URL matches the base URL exactly, which is also invalid.
1480
     codeReviewURL = sCodeReviewURL
1481
     isValid = False
1482
   End If
1483
   ValidateCodeReviewURL = isValid
119 ghuddy 1484
End Function
1485
'----------------------------------------------------------------------------------------------------------------------------------------
1486
Function Is_Page_Editable ( cDlocked )
129 ghuddy 1487
   ' Editable if (   (unlocked OR rejected)
1488
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1489
   '              OR (released/locked AND EditNonCriticalInfoForLockedPackage allowed)
1490
   '             )
1491
   '             AND user logged in
5061 dpurdie 1492
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("EditNonCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
129 ghuddy 1493
      Is_Page_Editable = TRUE
1494
   Else
1495
      Is_Page_Editable = FALSE
1496
   End If
119 ghuddy 1497
End Function
1498
'----------------------------------------------------------------------------------------------------------------------------------------
1499
Function Is_Section_Editable ( )
129 ghuddy 1500
   If scriptName = "fixed_issues.asp" AND objAccessControl.UserLogedIn Then
1501
      Is_Section_Editable = TRUE
1502
   Else
1503
      Is_Section_Editable = FALSE
1504
   End If
119 ghuddy 1505
End Function
1506
'----------------------------------------------------------------------------------------------------------------------------------------
1507
Function Is_Critical_Section_Editable ( cDlocked )
129 ghuddy 1508
   ' Editable if (   (unlocked OR rejected)
1509
   '              OR ( NOT released/locked AND EditReleaseNotesInPending allowed)
1510
   '              OR (released/locked AND EditCriticalInfoForLockedPackage allowed)
1511
   '             )
1512
   '             AND user logged in
5061 dpurdie 1513
   If (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (canActionControlInProject("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (canActionControlInProject("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn Then
129 ghuddy 1514
      Is_Critical_Section_Editable = TRUE
1515
   Else
1516
      Is_Critical_Section_Editable = FALSE
1517
   End If
119 ghuddy 1518
End Function
1519
 
1520
'---------------------------------------------------------------
1521
' Function: getLastNonRippleVersionPVID
1522
'
1523
' Purpose: returns the last non-ripple version of the package
1524
'
1525
' Arguments: this_pv_id : string
1526
'
1527
' Notes: In the past, users used to manually perform ripple builds.
1528
'        This function does not detect those as ripples. It could be
1529
'        made to do so but it would not be reliable. For example, it
1530
'        could check to see if the word "ripple" appears in the
1531
'        comments field of the record set of the SWL query.  That
1532
'        might catch some of those records, but assumes the user
1533
'        wrote the wor ripple into the comments (reason for version).
1534
'
6480 dpurdie 1535
Function getLastNonRippleVersionPVID( this_pv_id, ByRef rippleBasePvid, ByRef lastNonRipplePvid )
129 ghuddy 1536
   Dim queryResult
1537
   Dim queryString
6480 dpurdie 1538
   Dim lastNonRipple
119 ghuddy 1539
 
5442 dpurdie 1540
   ' default return value in case don't find anything
1541
   getLastNonRippleVersionPVID = this_pv_id
6480 dpurdie 1542
   lastNonRipple = this_pv_id
119 ghuddy 1543
 
5503 dpurdie 1544
   ' Get a list of all previous non-ripple builds starting with the current pvid
5442 dpurdie 1545
   '    The first entry will be the base entry of the current ripple
1546
   '    The second entry will be the previous significant entry
1547
   queryString = _
5503 dpurdie 1548
        "SELECT pv_id,last_pv_id,pkg_version,v_ext,build_type " &_
1549
        "FROM " &_
1550
        "  (SELECT build_type,last_pv_id,pv_id,pkg_version,v_ext " &_
1551
        "  FROM " &_
1552
        "    (SELECT pv.build_type,pv.last_pv_id AS raw_last_pvid ,pv_id,pv.pkg_version,pv.v_ext,DECODE(pv.pv_id, pv.last_pv_id, NULL, pv.last_pv_id) AS last_pv_id " &_
1553
        "    FROM release_manager.package_versions pv " &_
1554
        "    WHERE pv.PKG_ID IN " &_
1555
        "      (SELECT pkg_id " &_
1556
        "      FROM release_manager.package_versions pv " &_
1557
        "      WHERE pv.pv_id = " & this_pv_id &_
1558
        "      ) " &_
1559
        "    ) " &_
1560
        "    START WITH pv_id                    = " & this_pv_id &_
1561
        "    CONNECT BY nocycle prior last_pv_id = pv_id " &_
1562
        "  ) " &_
1563
        "WHERE build_type != 'Y' "
119 ghuddy 1564
 
5503 dpurdie 1565
 
129 ghuddy 1566
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1567
 
5442 dpurdie 1568
   ' First entry - Base of the current ripple (may be myself)
1569
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1570
         getLastNonRippleVersionPVID = queryResult("pv_id")
6480 dpurdie 1571
         lastNonRipple = queryResult("pv_id")
119 ghuddy 1572
 
5442 dpurdie 1573
        ' Second entry - Previous Non Ripple Entry
1574
        queryResult.MoveNext
1575
        If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1576
            getLastNonRippleVersionPVID = queryResult("pv_id")
1577
        End If
129 ghuddy 1578
   End If
119 ghuddy 1579
 
129 ghuddy 1580
   queryResult.Close()
1581
   Set queryResult = nothing
6480 dpurdie 1582
 
1583
   If Not isNull(rippleBasePvid) Then rippleBasePvid = lastNonRipple 
1584
   If Not isNull(lastNonRipplePvid) Then lastNonRipplePvid = getLastNonRippleVersionPVID
1585
 
119 ghuddy 1586
End Function
1587
 
5442 dpurdie 1588
 
159 ghuddy 1589
Function getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate )
1590
   Dim queryResult
1591
   Dim queryString
1592
 
5442 dpurdie 1593
   ' default return value in case don't find anything
1594
   getLastNonRippleVersionPVIDLimitedByDate = this_pv_id
159 ghuddy 1595
 
5442 dpurdie 1596
   ' Get a list of all previous non-ripple builds starting with the cuurent pvid
1597
   '    The first entry will be the base entry of the current ripple
1598
   '    The second entry will be the previous significant entry
1599
   queryString = _
1600
            "SELECT last_pv_id, pv_id, pkg_version, v_ext,MODIFIED_STAMP " &_
1601
            "FROM " &_
1602
            "  (SELECT pv.build_type, pv.last_pv_id, pv_id, pv.pkg_version, pv.v_ext, pv.MODIFIED_STAMP" &_
1603
            "  FROM release_manager.package_versions pv" &_
1604
            "    START WITH pv.pv_id = " + this_pv_id &_
1605
            "    CONNECT BY nocycle prior pv.last_pv_id = pv.pv_id" &_
1606
            "  ) where build_type != 'Y' " &_
5639 dpurdie 1607
            "    AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DY DD-MON-YYYY')"
159 ghuddy 1608
 
1609
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1610
 
5442 dpurdie 1611
   ' First entry - Base of the current ripple (may be myself)
159 ghuddy 1612
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
5442 dpurdie 1613
         getLastNonRippleVersionPVIDLimitedByDate = queryResult("pv_id")
159 ghuddy 1614
 
5442 dpurdie 1615
        ' Second entry - Previous Non Ripple Entry
1616
        queryResult.MoveNext
1617
        If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1618
            getLastNonRippleVersionPVIDLimitedByDate = queryResult("pv_id")
1619
        End If
159 ghuddy 1620
   End If
1621
 
1622
   queryResult.Close()
1623
   Set queryResult = nothing
1624
End Function
1625
 
119 ghuddy 1626
'---------------------------------------------------------------
1627
' Function: getPreviousVersionPVID
1628
'
1629
' Purpose: returns the immediate predecssor version of the given
1630
'          package version
1631
'
1632
' Arguments: this_pv_id : string
1633
'
1634
' Notes:
1635
'
1636
Function getPreviousVersionPVID( this_pv_id )
129 ghuddy 1637
   Dim queryResult
1638
   Dim queryString
119 ghuddy 1639
 
129 ghuddy 1640
   getPreviousVersionPVID = ""
119 ghuddy 1641
 
157 ghuddy 1642
   queryString = "SELECT last_pv_id FROM package_versions WHERE pv_id = " & this_pv_id
119 ghuddy 1643
 
129 ghuddy 1644
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
119 ghuddy 1645
 
129 ghuddy 1646
    If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1647
      getPreviousVersionPVID = queryResult("last_pv_id")
1648
   End If
119 ghuddy 1649
 
129 ghuddy 1650
   queryResult.Close()
1651
   Set queryResult = nothing
119 ghuddy 1652
 
1653
End Function
1654
 
1655
'---------------------------------------------------------------
129 ghuddy 1656
' Function: getLastSignificantPVID
1657
'
1658
' Purpose: Returns the last significant (man-made) version (PV_ID) that
1659
'          is a predecessor to the specified pv_id
1660
'
1661
' Arguments: pv_id       : Uniquely identifies this package version
1662
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1663
' Notes:
1664
'
1665
Function getLastSignificantPVID (pv_id, last_pv_id)
1666
 
1667
   getLastSignificantPVID = ""
1668
 
1669
   If( (NOT IsNull(last_pv_id)) AND (last_pv_id <> pv_id) ) Then
1670
 
1671
      ' Get the pv_id for the current version, and if necessary, work back through any ripple versions as necessary
1672
      ' to get a non-ripple version ancestor
6480 dpurdie 1673
        pv_id = getLastNonRippleVersionPVID( pv_id , NULL, NULL)
5442 dpurdie 1674
        If (pv_id <> "") Then
129 ghuddy 1675
            getLastSignificantPVID = pv_id
5442 dpurdie 1676
        End If
129 ghuddy 1677
   End If
1678
 
1679
End Function
6480 dpurdie 1680
 
129 ghuddy 1681
'---------------------------------------------------------------
6480 dpurdie 1682
' Function: getLastSignificantVersions
1683
'
1684
' Purpose: Returns the last significant (man-made) version (PV_ID) that
1685
'          is a predecessor to the specified pv_id
1686
'
1687
' Arguments: pv_id              : Uniquely identifies this package version
1688
'            RefRippleBase      : Ref to store riple base PVID
1689
'            RefPrevNonRipple   : Ref to store previous non ripple PVID
1690
' Notes:
1691
'
1692
Sub getLastSignificantVersions (pv_id, ByRef RefRippleBase, ByRef RefPrevNonRipple)
1693
    Dim rv
1694
        rv = getLastNonRippleVersionPVID( pv_id , RefRippleBase, RefPrevNonRipple)
1695
End Sub
1696
 
1697
'---------------------------------------------------------------
129 ghuddy 1698
' Function: get_Pkg_Label
1699
'
1700
' Purpose: Returns the package label for the specified pv_id
1701
'
1702
' Arguments: pv_id       : Uniquely identifies this package version
1703
'
1704
Function get_Pkg_Label (pv_id)
1705
   Dim queryResult
1706
   Dim queryString
1707
 
1708
   get_Pkg_Label = ""
1709
 
1710
   ' Get the package label from the package versions table
1711
   queryString = "SELECT pkg_label FROM package_versions WHERE pv_id = " & pv_id
1712
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1713
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1714
      get_Pkg_Label = queryResult("pkg_label")
1715
   End If
1716
   queryResult.Close()
1717
   Set queryResult = nothing
1718
End Function
1719
'---------------------------------------------------------------
1720
' Function: get_Src_Path
1721
'
1722
' Purpose: Returns the source path for the specified pv_id
1723
'
1724
' Arguments: pv_id       : Uniquely identifies this package version
1725
'
1726
Function get_Src_Path (pv_id)
1727
   Dim queryResult
1728
   Dim queryString
1729
 
1730
   get_Src_Path = ""
1731
 
1732
   ' Get the source path from package versions table
1733
   queryString = "SELECT src_path FROM package_versions WHERE pv_id = " & pv_id
1734
   Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))
1735
   If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then
1736
      get_Src_Path = queryResult("src_path")
1737
   End If
1738
   queryResult.Close()
1739
   Set queryResult = nothing
1740
End Function
1741
 
1742
'---------------------------------------------------------------
119 ghuddy 1743
' Function: getOldLabel
1744
'
1745
' Purpose: Returns the previous label; if none then returns empty string
1746
'
1747
'          Since this operation is designed to fulfil the generation of
1748
'          diff commands, there is no point in considering ripple
1749
'          versions, since the only differences we find there are in
1750
'          the build.pl files (for example). So, this function uses
1751
'          some underlying methods that ignore ripple built versions
1752
'          therefore concentrating on versions that someone has manually
1753
'          gone and labelled, presumably because they changed some
1754
'          source file other than build.pl.
1755
'
1756
' Arguments: pv_id       : Uniquely identifies this package version
1757
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1758
' Notes:
1759
'
1760
Function getOldLabel (pv_id, last_pv_id)
129 ghuddy 1761
   Dim lastSignificantPVID
119 ghuddy 1762
 
129 ghuddy 1763
   getOldLabel = ""
119 ghuddy 1764
 
129 ghuddy 1765
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1766
   If (lastSignificantPVID <> "") Then
1767
      getOldLabel = get_Pkg_Label(lastSignificantPVID)
1768
   End If
1769
End Function
1770
'---------------------------------------------------------------
1771
' Function: getOldSrcPath
1772
'
1773
' Purpose: Returns the previous src path; if none then returns empty string
1774
'
1775
'          Since this operation is designed to fulfil the generation of
1776
'          diff commands, there is no point in considering ripple
1777
'          versions, since the only differences we find there are in
1778
'          the build.pl files (for example). So, this function uses
1779
'          some underlying methods that ignore ripple built versions
1780
'          therefore concentrating on versions that someone has manually
1781
'          gone and labelled, presumably because they changed some
1782
'          source file other than build.pl.
1783
'
1784
'          NOTE: With SubVersion, the src_path column in the package_versions
1785
'                table will be used to hold the Subversion tag. This function
1786
'                will therefore be used mostly when a package version is
1787
'                controlled under subversion.
1788
'
1789
' Arguments: pv_id       : Uniquely identifies this package version
1790
'            last_pv_id  : Uniquely identifies the predecssor of this package version
1791
' Notes:
1792
'
1793
Function getOldSrcPath (pv_id, last_pv_id)
1794
   Dim lastSignificantPVID
119 ghuddy 1795
 
129 ghuddy 1796
   getOldSrcPath = ""
119 ghuddy 1797
 
129 ghuddy 1798
   lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)
1799
   If (lastSignificantPVID <> "") Then
1800
      getOldSrcPath = get_Src_Path(lastSignificantPVID)
1801
   End If
1802
End Function
1803
'----------------------------------------------------------------------------------------------------------------------
1804
Sub vcs_info_from_vcs_tag( nVcs_tag, ByRef objDetails )
1805
   Dim rsTemp, Query_String
119 ghuddy 1806
 
129 ghuddy 1807
   Query_String = " SELECT * FROM vcs_type WHERE tag = '"& nVcs_tag &"'"
1808
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1809
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1810
      objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1811
      objDetails.Item("vcs_name") = rsTemp("name")
1812
      objDetails.Item("vcs_tag") = rsTemp("tag")
1813
   Else
141 ghuddy 1814
      Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS tag : " & nVcs_tag )
129 ghuddy 1815
   End If
1816
   rsTemp.Close()
1817
   set rsTemp = nothing
1818
End Sub
1819
'----------------------------------------------------------------------------------------------------------------------
1820
Sub vcs_info_from_vcs_type_id( nVcs_type_id, ByRef objDetails )
1821
   Dim rsTemp, Query_String
1822
 
1823
   If NOT IsNull(nVcs_type_id) Then
1824
      Query_String = " SELECT * FROM vcs_type WHERE vcs_type_id = "& nVcs_type_id
1825
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1826
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1827
         objDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")
1828
         objDetails.Item("vcs_name") = rsTemp("name")
1829
         objDetails.Item("vcs_tag") = rsTemp("tag")
1830
      Else
141 ghuddy 1831
         Call RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS type ID : " & nVcs_type_id )
129 ghuddy 1832
      End If
1833
      rsTemp.Close()
1834
      set rsTemp = nothing
1835
   Else
3616 dpurdie 1836
      ' default to returning Subversion info, assuming it exists in the data
1837
      Call vcs_info_from_vcs_tag( enum_VCS_SUBVERSION_TAG, objDetails )
129 ghuddy 1838
   End If
1839
End Sub
1840
'----------------------------------------------------------------------------------------------------------------------
137 ghuddy 1841
Sub get_vcs_info_for_package( nPkgLabel, nBuildType, nVcsTypeId, nDLocked, ByRef objDetails )
129 ghuddy 1842
   ' lots of patch versions exist with N/A as their pkg_label and null as vcs_type_id. These are all uncontrolled
1843
   ' packages published directly into dpkg_archive with no controlled source under clearcase, so we want to treat
1844
   ' them as uncontrolled if possible.
137 ghuddy 1845
   If nDLocked = "Y" AND ((nPkgLabel = "N/A") OR IsNull(nPkgLabel)) AND nBuildType = "M" AND IsNull(nVcsTypeId) Then
129 ghuddy 1846
      Call vcs_info_from_vcs_tag( enum_VCS_UNCONTROLLED_TAG, objDetails )
1847
   Else
1848
      ' Otherwise, try and decode the VCS from the package's vcs_type_id entry from the package version table
1849
      ' NOTE: A null vcs_type_id entry will default to ClearCase. That is all we have been using up til now so
1850
      ' it should be safe.
1851
      Call vcs_info_from_vcs_type_id( nVcsTypeId, objDetails )
1852
   End If
1853
End Sub
1854
'----------------------------------------------------------------------------------------------------------------------
1855
Sub get_vcs_info_for_pv_id( nPv_id, ByRef objDetails )
1856
   Dim rsTemp, Query_String
1857
 
1858
   Query_String = _
137 ghuddy 1859
   " SELECT pv.pkg_label, pv.build_type, pv.vcs_type_id, pv.dlocked "&_
129 ghuddy 1860
   "   FROM PACKAGE_VERSIONS pv"&_
1861
   "  WHERE pv.pv_id = "& nPv_id
1862
 
1863
   Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1864
   If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
137 ghuddy 1865
      Call get_vcs_info_for_package( rsTemp("pkg_label"), rsTemp("build_type"), rsTemp("vcs_type_id"), rsTemp("dlocked"), objDetails )
129 ghuddy 1866
   Else
1867
      Call RaiseMsg(enum_MSG_ERROR, "PV_ID (" & nPv_id & ") Not Found")
1868
   End If
1869
   rsTemp.Close()
1870
   set rsTemp = nothing
1871
End Sub
1872
'----------------------------------------------------------------------------------------------------------------------
1873
Function get_vcs_tag( nPv_id )
1874
   Dim tempVcsInfoCollector
1875
   Set tempVcsInfoCollector = CreateObject("Scripting.Dictionary")
1876
 
1877
   Call get_vcs_info_for_pv_id( nPv_id, tempVcsInfoCollector )
1878
   get_vcs_tag = tempVcsInfoCollector.Item("vcs_tag")
1879
 
1880
   Set tempVcsInfoCollector = nothing
119 ghuddy 1881
End Function
129 ghuddy 1882
'----------------------------------------------------------------------------------------------------------------------
143 ghuddy 1883
Function isInDoNotRippleTable( NNrtag_id, NNpv_id )
1884
   Dim rsTemp, Query_String
119 ghuddy 1885
 
143 ghuddy 1886
   isInDoNotRippleTable = FALSE
1887
 
1888
   If NNrtag_id <> "" AND NNpv_id <> "" Then
1889
      Query_String = " SELECT dnr.pv_id FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID ="& NNrtag_id &" AND dnr.PV_ID ="& NNpv_id
1890
 
1891
      Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
1892
      If rsTemp.RecordCount <> 0  Then
1893
         isInDoNotRippleTable = TRUE
1894
      End If
1895
      rsTemp.Close()
1896
      set rsTemp = nothing
1897
   End If
1898
End Function
145 ghuddy 1899
'----------------------------------------------------------------------------------------------------------------------
6176 dpurdie 1900
' Number of active (Not paused, Not Disabled) daemon configured for a given Release 
1901
Function activeDaemonCount ( NNrtag_id )
1902
   Dim rsTemp, Query_String
1903
 
1904
   activeDaemonCount = 0
1905
 
1906
   If NNrtag_id <> ""  Then
6873 dpurdie 1907
      Query_String = "SELECT count(*) as Count FROM release_config rc, run_level rl WHERE rc.rtag_id = " & NNrtag_id &  " AND rc.RCON_ID = rl.rcon_id(+) AND NVL(rl.pause, 0 ) = 0"
6176 dpurdie 1908
 
1909
      Set rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))
1910
      If rsTemp.RecordCount <> 0  Then
1911
         activeDaemonCount = rsTemp("Count")
1912
      End If
1913
      rsTemp.Close()
1914
      set rsTemp = nothing
1915
   End If
1916
 
1917
End Function
1918
'----------------------------------------------------------------------------------------------------------------------
145 ghuddy 1919
Function pv_id_exists( nPv_id )
1920
   Dim rsTemp, Query_String
143 ghuddy 1921
 
145 ghuddy 1922
   If NOT IsNull( nPv_id ) AND nPv_id <> "" Then
1923
      Query_String = _
1924
      " SELECT pv.pv_id "&_
1925
      "   FROM PACKAGE_VERSIONS pv"&_
1926
      "  WHERE pv.pv_id = "& nPv_id
1927
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1928
      If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Then
1929
         pv_id_exists = TRUE
1930
      Else
1931
         pv_id_exists = FALSE
1932
      End If
1933
      rsTemp.Close()
1934
      set rsTemp = nothing
1935
   Else
1936
      pv_id_exists = FALSE
1937
   End If
1938
End Function
1939
'----------------------------------------------------------------------------------------------------------------------
1940
Function is_daemon_enabled_release( NNrtag_id, defaultReturnValue )
1941
   Dim rsTemp, Query_String
143 ghuddy 1942
 
145 ghuddy 1943
   If NOT IsNull( NNrtag_id ) AND NNrtag_id <> "" Then
143 ghuddy 1944
 
145 ghuddy 1945
      Query_String = _
4293 dpurdie 1946
      " SELECT rc.bmcon_id "&_
145 ghuddy 1947
      "   FROM RELEASE_CONFIG rc"&_
1948
      "  WHERE rc.rtag_id = "& NNrtag_id
1949
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1950
 
1951
      is_daemon_enabled_release = FALSE
1952
      While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF) AND (is_daemon_enabled_release = FALSE))
4293 dpurdie 1953
         If (NOT IsNull(rsTemp("bmcon_id"))) AND (rsTemp("bmcon_id") <> "") Then
145 ghuddy 1954
            is_daemon_enabled_release = TRUE
1955
         End If
1956
         rsTemp.MoveNext
1957
      WEnd
1958
 
1959
      rsTemp.Close()
1960
      set rsTemp = nothing
1961
   Else
1962
      is_daemon_enabled_release = defaultReturnValue
1963
   End If
1964
End Function
147 ghuddy 1965
'--------------------------------------------------------------------------------------------------------------------------
1966
' Convert release state into a meaningful string
1967
Function Get_Official( nOfficial )
1968
   If nOfficial = "N" Then
1969
      Get_Official = "Open"
1970
   ElseIf nOfficial = "A" Then
1971
      Get_Official = "Archive"
1972
   ElseIf nOfficial = "C" Then
1973
      Get_Official = "CCB"
1974
   ElseIf nOfficial = "R" Then
1975
      Get_Official = "Restricted"
1976
   ElseIf nOfficial = "Y" Then
1977
      Get_Official = "Closed"
5623 dpurdie 1978
   ElseIf nOfficial = "P" Then
1979
      Get_Official = "Preserved"
147 ghuddy 1980
   Else
1981
      Get_Official = "?"
1982
   End If
1983
End Function
151 ghuddy 1984
'-----------------------------------------------------------------------------------------------------------------------------
1985
Function Get_Pkg_Id_For_Pv_Id ( NNpv_id )
1986
   Dim rsTemp, Query_String
145 ghuddy 1987
 
151 ghuddy 1988
   Get_Pkg_Id_For_Pv_Id = ""
145 ghuddy 1989
 
151 ghuddy 1990
   If NOT IsNull(NNpv_id) AND NNpv_id <> "" Then
1991
      Query_String = _
1992
      "SELECT pkg_id FROM package_versions WHERE pv_id = "& NNpv_id
1993
 
1994
      Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))
1995
 
1996
      If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
1997
         Get_Pkg_Id_For_Pv_Id = rsTemp("pkg_id")
1998
      End If
1999
      rsTemp.Close
2000
      Set rsTemp = nothing
2001
   End If
2002
 
2003
End Function
2004
 
171 brianf 2005
'-----------------------------------------------------------------------------------------------------------------------------
161 iaugusti 2006
Function iif(bFlag, sTrueStr, sFalseStr)
2007
  if bFlag then
2008
    iif = sTrueStr
2009
  else 
2010
    iif = sFalseStr
2011
  end if
2012
End Function
151 ghuddy 2013
 
5939 dpurdie 2014
'-----------------------------------------------------------------------------------------------------------------------------
2015
Function EmptyToNull (sVal)
5952 dpurdie 2016
    If isNull(sVal) Then
2017
        EmptyToNull = NULL
2018
    ElseIf sval <> "" Then
5939 dpurdie 2019
        EmptyToNull = sVal
2020
    Else
2021
        EmptyToNull = NULL
2022
    End If
2023
End Function
2024
 
5964 dpurdie 2025
'-----------------------------------------------------------------------------------------------------------------------------
2026
Function EmptyToNullString ( sName, sVal)
2027
    If isNull(sVal) Then
2028
        EmptyToNullString = sName & " is NULL"
2029
    ElseIf sval <> "" Then
2030
        EmptyToNullString = sName & "='" & sVal & "'"
2031
    Else
2032
        EmptyToNullString = sName & " is NULL"
2033
    End If
2034
End Function
2035
 
171 brianf 2036
'--------------------------------------------------------------------------------------------------------------------------
2037
' Sets the state of all build daemons of the specified release
2038
Sub SetDaemonStates (artag_id,astate)
2039
	On Error Resume Next
2040
	OraDatabase.Parameters.Add "RTAG_ID", 			artag_id, 	ORAPARM_INPUT, ORATYPE_NUMBER 
2041
	OraDatabase.Parameters.Add "NSTATE", 			astate, 	ORAPARM_INPUT, ORATYPE_NUMBER 
2042
 
2043
	objEH.TryORA ( OraSession )
2044
 
2045
	OraDatabase.ExecuteSQL _
2046
        "BEGIN PK_BUILDAPI.SET_DAEMON_STATES(:RTAG_ID,:NSTATE);   END;"
2047
 
2048
	objEH.CatchORA ( OraSession )
2049
 
5952 dpurdie 2050
	OraDatabase.Parameters.Remove "RTAG_ID"
171 brianf 2051
	OraDatabase.Parameters.Remove "NSTATE"	
2052
End Sub
2053
 
183 brianf 2054
'----------------------------------------------
2055
'Returns true if the specified package version exists in the specified table
2056
Function PackageExists(RtagId, pvId, stable)
2057
  Dim rsTemp
2058
  Dim sqry
185 brianf 2059
  If RtagId = "" Then
2060
    PackageExists = False
2061
  Else
2062
    sqry = "SELECT * FROM " & stable & " WHERE rtag_id = " & RtagId & " AND pv_id = " & pvId
2063
    Set rsTemp = OraDatabase.DbCreateDynaset(sqry,CInt(0))
2064
    PackageExists = rsTemp.RecordCount > 0  
2065
    rsTemp.Close()
2066
    Set rsTemp = Nothing
2067
  End If
183 brianf 2068
End Function
2069
 
4710 dpurdie 2070
'----------------------------------------------
2071
' Test that specified package/version exists in dpkg_archive
5245 dpurdie 2072
' Can also test presence of the archive
4710 dpurdie 2073
'   Use http interface as it does not require authetication
2074
Function testArchiveAccessPkg(pkgName, pkgVersion)
2075
  Dim oXMLHTTP
2076
  Dim testUrl
2077
 
2078
  testArchiveAccessPkg = False
6146 dpurdie 2079
  testUrl = HTTP_PKG_ARCHIVE
2080
 
2081
  testUrl = testUrl & "/cgi-bin/testPackage.pl"
4710 dpurdie 2082
  If pkgName <> "" Then
6146 dpurdie 2083
      testUrl = testUrl & "?path=" &  pkgName & "/" & pkgVersion
4710 dpurdie 2084
  End If
2085
  Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
2086
 
4756 dpurdie 2087
  ' Use error handling in case dpkg_archive is not available
4710 dpurdie 2088
  ' Use HEAD to test existence
4756 dpurdie 2089
  Err.Clear
2090
  On Error Resume Next
6146 dpurdie 2091
  oXMLHTTP.Open "GET", testUrl, False
4710 dpurdie 2092
  oXMLHTTP.Send
2093
 
4756 dpurdie 2094
  ' Do not combine the next two If statments - it will not work
2095
  If Err.Number = 0  Then
2096
    If oXMLHTTP.Status = 200 Then 
6146 dpurdie 2097
        If InStr(1,oXMLHTTP.responseText, "::FOUND::", 1) = 1 Then
2098
            testArchiveAccessPkg = True
2099
        End If
4756 dpurdie 2100
    End If
4710 dpurdie 2101
  End If
6146 dpurdie 2102
 
4756 dpurdie 2103
  On Error Goto 0
4710 dpurdie 2104
End Function
5008 dpurdie 2105
 
2106
'--------------------------------------------------------------------------------------------------------------------------
2107
' Like Cint, but handles NULL by replacing it with a default value
2108
Function NiceInt( val, def)
5045 dpurdie 2109
   If val <> ""  AND IsNumeric(val) Then
5008 dpurdie 2110
       NiceInt = CInt(val)
2111
   Else
2112
       NiceInt = def
2113
   End If
2114
End Function
5143 dpurdie 2115
 
2116
'--------------------------------------------------------------------------------------------------------------------------
6627 dpurdie 2117
' Like CLng, but handles NULL by replacing it with a default value
2118
Function NiceCLng( val, def)
2119
   If val <> ""  AND IsNumeric(val) Then
2120
       NiceCLng = CLng(val)
2121
   Else
2122
       NiceCLng = def
2123
   End If
2124
End Function
6786 dpurdie 2125
 
6627 dpurdie 2126
'--------------------------------------------------------------------------------------------------------------------------
6786 dpurdie 2127
' Convert a duration(seconds) into days,hours and seconds. eg 10d 3h 13m 15s
2128
Function NiceDuration(duration)
2129
    NiceDuration = ""
2130
    Dim joiner : joiner = ""
2131
    Dim unit
2132
    If duration > (60 * 60 * 24) Then
2133
        unit = Int(duration / (60 * 60 * 24))
2134
        duration = duration MOD (60 * 60 * 24) 
2135
        NiceDuration = NiceDuration & joiner & unit & "d"
2136
        joiner = " "
2137
    End If
2138
 
2139
    If duration > (60 * 60) Then
2140
        unit = Int(duration / (60 * 60))
2141
        duration = duration MOD (60 * 60) 
2142
        NiceDuration = NiceDuration & joiner & unit & "h"
2143
        joiner = " "
2144
    End If
2145
 
2146
        If duration > (60) Then
2147
        unit = Int(duration / (60))
2148
        duration = duration MOD (60) 
2149
        NiceDuration = NiceDuration & joiner & unit & "m"
2150
        joiner = " "
2151
    End If
2152
 
2153
    NiceDuration = NiceDuration & joiner & duration & "s"
2154
End Function
2155
 
2156
'--------------------------------------------------------------------------------------------------------------------------
5143 dpurdie 2157
'   Test if package can be added to a release
2158
'       Really tests if a a package of this packages alias can be
2159
'       manipulated in this release
2160
'   True: Package alias can be added/replaced in release
2161
Function canAddToRelease ( nRtagId, nPvId )
5156 dpurdie 2162
 
2163
    ' If we don't enough parameters then assume we can add package
2164
    If nRtagId = "" OR nPvId = "" Then
2165
        canAddToRelease = TRUE
2166
        Exit Function
2167
    End If
2168
 
5143 dpurdie 2169
	On Error Resume Next
2170
	OraDatabase.Parameters.Add "RTAG_ID", 			nRtagId, 	ORAPARM_INPUT, ORATYPE_NUMBER 
2171
	OraDatabase.Parameters.Add "PV_ID", 			nPvId, 	    ORAPARM_INPUT, ORATYPE_NUMBER 
2172
	OraDatabase.Parameters.Add "RETURN_CODE", 		null, 	    ORAPARM_OUTPUT, ORATYPE_NUMBER 
2173
 
2174
	objEH.TryORA ( OraSession )
2175
 
2176
	OraDatabase.ExecuteSQL _
2177
        "BEGIN :RETURN_CODE := PK_RELEASE.CAN_ADD_PKG_TO_RELEASE(:RTAG_ID,:PV_ID);   END;"
2178
 
2179
    If CInt(OraDatabase.Parameters("RETURN_CODE").Value) = 0 Then
2180
        canAddToRelease = FALSE
2181
    Else
2182
        canAddToRelease = TRUE
2183
    End If
2184
 
2185
	objEH.CatchORA ( OraSession )
2186
 
2187
	OraDatabase.Parameters.Remove "RETURN_CODE"
2188
	OraDatabase.Parameters.Remove "RTAG_ID"
2189
	OraDatabase.Parameters.Remove "PV_ID"	
2190
End Function
5177 dpurdie 2191
'--------------------------------------------------------------------------------------------------------------------------
2192
'   Returns either the value of the Request('tag') or the default value       
2193
Function RequestDefault(stag, sdefault)
2194
   If Request(stag) <> "" Then
2195
       RequestDefault = Request(stag)
2196
   Else 
2197
       RequestDefault = sdefault
2198
   End If
2199
End Function
5178 dpurdie 2200
'--------------------------------------------------------------------------------------------------------------------------
2201
'   Data structure to assist in the Release Mode Transition Check
2202
'   Tuples (FromCondition, ToCondition)  '-' == Always
2203
'   Order matches ReleaseModeAccessCheck
2204
'
2205
Dim RMTD_Data
2206
RMTD_Data = Array(Array("-"                        ,"-"), _
2207
                  Array("ChangeModeFromRestrictive","-"), _
2208
                  Array("ChangeModeFromRestrictive","-"), _
2209
                  Array("ChangeModeFromClosed"     ,"ChangeModeToClosed"), _
2210
                  Array("ChangeModeFromClosed"     ,"ChangeModeToPreserved"), _
2211
                  Array("ChangeModeFromArchived"   ,"ChangeModeToArchived") _
2212
                  )
2213
'-------------------------------------------------
2214
' Function: ReleaseMode2Index    
2215
' Description: Convert a enumDB_RELEASE_IN_*** into an index into the above array
2216
'
2217
Function ReleaseMode2Index( eReleaseMode )
2218
    If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE Then
2219
        ReleaseMode2Index = 0
2220
    ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE Then
2221
        ReleaseMode2Index = 1
2222
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE Then
2223
        ReleaseMode2Index = 2
2224
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
2225
        ReleaseMode2Index = 3
2226
    ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
2227
        ReleaseMode2Index = 4
2228
    ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
2229
        ReleaseMode2Index = 5
2230
    Else
2231
        ReleaseMode2Index = -1
2232
    End If
2233
End Function
2234
 
2235
'-------------------------------------------------
2236
' Function:     ReleaseModeAccessCheck    
2237
' Description:  Determine if the user can change the Release Mode
2238
'               from - Start at this Release Mode
2239
'               to   - Can the user transition to this mode
2240
' Returns:      True - yes they can
2241
'
2242
Function ReleaseModeAccessCheck( from, toMode )
2243
    Dim fromIndex : fromIndex = ReleaseMode2Index(from)
2244
    Dim toIndex   : toIndex = ReleaseMode2Index(toMode)
2245
    ReleaseModeAccessCheck = False
2246
 
2247
    ' Can't Change to same mode
2248
    If from = toMode Then
2249
        Exit Function
2250
    End If
2251
 
2252
    On Error Resume Next
2253
    Dim fromAccess : fromAccess = ""
2254
    Dim toAccess   : toAccess = ""
2255
 
2256
    ' Get access type from table
2257
    '   ""      - No access (internal error)
2258
    '   "-"     - All Access allowed (if user is logged in )
2259
    '   Else    - Name of a canActionControlInProject
2260
    fromAccess = RMTD_Data(fromIndex)(0)
2261
    toAccess = RMTD_Data(toIndex)(1)
2262
 
2263
    ' Check From Condition
2264
    If fromAccess = "-" Then
2265
        ReleaseModeAccessCheck = canActionInProject()
2266
    ElseIf fromAccess <> "" Then
2267
        ReleaseModeAccessCheck = canActionControlInProject(fromAccess)
2268
    End If
2269
 
2270
    If NOT ReleaseModeAccessCheck  Then
2271
        Exit Function
2272
    End If
2273
 
2274
    ' Check to Condition
2275
    If toAccess = "-" Then
2276
        ReleaseModeAccessCheck = canActionInProject()
2277
    ElseIf toAccess <> "" Then 
2278
        ReleaseModeAccessCheck = canActionControlInProject(toAccess)
2279
    End If
2280
 
2281
End Function
2282
 
2283
'-------------------------------------------------
2284
' Function:    releaseIsClosed
2285
' Description: Determine if a release can be modified at all
2286
' Returns:     True: Release cannot be modified
2287
'                    ie: it is NOT in a state that allows modification
2288
'
2289
Function releaseIsClosed(eReleaseMode)
2290
    If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE Then
2291
        releaseIsClosed = False
2292
    ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE Then
2293
        releaseIsClosed = False
2294
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE Then
2295
        releaseIsClosed = False
2296
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
2297
        releaseIsClosed = True
2298
    ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
2299
        releaseIsClosed = True
2300
    ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
2301
        releaseIsClosed = True
2302
    Else
2303
        releaseIsClosed = True
2304
    End If
2305
End Function
2306
 
2307
'-------------------------------------------------
2308
' Function:    releaseIsWritable
2309
' Description: Determine if a release can be modified
2310
' Returns:     True: Release can be modified
2311
'                    ie: it is in a state that allows modification
2312
'
2313
Function releaseIsWritable(eReleaseMode)
2314
    If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE AND canActionInProject() Then
2315
        releaseIsWritable = True
2316
    ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE AND canActionControlInProject("AlterReleaseContentsInRestrictiveMode") Then
2317
        releaseIsWritable = True
2318
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE AND canActionControlInProject("AlterReleaseContentsInRestrictiveMode")Then
2319
        releaseIsWritable = True
2320
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE Then
2321
        releaseIsWritable = False
2322
    ElseIf eReleaseMode = enumDB_RELEASE_IN_PRESERVE_MODE Then
2323
        releaseIsWritable = False
2324
    ElseIf eReleaseMode = enumDB_RELEASE_IN_ARCHIVE_MODE Then
2325
        releaseIsWritable = False
2326
    Else
2327
        releaseIsWritable = False
2328
    End If
2329
End Function
2330
 
2331
'-------------------------------------------------
2332
' Function:    releaseIsMergable
2333
' Description: Determine if the user can 'Merge' into the release
2334
' Returns:     True: Release can be modified
2335
'                    ie: it is in a state that allows modification
2336
'
2337
Function releaseIsMergable(eReleaseMode)
5294 dpurdie 2338
    If eReleaseMode = enumDB_RELEASE_IN_OPEN_MODE AND canActionInProject() Then
5178 dpurdie 2339
        releaseIsMergable = True
2340
    ElseIf eReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE AND canActionControlInProject("MergeRelease")  Then
2341
        releaseIsMergable = True
2342
    ElseIf eReleaseMode = enumDB_RELEASE_IN_CCB_MODE AND canActionControlInProject("MergeReleaseForCCB") Then
2343
        releaseIsMergable = True
2344
    Else
2345
        releaseIsMergable = False
2346
    End If
2347
End Function
5251 dpurdie 2348
'-------------------------------------------------
2349
' Function:         RenderLxrStateString   
2350
' Description:      Return a string to show the current LXR state
5328 dpurdie 2351
Function RenderLxrStateString(rtagid, lxr, lxrState, official, txt)
5251 dpurdie 2352
    If lxr = "N" AND lxrState = "N" Then
2353
        RenderLxrStateString = ""
2354
    Else
2355
        Dim lxrUrl : lxrUrl = LXR_URL & "/" & rtagid
5328 dpurdie 2356
        Dim image, hover, isClosed
2357
 
2358
        If lxrState = "N" Then
2359
            If releaseIsClosed(official) Then lxrState = "A"
2360
        End If
2361
 
5251 dpurdie 2362
        Select Case lxrState
2363
            Case "I"
2364
                image = "LXRlogo64.jpeg"
2365
                hover = "LXR Index available"
2366
            Case "C"
2367
                image = "LXRlogo64_off.jpeg"
2368
                hover = "LXR Index available, but no longer updated"
2369
            Case "N"
2370
                image = "LXRlogo64_progress.jpeg"
2371
                hover = "LXR Requested, but not yet available"
5328 dpurdie 2372
            Case "A"
2373
                image = "LXRlogo64_off.jpeg"
2374
                hover = "LXR no longer available. Release is no longer open"
5251 dpurdie 2375
            Case Else
2376
                image = "LXRlogo64_progress.jpeg"
2377
                hover = "LXR Requested, unknown State:(" & lxrState &")"
2378
        End Select
2379
        RenderLxrStateString = "<a class=mmItem href='"&lxrUrl&"'><img src=""images/"&image&""" height=16 border=0 vspace=0 hspace=0 style='vertical-align : bottom' title='"&hover&"'>" & txt &"</a>"
2380
    End If
2381
End Function 
5178 dpurdie 2382
 
5648 dpurdie 2383
'-------------------------------------------------
2384
' Function:         rippleFieldName   
2385
' Description:      Return a string to convert a ripple field state to a text name
2386
'                   bFlag is set to false if the state is unknown.
5671 dpurdie 2387
Dim rippleFieldValues
2388
rippleFieldValues = Array ("M", "m", "p", "b", "L")
5648 dpurdie 2389
Function rippleFieldName ( rstate, ByRef bFlag )
6121 dpurdie 2390
    If isNULL(rstate) Then
2391
        rstate = "b"
2392
    End If
2393
 
5648 dpurdie 2394
    bFlag = TRUE
2395
    Select Case rstate
2396
            Case "M" 
2397
                rippleFieldName = "Major Number"
2398
            Case "m" 
2399
                rippleFieldName = "Minor Number"
2400
            Case "p" 
2401
                rippleFieldName = "Patch Number"
2402
            Case "b" 
2403
                rippleFieldName = "Build Number"
2404
            Case "L" 
2405
                rippleFieldName = "Limited"
2406
            Case Else 
2407
                rippleFieldName = "Invalid State"
2408
                bFlag = FALSE
2409
        End Select
2410
End Function
6610 dpurdie 2411
'----------------------------------------------------
2412
' Function: emailField
2413
' Description: Generate a 'span' with email information
2414
' The mailto class is picked up the jquery for processing
2415
Function emailField(sName, sEmail)
2416
    emailField = "<span title='Select Email Options' class='mailto txt_linked' data-email='" & sEmail & "'>" & sName & "</span>"
2417
End Function
6623 dpurdie 2418
Function emailField3(sName, sEmail,sUname)
2419
    emailField3 = "<span title='Select Email Options' class='mailto txt_linked' data-email='" & sEmail & "' data-uname='" & sUname & "'>" & sName & "</span>"
2420
End Function
2421
 
5952 dpurdie 2422
'-----------------------------------------------------------------------------------------------------------------------------
6615 dpurdie 2423
 
2424
Function ReleaseIcon ( cOfficial )
2425
 
2426
	If cOfficial = "N" Then
2427
		' Open Mode
2428
		ReleaseIcon = LIMG_OPEN_MODE
2429
 
2430
	ElseIf cOfficial = "R" Then
2431
		' Restrictive Mode
2432
		ReleaseIcon = LIMG_RESTRICTIVE_MODE
2433
 
2434
	ElseIf cOfficial = "C" Then
2435
		'CCB Mode
2436
		ReleaseIcon = LIMG_CCB_MODE
2437
 
2438
	ElseIf cOfficial = "Y" Then
2439
		'Closed Mode
2440
		ReleaseIcon = LIMG_CLOSED_MODE
2441
 
2442
	ElseIf cOfficial = "O" Then
2443
		'Closed Mode - With warning (aged)
2444
		ReleaseIcon = LIMG_CLOSED_MODE_WARN
2445
 
2446
	ElseIf cOfficial = "P" Then
2447
		'Closed Mode - Archived, but don't purge
2448
		ReleaseIcon = LIMG_PRESERVE_MODE
2449
 
2450
	ElseIf cOfficial = "A" Then
2451
		'Archive Mode
2452
		ReleaseIcon = LIMG_ARCHIVE_MODE	
2453
	End If
2454
 
2455
End Function
2456
'-----------------------------------------------------------------------------------------------------------------
2457
Function SdkIcon (cState)
2458
    If cState = "R" Then
2459
        ' Released - available for use
2460
        SdkIcon = LIMG_CLOSED_MODE
2461
    ElseIf cState = "D" Then
2462
        ' Deprecated - Cannot be added to a Release any more
2463
        SdkIcon = LIMG_ARCHIVE_MODE
2464
    ElseIf cState = "U" Then
2465
        ' Work in progress - Still being constructed. Cannot be added to a Release yet
2466
        SdkIcon = LIMG_OPEN_MODE
2467
    End If
2468
End Function
2469
'-----------------------------------------------------------------------------------------------------------------
6827 dpurdie 2470
'------------------------------------------------------------------------------
2471
'   Helper routine to create buttons and disabled buttons
2472
'   Treat the action an href - link the user can see and potentially open in another tab
2473
'
2474
Sub BuildActionButtonLink(bState, sText, sTitle, sImage, sRef)
2475
 %>
2476
<td align="center" nowrap valign="bottom" title="<%=sTitle%>">
2477
    <%If bState Then%>
2478
    <a href="<%=sRef%>" class="abtnItem"><img <%=sImage%> ><%=sText%></a>
2479
    <%Else%>
2480
    <span class="abtnItemDis"><img <%=sImage%> class="lessOpacity"><%=sText%></span>
2481
    <%End If%>
2482
</td>
2483
<%End Sub
2484
'------------------------------------------------------------------------------
2485
'   Helper routine to create buttons and disabled buttons
2486
'   Treat the ref as a page to goto, but don't use href
2487
'
2488
Sub BuildActionButton(bState, sText, sTitle, sImage, sRef)
2489
 %>
2490
<td align="center" nowrap valign="bottom" title="<%=sTitle%>">
2491
    <%If bState Then%>
2492
    <span onClick="location.href='<%=sRef%>'" class="pointer abtnItem"><img <%=sImage%> ><%=sText%></span>
2493
    <%Else%>
2494
    <span class="abtnItemDis"><img <%=sImage%> class="lessOpacity"><%=sText%></span>
2495
    <%End If%>
2496
</td>
2497
<%End Sub
2498
'------------------------------------------------------------------------------
2499
'   Helper routine to create buttons and disabled buttons
2500
'   Tack a onClick operation
2501
'
2502
Sub BuildActionButtonClickRaw(bState, sText, sTitle, isBlue, sImage, sClick)
2503
    Dim sStyle : sStyle = ""
2504
    If Left(sImage,4) = "<img" Then sImage = Mid(sImage, 5, Len(sImage)-5)
2505
    If bState Then
2506
    If isBlue Then sStyle = "color:#0000ee; text-decoration:underline"%>
2507
    <span onClick="<%=sClick%>" class="pointer abtnItem"  style="<%=sStyle%>"><img <%=sImage%> ><%=sText%></span>
2508
    <%Else%>
2509
    <%If isBlue Then sStyle = "color:#0000ee66; text-decoration:none"%>
2510
    <span class="abtnItemDis" style="<%=sStyle%>"><img <%=sImage%> class="lessOpacity"><%=sText%></span>
2511
    <%End If
2512
End Sub
6615 dpurdie 2513
 
6827 dpurdie 2514
Sub BuildActionButtonClick(bState, sText, sTitle, isBlue, sImage, sClick)%>
2515
<td align="right" nowrap valign="center" title="<%=sTitle%>">
2516
    <%BuildActionButtonClickRaw bState, sText, sTitle, isBlue, sImage, sClick %>
2517
</td>
2518
<%End Sub
2519
 
2520
'------------------------------------------------------------------------------
2521
'   Helper routine to create Text with a button that follows
2522
'   Tack a onClick operation
2523
'
2524
Sub BuildEditButtonRaw(bState, sText, sTitle, isBlue, sImage, sClick)
2525
    Dim sStyle : sStyle = "font-weight:bold;"
2526
    Dim sClass : sClass = ""
2527
    If Left(sImage,4) = "<img" Then sImage = Mid(sImage, 5, Len(sImage)-5)
2528
    If bState Then
2529
    If isBlue Then sClass = "txt_linked" : sStyle = ""%>
2530
    <span onClick="<%=sClick%>" class="<%=sClass%> pointer"  style="<%=sStyle%>"><%=sText%>&nbsp;<img <%=sImage%>></span>
2531
    <%Else%>
2532
    <%If isBlue Then sClass = "txt_linked_dis" : sStyle = ""%>
2533
    <span style="<%=sStyle%>" class="<%=sClass%>" ><%=sText%>&nbsp;<img <%=sImage%> class="lessOpacity"></span>
2534
    <%End If
2535
End Sub%>
2536