/** * Delete the profile picture of the user. * * @param int $userId * @param string $mediaFolder * @param League\Flysystem\Filesystem $filesystem * * @throws Exception */ public function removeImage($userId, $mediaFolder, $filesystem) { $row = $this->getTable(); $row->load(array('user_id' => $userId)); if ((int) $row->get('id') > 0) { // Delete the profile pictures. if ($row->get('image') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image')); } if ($row->get('image_small') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_small'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_small')); } if ($row->get('image_square') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_square'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_square')); } if ($row->get('image_icon') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_icon'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_icon')); } $row->set('image', ''); $row->set('image_small', ''); $row->set('image_square', ''); $row->set('image_icon', ''); $row->store(); } }
/** * due to Doctrine cache deleteAll() cannot really delete file/folder for FilesystemCache, it just left old cache file and create new cache folder.<br> * this method is for really delete all cache and all file (in specified sub folder if it was set). * * @return boolean */ public function deleteAllFile() { $result = $this->deleteAll(); if (isset($this->cache_config['driver']) && $this->cache_config['driver'] == 'Filesystem' && isset($this->cache_config['cache_path'])) { $adapter = new \League\Flysystem\Adapter\Local($this->cache_config['cache_path']); $Filesystem = new \League\Flysystem\Filesystem($adapter); $Filesystem->addPlugin(new \League\Flysystem\Plugin\ListPaths()); if ($this->cache_config['cache_path'] . $this->subFolder == STORAGE_PATH . DS . 'cms' . DS . 'cache') { // sub folder may not set and cache path is match main cache folder. $files = $Filesystem->listPaths($this->subFolder); if (is_array($files)) { foreach ($files as $file) { if ($file != '.gitignore' && is_dir($this->cache_config['cache_path'] . $this->subFolder . '/' . $file)) { $Filesystem->deleteDir($file); } elseif ($file != '.gitignore' && is_file($this->cache_config['cache_path'] . $this->subFolder . '/' . $file)) { $Filesystem->delete($file); } } unset($file); } unset($files); } else { // sub folder is set. $files = $Filesystem->listPaths(''); if (is_array($files)) { foreach ($files as $file) { if (is_dir($this->cache_config['cache_path'] . '/' . $file)) { $Filesystem->deleteDir($file); } elseif (is_file($this->cache_config['cache_path'] . '/' . $file)) { $Filesystem->delete($file); } } unset($file); } unset($files); } } return $result; }
/** * Delete the images. * * @param JTable $row * @param string $mediaFolder * @param League\Flysystem\Filesystem $filesystem */ protected function deleteImages($row, $mediaFolder, $filesystem) { // Delete the profile pictures. if ($row->get('image') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image')); } if ($row->get('image_small') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_small'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_small')); } if ($row->get('image_square') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_square'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_square')); } if ($row->get('image_icon') !== '' and $filesystem->has($mediaFolder . '/' . $row->get('image_icon'))) { $filesystem->delete($mediaFolder . '/' . $row->get('image_icon')); } }