Subversion Repositories DevTools

Rev

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

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