Actions

API16

JInstaller/findDeletedFiles

From Joomla! Documentation

< API16:JInstaller
Revision as of 17:54, 22 March 2010 by Doxiki (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Compares two "files" entries to find deleted files/folders

[Edit Descripton]

Description:JInstaller/findDeletedFiles

Syntax

findDeletedFiles($old_files, $new_files)
Parameter Name Default Value Description
$old_files An array of objects that are the old files
$new_files An array of objects that are the new files

Returns

array An array with the delete files and folders in findDeletedFiles[files] and findDeletedFiles[folders] resepctively

Defined in

libraries/joomla/installer/installer.php

Importing

jimport( 'joomla.installer.installer' );

Source Body

public function findDeletedFiles($old_files, $new_files)
{
        // The magic find deleted files function!
        $files = Array(); // the files that are new
        $folders = Array(); // the folders that are new
        $containers = Array(); // the folders of the files that are new
        $files_deleted = Array(); // a list of files to delete
        $folders_deleted = Array(); // a list of folders to delete
 
        foreach ($new_files as $file)
        {
                switch($file->getName())
                {
                        case 'folder':
                                $folders[] = (string)$file; // add any folders to the list
                                break;
 
                        case 'file':
                        default:
                                $files[] = (string)$file; // add any files to the list
                                // now handle the folder part of the file to ensure we get any containers
                                $container_parts = explode('/',dirname((string)$file)); // break up the parts of the directory
                                $container = ''; // make sure this is clean and empty
                                foreach ($container_parts as $part)
                                {
                                        // iterate through each part
                                        if (!empty($container)) $container .= '/'; // add a slash if its not empty
                                        $container .= $part; // append the folder part
                                        if (!in_array($container, $containers)) $containers[] = $container; // add the container if it doesn't already exist
                                }
                                break;
                }
        }
 
        foreach ($old_files as $file)
        {
                switch($file->getName())
                {
                        case 'folder':
                                if (!in_array((string)$file, $folders))
                                {
                                        // look if the folder exists in the new list
                                        if (!in_array((string)$file, $containers)) { // check if the folder exists as a container in the new list
                                                $folders_deleted[] = (string)$file; // if its not in the new list or a container then delete it
                                        }
                                }
                                break;
 
                        case 'file':
                        default:
                                if (!in_array((string)$file, $files))
                                {
                                        // look if the file exists in the new list
                                        if (!in_array(dirname((string)$file), $folders)) {
                                                // look if the file is now potentially in a folder
                                                $files_deleted[] = (string)$file; // not in a folder, doesn't exist, wipe it out!
                                        }
                                }
                                break;
                }
        }
        return Array('files'=>$files_deleted, 'folders'=>$folders_deleted);
}

[Edit See Also] SeeAlso:JInstaller/findDeletedFiles

Examples

<CodeExamplesForm />