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.

Reply via email to