Import initial din SVN ROAAUTO/Trunk @HEAD
This commit is contained in:
376
COMUN/programe/controllere/settingsbcontroller.prg
Normal file
376
COMUN/programe/controllere/settingsbcontroller.prg
Normal file
@@ -0,0 +1,376 @@
|
||||
#include security.h
|
||||
*!* #Define WINDOWHIDE 0x80
|
||||
*!* #Define WINDOWSHOW 0x40
|
||||
*!* #define TBAR_AUTOHIDE 1
|
||||
*!* #define TBAR_KEEPONTOP 2
|
||||
*!* #define ABM_GETSTATE 0x00000004
|
||||
*!* #define ABM_SETSTATE 0x0000000A
|
||||
|
||||
Define Class settingsBaseController As Custom
|
||||
cNumeProgram = ''
|
||||
cAppName = ''
|
||||
cAppPath = ''
|
||||
cIniFile = ''
|
||||
cVersiuneProgram = ''
|
||||
cVersiuneDBTxt = ''
|
||||
cROAClientPath = ''
|
||||
cROAClientIniFile = ''
|
||||
cIniText = ''
|
||||
lLog = .F.
|
||||
cHostErrors = ''
|
||||
cCursorHost = [crshost]
|
||||
nTipCriptare = 0
|
||||
oOraSettingsController = Null
|
||||
|
||||
*!* 0 = fara
|
||||
*!* 1 = vechi
|
||||
*!* 2 = nou
|
||||
|
||||
Procedure Init
|
||||
Lparameters tcNumeProgram
|
||||
Declare Long FindWindow In "user32" String lpClassName, String lpWindowName
|
||||
Declare Long SetWindowPos In "user32" Long HWnd, Long hWndInsertAfter, Long x, Long Y, Long cx, Long cy, Long wFlags
|
||||
Declare Long SHAppBarMessage In "shell32.dll" Long dwMessage,String @pData
|
||||
|
||||
This.cNumeProgram = tcNumeProgram
|
||||
This.cAppPath = Addbs(ShortPath(GetAppStartPath()))
|
||||
This.cAppName = Allt(Uppe(Juststem(Sys(16,0))))
|
||||
This.cIniFile = This.cAppPath + 'settings.ini'
|
||||
This.cROAClientPath = Addbs(Left(This.cAppPath,Rat("\",This.cAppPath,2)-1))
|
||||
This.cROAClientIniFile = This.cROAClientPath + 'settings.ini'
|
||||
|
||||
If !File(This.cIniFile)
|
||||
This.InitSettings()
|
||||
Endif
|
||||
|
||||
This.ReadSettings()
|
||||
This.citesteVersiuneProgram()
|
||||
This.citesteVersiuneDBTxt()
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Procedure setDBController
|
||||
Lparameters toDBController
|
||||
This.oOraSettingsController = Createobject('orasettingscontroller',toDBController)
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Procedure verificaVersiuni
|
||||
Local lcMesaj,lcMesajVerificare
|
||||
lcMesajVerificare = This.oOraSettingsController.verificaVersiuni(This.cNumeProgram,This.cVersiuneProgram,This.cVersiuneDBTxt)
|
||||
If !Empty(Nvl(lcMesajVerificare,[]))
|
||||
Do Case
|
||||
Case This.cNumeProgram$Upper(lcMesajVerificare)
|
||||
lcMesaj = "Trebuie actualizat " + This.cNumeProgram + " la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
|
||||
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
|
||||
Case "DB"$Upper(lcMesajVerificare)
|
||||
lcMesaj = "Trebuie actualizata baza de date la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
|
||||
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
|
||||
Endcase
|
||||
AMESSAGEBOX(lcMesaj,0+48, "Actualizare")
|
||||
Endif
|
||||
Release lcMesaj,lcMesajVerificare
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Procedure citesteVersiuneProgram
|
||||
Local lcFisierExe
|
||||
lcFisierExe = This.cAppPath + This.cAppName + [.exe]
|
||||
If Agetfileversion(aVersion, lcFisierExe) > 0
|
||||
This.cVersiuneProgram = Alltrim(aVersion(4))
|
||||
Else
|
||||
This.cVersiuneProgram = []
|
||||
Endif
|
||||
If Type('aVersion') <> 'U'
|
||||
Release aVersion
|
||||
Endif
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Procedure citesteVersiuneDBTxt
|
||||
Local lcFisierVersiuneDB
|
||||
lcFisierVersiuneDB = This.cAppPath + 'versiune_db.txt'
|
||||
If File(lcFisierVersiuneDB)
|
||||
This.cVersiuneDBTxt = Alltrim(Filetostr(lcFisierVersiuneDB))
|
||||
Else
|
||||
This.cVersiuneDBTxt = []
|
||||
Endif
|
||||
Release lcFileVersiuneDB
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Procedure InitSettings
|
||||
If Empty(This.cIniText)
|
||||
Return
|
||||
Endif
|
||||
Strtofile(This.cIniText, This.cIniFile)
|
||||
Endproc && InitSettings
|
||||
*!* *********************************************************************
|
||||
*!* Function HideTaskBar
|
||||
*!* Local lnHandle,lcInfoBuffer
|
||||
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
|
||||
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWHIDE)
|
||||
*!* DEBUG
|
||||
*!* SUSPEND
|
||||
*!* lcInfoBuffer = This.num2dword(0) + ;
|
||||
*!* This.num2dword(lnHandle) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(0)
|
||||
*!* SHAppBarMessage(ABM_GETSTATE,@lcInfoBuffer)
|
||||
*!* lcInfoBuffer = This.num2dword(50000) + ;
|
||||
*!* This.num2dword(lnHandle) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(0) + ;
|
||||
*!* This.num2dword(BITNOT(TBAR_KEEPONTOP))
|
||||
*!* SHAppBarMessage(ABM_SETSTATE,@lcInfoBuffer)
|
||||
*!* Endfunc
|
||||
*!* *********************************************************************
|
||||
*!* Function ShowTaskBar
|
||||
*!* Local lnHandle
|
||||
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
|
||||
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWSHOW)
|
||||
*!* Endfunc
|
||||
*!* *********************************************************************
|
||||
*!* FUNCTION num2dword
|
||||
*!* LPARAMETERS tnValue
|
||||
*!* #DEFINE m0 256
|
||||
*!* #DEFINE m1 65536
|
||||
*!* #DEFINE m2 16777216
|
||||
*!* LOCAL b0, b1, b2, b3
|
||||
*!* b3 = Int(tnValue/m2)
|
||||
*!* b2 = Int((tnValue- b3*m2)/m1)
|
||||
*!* b1 = Int((tnValue- b3*m2 - b2*m1)/m0)
|
||||
*!* b0 = Mod(tnValue, m0)
|
||||
*!* RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
|
||||
*!* endfunc
|
||||
*!* *********************************************************************
|
||||
Procedure ReadSettings
|
||||
This.cHostErrors = This.GetVariable([errors],[host])
|
||||
If Upper(Alltrim(This.GetVariable([errors],[log]))) = [TRUE]
|
||||
This.lLog = .T.
|
||||
Else
|
||||
This.lLog = .F.
|
||||
Endif
|
||||
|
||||
*!* This.citesteSecurity()
|
||||
Endproc
|
||||
*********************************************************************
|
||||
Function getHostErrors
|
||||
Return This.cHostErrors
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getlLog
|
||||
Return This.lLog
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getLogPath
|
||||
Return Iif(This.lLog,This.cAppPath + [log_]+ This.cNumeProgram + [_] + Dtos(Date()) + [.txt],[])
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getUpdateServer
|
||||
Return This.GetVariable([update],[server])
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getNumeProgram
|
||||
Return This.cNumeProgram
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getSchemaSecurity
|
||||
Lparameters tcNumeServer
|
||||
Local lcAliasVechi,lcSchema
|
||||
lcSchema = []
|
||||
lcAliasVechi = Alias()
|
||||
Select (This.cCursorHost)
|
||||
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
|
||||
If Found()
|
||||
lcSchema = Upper(Alltrim(schema))
|
||||
Endif
|
||||
If Used(lcAliasVechi)
|
||||
Select (lcAliasVechi)
|
||||
Endif
|
||||
Return lcSchema
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getParolaSecurity
|
||||
Lparameters tcNumeServer
|
||||
Local lcAliasVechi,lcParola
|
||||
lcParola = []
|
||||
lcAliasVechi = Alias()
|
||||
Select (This.cCursorHost)
|
||||
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
|
||||
If Found()
|
||||
lcParola = Alltrim(pwd)
|
||||
lcParola = Iif(Alltrim(isEncrypted) = [1],EncryptDecrypt(lcParola,ENCRYPTKEY,"decrypt",Iif(This.nTipCriptare=2,"blowfish","old")),lcParola)
|
||||
Endif
|
||||
If Used(lcAliasVechi)
|
||||
Select (lcAliasVechi)
|
||||
Endif
|
||||
Return lcParola
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function citesteSecurity
|
||||
Lparameters tcFileExt
|
||||
Local lcSecurityFile,lcSecurityPath,lnValid,lcFileExt,lcSecurityText,llSucces
|
||||
llSucces = .T.
|
||||
lcFileExt = Iif(Empty(tcFileExt),[XML],tcFileExt)
|
||||
|
||||
lcSecurityPath = This.cROAClientPath + [SECURITY\]
|
||||
lcSecurityFile = lcSecurityPath + [roa_security.] + lcFileExt
|
||||
lnValid = 0
|
||||
|
||||
If !File(lcSecurityFile)
|
||||
AMESSAGEBOX('Nu exista fisierul ' + lcSecurityFile + ' !',0+16,'Atentie')
|
||||
llSucces = .F.
|
||||
Else
|
||||
If Used(This.cCursorHost)
|
||||
Use In (This.cCursorHost)
|
||||
Endif
|
||||
|
||||
Create Cursor (This.cCursorHost)(Host c(100), schema c(100), pwd v(100), isEncrypted c(1))
|
||||
lcSecurityText = Filetostr(lcSecurityFile)
|
||||
If lcFileExt = [XML]
|
||||
Try
|
||||
Xmltocursor(lcSecurityFile, "cXML", 512)
|
||||
Select cXml
|
||||
Go Top
|
||||
Scatter Name lofirstrecord
|
||||
|
||||
If lofirstrecord.Host="ENCRYPTION"
|
||||
This.nTipCriptare = 2
|
||||
Delete
|
||||
Else
|
||||
This.nTipCriptare = 1
|
||||
Endif
|
||||
|
||||
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) ;
|
||||
SELECT Host, schema, pwd, "1" As isEncrypted ;
|
||||
from cXml
|
||||
lnValid = Reccount('cXML')
|
||||
|
||||
Use In cXml
|
||||
Catch To loex
|
||||
*!* Local loEx As Exception
|
||||
AMESSAGEBOX('Mesaj: ' + loex.Message + CRLF + ;
|
||||
'Eroare nr: ' + Alltrim(Transform(loex.ErrorNo)) + CRLF + ;
|
||||
'Cod: ' + loex.LineContents + CRLF + 'Procedura: ' + loex.Procedure + CRLF + ;
|
||||
'Linia nr: ' + Alltrim(Transform(loex.Lineno)),0+16,'Eroare')
|
||||
llSucces = .F.
|
||||
Finally
|
||||
Use In (Select('cXML'))
|
||||
Endtry
|
||||
|
||||
Else
|
||||
Local laHost
|
||||
Dimension laHost[1]
|
||||
|
||||
lnLen = Alines(laHost, lcSecurityText)
|
||||
|
||||
If lnLen > 0
|
||||
For i = 1 To lnLen
|
||||
lcLinie = laHost[i]
|
||||
|
||||
lcHost = Getwordnum(lcLinie, 1, ';')
|
||||
lcSchema = Getwordnum(lcLinie, 2, ';')
|
||||
lcPassword = Getwordnum(lcLinie, 3, ';')
|
||||
lcMode = "0" && necriptat - security.txt
|
||||
|
||||
If Empty(lcHost) Or Empty(lcSchema) Or Empty(lcPassword)
|
||||
Loop
|
||||
Endif
|
||||
|
||||
lnValid = lnValid + 1
|
||||
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) Values (lcHost, lcSchema, lcPassword, Iif(Empty(lcMode), '0', lcMode))
|
||||
Endfor
|
||||
This.nTipCriptare = 0
|
||||
Endif
|
||||
Endif
|
||||
Endif
|
||||
|
||||
Return llSucces
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Procedure citesteSetariSchema
|
||||
Lparameters tnIdUtil
|
||||
This.oOraSettingsController.initializeaza_firma(This.nId,tnIdUtil)
|
||||
Endproc
|
||||
******************************************************************
|
||||
Function getoFirma
|
||||
Return This.oOraSettingsController.getoFirma()
|
||||
Endfunc
|
||||
******************************************************************
|
||||
Function getAn
|
||||
Return This.oOraSettingsController.getoCalendar().an
|
||||
Endfunc
|
||||
******************************************************************
|
||||
Function getLuna
|
||||
Return This.oOraSettingsController.getoCalendar().luna
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getIdSucursala
|
||||
Return This.oOraSettingsController.getIdSucursala()
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getIdMama
|
||||
Return This.oOraSettingsController.getIdMama()
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Function getEMama
|
||||
Return This.oOraSettingsController.getEMama()
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
Procedure SetVariable
|
||||
Lparameters tcSection, tcVarname, tuValue
|
||||
Local lcSection, lcVarname, lcValue
|
||||
|
||||
lcSection = Lower(Alltrim(tcSection))
|
||||
lcVarname = Lower(Alltrim(tcVarname))
|
||||
lcValue = Transform(tuValue)
|
||||
SetIni(This.cIniFile, lcSection, lcVarname, lcValue)
|
||||
|
||||
Endproc && SetVariable
|
||||
*********************************************************************
|
||||
Procedure GetVariable
|
||||
Lparameters tcSection, tcVarname
|
||||
|
||||
Local lcSection, lcVarname, lcValue
|
||||
|
||||
lcSection = Lower(Alltrim(tcSection))
|
||||
lcVarname = Lower(Alltrim(tcVarname))
|
||||
lcValue = GetIni(This.cIniFile, lcSection, lcVarname)
|
||||
lcValue = Nvl(lcValue, '')
|
||||
If Empty(lcValue) And File(This.cROAClientIniFile)
|
||||
lcValue = GetIni(This.cROAClientIniFile, lcSection, lcVarname)
|
||||
lcValue = Nvl(lcValue, '')
|
||||
Endif
|
||||
|
||||
Return lcValue
|
||||
Endproc && GetVariable
|
||||
*********************************************************************
|
||||
Function getIniFilePath
|
||||
Return This.cIniFile
|
||||
Endfunc
|
||||
*********************************************************************
|
||||
*!* FUNCTION GetValue
|
||||
*!* LPARAMETERS tcSetting
|
||||
*!*
|
||||
*!* LOCAL lcSetting, luValue
|
||||
*!* lcSetting = "THIS." + tcSetting
|
||||
*!* luValue = ''
|
||||
*!* IF TYPE(lcSetting) # 'U'
|
||||
*!* luValue = &lcSetting
|
||||
*!* ENDIF
|
||||
*!* RETURN luValue
|
||||
*!*
|
||||
*!* ENDFUNC
|
||||
*!* *********************************************************************
|
||||
*!* PROCEDURE SetValue
|
||||
*!* LPARAMETERS tcSetting, tuValue
|
||||
*!*
|
||||
*!* LOCAL lcSetting, luValue
|
||||
*!* lcSetting = "THIS." + tcSetting
|
||||
*!* luValue = tuValue
|
||||
*!* IF TYPE(lcSetting) # 'U'
|
||||
*!* &lcSetting = luValue
|
||||
*!* ENDIF
|
||||
*!*
|
||||
*!* ENDPROC
|
||||
*!* *********************************************************************
|
||||
Enddefine && settingsBaseController
|
||||
Reference in New Issue
Block a user