Subversion Repositories DevTools

Rev

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

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