Subversion Repositories DevTools

Rev

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