Well there is 279 classes in 2.3.1 and 254 external functions contained within the complete XOOPS system..
I wrote a tool in vb6 to convert it to contain all the function_exists and class_exists..
Here is the code for it - in
finalcFindFile.cls Dim colInPaths As Collection
Dim colOutpaths As Collection
Dim sInputPath As String
Dim sOutputPath As String
Dim sInputPath2 As String
Dim sOutputPath2 As String
Dim lTotalProcess As Long
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer
Dim AppStringName As String
Dim cTempCollection As Collection
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Enum ListPaths
PathsAndFilenames = 1
FilenamesOnly = 2
PathsOnly = 3
End Enum
Dim ListSelected As ListPaths
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End Function
Function FindFilesAPI(ByVal Path As String, ByVal SearchStr As String, ByVal FileCount As Integer, ByVal DirCount As Integer)
Dim FileName As String ' Walking filename variable...
Dim DirName As String ' SubDirectory Name
Dim dirNames() As String ' Buffer for directory name entries
Dim nDir As Integer ' Number of directories in this path
Dim i As Integer ' For-loop counter...
Dim hSearch As Long ' Search Handle
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(Path, 1) <> "" Then Path = Path & ""
' Search for subdirectories.
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(Path & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
DirName = StripNulls(WFD.cFileName)
' Ignore the current and encompassing directories.
If (DirName <> ".") And (DirName <> "..") Then
' Check for directory with bitwise comparison.
If GetFileAttributes(Path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
If InStr(1, Path & DirName, "Processed") = 0 Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
End If
Cont = FindNextFile(hSearch, WFD) 'Get next subdirectory.
Loop
Cont = FindClose(hSearch)
End If
' Walk through this directory and sum file sizes.
hSearch = FindFirstFile(Path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
FileCount = FileCount + 1
If InStr(1, Path & FileName, "SYSTEM FILES") <> 0 Then
'// SYSTEM FILES DIRECTORY
Else
'// OTHER DIRECTORIES
cTempCollection.Add Path & FileName
End If
End If
Cont = FindNextFile(hSearch, WFD) ' Get next file
Wend
Cont = FindClose(hSearch)
End If
' If there are sub-directories...
If nDir > 0 Then
' Recursively walk into them...
For i = 0 To nDir - 1
FindFilesAPI = FindFilesAPI + FindFilesAPI(Path & dirNames(i) & "", SearchStr, FileCount, DirCount)
Next i
End If
End Function
Public Function DoFileSystemSearch(ByVal sPath As String, ByVal sFilter As String, ByVal ListAction As ListPaths) As Collection
ListSelected = ListAction
Set cTempCollection = New Collection
FindFilesAPI sPath, sFilter, NumFiles, NumDirs
Set DoFileSystemSearch = cTempCollection
End Function
form1.frm Private Sub ConvertFile( _
ByVal strInFileName As String, _
ByVal strOutFileName As String _
)
Dim strInFileContent As String
Dim strOutFileContent As String
Dim i As Long, j As Long
Open strInFileName For Input As #1
Open strOutFileName For Output As #2
Do Until EOF(1)
Line Input #1, strInFileContent
strOutFileContent = ""
j = 1
For i = 1 To Len(strInFileContent)
If Asc(Mid(strInFileContent, i, 1)) = 10 Then
strOutFileContent = strOutFileContent & vbCrLf
j = j + 2
Else
strOutFileContent = strOutFileContent & Mid(strInFileContent, i, 1)
j = j + 1
End If
Next
Print #2, strOutFileContent
Loop
Close #2
Close #1
End Sub
Private Sub Command1_Click()
Dim cFind As New cFindFiles
Dim cfList As New Collection
Set cfList = cFind.DoFileSystemSearch(Text1.Text, "*.php", PathsAndFilenames)
For Each Item In cfList
Me.Caption = "editing: " & Mid(Item, Len((Text1.Text)) + 1, Len(Item) - Len(Text1.Text))
Open Item For Input As #1
Line Input #1, tmp
Close #1
If InStr(1, tmp, Chr(10)) Then
ConvertFile Item, "tmp2.php"
FileCopy "tmp2.php", Item
Kill "tmp2.php"
End If
Open "tmp.php" For Output As #2
Open Item For Input As #1
'If InStr(1, Item, "auth.php") Then Stop
prenth = 0
While Not EOF(1)
addme = String(step, Chr(9))
Line Input #1, tmp
skipend = False
If InStr(1, tmp, "/*") Then
incomment = 2
End If
If InStr(1, tmp, "*/") And incomment = 2 Then
incomment = False
End If
If incomment = 1 Then
incomment = 0
End If
If InStr(1, tmp, "//") > 1 And incomment = 0 Then
incomment = 1
End If
If incomment = False And InStr(1, " " & tmp, "class ") > 0 And InStr(1, tmp, "=") = 0 And Len(tmp) <> 0 And prenth = 0 Then
inclass = True
Counts = True
prenth = 0
firstprenth = InStr(1, tmp, "{")
extends = InStr(1, tmp, "extends")
classname = Trim(Mid(tmp, InStr(1, tmp, "class ") + 6, IIf(extends > 0, extends - (InStr(1, tmp, "function ") + 8), IIf(firstprenth > 0, firstprenth - (InStr(1, tmp, "function ") + 8), Len(tmp) - (InStr(1, tmp, "function ") + 1)))))
If firstprenth > 5 Then prenth = prenth + 1
addme = addme & "if (!class_exists('" & classname & "')) {" & vbCrLf & vbTab
step = step + 1
classes = classes + 1
skipend = True
ElseIf incomment = False And InStr(1, " " & tmp, "function ") > 0 And Len(tmp) <> 0 And inclass = False And prenth = 0 Then
infunction = True
Counts = True
prenth = 0
firstbrack = InStr(1, tmp, "(")
firstprenth = InStr(1, tmp, "{")
functionname = Trim(Mid(tmp, InStr(1, tmp, "function ") + 9, firstbrack - (InStr(1, tmp, "function ") + 9)))
If firstprenth > 9 Then prenth = prenth + 1
addme = addme & "if (!function_exists('" & functionname & "')) {" & vbCrLf & vbTab
step = step + 1
functions = functions + 1
skipend = True
ElseIf incomment = False And Counts = True And (inclass = True Or infunction = True) Then
For y = 1 To Len(tmp)
Select Case Mid(tmp, y, 1)
Case "{"
prenth = prenth + 1
Case "}"
prenth = prenth - 1
End Select
Next
End If
If skipend = False Then
If (infunction = True And prenth = 0) Or (tmp = "}" And inclass = True) Then
infunction = False
inclass = False
addme = Chr(9) & "}" & vbCrLf
Label1(0).Caption = "Classes: " & classes
Label1(2).Caption = "Functions: " & functions
Counts = False
step = 0
End If
End If
Print #2, addme & tmp
Wend
Close #2
Close #1
FileCopy "tmp.php", Item
Kill "tmp.php"
DoEvents
Next
End Sub