Subversion Repositories DevTools

Rev

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