Author: mgiagnoni
Date: 2010-09-20 08:05:16 +0200 (Mon, 20 Sep 2010)
New Revision: 30932
Modified:
plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/lib/BaselyMediaAssetActions.class.php
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaFolder/lib/BaselyMediaFolderActions.class.php
Log:
Improved error checking on asset file/folder deletion.
Modified: plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
===================================================================
--- plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
2010-09-19 21:20:33 UTC (rev 30931)
+++ plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
2010-09-20 06:05:16 UTC (rev 30932)
@@ -171,14 +171,19 @@
*/
public function rmdir($dir, $rm_thumbs = true)
{
- $dir = $this->makePathAbsolute($dir);
- $thumb_dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder();
- //TODO: more error checking needed
- if($rm_thumbs && is_dir($thumb_dir))
+ $dirs[] = $this->makePathAbsolute($dir);
+ if($rm_thumbs)
{
- rmdir($thumb_dir);
+ $dirs[] = rtrim($dirs[0], DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder();
}
- rmdir($dir);
+ foreach(array_reverse(array_filter($dirs, 'is_dir')) as $dir)
+ {
+
+ if(!...@rmdir($dir))
+ {
+ throw new lyMediaException('Can\'t delete folder');
+ }
+ }
}
/**
@@ -193,7 +198,10 @@
if(file_exists($file))
{
- unlink($file);
+ if(!...@unlink($file))
+ {
+ throw new lyMediaException('Can\'t delete file "%file%" (permission
denied).', array('%file%' => basename($file)));
+ }
}
if($thumbs)
@@ -204,9 +212,13 @@
foreach($this->getThumbnailTypes() as $key)
{
$file = $path . $key . '_' . $info['basename'];
+
if(file_exists($file))
{
- unlink($file);
+ if(!...@unlink($file))
+ {
+ throw new lyMediaException('Can\'t delete thumbnail "%file%"
(permission denied).', array('%file%' => basename($file)));
+ }
}
}
}
Modified:
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/lib/BaselyMediaAssetActions.class.php
===================================================================
---
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/lib/BaselyMediaAssetActions.class.php
2010-09-19 21:20:33 UTC (rev 30931)
+++
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/lib/BaselyMediaAssetActions.class.php
2010-09-20 06:05:16 UTC (rev 30932)
@@ -99,10 +99,15 @@
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object',
array('object' => $this->getRoute()->getObject())));
- if ($this->getRoute()->getObject()->delete())
+ try
{
+ $this->getRoute()->getObject()->delete();
$this->getUser()->setFlash('notice', 'The item was deleted
successfully.');
}
+ catch(lyMediaException $e)
+ {
+ $this->getUser()->setFlash('error', strtr($e->getMessage(),
$e->getMessageParams()));
+ }
if($this->getUser()->getAttribute('view') == 'icons')
{
@@ -113,7 +118,7 @@
$this->redirect('@ly_media_asset');
}
}
-
+
/**
* Uploads an asset
*
@@ -152,4 +157,35 @@
}
$this->redirect('@ly_media_asset_icons?folder_id=' .
$this->getUser()->getAttribute('folder_id', 0) .
($this->getUser()->getAttribute('popup', 0) ? '&popup=1' : ''));
}
+
+ /**
+ * Deletes multiple assets (batch)
+ *
+ * @param sfWebRequest $request
+ */
+ protected function executeBatchDelete(sfWebRequest $request)
+ {
+ $ids = $request->getParameter('ids');
+
+ $records = Doctrine_Query::create()
+ ->from('lyMediaAsset')
+ ->whereIn('id', $ids)
+ ->execute();
+
+ foreach ($records as $record)
+ {
+ try
+ {
+ $record->delete();
+ }
+ catch(lyMediaException $e)
+ {
+ $this->getUser()->setFlash('error', strtr($e->getMessage(),
$e->getMessageParams()));
+ $this->redirect('@ly_media_asset');
+ }
+ }
+
+ $this->getUser()->setFlash('notice', 'The selected items have been deleted
successfully.');
+ $this->redirect('@ly_media_asset');
+ }
}
Modified:
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaFolder/lib/BaselyMediaFolderActions.class.php
===================================================================
---
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaFolder/lib/BaselyMediaFolderActions.class.php
2010-09-19 21:20:33 UTC (rev 30931)
+++
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaFolder/lib/BaselyMediaFolderActions.class.php
2010-09-20 06:05:16 UTC (rev 30932)
@@ -73,13 +73,18 @@
$this->redirect($redir);
}
- $object->getNode()->delete();
+ $object = $object->getNode();
}
- else
+
+ try
{
$object->delete();
}
-
+ catch(lyMediaException $e)
+ {
+ $this->getUser()->setFlash('error', strtr($e->getMessage(),
$e->getMessageParams()));
+ $this->redirect($redir);
+ }
$this->getUser()->setFlash('notice', 'Folder successfully deleted.');
$this->redirect($redir);
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.