Rev 4293 | Blame | Last modification | View Log | RSS feed
<%'=====================================================' COMMON SUBs Part 1'=====================================================Dim haveCommonSubs: haveCommonSubs = 1%><%'-----------------------------------------------------------------------------------------------------------------------------Sub CloseWindow%><SCRIPT language="JavaScript" type="text/javascript"><!--self.close();//--></SCRIPT><%End Sub'-----------------------------------------------------------------------------------------------------------------------------Sub OpenChildWindow ( SStitle, SSurl, SSH, SSW, BBscroll )Dim scrlBarIf BBscroll ThenscrlBar = "yes"ElsescrlBar = "no"End If%><script language="JavaScript" type="text/javascript"><!--window.open('<%=SSurl%>','<%=SStitle%>','scrollbars=<%=scrlBar%>,resizable=yes,width=<%=SSW%>,height=<%=SSH%>')//--></script><%End Sub'-----------------------------------------------------------------------------------------------------------------------------Sub OpenInParentWindow ( SSurl )%><script language="JavaScript" type="text/javascript"><!--window.opener.document.location='<%=SSurl%>';//--></script><%End Sub'-----------------------------------------------------------------------------------------------------------------------------Sub OpenInWindow ( SSurl )Response.Redirect ( SSurl )End Sub'-----------------------------------------------------------------------------------------------------------------------------Function GetQuery ( sQryName )GetQuery = ReadFile( QUERIES_PATH &"\"& sQryName )End Function'-----------------------------------------------------------------------------------------------------------------------------Sub RaiseMsg ( SSerrFile, SSerrDesc )' Usage: enumERROR, parval1 &"|"& parval2 &"|"& parval3 ...Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDescResponse.Redirect ("messages/"& SSerrFile )End Sub'-----------------------------------------------------------------------------------------------------------------------------Sub RaiseMsgInParent ( SSerrFile, SSerrDesc )Session( enum_RELMGR_ERRDESCRIPTION ) = SSerrDescCall OpenInParentWindow ("messages/"& SSerrFile )End Sub'-----------------------------------------------------------------------------------------------------------------------------Function ReadFile( SSpath )Dim filesys, rfileSet filesys = CreateObject("Scripting.FileSystemObject")Set rfile = filesys.OpenTextFile( SSpath, 1, false)ReadFile = rfile.ReadAllrfile.closeSet filesys = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function HighlightSubstring ( SSstr, SSsubstr )Dim leftSTR, startPosstartPos = InStr( 1, SSstr, SSsubstr, 1 )If startPos > 0 ThenleftSTR = Left ( SSstr, startPos - 1 )HighlightSubstring = leftSTR &"<SPAN style='background:#ffff99;'>"& Mid( SSstr, startPos, Len(SSsubstr) ) &"</SPAN>"& Right ( SSstr, Len(SSstr) - Len(leftSTR) - Len(SSsubstr) )Else' Subtring not foundHighlightSubstring = SSstrEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Sub DeleteFile( SSpath )Dim filesysSet filesys = CreateObject("Scripting.FileSystemObject")If filesys.FileExists(SSpath) Thenfilesys.DeleteFile SSpath, TRUEEnd IfSet filesys = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub DeleteFolder( SSpath )Dim filesysSet filesys = CreateObject ("Scripting.FileSystemObject")If filesys.FolderExists( SSpath ) Then'Set oFolder = filesys.GetFolder( SSpath )filesys.DeleteFolder SSpath ,TRUEEnd IfEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Create_Folder ( sCreateIn, sFolderName )Dim filesys, currfolder, folcoll, subfolSet filesys = CreateObject("Scripting.FileSystemObject")If filesys.FolderExists( sCreateIn ) ThenSet currfolder = filesys.GetFolder( sCreateIn )Set folcoll = currfolder.SubFoldersIf NOT filesys.FolderExists( sCreateIn &"\"& sFolderName ) Thenfolcoll.Add( sFolderName )End IfEnd IfEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Function Folder_Is_Empty ( sPath )Dim filesys, oFolderSet filesys = CreateObject("Scripting.FileSystemObject")If filesys.FolderExists( sPath ) ThenSet oFolder = filesys.GetFolder( sPath )If ( oFolder.Files.Count + oFolder.SubFolders.Count ) > 0 ThenFolder_Is_Empty = FALSEElseFolder_Is_Empty = TRUEEnd IfElseFolder_Is_Empty = TRUEEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Sub Destroy_All_ObjectsOn Error Resume Nextset brokenReadyHash = nothingset brokenHash = nothingset pkgInfoHash = nothingset OraDatabase = nothingset OraSession = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Function InStrPipes ( SSstr, SSsubstr )If InStr( SSstr, "|"& SSsubstr &"|") > 0 ThenInStrPipes = trueElseInStrPipes = falseEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function RemoveFromStrPipes ( SSstr, SSsubstr )RemoveFromStrPipes = Replace( SSstr, "|"& SSsubstr &"|", "" )End Function'-----------------------------------------------------------------------------------------------------------------------------Function View_Name_Exists ( SSviewname, NNused_id )Dim rsTemp, Query_StringQuery_String = _" SELECT view_name"&_" FROM views"&_" WHERE UPPER(view_name) = UPPER('"& UCase(SSviewname) &"') AND owner_id = "& NNused_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount > 0 ThenView_Name_Exists = TRUEElseView_Name_Exists = FALSEEnd IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function User_Name_Exists ( SSusername )Dim rsTemp, Query_StringQuery_String = _" SELECT user_name"&_" FROM users"&_" WHERE user_name = '"& SSusername &"'"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount > 0 ThenUser_Name_Exists = TRUEElseUser_Name_Exists = FALSEEnd IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function This_View_Owner( NNview_id, NNuser_id )Dim rsTemp, Query_StringQuery_String = _" SELECT owner_id"&_" FROM views"&_" WHERE view_id = "& NNview_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount > 0 ThenIf CInt(rsTemp.Fields("owner_id")) = CInt(NNuser_id) ThenThis_View_Owner = TRUEElseThis_View_Owner = FALSEEnd IfElse' view not foundSession("AdditionalParams") = "$ADMINEMAIL$,"& adminEmailResponse.Redirect("message.asp?msg=400-2")End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function GetReleaseMode ( NNrtag_id )Dim rsTemp, Query_StringIf NNrtag_id = "" Then NNrtag_id = "-1"Query_String = _" SELECT official FROM release_tags WHERE rtag_id = "& NNrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))'Response.write "DB"& NNrtag_idIf ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGetReleaseMode = rsTemp.Fields("official")End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Devl_EnvorinmentIf Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") <> "" ThenIf Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment") = "clearcase" ThenGet_Devl_Envorinment = "jats" 'clear case does not have importElseGet_Devl_Envorinment = Request.Cookies("RELEASEMANAGER_MEMORY")("devl_environment")End IfElseGet_Devl_Envorinment = "jats" 'JATS devl environment is set by defaultEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_From_DUAL ( SSclm )Dim rsTemp, Query_String, OraSession2, OraDatabase2Set OraSession2 = CreateObject("OracleInProcServer.XOraSession")Set OraDatabase2 = OraSession2.OpenDatabase( TNS_NAME, DB_AUTHENTICATION, Cint(0))Query_String = _" SELECT "& SSclm &" AS result FROM DUAL"Set rsTemp = OraDatabase2.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_From_DUAL = (rsTemp.Fields("result"))End IfrsTemp.CloseSet rsTemp = nothingSet OraDatabase2 = nothingSet OraSession2 = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Pkg_Base_View ( NNpv_id, NNrtag_id )Dim rsTemp, Query_StringIf NNrtag_id = "" ThenGet_Pkg_Base_View = "N/A"Exit FunctionEnd IfQuery_String = _" SELECT vi.view_name"&_" FROM release_content rc,"&_" views vi"&_" WHERE vi.view_id = rc.base_view_id"&_" AND rc.rtag_id = "& NNrtag_id &_" AND rc.pv_id = "& NNpv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_Pkg_Base_View = UCase(rsTemp.Fields("view_name"))ElseGet_Pkg_Base_View = "N/A"End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Proj_ID ( SSrtag_id )Dim rsTemp, Query_StringQuery_String = _" SELECT projects.proj_id"&_" FROM projects projects, release_tags rel"&_" WHERE projects.proj_id = rel.proj_id"&_" AND rel.rtag_id = "& SSrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_Proj_ID = (rsTemp.Fields("proj_id"))End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Proj_Name ( NNproj_id )Dim rsTemp, Query_StringGet_Proj_Name = ""Query_String = _" SELECT proj_name "&_" FROM projects pr "&_" WHERE pr.proj_id = "& NNproj_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_Proj_Name = (rsTemp.Fields("proj_name"))End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Release_Name ( NNrtag_id )Dim rsTemp, Query_StringGet_Release_Name = ""Query_String = _" SELECT rtag_name "&_" FROM release_tags rt "&_" WHERE rt.rtag_id = "& NNrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_Release_Name = (rsTemp.Fields("rtag_name"))End IfrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Base_URL ( NNproj_id )Dim rsTemp, Query_StringQuery_String = _" SELECT base_url "&_" FROM projects pr "&_" WHERE pr.proj_id = "& NNproj_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))Get_Base_URL = rsTemp("base_url")rsTemp.Close()Set rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Categories ( NNrtag_id )Get_Categories = _" SELECT vi.view_id, vi.view_name"&_" FROM release_content rel,"&_" views vi"&_" WHERE rel.base_view_id = vi.view_id"&_" AND rtag_id = "& NNrtag_id &_" GROUP BY vi.view_id, vi.view_name "&_" ORDER BY vi.view_name ASC "End Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_PV_IDs_In_Release ( NNrtag_id )Dim rsTemp, Query_String, tempSTRtempSTR = "-1"Query_String = _"SELECT pv_id FROM release_content WHERE rtag_id = "& NNrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))tempSTR = tempSTR &","& rsTemp.Fields("pv_id")rsTemp.MoveNextWEndGet_PV_IDs_In_Release = tempSTRrsTemp.CloseSet rsTemp = nothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Sub Get_Pkg_Info ( SSpv_id, NNrtag )Dim rsTemp, Query_StringOraDatabase.Parameters.Add "PV_ID", SSpv_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RTAG_ID", NNrtag, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "RETURN_NUMBER", NULL, ORAPARM_OUTPUT, ORATYPE_NUMBERpkgInfoHash.Item ("can_unofficial") = "false"'/* Get Package Details */Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageDetails.sql"), cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenpkgInfoHash.Add "pv_id", (rsTemp.Fields("pv_id"))pkgInfoHash.Add "pkg_id", (rsTemp.Fields("pkg_id"))pkgInfoHash.Add "pkg_name", (rsTemp.Fields("pkg_name"))pkgInfoHash.Add "pkg_version", (rsTemp.Fields("pkg_version"))pkgInfoHash.Add "v_ext", (rsTemp.Fields("v_ext"))pkgInfoHash.Add "comments", (rsTemp.Fields("comments"))pkgInfoHash.Add "modified_stamp", (rsTemp.Fields("modified_stamp"))pkgInfoHash.Add "modifier", (rsTemp.Fields("modifier"))pkgInfoHash.Add "modifier_id", (rsTemp.Fields("modifier_id"))pkgInfoHash.Add "modifier_email", (rsTemp.Fields("modifier_email"))pkgInfoHash.Add "created_stamp", (rsTemp.Fields("created_stamp"))pkgInfoHash.Add "creator", (rsTemp.Fields("creator"))pkgInfoHash.Add "creator_email", (rsTemp.Fields("creator_email"))pkgInfoHash.Add "owner", (rsTemp.Fields("owner"))pkgInfoHash.Add "owner_email", (rsTemp.Fields("owner_email"))pkgInfoHash.Add "dlocked", (rsTemp.Fields("dlocked"))pkgInfoHash.Add "proj_id", (rsTemp.Fields("proj_id"))pkgInfoHash.Add "rtag_id", (rsTemp.Fields("rtag_id"))pkgInfoHash.Add "rtag_name", (rsTemp.Fields("rtag_name"))pkgInfoHash.Add "pkg_label", (rsTemp.Fields("pkg_label"))pkgInfoHash.Add "src_path", (rsTemp.Fields("src_path"))pkgInfoHash.Add "pv_description", (rsTemp.Fields("pv_description"))pkgInfoHash.Add "last_pv_id", (rsTemp.Fields("last_pv_id"))pkgInfoHash.Add "previous_version", (rsTemp.Fields("previous_version"))pkgInfoHash.Add "release_notes_info", (rsTemp.Fields("release_notes_info"))pkgInfoHash.Add "is_patch", (rsTemp.Fields("is_patch"))pkgInfoHash.Add "is_obsolete", (rsTemp.Fields("is_obsolete"))pkgInfoHash.Add "obsolete_comments", (rsTemp.Fields("obsolete_comments"))pkgInfoHash.Add "build_type", (rsTemp.Fields("build_type"))pkgInfoHash.Add "change_type", (rsTemp.Fields("change_type"))pkgInfoHash.Add "bs_id", (rsTemp.Fields("bs_id"))pkgInfoHash.Add "is_deployable", (rsTemp.Fields("is_deployable"))pkgInfoHash.Add "sbom_priority", (rsTemp.Fields("sbom_priority"))pkgInfoHash.Add "ripple_field", (rsTemp.Fields("ripple_field"))End If'-- Find if package is editable in this projectOraDatabase.ExecuteSQL "BEGIN :RETURN_NUMBER := CAN_EDIT_PKG_IN_PROJECT( :PV_ID, :RTAG_ID ); END;"pkgInfoHash.Add "can_edit_in_project", CStr( OraDatabase.Parameters("RETURN_NUMBER").Value )'/* Get Package Release Details */Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PackageReleaseDetails.sql"), cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenpkgInfoHash.Item ("base_view_id") = (rsTemp.Fields("base_view_id"))pkgInfoHash.Add "insert_stamp", (rsTemp.Fields("insert_stamp"))pkgInfoHash.Add "insertor", (rsTemp.Fields("insertor"))pkgInfoHash.Add "insertor_email", (rsTemp.Fields("insertor_email"))pkgInfoHash.Item ("pkg_state") = (rsTemp.Fields("pkg_state"))pkgInfoHash.Item ("deprecated_state") = (rsTemp.Fields("deprecated_state"))pkgInfoHash.Item ("product_state") = (rsTemp.Fields("product_state"))'AND (rsTemp("used_count") = 0) _If (pkgInfoHash.Item ("dlocked") = "Y") _AND (pkgInfoHash.Item ("build_type") = "M") _AND (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) _AND (pkgInfoHash.Item("can_edit_in_project") = "1" ) _ThenpkgInfoHash.Item ("can_unofficial") = "true"End IfElseIf (CDate( FormatDateTime(pkgInfoHash.Item ("modified_stamp"), 2) ) = Date) Then' Must be not older then a dayIf (pkgInfoHash.Item ("dlocked") = "A") OR NOT IsNull(pkgInfoHash.Item("is_patch")) ThenpkgInfoHash.Item ("can_unofficial") = "true"End IfEnd IfEnd If'/* Get Patch Parent */If pkgInfoHash.Item ("is_patch") = "Y" ThenSet rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PatchParent.sql"), cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenpkgInfoHash.Add "patch_parent_id", (rsTemp.Fields("pv_id"))End IfEnd If' DEVI-45275 - Check if version is in the planned table and if so get its planned operation type' which denotes whether it is an existing version being added to a release, an existing version' being removed from a release, or a new version being prepared for a release.Set rsTemp = OraDatabase.DbCreateDynaset( GetQuery("PlannedPackageVersionDetails.sql"), cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenpkgInfoHash.Add "planned_operation", (rsTemp.Fields("operation"))ElsepkgInfoHash.Add "planned_operation", " "End IfOraDatabase.Parameters.Remove "PV_ID"OraDatabase.Parameters.Remove "RTAG_ID"OraDatabase.Parameters.Remove "RETURN_NUMBER"On Error Resume Next' check if package is releasedIf (NNrtag = "") or (IsNull(NNrtag)) ThenpkgInfoHash.Add "is_released", FalseElseSet rsTemp = OraDatabase.DbCreateDynaset( "SELECT rc.pv_id FROM release_content rc WHERE rc.rtag_id = " & NNrtag & " AND rc.pv_id = " & SSpv_id, cint(0))pkgInfoHash.Add "is_released", rsTemp.RecordCount <> 0End IfpkgInfoHash.Add "is_excluded", FalsepkgInfoHash.Add "has_build_failure", False' check if package is excluded from buildIf Not ((NNrtag = "") or (IsNull(NNrtag))) ThenSet rsTemp = OraDatabase.DbCreateDynaset( "SELECT dnr.pv_id,dnr.root_file FROM do_not_ripple dnr WHERE dnr.rtag_id = " & NNrtag & " AND dnr.pv_id = " & SSpv_id, cint(0))If rsTemp.RecordCount <> 0 ThenpkgInfoHash("is_excluded") = TruepkgInfoHash("has_build_failure") = Not IsNull(rsTemp("root_file"))End IfEnd IfrsTemp.CloseSet rsTemp = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Get_Pkg_Short_Info( SSparPv_id, SSpkgID, SSpkgName, SSpkgVersion, SSsrc_path, SSpkgDesc, BBdlocked )Dim rsTemp, Query_StringIf IsEmpty(SSparPv_id) Then Exit SubQuery_String = _" SELECT pkg.pkg_id, pkg.pkg_name, pv.pkg_version, pv.src_path, pv.pv_description, pv.dlocked"&_" FROM packages pkg, package_versions pv"&_" WHERE pkg.pkg_id = pv.pkg_id AND pv.pv_id ="& SSparPv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenSSpkgID = rsTemp.Fields("pkg_id")SSpkgName = rsTemp.Fields("pkg_name")SSpkgVersion = rsTemp.Fields("pkg_version")SSsrc_path = rsTemp.Fields("src_path")SSpkgDesc = rsTemp.Fields("pv_description")BBdlocked = rsTemp.Fields("dlocked")End IfrsTemp.CloseSet rsTemp = nothingEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Private Function IsDomainAuthOK( SSusername, SSpassword, SSdomainName )Dim objLoginAuth, return, tempSTR'Set objWSH = Server.CreateObject("WScript.Shell")'On Error Resume Next'return = -1'return = objWSH.Run("cmd.exe /c perl "& rootPath &"\common\domainauth.pl """&_' SSdomainName &""" """& SSusername &""" """& SSpassword &""" "&_' "> "& rootPath &"\temp\"& SSusername &".txt", 0, true)Set objLoginAuth = Server.CreateObject("LoginAdmin.ImpersonateUser")return = -1return = objLoginAuth.AuthenticateUser ( SSusername, SSpassword, SSdomainName )'Response.write "LOGIN"& SSusername &"-"& SSpassword &"-"& SSdomainName &"-"& returnIf (return = 0) OR (return = 1385) Then' From MSDN System Error Codes' 0 - The operation completed successfully.' 1326 - Logon failure: unknown user name or bad password.' 1385 - Logon failure: the user has not been granted the requested logon type at this computer.' 1909 - The referenced account is currently locked out and may not be used to log on.'Login okIsDomainAuthOK = TrueElseIsDomainAuthOK = FalseEnd IfSet objLoginAuth = NothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function ReadUserPreferences ( SSitem )'ReadUserPreferences = Request.Cookies("RELEASEMANAGER_USER_PREFERENCES")( SSitem )ReadUserPreferences = "0"End Function'-----------------------------------------------------------------------------------------------------------------------------Function Requred_Parameters_String ( SScurrent, SSstr )'returns "&par1=val1&&parn=valn&" must use & as it will not be used on parameter name or valueDim tempARR, parameter, tempSTRtempARR = Split( SSstr, "," )tempSTR = SScurrentFor Each parameter In tempARRtempSTR = tempSTR &"&"& parameter &"="& QStrPar( parameter ) &"&"NextRequred_Parameters_String = tempSTREnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Quick_Help ( SStipname )Quick_Help = "<a href='javascript:;' onMouseOver=""formTips.show('"& SStipname &"')"" onMouseOut=""formTips.hide()""><img src='images/i_help.gif' width='12' height='12' hspace='2' align='absmiddle' border='0' ></a>"End Function'-----------------------------------------------------------------------------------------------------------------------------Function LogError ( SSlog, SSstr )'|errstr1||errstr2||errstr3|...LogError = SSlog &"|"& SSstr &"|"End Function'-----------------------------------------------------------------------------------------------------------------------------Sub Send_Email ( SSfromName, SSfrom, SSto, SSsubject, SSbody, oAttachments )Dim Mail, Keys, Key, canSend'Response.write "<pre>Send_Email:SSfromName:" & SSfromName'Response.write "<br>Send_Email:SSfrom:" & SSfrom'Response.write "<br>Send_Email:SSto:" & SSto'Response.write "<br>Send_Email:SSsubject:" & SSsubject'Response.write "<br>Send_Email:SSbody:" & SSbodycanSend = FALSESet Mail = Server.CreateObject("Persits.MailSender")Mail.Host = MAIL_SERVERMail.From = SSfromMail.FromName = SSfromName' Send TO:' Handle a Dictionary of namesIf IsObject(SSto) AND (TypeName(SSto) <> "IOraField") ThenKeys = SSto.KeysFor Each Key In KeysMail.AddAddress Key, SSto.Item( Key )NextIf SSto.Count > 0 Then canSend = TRUEElseMail.AddAddress SStoIf SSto <> "" Then canSend = TRUEEnd IfMail.Subject = SSsubjectMail.IsHTML = TrueMail.Body = SSbodyIf NOT IsEmpty(oAttachments) AND NOT IsNull(oAttachments) Then' Add Attachments DDDDDDD Sash,' It appears as if AddEmbededImage is premium functionality that costs money, can we just do a normal add attachment?If IsObject( oAttachments ) ThenKeys = oAttachments.KeysFor Each Key In Keys' Mail.AddEmbeddedImage rootPath & Key, oAttachments.Item( Key )Mail.AddAttachment oAttachments.Item( Key )NextElseMail.AddAttachment oAttachmentsEnd IfEnd IfOn Error Resume NextIf canSend Then Mail.Send ' send messageEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Iterate_UP_the_tree ( NNrtag_id, HHstart_with, HHresult )Dim rsTemp, Query_StringDim seekPKGs, seekNOTpkgsseekPKGs = Join(HHstart_with.Keys, ",")If seekPKGs = "" Then seekPKGs = "-1"seekNOTpkgs = "-1"Do While seekPKGs <> "-1"Query_String = _" SELECT DISTINCT dep.pkg_id"&_" FROM package_dependencies dep, release_content rel"&_" WHERE rel.pv_id = dep.pv_id"&_" AND rel.rtag_id = "& NNrtag_id &_" AND dpkg_id IN ( "& seekPKGs &" ) "&_" AND pkg_id NOT IN ( "& seekNOTpkgs &" )"'" AND dep.dpv_id NOT IN ( SELECT iw.iw_id FROM ignore_warnings iw WHERE iw.rtag_id = "& NNrtag_id &" )"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount < 1 Then Exit DoseekPKGs = "-1"While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))If NOT HHresult.Exists(Cstr(rsTemp.Fields("pkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("pkg_id")), ""seekPKGs = seekPKGs &","& rsTemp.Fields("pkg_id")rsTemp.MoveNextWEndseekNOTpkgs = seekNOTpkgs &","& seekPKGsLoopEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Iterate_DOWN_the_tree ( NNrtag_id, HHstart_with, HHresult )Dim rsTemp, Query_StringDim seekPKGs, seekNOTpkgsseekPKGs = Join(HHstart_with.Keys, ",")If seekPKGs = "" Then seekPKGs = "-1"seekNOTpkgs = "-1"Do While seekPKGs <> "-1"Query_String = _" SELECT DISTINCT dep.dpkg_id"&_" FROM package_dependencies dep, release_content rel"&_" WHERE rel.pv_id = dep.pv_id"&_" AND rel.rtag_id = "& NNrtag_id &_" AND pkg_id IN ( "& seekPKGs &" ) "&_" AND dpkg_id NOT IN ( "& seekNOTpkgs &" )"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount < 1 Then Exit DoseekPKGs = "-1"While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))If NOT HHresult.Exists(Cstr(rsTemp.Fields("dpkg_id"))) Then HHresult.Add Cstr(rsTemp.Fields("dpkg_id")), ""seekPKGs = seekPKGs &","& rsTemp.Fields("dpkg_id")rsTemp.MoveNextWEndseekNOTpkgs = seekNOTpkgs &","& seekPKGsLoopEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Class TempSessionFunction Value ()Value = Session("RELEASEMANAGER_temp")End FunctionSub Add ( SSstr )Session("RELEASEMANAGER_temp") = Session("RELEASEMANAGER_temp") & SSstrEnd SubSub Clean ()Session("RELEASEMANAGER_temp") = NULLEnd SubEnd Class'-----------------------------------------------------------------------------------------------------------------------------Sub DisplayInfo ( SSmsg, SSwidth )Dim msgIf SSmsg = "" Then Exit SubSelect Case UCase( SSmsg )Case "ISSUES_IMPORTED"msg = "Import is complete. <br>Click on Close button if you are finished."Case "MAKE_OFFICIAL_WARNING"msg = "Note that making a package official will prevent any further change to it."Case "APPLY_LABEL_TO_ALL_WARNING"msg = "This will overwrite any existing labels on selected packages."Case "BLANK_LABEL_WARNING"msg = "Some dependencies in the export list above, do not have a label!"Case "PERSONAL_VIEW_NOT_SETUP"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 Account > 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>"Case "EMPTY_RELEASE_CONTENTS"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>"Case "PKG_NAME_REQUIRED"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>"Case "ADD_PATCH_WARNING"msg = "Note that patches cannot be used in your build dependencies."Case "NEW_PATCH_AVAILABLE"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."Case "GENERATE_RELEASE_NOTES"msg = "<a href='_generate_release_notes.asp?rfile=&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked'>Click here</a> to generate full release notes."Case "NOT_FOUND_IN_PKG_ARCHIVE_RELEASE_NOTES"msg = "<b>This package is not found in dpkg_archive!</b><br>Release notes are not generated.<br><a href='_generate_release_notes.asp?rfile="& scriptName &"&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked'>Click here</a> to try again."Case "FAILED_GENERATING_RELEASE_NOTES"msg = "<span class='err_alert'><b>Failed generating release notes!</b></span><br>Please contact the <a href='mailto:"& adminEmail&"' class='txt_linked'>Administrator</a>"Case "GENERATING_RELEASE_NOTES"msg = "<b>Generating release notes...</b><br>It may take a minute. Please try refreshing this page a bit later."Case "NO_PREVIOUS_VERSION_RELEASE_NOTES"msg = "<b>Previous Version is Unknown</b>!<br>Please specify previous version by clicking on 'Show Details...' above.<br>Release notes are not generated."Case "PACKAGE_FOUND_IN_OTHER_LOCATIONS"msg = "This package is also found in other locations."Case "DOC_NUMBER_NOTFOUND"msg = "<span class='err_alert'>Document number "& Request("doc_num") &" does not correspond to any document!</span>"Case "DOC_NUMBER_FOUND"msg = "Document found. Click "Import" to link the document."Case "UNIT_TEST_NOT_DONE"msg = "<b>Unit test is Not Done!</b><br><a href='javascript:;' onClick=""MM_openBrWindow('_wform_reason_for_unit_test_not_done.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"','ReasonForNotDone','resizable=yes,width=400,height=250')"" class='txt_linked'>Click here</a> to supply/edit reason."Case "PACKAGE_NOT_PART_OF_RELEASE"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. "Case "NOT_FOUND_IN_PKG_ARCHIVE_FILE_GENERATE"msg = "<b>This package is not found in dpkg_archive!</b><br>Files and folders are not captured.<br><a href='_generate_files_and_folders.asp?rfile="& scriptName &"&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked' onClick=""ProgressBar.style.visibility='visible';"">Click here</a> to try again."Case "GENERATE_FILES_AND_FOLDERS"msg = "<b>Files and folders not found.</b><br><a href='_generate_files_and_folders.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") &"' class='txt_linked' onClick=""ProgressBar.style.visibility='visible';"">Click here</a> to try capture them."Case "NO_PRODUCT_FILES_CAPTURED"msg = "<b>Files and Folders not found for this product!</b><br>Capture of product components can only be done during the build time."Case "MASS REF REFERENCE"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>"Case "REPEAT_SCHEDULE_NOT_SELECTED"msg = "<span class='err_alert'><b>YOU MUST SELECT A VALUE FOR REPEAT SCHEDULED DOWNTIME</b></span>"Case "PKG_NAME_INVALID"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>"Case "PKG_NAME_EXISTS"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>"End Select%><table width="<%=SSwidth%>" border="0" cellspacing="0" cellpadding="1"><tr><td background="images/bg_bage_dark.gif"><table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td width="1%" valign="top" background="images/bg_help.gif"><img src="images/i_qhelp.gif" width="16" height="16"></td><td width="100%" background="images/bg_help.gif" class="form_txt"><%=msg%></td></tr></table></td></tr></table><br><%End Sub'-----------------------------------------------------------------------------------------------------------------------------Sub Messenger ( sMessage, nMessageType, sWidth )Dim msgTemplate, ImgIf (sMessage = "") OR IsNull(sMessage) Then Exit SubSelect Case CStr(nMessageType)Case "1"Img = "s_critical.gif"Case "2"Img = "s_warning.gif"Case "3"Img = "s_note.gif"Case ElseImg = nMessageTypeEnd SelectmsgTemplate = ReadFile( APP_ROOT &"\scripts\message_style.html" )msgTemplate = Replace( msgTemplate, "%WIDTH%", sWidth )msgTemplate = Replace( msgTemplate, "%IMAGE%", Img )msgTemplate = Replace( msgTemplate, "%MESSAGE%", sMessage )Response.write msgTemplateEnd Sub'-----------------------------------------------------------------------------------------------------------------------------Function Default_Label ( SSpv_id, SSbuild_type, SSchange_type, SSpkg_name, SSpkg_version, SSv_ext )If SSbuild_type = "A" ThenIf SSchange_type = "F" ThenDefault_Label = SSpkg_name & "_" & SSpkg_version & ".WIP"elseDefault_Label = UCase(SSpkg_name & "." & SSpv_id & SSv_ext) & ".WIP"End IfElseDefault_Label = SSpkg_name & "_" & SSpkg_versionEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Format_Version ( SSpkg_version, SSv_ext )Dim tempArr, tempVersion, patchArr, seg, myVersionmyVersion = SSpkg_versionIf NOT IsNull(SSv_ext) ThenmyVersion = Left ( myVersion, Len(myVersion) - Len(SSv_ext) )End IftempArr = Split (myVersion, ".")For Each seg In tempArrIf Len(seg) < 2 Then' single digit numbertempVersion = tempVersion &"0"& segElseseg = Replace(seg, "_", "-") ' make sure that there is no _ in segmentIf InStr( seg, "-" ) > 0 Then' patch version suppliedpatchArr = Split(seg, "-")If Len(patchArr(0)) < 2 Then' single digit numbertempVersion = tempVersion &"0"& patchArr(0) &"_0"& patchArr(1)Else' double digit numbertempVersion = tempVersion & patchArr(0) &"_0"& patchArr(1)End IfElse' double digit no patchtempVersion = tempVersion & segEnd IfEnd IfNextFormat_Version = tempVersionEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function DefineStateIcon ( NNpkg_state, CCdlocked, sIgnoreWarnings, cIsPatchIgnore, cBuildType, bForEnvironment )If NOT IsNull(sIgnoreWarnings) Then'-- Ignore Warning is onIf IsNull(cIsPatchIgnore) ThenDefineStateIcon = enum_imgIgnoringElseDefineStateIcon = enum_imgPatchIgnoringEnd IfElseSelect Case CInt( NNpkg_state )Case enumPKG_STATE_OKIf (CCdlocked = "N") OR (CCdlocked = "R") ThenDefineStateIcon = enum_imgBuildingElseIf (CCdlocked = "P") ThenDefineStateIcon = enum_imgPendingElseDefineStateIcon = enum_imgBlankEnd IfCase enumPKG_STATE_MAJORDefineStateIcon = enum_imgCriticalCase enumPKG_STATE_MINORDefineStateIcon = enum_imgWarningCase enumPKG_STATE_MAJOR_READYDefineStateIcon = enum_imgCReadyCase enumPKG_STATE_MINOR_READYDefineStateIcon = enum_imgWReadyCase enumPKG_NOT_FOUNDDefineStateIcon = enum_imgNotFoundCase enumPKG_STATE_NEW_PATCHDefineStateIcon = enum_imgPatchAvailableCase enumPKG_STATE_DEPRECATEDDefineStateIcon = enum_imgDeprecatedCase enumPKG_STATE_DEPRECATED_DEPENDENTDefineStateIcon = enum_imgDeprecatedDependentCase enumPKG_ADVISORY_RIPPLEDefineStateIcon = enum_imgARCase enumPKG_ADVISORY_RIPPLE_DEPENDENTDefineStateIcon = enum_imgARDCase enumPKG_PEGGED_VERSIONDefineStateIcon = enum_imgGreenPinEnd SelectIf (NOT bForEnvironment) AND _(cBuildType = "A") AND _(CCdlocked <> "Y") AND _(DefineStateIcon <> enum_imgBlank) AND _(DefineStateIcon <> enum_imgBuilding) AND _(DefineStateIcon <> enum_imgNotFound) OR _( Request("rtag_id") = "" AND Request("FRrtag_id") = "") _ThenDefineStateIcon = ""End IfEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function DefineStateIconSimple ( NNpkg_state, CCdlocked)DefineStateIconSimple = ""Select Case CInt( NNpkg_state )Case enumPKG_STATE_OKIf (CCdlocked = "R") OR (CCdlocked = "A") ThenDefineStateIconSimple = enum_imgBuildingElseIf (CCdlocked = "P") ThenDefineStateIconSimple = enum_imgPendingElseIf (CCdlocked = "Y") ThenDefineStateIconSimple = enum_imgReleasedLockedElseIf (CCdlocked = "N") ThenDefineStateIconSimple = enum_imgReleasedUnlockedElseDefineStateIconSimple = enum_imgBlankEnd IfCase enumPKG_STATE_MAJORDefineStateIconSimple = enum_imgCriticalCase enumPKG_STATE_MINORDefineStateIconSimple = enum_imgWarningCase enumPKG_STATE_MAJOR_READYDefineStateIconSimple = enum_imgCReadyCase enumPKG_STATE_MINOR_READYDefineStateIconSimple = enum_imgWReadyCase enumPKG_NOT_FOUNDDefineStateIconSimple = enum_imgNotFoundCase enumPKG_STATE_NEW_PATCHDefineStateIconSimple = enum_imgPatchAvailableCase enumPKG_STATE_DEPRECATEDDefineStateIconSimple = enum_imgDeprecatedCase enumPKG_STATE_DEPRECATED_DEPENDENTDefineStateIconSimple = enum_imgDeprecatedDependentCase enumPKG_ADVISORY_RIPPLEDefineStateIconSimple = enum_imgARCase enumPKG_ADVISORY_RIPPLE_DEPENDENTDefineStateIconSimple = enum_imgARDCase enumPKG_PEGGED_VERSIONDefineStateIconSimple = enum_imgGreenPinEnd SelectEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function DefineStateSmallIcon ( NNpkg_state, CCdlocked )Select Case CInt( NNpkg_state )Case enumPKG_STATE_OKIf CCdlocked = "N" ThenDefineStateSmallIcon = enum_SMALL_imgBuildingElseDefineStateSmallIcon = enum_SMALL_imgOKEnd IfCase enumPKG_STATE_MAJORDefineStateSmallIcon = enum_SMALL_imgCriticalCase enumPKG_STATE_MINORDefineStateSmallIcon = enum_SMALL_imgWarningCase enumPKG_STATE_MAJOR_READYDefineStateSmallIcon = enum_SMALL_imgCReadyCase enumPKG_STATE_MINOR_READYDefineStateSmallIcon = enum_SMALL_imgWReadyEnd SelectEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function PatchIcon ( cIsPatch, cIsPatchObsolete )If IsNull(cIsPatch) ThenPatchIcon = "<img src='images/rex_images/ext_blank.gif' width='16' height='16' border='0' align='absmiddle'>"ElseIf IsNull(cIsPatchObsolete) ThenPatchIcon = "<img src='images/i_patch_small.gif' width='16' height='16' border='0' align='absmiddle' >"ElsePatchIcon = "<img src='images/i_patch_small_obsolete.gif' width='16' height='16' border='0' align='absmiddle' title='Patch is obsolete'>"End IfEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------' Function that returns true of false if the item exists in the array'-----------------------------------------------------------------------------------------------------------------------------Function inArray(item, aItems)Dim elementinArray = falsefor each element in aItemsIf element = item TheninArray=trueEnd IfnextEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function ProgressBar ()ProgressBar = "<DIV name='divProgressBar' id='divProgressBar' style='visibility:hidden;'><img src='icons/i_processing.gif' width='79' height='14'></DIV>"End Function'-----------------------------------------------------------------------------------------------------------------------------Function GetCurrentParameters( nProjId, nRtagId, nPvId )Dim rsQry,query' Set defaultsnProjId = -1nRtagId = -1nPvId = -1' Get parameters from databaseOraDatabase.Parameters.Add "ProjId", Request("proj_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "Rtag_id", Request("rtag_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2OraDatabase.Parameters.Add "results", NULL, ORAPARM_OUTPUT, ORATYPE_CURSOROraDatabase.ExecuteSQL " BEGIN PK_APP_UTILS.GET_CURRENT_PARAMETERS ( :ProjId, :Rtag_id, :results ); END;"Set rsQry = OraDatabase.Parameters("results").ValueOraDatabase.Parameters.Remove "ProjId"OraDatabase.Parameters.Remove "Rtag_id"OraDatabase.Parameters.Remove "results"If rsQry.RecordCount > 0 ThennProjId = CDbl(rsQry("PROJ_ID"))nRtagId = CDbl(rsQry("RTAG_ID"))End IfrsQry.Close()Set rsQry = nothing' Set pv_id parameterIf Request("pv_id") <> "" Then nPvId = CDbl(Request("pv_id"))End Function'-----------------------------------------------------------------------------------------------------------------------------Function GetEnvName ( nEnvTab )Select Case CInt( nEnvTab )Case enumENVTAB_WORK_IN_PROGRESSGetEnvName = "Work In Progress"Case enumENVTAB_PLANNEDGetEnvName = "Pending"Case enumENVTAB_RELEASEDGetEnvName = "Released"End SelectEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Title (rtagId)If rtagId = "" ThenTitle = "Release Manager"ElseSet 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 )Title = rsQry("proj_name")&">"&rsQry("rtag_name")rsQry.Close()Set rsQry = NothingEnd IfEnd Function'-------------------------------------------------------------------------------------Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id)Dim Query_String, rsQryQuery_String = _" SELECT * "&_" FROM planned pl, package_versions pv "&_" WHERE pl.rtag_id = "& NNrtag_id &_" AND pv.pv_id = pl.pv_id "&_" AND pv.dlocked = 'A' "&_" AND pv.pkg_id = (SELECT pkg_id "&_" FROM package_versions "&_" WHERE pv_id = "& NNpv_id &") "&_" AND pv.v_ext = (SELECT v_ext "&_" FROM package_versions "&_" WHERE pv_id = "& NNpv_id &")"Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )Check_Package_WIP_Already_Exists = rsQry.RecordCountrsQry.Close()Set rsQry = NothingEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function ValidateCodeReviewURL ( sCodeReviewURL )Dim isValidDim sTempBaseURLDim httpRegExSet httpRegEx = new RegExphttpRegEx.Pattern = "^https?:\/\/"' Removes ending slash from project's base URL for ease of comparison.sTempBaseURL = Left(baseURL, Len(baseURL)-1)' Removes the project's base URL from the URL specified (if it's present).codeReviewURL = Replace(sCodeReviewURL, sTempBaseURL, "")' Removes the slash from the beginning of the resulting URL (if it's present).If InStr(codeReviewURL, "/") = 1 ThencodeReviewURL = Replace(codeReviewURL, "/", "", 1, 1)End If' If the URL doesn't contain the http:// prefix, assume that it's correct.If NOT httpRegEx.Test(codeReviewURL) AND Len(codeReviewURL) > 0 ThenisValid = TrueElse' If the URL still contains the http:// prefix and is longer than the base' URL, assume that it is an invalid URL because of a differing base URL.If Len(sCodeReviewURL) > Len(baseURL) ThenResponse.Write("<script type='text/javascript'>alert('Incorrect Base URL\n\nMust start with project\'s base url (" & baseURL &") if full URL specified.')</script>")Else' If the URL still contains the http:// prefix and is shorter than the base' URL, assume that it is incomplete.Response.Write("<script type='text/javascript'>alert('Incomplete Code Review URL')</script>")End If' Otherwise, the URL matches the base URL exactly, which is also invalid.codeReviewURL = sCodeReviewURLisValid = FalseEnd IfValidateCodeReviewURL = isValidEnd Function'----------------------------------------------------------------------------------------------------------------------------------------Function Is_Page_Editable ( cDlocked )' Editable if ( (unlocked OR rejected)' OR ( NOT released/locked AND EditReleaseNotesInPending allowed)' OR (released/locked AND EditNonCriticalInfoForLockedPackage allowed)' )' AND user logged inIf (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditNonCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn ThenIs_Page_Editable = TRUEElseIs_Page_Editable = FALSEEnd IfEnd Function'----------------------------------------------------------------------------------------------------------------------------------------Function Is_Section_Editable ( )If scriptName = "fixed_issues.asp" AND objAccessControl.UserLogedIn ThenIs_Section_Editable = TRUEElseIs_Section_Editable = FALSEEnd IfEnd Function'----------------------------------------------------------------------------------------------------------------------------------------Function Is_Critical_Section_Editable ( cDlocked )' Editable if ( (unlocked OR rejected)' OR ( NOT released/locked AND EditReleaseNotesInPending allowed)' OR (released/locked AND EditCriticalInfoForLockedPackage allowed)' )' AND user logged inIf (((cDlocked = "N") OR (cDlocked = "R")) OR ((cDlocked <> "Y") AND (objAccessControl.IsActive("EditReleaseNotesInPending"))) OR ((cDlocked = "Y") AND (objAccessControl.IsActive("EditCriticalInfoForLockedPackage")))) AND objAccessControl.UserLogedIn ThenIs_Critical_Section_Editable = TRUEElseIs_Critical_Section_Editable = FALSEEnd IfEnd Function'---------------------------------------------------------------' Function: Codestriker_Command'' Purpose: Forms a codestriker differencing command for use when' preparing codestriker reviews. This will be used mainly' on release notes pages.'' Arguments: old_label : The previous or older label' new_label : The current or newer label'Function Codestriker_Command (oldLabel, new_label)If ( IsNull(new_label) ) ThenCodestriker_Command = "Label not defined"ElseIf (IsNull(oldLabel) OR oldLabel = "" ) ThenCodestriker_Command = "jats CCdiff -new=" & new_labelElseCodestriker_Command = "jats CCdiff -old=" & oldLabel & " -new=" & new_labelEnd IfEnd Function'---------------------------------------------------------------' Function: getLastNonRippleVersionPVID'' Purpose: returns the last non-ripple version of the package'' Arguments: this_pv_id : string'' Notes: In the past, users used to manually perform ripple builds.' This function does not detect those as ripples. It could be' made to do so but it would not be reliable. For example, it' could check to see if the word "ripple" appears in the' comments field of the record set of the SWL query. That' might catch some of those records, but assumes the user' wrote the wor ripple into the comments (reason for version).'Function getLastNonRippleVersionPVID( this_pv_id )Dim queryResultDim queryStringDim finalPVIDDim lastPVID' default return value in case we never get into the loopfinalPVID = this_pv_id' Get record for this PVIDqueryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_idSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built versionIf (queryResult("build_type") = "Y") ThenlastPVID = queryResult("last_pv_id")' We know we have some ripple built versions now, so arm the finalPVID for loop controlfinalPVID = ""' Work back through the version history until we hit a record that is not a ripple build versionDo While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))queryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & lastPVIDSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))' if the package version is a ripple built one, go round the loop again, else trigger a loop exitIf ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) ThenlastPVID = queryResult("last_pv_id")ElsefinalPVID = lastPVIDEnd IfLoopEnd IfEnd IfqueryResult.Close()Set queryResult = nothinggetLastNonRippleVersionPVID = finalPVIDEnd FunctionFunction getLastNonRippleVersionPVIDLimitedByDate( this_pv_id, limitDate )Dim queryResultDim queryStringDim finalPVIDDim lastPVID' default return value in case we never get into the loopfinalPVID = this_pv_id' Get record for this PVIDqueryString = "SELECT build_type, last_pv_id FROM package_versions WHERE pv_id = " & this_pv_idSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Then' If this version is a ripple built version, begin the process of finding its ancestral non-ripple built versionIf (queryResult("build_type") = "Y") ThenlastPVID = queryResult("last_pv_id")' We know we have some ripple built versions now, so arm the finalPVID for loop controlfinalPVID = ""' Work back through the version history until we hit a record that is not a ripple build versionDo While ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND (NOT IsNull(lastPVID)) AND (finalPVID = ""))queryString = "SELECT build_type, last_pv_id FROM package_versions "&_" WHERE pv_id = " & lastPVID &_" AND MODIFIED_STAMP >= TO_DATE('" & limitDate & "','DD/MM/YYYY')"Set queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))' if the package version is a ripple built one, go round the loop again, else trigger a loop exitIf ((NOT queryResult.BOF) AND (NOT queryResult.EOF) AND ( queryResult("build_type") = "Y")) ThenlastPVID = queryResult("last_pv_id")ElsefinalPVID = lastPVIDEnd IfLoopEnd IfEnd IfqueryResult.Close()Set queryResult = nothinggetLastNonRippleVersionPVIDLimitedByDate = finalPVIDEnd Function'---------------------------------------------------------------' Function: getPreviousVersionPVID'' Purpose: returns the immediate predecssor version of the given' package version'' Arguments: this_pv_id : string'' Notes:'Function getPreviousVersionPVID( this_pv_id )Dim queryResultDim queryStringgetPreviousVersionPVID = ""queryString = "SELECT last_pv_id FROM package_versions WHERE pv_id = " & this_pv_idSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) ThengetPreviousVersionPVID = queryResult("last_pv_id")End IfqueryResult.Close()Set queryResult = nothingEnd Function'---------------------------------------------------------------' Function: getLastSignificantPVID'' Purpose: Returns the last significant (man-made) version (PV_ID) that' is a predecessor to the specified pv_id'' Arguments: pv_id : Uniquely identifies this package version' last_pv_id : Uniquely identifies the predecssor of this package version' Notes:'Function getLastSignificantPVID (pv_id, last_pv_id)getLastSignificantPVID = ""If( (NOT IsNull(last_pv_id)) AND (last_pv_id <> pv_id) ) Then' Get the pv_id for the current version, and if necessary, work back through any ripple versions as necessary' to get a non-ripple version ancestorpv_id = getLastNonRippleVersionPVID( pv_id )If (pv_id <> "") Then' get the pv_id of the previous version to the non-ripple version ancestor we just found.' It does not matter if we get a ripple version here. It is good enough to serve the purpose of version diff'ingpv_id = getPreviousVersionPVID( pv_id )If (pv_id <> "") ThengetLastSignificantPVID = pv_idEnd IfEnd IfEnd IfEnd Function'---------------------------------------------------------------' Function: get_Pkg_Label'' Purpose: Returns the package label for the specified pv_id'' Arguments: pv_id : Uniquely identifies this package version'Function get_Pkg_Label (pv_id)Dim queryResultDim queryStringget_Pkg_Label = ""' Get the package label from the package versions tablequeryString = "SELECT pkg_label FROM package_versions WHERE pv_id = " & pv_idSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Thenget_Pkg_Label = queryResult("pkg_label")End IfqueryResult.Close()Set queryResult = nothingEnd Function'---------------------------------------------------------------' Function: get_Src_Path'' Purpose: Returns the source path for the specified pv_id'' Arguments: pv_id : Uniquely identifies this package version'Function get_Src_Path (pv_id)Dim queryResultDim queryStringget_Src_Path = ""' Get the source path from package versions tablequeryString = "SELECT src_path FROM package_versions WHERE pv_id = " & pv_idSet queryResult = OraDatabase.DbCreateDynaset( queryString, cint(0))If ((NOT queryResult.BOF) AND (NOT queryResult.EOF)) Thenget_Src_Path = queryResult("src_path")End IfqueryResult.Close()Set queryResult = nothingEnd Function'---------------------------------------------------------------' Function: getOldLabel'' Purpose: Returns the previous label; if none then returns empty string'' Since this operation is designed to fulfil the generation of' diff commands, there is no point in considering ripple' versions, since the only differences we find there are in' the build.pl files (for example). So, this function uses' some underlying methods that ignore ripple built versions' therefore concentrating on versions that someone has manually' gone and labelled, presumably because they changed some' source file other than build.pl.'' Arguments: pv_id : Uniquely identifies this package version' last_pv_id : Uniquely identifies the predecssor of this package version' Notes:'Function getOldLabel (pv_id, last_pv_id)Dim lastSignificantPVIDgetOldLabel = ""lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)If (lastSignificantPVID <> "") ThengetOldLabel = get_Pkg_Label(lastSignificantPVID)End IfEnd Function'---------------------------------------------------------------' Function: getOldSrcPath'' Purpose: Returns the previous src path; if none then returns empty string'' Since this operation is designed to fulfil the generation of' diff commands, there is no point in considering ripple' versions, since the only differences we find there are in' the build.pl files (for example). So, this function uses' some underlying methods that ignore ripple built versions' therefore concentrating on versions that someone has manually' gone and labelled, presumably because they changed some' source file other than build.pl.'' NOTE: With SubVersion, the src_path column in the package_versions' table will be used to hold the Subversion tag. This function' will therefore be used mostly when a package version is' controlled under subversion.'' Arguments: pv_id : Uniquely identifies this package version' last_pv_id : Uniquely identifies the predecssor of this package version' Notes:'Function getOldSrcPath (pv_id, last_pv_id)Dim lastSignificantPVIDgetOldSrcPath = ""lastSignificantPVID = getLastSignificantPVID(pv_id, last_pv_id)If (lastSignificantPVID <> "") ThengetOldSrcPath = get_Src_Path(lastSignificantPVID)End IfEnd Function'----------------------------------------------------------------------------------------------------------------------Sub vcs_info_from_vcs_tag( nVcs_tag, ByRef objDetails )Dim rsTemp, Query_StringQuery_String = " SELECT * FROM vcs_type WHERE tag = '"& nVcs_tag &"'"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) ThenobjDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")objDetails.Item("vcs_name") = rsTemp("name")objDetails.Item("vcs_tag") = rsTemp("tag")ElseCall RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS tag : " & nVcs_tag )End IfrsTemp.Close()set rsTemp = nothingEnd Sub'----------------------------------------------------------------------------------------------------------------------Sub vcs_info_from_vcs_type_id( nVcs_type_id, ByRef objDetails )Dim rsTemp, Query_StringIf NOT IsNull(nVcs_type_id) ThenQuery_String = " SELECT * FROM vcs_type WHERE vcs_type_id = "& nVcs_type_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) ThenobjDetails.Item("vcs_type_id") = rsTemp("vcs_type_id")objDetails.Item("vcs_name") = rsTemp("name")objDetails.Item("vcs_tag") = rsTemp("tag")ElseCall RaiseMsg(enum_MSG_ERROR, "Database does not contain a record of the VCS type ID : " & nVcs_type_id )End IfrsTemp.Close()set rsTemp = nothingElse' default to returning Subversion info, assuming it exists in the dataCall vcs_info_from_vcs_tag( enum_VCS_SUBVERSION_TAG, objDetails )End IfEnd Sub'----------------------------------------------------------------------------------------------------------------------Sub get_vcs_info_for_package( nPkgLabel, nBuildType, nVcsTypeId, nDLocked, ByRef objDetails )' lots of patch versions exist with N/A as their pkg_label and null as vcs_type_id. These are all uncontrolled' packages published directly into dpkg_archive with no controlled source under clearcase, so we want to treat' them as uncontrolled if possible.If nDLocked = "Y" AND ((nPkgLabel = "N/A") OR IsNull(nPkgLabel)) AND nBuildType = "M" AND IsNull(nVcsTypeId) ThenCall vcs_info_from_vcs_tag( enum_VCS_UNCONTROLLED_TAG, objDetails )Else' Otherwise, try and decode the VCS from the package's vcs_type_id entry from the package version table' NOTE: A null vcs_type_id entry will default to ClearCase. That is all we have been using up til now so' it should be safe.Call vcs_info_from_vcs_type_id( nVcsTypeId, objDetails )End IfEnd Sub'----------------------------------------------------------------------------------------------------------------------Sub get_vcs_info_for_pv_id( nPv_id, ByRef objDetails )Dim rsTemp, Query_StringQuery_String = _" SELECT pv.pkg_label, pv.build_type, pv.vcs_type_id, pv.dlocked "&_" FROM PACKAGE_VERSIONS pv"&_" WHERE pv.pv_id = "& nPv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) ThenCall get_vcs_info_for_package( rsTemp("pkg_label"), rsTemp("build_type"), rsTemp("vcs_type_id"), rsTemp("dlocked"), objDetails )ElseCall RaiseMsg(enum_MSG_ERROR, "PV_ID (" & nPv_id & ") Not Found")End IfrsTemp.Close()set rsTemp = nothingEnd Sub'----------------------------------------------------------------------------------------------------------------------Function get_vcs_tag( nPv_id )Dim tempVcsInfoCollectorSet tempVcsInfoCollector = CreateObject("Scripting.Dictionary")Call get_vcs_info_for_pv_id( nPv_id, tempVcsInfoCollector )get_vcs_tag = tempVcsInfoCollector.Item("vcs_tag")Set tempVcsInfoCollector = nothingEnd Function'----------------------------------------------------------------------------------------------------------------------Function isInDoNotRippleTable( NNrtag_id, NNpv_id )Dim rsTemp, Query_StringisInDoNotRippleTable = FALSEIf NNrtag_id <> "" AND NNpv_id <> "" ThenQuery_String = " SELECT dnr.pv_id FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID ="& NNrtag_id &" AND dnr.PV_ID ="& NNpv_idSet rsTemp = OraDatabase.DbCreateDynaset(Query_String, cint(0))If rsTemp.RecordCount <> 0 ThenisInDoNotRippleTable = TRUEEnd IfrsTemp.Close()set rsTemp = nothingEnd IfEnd Function'----------------------------------------------------------------------------------------------------------------------Function pv_id_exists( nPv_id )Dim rsTemp, Query_StringIf NOT IsNull( nPv_id ) AND nPv_id <> "" ThenQuery_String = _" SELECT pv.pv_id "&_" FROM PACKAGE_VERSIONS pv"&_" WHERE pv.pv_id = "& nPv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If (NOT rsTemp.BOF ) AND (NOT rsTemp.EOF) Thenpv_id_exists = TRUEElsepv_id_exists = FALSEEnd IfrsTemp.Close()set rsTemp = nothingElsepv_id_exists = FALSEEnd IfEnd Function'----------------------------------------------------------------------------------------------------------------------Function is_daemon_enabled_release( NNrtag_id, defaultReturnValue )Dim rsTemp, Query_StringIf NOT IsNull( NNrtag_id ) AND NNrtag_id <> "" ThenQuery_String = _" SELECT rc.bmcon_id "&_" FROM RELEASE_CONFIG rc"&_" WHERE rc.rtag_id = "& NNrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))is_daemon_enabled_release = FALSEWhile ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF) AND (is_daemon_enabled_release = FALSE))If (NOT IsNull(rsTemp("bmcon_id"))) AND (rsTemp("bmcon_id") <> "") Thenis_daemon_enabled_release = TRUEEnd IfrsTemp.MoveNextWEndrsTemp.Close()set rsTemp = nothingElseis_daemon_enabled_release = defaultReturnValueEnd IfEnd Function'--------------------------------------------------------------------------------------------------------------------------' Convert release state into a meaningful stringFunction Get_Official( nOfficial )If nOfficial = "N" ThenGet_Official = "Open"ElseIf nOfficial = "A" ThenGet_Official = "Archive"ElseIf nOfficial = "C" ThenGet_Official = "CCB"ElseIf nOfficial = "R" ThenGet_Official = "Restricted"ElseIf nOfficial = "Y" ThenGet_Official = "Closed"ElseGet_Official = "?"End IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function Get_Pkg_Id_For_Pv_Id ( NNpv_id )Dim rsTemp, Query_StringGet_Pkg_Id_For_Pv_Id = ""If NOT IsNull(NNpv_id) AND NNpv_id <> "" ThenQuery_String = _"SELECT pkg_id FROM package_versions WHERE pv_id = "& NNpv_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenGet_Pkg_Id_For_Pv_Id = rsTemp("pkg_id")End IfrsTemp.CloseSet rsTemp = nothingEnd IfEnd Function'-----------------------------------------------------------------------------------------------------------------------------Function iif(bFlag, sTrueStr, sFalseStr)if bFlag theniif = sTrueStrelseiif = sFalseStrend ifEnd Function'--------------------------------------------------------------------------------------------------------------------------' Sets the state of all build daemons of the specified releaseSub SetDaemonStates (artag_id,astate)On Error Resume NextOraDatabase.Parameters.Add "RTAG_ID", artag_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "NSTATE", astate, ORAPARM_INPUT, ORATYPE_NUMBERobjEH.TryORA ( OraSession )OraDatabase.ExecuteSQL _"BEGIN PK_BUILDAPI.SET_DAEMON_STATES(:RTAG_ID,:NSTATE); END;"objEH.CatchORA ( OraSession )OraDatabase.Parameters.Remove "RTAG_Id"OraDatabase.Parameters.Remove "NSTATE"End Sub'----------------------------------------------'Returns true if the specified package version exists in the specified tableFunction PackageExists(RtagId, pvId, stable)Dim rsTempDim sqryIf RtagId = "" ThenPackageExists = FalseElsesqry = "SELECT * FROM " & stable & " WHERE rtag_id = " & RtagId & " AND pv_id = " & pvIdSet rsTemp = OraDatabase.DbCreateDynaset(sqry,CInt(0))PackageExists = rsTemp.RecordCount > 0rsTemp.Close()Set rsTemp = NothingEnd IfEnd Function%>