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.   return $display;
  13. }
  14.  
  15. function panels_clone_panes($panes, $new) {
  16.   $counter = 0;
  17.   foreach ($panes as $pid => $pane) {
  18.     $panes[$pid] = panels_clone_pane($pane, $new ? 'new-' . ++$counter : $pid);
  19.   }
  20.   return $panes;
  21. }
  22.  
  23. function panels_clone_pane($old_pane, $pid = NULL) {
  24.   $pane = drupal_clone($old_pane);
  25.   if (!is_null($pid)) {
  26.     $pane->pid = $pid;
  27.   }
  28.   return $pane;
  29. }