/**
  * Move a file between sources
  *
  * @param Assets_base_source $old_source
  * @param Assets_base_source $new_source
  * @param $file_id
  * @param $folder_id
  * @param string $action to take if conflict exists
  * @return array
  * @throws Exception
  */
 private function _move_file_between_sources(Assets_base_source $old_source, Assets_base_source $new_source, $file_id, $folder_id, $action)
 {
     $file_to_move = $old_source->get_file($file_id);
     $local_file = $file_to_move->get_local_copy();
     $result = $new_source->transfer_file_into_source($local_file, $folder_id, $file_to_move, $action);
     if (isset($result['success'])) {
         if ($old_source->finalize_outgoing_transfer($file_to_move)) {
             if (Assets_helper::get_kind($result['path']) == 'image') {
                 $new_source->post_upload_image_actions($file_id, $local_file);
             }
             @unlink($local_file);
             return array('success' => TRUE, 'new_path' => $file_id);
         } else {
             throw new Exception(lang('invalid_source_path'));
         }
     } else {
         return $result;
     }
 }