/** * Remove any temp files and/or folders that might have been created. */ private function _cleanTempFiles($unzipFolder) { // Get rid of all the .bak files/folders. $baks = IOHelper::getFolderContents(craft()->path->getAppPath(), true, ".*\\.bak\$"); foreach ($baks as $bak) { if (IOHelper::fileExists($bak)) { if (IOHelper::isWritable($bak)) { Craft::log('Deleting .bak file: ' . $bak, LogLevel::Info, true); IOHelper::deleteFile($bak, true); } } else { if (IOHelper::folderExists($bak)) { if (IOHelper::isWritable($bak)) { Craft::log('Deleting .bak folder:' . $bak, LogLevel::Info, true); IOHelper::clearFolder($bak, true); IOHelper::deleteFolder($bak, true); } } } } // Now delete any files/folders that were marked for deletion in the manifest file. $manifestData = UpdateHelper::getManifestData($unzipFolder); if ($manifestData) { foreach ($manifestData as $row) { if (UpdateHelper::isManifestVersionInfoLine($row)) { continue; } $rowData = explode(';', $row); $folder = false; if (UpdateHelper::isManifestLineAFolder($rowData[0])) { $folder = true; $tempFilePath = UpdateHelper::cleanManifestFolderLine($rowData[0]); } else { $tempFilePath = $rowData[0]; } $fullPath = ''; switch (trim($rowData[1])) { // If the file/folder was set to be deleted, there is no backup and we go ahead and remove it now. case PatchManifestFileAction::Remove: if ($tempFilePath == '') { $fullPath = IOHelper::normalizePathSeparators(craft()->path->getAppPath()); } else { $fullPath = IOHelper::normalizePathSeparators(craft()->path->getAppPath() . $tempFilePath); } break; } // Delete any files/folders we backed up. if ($folder) { if (($folder = IOHelper::getFolder($fullPath)) !== false) { Craft::log('Deleting folder: ' . $folder->getRealPath(), LogLevel::Info, true); $folder->delete(); } } else { if (($file = IOHelper::getFile($fullPath)) !== false) { Craft::log('Deleting file: ' . $file->getRealPath(), LogLevel::Info, true); $file->delete(); } } } } // Clear the temp folder. IOHelper::clearFolder(craft()->path->getTempPath(), true); }