Neos\Flow\Monitor\ChangeDetectionStrategy\ModificationTimeStrategy::getFileStatus PHP Method

getFileStatus() public method

Checks if the specified file has changed
public getFileStatus ( string $pathAndFilename ) : integer
$pathAndFilename string
return integer One of the STATUS_* constants
    public function getFileStatus($pathAndFilename)
    {
        $actualModificationTime = @filemtime($pathAndFilename);
        if (isset($this->filesAndModificationTimes[$pathAndFilename])) {
            if ($actualModificationTime !== false) {
                if ($this->filesAndModificationTimes[$pathAndFilename] === $actualModificationTime) {
                    return self::STATUS_UNCHANGED;
                } else {
                    $this->filesAndModificationTimes[$pathAndFilename] = $actualModificationTime;
                    $this->modificationTimesChanged = true;
                    return self::STATUS_CHANGED;
                }
            } else {
                unset($this->filesAndModificationTimes[$pathAndFilename]);
                $this->modificationTimesChanged = true;
                return self::STATUS_DELETED;
            }
        } else {
            if ($actualModificationTime !== false) {
                $this->filesAndModificationTimes[$pathAndFilename] = $actualModificationTime;
                $this->modificationTimesChanged = true;
                return self::STATUS_CREATED;
            } else {
                return self::STATUS_UNCHANGED;
            }
        }
    }

Usage Example

 /**
  * @test
  */
 public function getFileStatusReturnsStatusChangedIfTheFileExistedEarlierButTheModificationTimeHasChangedSinceThen()
 {
     $fileUrl = vfsStream::url('testDirectory') . '/test.txt';
     file_put_contents($fileUrl, 'test data');
     $this->strategy->getFileStatus($fileUrl);
     vfsStreamWrapper::getRoot()->getChild('test.txt')->lastModified(time() + 5);
     clearstatcache();
     $status = $this->strategy->getFileStatus($fileUrl);
     $this->assertSame(\Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface::STATUS_CHANGED, $status);
 }