? droplet.patch
Index: droplet.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mysite/plugins/types/droplet.inc,v
retrieving revision 1.18.2.1
diff -u -p -r1.18.2.1 droplet.inc
--- droplet.inc	20 Jan 2008 16:53:28 -0000	1.18.2.1
+++ droplet.inc	16 Feb 2008 20:28:56 -0000
@@ -225,34 +225,51 @@ function mysite_type_droplet_settings() 
     while ($data = db_fetch_object($result)) {
       $type =  mysite_type_droplet_type($data->type_key);
       $type_key = mysite_type_droplet_key($data->type_key);
+      $display = TRUE;
       switch ($type) {
         case 'view':
           $title = db_result(db_query("SELECT name FROM {view_view} WHERE vid = %d", $type_key));
-          $original = l($title, 'admin/build/views/edit/'. $type_key);
+          if ($title) {
+            $original = l($title, 'admin/build/views/edit/'. $type_key);
+          }
+          else {
+            drupal_set_message(t('%title view no longer exists and has been removed from your Droplets.', array('%title' => $data->title)));
+            db_query("DELETE FROM {mysite_content} WHERE myid = %d", $data->myid);
+            $display = FALSE;          
+          }
           break;
         case 'block':
           $info = explode('|', $type_key);
           $func = $info[0] .'_block';
-          $block = $func('list');
-          $original = l($block[$info[1]]['info'], 'admin/build/block/configure/'. implode('/', $info));        
+          if (function_exists($func)) {
+            $block = $func('list');
+            $original = l($block[$info[1]]['info'], 'admin/build/block/configure/'. implode('/', $info));        
+          }  
+          else {
+            drupal_set_message(t('%title block no longer exists and has been removed from your Droplets.', array('%title' => $data->title)));
+            db_query("DELETE FROM {mysite_content} WHERE myid = %d", $data->myid);
+            $display = FALSE;
+          }
           break;
         default:
           $key = '';
           break;
       }
-      $row = array(check_plain($data->title), $type, l('edit', 'admin/settings/mysite/type/droplet/'. $data->myid) .' | '. l('delete', 'admin/settings/mysite/type/droplet/delete/'. $data->myid), $original);    
-      if ($use_icons) {
-        $icon = mysite_icon_lookup('droplet', $data->myid);
-        if ($icon->iid) {
-          $icon_links =  l(t('change'), 'admin/settings/mysite/icons/change/'. $icon->iid) .' | '. l(t('delete'), 'admin/settings/mysite/icons/delete/'. $icon->iid);
+      if ($display) {
+        $row = array(check_plain($data->title), $type, l('edit', 'admin/settings/mysite/type/droplet/'. $data->myid) .' | '. l('delete', 'admin/settings/mysite/type/droplet/delete/'. $data->myid), $original);    
+        if ($use_icons) {
+          $icon = mysite_icon_lookup('droplet', $data->myid);
+          if ($icon->iid) {
+            $icon_links =  l(t('change'), 'admin/settings/mysite/icons/change/'. $icon->iid) .' | '. l(t('delete'), 'admin/settings/mysite/icons/delete/'. $icon->iid);
+          }
+          else {
+            $icon_links =  l(t('add icon'), 'admin/settings/mysite/icons/add/droplet/'. $data->myid);
+          }
+          $row[] = $icon_links;
         }
-        else {
-          $icon_links =  l(t('add icon'), 'admin/settings/mysite/icons/add/droplet/'. $data->myid);
-        }
-        $row[] = $icon_links;
-      }
-      $rows[] = $row;
-      $omit[] = mysite_type_droplet_type($data->type_key) .':'. mysite_type_droplet_key($data->type_key);
+        $rows[] = $row;
+        $omit[] = mysite_type_droplet_type($data->type_key) .':'. mysite_type_droplet_key($data->type_key);
+      }  
     }
     $output = t('<h3>Create New Droplet</h3>');
     $output .= '<ul>';
@@ -666,4 +683,4 @@ function mysite_type_droplet_view_conten
   $view = views_load_view($droplet->key);
   $output = views_build_view('embed', $view, $args, $view->use_pager, $view->nodes_per_page);
   return $output;
-}
\ No newline at end of file
+}
