*/ 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:----LQcqW9Y6AI+OkuisrZVjx1fgYfZIQqyItvPu8GIrR/FC8UqYswomtZMJi+vlrwDWc5A94tagcHUpoGRGFv6zgRGtOHn9ExumZ0jj7m4R8+CAgCs4gcdi2L8ZC58i6uRIH1miCXzE2gfm49GF1rXHtUjrUpmO6PuMUeDrindmirQMtitcOCad9X7MJgfeiNkXJU7+WV2zCeouFBiv2OAn1G1LMDUJCGbjkCsKNkzclaFIBew9agUpjHVIllRFDLWUNXp10hpl1Jx6HIWkhXQIsBF7S+bkEFKLPFzrolq01+4SKsZumKm7Xow191PbkzgeT2K7HUuBQNx96Dt7KbDlLTTxYKbd+RicSMZb0Ex39rr8LEb3LLnKvYyw0vppgXIKc2fJ8v2MCG0Qp0LgktVh9YkpuIHyiuhGtU0/F5uO0G3kUIdqJ0W3P3j12DSkKPewTil6/K0IPNXVSb7bKs0O8XabPXN+Sp4HtN/dx4MwrzIG1f1YkTf7mwFOcVe20DXusHwS1y6T7g+Wo4JcNTM/i8ueQ2CZ4wD0rctj0HuCIEESNZ5NSEldqBUIUxWD+x7xLmpymbpXpUEbDRLfNsvOPPm6hZkz7XxTSZ6TnTwXGGuL4FcoWj/WCb8T3U9WXRhKlpesFROA1tpDWKLlOZsp3d/kYQt47X+BSMnkBH9+I/A=----ATTACHMENT:----NDcxMjQ4NjQwODkxNDI1OCAyOTkwMjEwNDgwNzg1MTExIDM1NjgzNDk0OTc3MzA4NjY=