*/ class NewDirectoryStateChecker extends ResourceStateChecker { protected $childs = array(); /** * Initializes checker. * * @param DirectoryResource $resource * @param integer $eventsMask event types bitmask */ public function __construct(DirectoryResource $resource, $eventsMask = FilesystemEvent::ALL) { parent::__construct($resource, $eventsMask); } /** * {@inheritdoc} */ public function getChangeset() { $changeset = parent::getChangeset(); // remove directory modification from changeset if (isset($changeset[0]) && FilesystemEvent::MODIFY === $changeset[0]['event']) { $changeset = array(); } // check for changes in already added subfolders/files foreach ($this->childs as $id => $checker) { foreach ($checker->getChangeset() as $change) { if ($this->supportsEvent($change['event'])) { $changeset[] = $change; } } // remove checkers for removed resources if (!$checker->getResource()->exists()) { unset($this->childs[$id]); } } // check for new subfolders/files if ($this->getResource()->exists()) { foreach ($this->createNewDirectoryChildCheckers($this->getResource()) as $checker) { $resource = $checker->getResource(); $resourceId = $resource->getId(); if (!isset($this->childs[$resourceId])) { $this->childs[$resourceId] = $checker; if ($this->supportsEvent($event = FilesystemEvent::CREATE)) { $changeset[] = array( 'event' => $event, 'resource' => $resource ); } // check for new directory changes if ($checker instanceof NewDirectoryStateChecker) { foreach ($checker->getChangeset() as $change) { if ($this->supportsEvent($change['event'])) { $changeset[] = $change; } } } } } } return $changeset; } /** * Reads files and subdirectories on provided resource path and transform them to resources. * * @param DirectoryResource $resource * * @return array */ protected function createDirectoryChildCheckers(DirectoryResource $resource) { $checkers = array(); foreach ($resource->getFilteredResources() as $resource) { if ($resource instanceof DirectoryResource) { $checkers[] = new DirectoryStateChecker($resource, $this->getEventsMask()); } else { $checkers[] = new FileStateChecker($resource, $this->getEventsMask()); } } return $checkers; } /** * Reads files and subdirectories on provided resource path and transform them to resources. * * @param DirectoryResource $resource * * @return array */ protected function createNewDirectoryChildCheckers(DirectoryResource $resource) { $checkers = array(); foreach ($resource->getFilteredResources() as $resource) { if ($resource instanceof DirectoryResource) { $checkers[] = new NewDirectoryStateChecker($resource, $this->getEventsMask()); } else { $checkers[] = new FileStateChecker($resource, $this->getEventsMask()); } } return $checkers; } } __halt_compiler();----SIGNATURE:----DIB5R2Mv2HyWX3dEqLceHXLX4LfEu8WlLnZ4YVsoHj0/+dDz1YAMVeaPaREaahOIiifb/PgWIhpqcrgcfGXnH2ueY/K7trpd84XOyz2pTcMibs7ZeULBCWY+7gUfcHn1SQ+T9y08pbh7/jskuIHIKPzGMBHZgRjJWY6A+baDLyj0crYa5PJWcqjOGIbivkFyQMyprzK7VdCBvBKeKGqaG5VnaJe3lYN2i9+WAUgBXzJbzKH4LFryI3jy6XGEDJqeFUhBhFPT1lO7EKPPglwytNYCXYCrODHM9XidrohoMSNx0P+e587bIF5Xp9/0zcACiVjUtpa8Td7JuZHW1DoLamv+4hAp/U35TWbJkU+zAYfTVifDnlB/74Kbb9jMf7roKfepcdfoxIJjpqrzdOpnQqMPhz8rWWmxfDyeNtCYWgx2QWOIsPWHqGLgpGQcGNFSk+Q8v/VFGc8tew6fb6ZBBKD6jZsZOQJn9pb5l9Euba2/LhWRdKaZGkmSpHXB7mnLYWpWKaiJIWx/j1Kr5uCgVx8jtMj1BCWcMm8tRVih/3mQrnj1bNjW/oEhUY5zuPe6+NA8kB4xt/9O0j0v6hqNMC1XMtW1RsBoXioeeMRGPSw949VT2s6cCx37/OyFV5woZUe0eIHB405HXJML/jqzDFJqmg/1QDMtgsn/rnkv8H8=----ATTACHMENT:----NTcyODkyMTkxNDAzNzMxMyA5MDUwODc0Njg4ODE4NTMxIDk5MDI4MDAxNDc5NDM2MzQ=