HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/web/castironradiatorcentre/create-image-cache.asp
<%Option Explicit%>
<!--#include file="dbfunctions.asp"-->
<!--#include file="apputils.asp"-->
<html>
<head><%HTMLHeadStart%>
<title>Create Image Cache</title>
</head>

<body>
<div>

<%

CreateImageCache


%>


</body>
</html>
<%Finalise%>

<%

' *** need to set the date & time of the file using last updated from the table
' *** check if file already exists with same date/time, and don't save if it does
' *** ? add a password or security code to run this

' (SS,23/08/18) Modified Sub SaveBinaryData to only save when file doesn't already exist with same name, date/time.
' (SS,5/4/19) modified to add category, subcategory, other and option images
' (SS,8/4/19) new improved version which calls GetImageName to create the image (if necessary)
Sub CreateImageCache
  ' go through each active picture in database
  ' save to file as main, small and large thumbnails, perhaps add others
  
  ClearCreateImageCacheLog
  
  ' to do, img src set
  Dim LSQL, LType, LCode, LCode2, LImageName, LPictureCount, LImagesCreatedCount, LImagesExistCount, LImagesDeletedCount
  'LProductCode = "CDC-460"
  Dim LPictureID
  
  ' (SS,8/4/19)
  Dim LImageFileNameList, LImageCount
  ReDim LImageFileNameList(-1)
  LImageCount = 0
  
  ' (SS,23/8/18)
  LPictureCount = 0
  LImagesCreatedCount = 0
  LImagesExistCount = 0
  LImagesDeletedCount = 0  

  ' (SS,5/4/19) removed products.ProductCode, products.ProductName, moved ORDER BY to later
  LSQL = "SELECT pictures.PictureID, pictures.Type, pictures.Code, pictures.Code2, pictures.SortOrder" &_
    " FROM pictures" &_
    " INNER JOIN products ON products.ProductCode = pictures.Code" &_
    " WHERE pictures.Type = 'P' AND pictures.Enabled AND NOT products.ProductDisabled"
  
  ' (SS,5/4/19) added union all to include category, subcategory, other and option value pictures
  LSQL = LSQL & " UNION ALL "
  
  ' (SS,5/4/19) include category, subcategory, other and option value pictures
  LSQL = LSQL &_    
    "SELECT PictureID, Type, Code, Code2, SortOrder FROM pictures" &_
    " WHERE Type <> 'P' AND pictures.Enabled"
  
  '   " ORDER BY products.ProductCode, pictures.SortOrder, pictures.Code2, pictures.PictureID"
  ' (SS,5/4/19) replaced above with following for all records in union query
  LSQL = LSQL & " ORDER BY IF(Type = 'P', ' ', Type), Code, SortOrder, Code2, PictureID"   
    
  OpenQuery(LSQL)
  
  'Response.Write "### " & LSQL & " ###<br>"
    
  Do While Not EndOfQuery

    LPictureCount = LPictureCount + 1
  
    LType = GetQueryValue("Type") ' (SS,5/4/19)
    LCode = GetQueryValue("Code")
    LCode2 = GetQueryValue("Code2")
    LPictureID = GetQueryValue("PictureID")
    
    ' create the original full size image, then large thumbnail and then small thumbnail
    CreateImageInCache LType, LCode, LCode2, LPictureID, "o", LImagesCreatedCount, LImagesExistCount, LImageCount, LImageFileNameList
    CreateImageInCache LType, LCode, LCode2, LPictureID, "l", LImagesCreatedCount, LImagesExistCount, LImageCount, LImageFileNameList
    CreateImageInCache LType, LCode, LCode2, LPictureID, "s", LImagesCreatedCount, LImagesExistCount, LImageCount, LImageFileNameList
    
    NextQueryRecord
  Loop
  
  ' (SS,9/4/19) delete images files that are no longer required
  Dim LImageCacheFolder, objFSO, LFolder, LSubFolder, LSubFolders
  LImageCacheFolder = GetImageCacheFolder
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set LFolder = objFSO.GetFolder(Server.MapPath(LImageCacheFolder))
  For Each LSubFolder in LFolder.SubFolders
    ' AddToCreateImageCacheLog "Sub Folder: " & LImageCacheFolder + "/" + LSubFolder.Name & BR & NL
    PurgeImageCacheFolder LImageCacheFolder + "/" + LSubFolder.Name, LImagesDeletedCount, LImageFileNameList
  Next
  Set LFolder = Nothing
  Set objFSO = Nothing
   
  AddToCreateImageCacheLog "<br>" & NL
  AddToCreateImageCacheLog "Pictures checked: " & LPictureCount & "<br>" & NL
  AddToCreateImageCacheLog "New images created in cache: " & LImagesCreatedCount & "<br>"  & NL
  AddToCreateImageCacheLog "Images already in cache: " & LImagesExistCount & "<br>"  & NL
  AddToCreateImageCacheLog "Images deleted from cache: " & LImagesDeletedCount & "<br>"  & NL
     
  ' show list of all images  
  'Dim i
  'For i = 0 To UBound(LImageFileNameList)
  '  AddToCreateImageCacheLog LImageFileNameList(i) & BR & NL
  'Next  
  ' show time taken
  AddToCreateImageCacheLog "<br>" & NL  
  AddToCreateImageCacheLog "Time taken: " & GetTimer & BR & NL
     
  CloseQuery
  
  ' (SS,24/8/18) send log as email 
  SendEmail "contactforms@itpartnership.com", "", "", FEmailOrderConfirmationFrom, "Create Image Cache Results for " & GetStoreName, GetCreateImageCacheLog, True
    
