Piwik\Filesystem::directoryDiff PHP Method

directoryDiff() public static method

Computes the difference of directories. Compares $target against $source and returns a relative path to all files and directories in $target that are not present in $source.
public static directoryDiff ( $source, $target ) : string[]
$source
$target
return string[]
    public static function directoryDiff($source, $target)
    {
        $sourceFiles = self::globr($source, '*');
        $targetFiles = self::globr($target, '*');
        $sourceFiles = array_map(function ($file) use($source) {
            return str_replace($source, '', $file);
        }, $sourceFiles);
        $targetFiles = array_map(function ($file) use($target) {
            return str_replace($target, '', $file);
        }, $targetFiles);
        $diff = array_diff($targetFiles, $sourceFiles);
        return array_values($diff);
    }

Usage Example

Example #1
0
 public function test_unlinkTargetFilesNotPresentInSource_shouldUnlinkAllTargetFiles_IfSourceIsEmpty()
 {
     $source = $this->createEmptySource();
     $target = $this->createTargetFiles();
     // make sure there is a difference between those folders
     $result = Filesystem::directoryDiff($source, $target);
     $this->assertNotEmpty($result);
     Filesystem::unlinkTargetFilesNotPresentInSource($source, $target);
     // make sure there is no longer a difference
     $result = Filesystem::directoryDiff($source, $target);
     $this->assertEquals(array(), $result);
     $result = Filesystem::directoryDiff($target, $source);
     $this->assertEquals(array(), $result);
 }