appdb/cron cleanup.php

WineHQ wineowner at wine.codeweavers.com
Wed May 23 21:29:44 CDT 2007


ChangeSet ID:	31132
CVSROOT:	/opt/cvs-commit
Module name:	appdb
Changes by:	wineowner at winehq.org	2007/05/23 21:29:44

Modified files:
	cron           : cleanup.php 

Log message:
	Chris Morgan <cmorgan at alum.wpi.edu>
	Add removeScreenshotsWithMissingFiles() to the nightly cron script. This will close a hole where
	we could potentially have screenshots in the database that don't have thumbnails or images.

Patch: http://cvs.winehq.org/patch.py?id=31132

Old revision  New revision  Changes     Path
 1.32          1.33          +57 -0      appdb/cron/cleanup.php

Index: appdb/cron/cleanup.php
diff -u -p appdb/cron/cleanup.php:1.32 appdb/cron/cleanup.php:1.33
--- appdb/cron/cleanup.php:1.32	24 May 2007  2:29:44 -0000
+++ appdb/cron/cleanup.php	24 May 2007  2:29:44 -0000
@@ -81,6 +81,8 @@ orphanSessionListCheck();
 /* report error log entries to admins and flush the error log after doing so */
 reportErrorLogEntries();
 
+/* remove screenshots that are missing their screenshot and thumbnail files */
+removeScreenshotsWithMissingFiles();
 
 /* Users that are unwarned and inactive since $iMonths */
 function unwarnedAndInactiveSince($iMonths)
@@ -236,4 +238,59 @@ function reportErrorLogEntries()
     error_log::flush();
 }
 
+// returns an array of iScreenshotIds of screenshots that are
+// missing their files
+function getMissingScreenshotArray()
+{
+  $aMissingScreenshotIds = array();
+
+  // retrieve all screenshots, not queued, not rejected
+  $hResult = Screenshot::objectGetEntries(false, false);
+
+  // go through each screenshot
+  while($oRow = mysql_fetch_object($hResult))
+  {
+    $iScreenshotId = $oRow->id;
+    $oScreenshot = new Screenshot($iScreenshotId);
+
+    // load the screenshot and thumbnail
+    $oScreenshot->load_image(true);
+    $oScreenshot->load_image(false);
+
+    // are the screenshot and thumbnail images not loaded? if so
+    // add this screenshot id to the array
+    if(!$oScreenshot->oScreenshotImage->isLoaded() &&
+       !$oScreenshot->oThumbnailImage->isLoaded())
+    {
+      // add the screenshot id to the array
+      $aMissingScreenshotIds[] = $iScreenshotId;
+    }
+  }
+
+  return $aMissingScreenshotIds;
+}
+
+function removeScreenshotsWithMissingFiles()
+{
+    $aMissingScreenshotIds = getMissingScreenshotArray();
+
+    // build the email to admins about what we are doing
+    $sMsg = "Found ".count($aMissingScreenshotIds)." screenshots with missing files.\r\n";
+    //FIXME: uncomment the below line when we uncomment the below lines in the script
+    //    $sMsg.= "Deleting these screenshots.\r\n";
+
+    $sSubject = "Screenshots deleted\r\n";
+
+    $sEmail = User::get_notify_email_address_list(null, null); /* get list admins */
+    if($sEmail)
+        mail_appdb($sEmail, $sSubject, $sMsg);
+
+    //FIXME: activate this after we see the results from the nightly cron script email
+    // remove the screenshots with missing files
+    //    foreach($aMissingScreenshotIds as $iScreenshotId)
+    //    {
+    //      $oScreenshot = new Screenshot($iScreenshotId);
+    //      $oScreenshot->delete(true); // delete the screenshot silently
+    //    }
+}
 ?>



More information about the wine-cvs mailing list