End Sub

' (SS,9/4/19) purge image cache, i.e. delete unwanted images in given folder
Sub PurgeImageCacheFolder(AFolderPath, AImagesDeletedCount, AImageFileNameList)
  Dim objFSO, LFolder, LFile, LFileName, LFound, i
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set LFolder = objFSO.GetFolder(Server.MapPath(AFolderPath))
  For Each LFile in LFolder.Files
    LFileName = AFolderPath + "/" + LFile.Name
    
    ' look for image in list, delete file if not found in list
    LFound = False
    For i = 0 To UBound(AImageFileNameList)
      If AImageFileNameList(i) = LFileName Then
        LFound = True
      End If
    Next
    
    If Not LFound Then    
      objFSO.DeleteFile(Server.MapPath(LFileName))
      AddToCreateImageCacheLog "Deleted " & LFileName & BR & NL
      AImagesDeletedCount = AImagesDeletedCount + 1
    End If
  Next
  Set LFolder = Nothing
  Set objFSO = Nothing
End Sub

' (SS,8/4/19)
Sub CreateImageInCache(AType, ACode, ACode2, APictureID, ASize, ByRef AImagesCreatedCount, ByRef AImagesExistCount, ByRef AImageCount, ByRef AImageFileNameList)
  Dim LImageName
  LImageName = GetImageName(AType, ACode, ACode2, APictureID, ASize)
  
  ' added full image file name to list
  ReDim Preserve AImageFileNameList(UBound(AImageFileNameList) + 1)
  AImageFileNameList(AImageCount) = LImageName
  AImageCount = AImageCount + 1  
  
  If GetImageCreatedInCache Then
    AddToCreateImageCacheLog "Created " & LImageName & "<br>" & NL
    AImagesCreatedCount = AImagesCreatedCount + 1
  Else
    AImagesExistCount = AImagesExistCount + 1  
  End If   
End Sub

Sub ClearCreateImageCacheLog
  Session("CreateImageCacheLog") = ""
End Sub

' (SS,24/8/18)
Sub AddToCreateImageCacheLog(AMessage)
  Session("CreateImageCacheLog") = Session("CreateImageCacheLog") & AMessage
  
  Response.Write AMessage  
End Sub

Function GetCreateImageCacheLog
  GetCreateImageCacheLog = Session("CreateImageCacheLog")
End Function

%>