*/ 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:----jkDNTYa+MYvG93TUDieSUDdw23MdSU6yi+IVLvFGGrWSmnMqJmHLDl2YizEyrCNc3o+GW1ID/LGWyELkhznP986yZvuJdOBYoeGtcCZdz37c1uo6ArZTJLLhEpdVJPyYmlSVMBV0uvvFjjD/UXmTZdVz67HCY30KtdgWKw2XrFbSqZ3RpKQ423tKZObLQ3CuqjJdmBtb2zKnVqL7somCBB6AtgiiUVrUuB2tWhwJ20iohWGmi3tyDtdc56hD0aeLwNUoFPW7xrs16CdkAzW+M4crYfZFCsWlZtdowEbOVhr+8dMnJV+sTLoP1DJFuyXBei//0nF249nIpI71v09TlbkMBkSYwdQa0MkP34E8f2jkAF7soX6y3ZkCP4HKB8OWKttWTkhYkfkn5oiti856stWSjCDtI592HVI8P1koyPy0i5+syFZjFR6q0bYRzgwbaJk1xL/VIfgr7gC0mdNg1F5dYXQDQRnXsrmswIp1VikjcOwcBCJpkdleFkhhfGRuUEnD5/2AuSuNFgznXD6ix8boZ2OWBqLEaptGBiSLYupJUALggDRI+nFVqlgGljXMmWmTGz38Nenw3Aj79HgoVPzi7pe4oA+t4lsRVB+2bzhLIi+hOz0aBwzpTdt6wY6o04MX3/o3S+HCFollyCVoL5ga+ZivrwcVHx9Uatcsx/Y=----ATTACHMENT:----ODQ2NTQ2MjY1OTgyMjEgMTYxNjE3OTk0NTY2MDA2MyA1MDUxOTMzNzIyODY5NTE0