public getFileStatus ( string $pathAndFilename ) : integer | ||
$pathAndFilename | string | |
Résultat | 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;
}
}
}
/** * @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); }