Fix for display and pane cloning

  1. function panels_clone_display($did, $new = TRUE, $save = FALSE) {
  2.   // since objects are always passed by reference in php5, need to do this to ensure the original object,
  3.   // if $did is an object, is untouched by the cloning operation
  4.   if (!is_object($did)) {
  5.     $old_display = panels_load_display($did);
  6.   }
  7.   else {
  8.     $old_display = $did;
  9.   }
  10.   $display->content = panels_clone_panes($display->content, $new);
  11.   $display = drupal_clone($old_display);
  12.   if ($save) {
  13.     panels_save_display($display);
  14.   }
  15.   return $display;
  16. }
  17.  
  18. function panels_clone_panes($panes, $new) {
  19.   $counter = 0;
  20.   foreach ($panes as $pid => $pane) {
  21.     $panes[$pid] = panels_clone_pane($pane, $new ? 'new-' . ++$counter : $pid);
  22.   }
  23.   return $panes;
  24. }
  25.  
  26. function panels_clone_pane($old_pane, $pid = NULL) {
  27.   $pane = drupal_clone($old_pane);
  28.   if (!is_null($pid)) {
  29.     $pane->pid = $pid;
  30.   }
  31.   return $pane;
  32. }