Necesitamos rediseñar el ExportManager para que cumpla las siguientes funciones:
Para ofrecer compatibilidad podemos marcar la clase ExportManager como deprecated y crear otra (Exporter) para reemplazarla:
// devuelve el contenido del pdf de una factura
return Exporter::create('pdf')
->addModel($factura)
->output();
// genera y guarda en pdf una factura
Exporter::create('pdf')
->addModel($factura)
->save('factura_1230');
// devuelve un pdf con dos tablas de datos que tenemos en dos arrays, un texto y una imagen
return new Exporter::create('pdf')
->addTable($data1)
->addTable($data2)
->newPage()
->addText('bla, bla, bla..')
->addImage($imagePath)
->output();
// genera la factura en inglés
Exporter::create('pdf')
->setLang('en_EN')
->addModel($factura)
->save('factura_1230');
Creo que fue un error mezclar el envío de emails con la exportación, de la forma en que lo hicimos, es decir, poniendo email como una opción de exportación. El envío de emails debería ser un botón independiente en los formularios y no una opción de exportación.
Sin embargo, si que necesitamos una herramienta potente para el envío de emails que cubra nuestras necesidades. Más detalles.
Del mismo modo que hacemos con la clase Calculator y con los AjaxForms, deberíamos poder añadir mods al Exporter, para poder reemplazar algunas llamadas o ejecutar código tras ciertas llamadas.
Exporter::addMod(new MyCustomExporterMod());
Exporter::create('pdf')
->addModel($fproduct)
->save('producto_1230');
Esto es una sugerencia a debatir. Está abierta a comentarios, votación y debate en la reunión semanal. Si se aprueba pasará a estado pendiente.