/** * afterDelete method * * Remove images from records which have been deleted, if they exist * * @param Event $event The passed event * @param Entity $entity The entity * @param ArrayObject $options Array of options * @param ProfferPathInterface $path Inject and instance of ProfferPath * @return bool */ public function afterDelete(Event $event, Entity $entity, ArrayObject $options, ProfferPathInterface $path = null) { foreach ($this->config() as $field => $settings) { $dir = $entity->get($settings['dir']); if (!empty($entity) && !empty($dir)) { if (!$path) { $path = new ProfferPath($this->_table, $entity, $field, $settings); } $path->deleteFiles($path->getFolder(), true); } $path = null; } return true; }
public function testDeleteFiles() { $table = $this->getMockBuilder('Cake\\ORM\\Table')->setMethods(['alias'])->getMock(); $table->method('alias')->willReturn('ProfferTest'); $entity = new Entity(['photo' => 'image_640x480.jpg', 'photo_dir' => 'proffer_test']); $settings = ['root' => TMP . 'ProfferTests', 'dir' => 'photo_dir', 'thumbnailSizes' => ['square' => ['w' => 100, 'h' => 100], 'squareCrop' => ['w' => 100, 'h' => 100, 'crop' => true]]]; $path = $this->getMockBuilder('Proffer\\Lib\\ProfferPath')->setConstructorArgs([$table, $entity, 'photo', $settings])->setMethods(['getFolder'])->getMock(); $path->expects($this->any())->method('getFolder')->willReturn(TMP . 'ProfferTests' . DS . $table->alias() . DS . 'photo' . DS . 'proffer_test' . DS); $path = new ProfferPath($table, $entity, 'photo', $settings); if (!file_exists($path->getFolder())) { mkdir($path->getFolder(), 0777, true); } copy(Plugin::path('Proffer') . 'tests' . DS . 'Fixture' . DS . 'image_640x480.jpg', $path->getFolder() . 'image_640x480.jpg'); copy(Plugin::path('Proffer') . 'tests' . DS . 'Fixture' . DS . 'image_640x480.jpg', $path->getFolder() . 'square_image_640x480.jpg'); copy(Plugin::path('Proffer') . 'tests' . DS . 'Fixture' . DS . 'image_640x480.jpg', $path->getFolder() . 'portrait_image_640x480.jpg'); $path->deleteFiles($path->getFolder()); $this->assertFileNotExists($path->getFolder() . 'image_640x480.jpg'); $this->assertFileNotExists($path->getFolder() . 'square_image_640x480.jpg'); $this->assertFileNotExists($path->getFolder() . 'portrait_image_640x480.jpg'); $path->deleteFiles($path->getFolder(), true); $this->assertFileNotExists($path->getFolder()); }