Posted by leandro713 on November 18, 2015 at 3:39pm
Hey! :D
Estoy creando un sistema para registrarse a eventos.
La historia es que el evento puede repetirse. Estoy usando date_repeat. Mi problema es que cuando un evento tiene varias fechas, me crea el mismo nodo para todas las fechas.
Como uso node_registration para los registros, si me registro a ese nodo no sabemos realmente para qué fecha concreta es el registro.
Creo que lo más fácil sería que me creara un nodo para cada fecha, ¿no?
¿Alguno tiene experiencia con esto?

Comments
No veo una forma clara o
No veo una forma clara o limpia.
Lo único que se me ocurre es montar un entity form que tenga los mismos campos que el nodo de las fechas, y mediante un hook_form_alter meter una función de submit que genere los nuevos nodos, o que guarde el proceso en una cola para hacerlo luego.
batch api
bueno, hablando con mi cliente llegamos a la conclusión de que lo mejor sería usar Batch API, ya que todos los eventos van a ser repetidos.
Así que lo que he hecho ha sido usar Batch API haciendo una operación batch por cada fecha insertada. En realidad, es muy facil. Copias el nodo, le cascas a cada uno su fecha y node_save() que te crió.
Ahora solo me queda el miedo de que a esta gente les de por generar 5 ó 6000 nodos de un tirón ... ya les he dicho que vayan mes a mes :)
si alguien quiere el código, que me lo pida
si encuentras problemas con
si encuentras problemas con Batch API como:
puede hechar una mirada a Queue API que es muy similar a batch, pero funciona en el backend (cron)
puedes usar las queues internas de drupal o si quieres todo el control usar una hook_cron
en este caso en tu submit function puedes hacer :
<?php$queue->createItem($data);
?>
y en hook_cron
<?phpwhile ($data = $queue->claimItem())
?>
tal vez vas a necesitar tambien elysia_cron para poner tu cron en funcion mas veces por hora que cronjobs de otros modulos
me quedo con el dato, @lunatic
si, lunatic, ya había pensado en Queue API
pero siempre he pensado en ello para procesos mas costosos y largos.
en principio, para guardas 20 ó 30 nodos creo que con este Batch me vale.
además, uno de mis problemas es que ya gasto bastante tiempo en el cron con Mixpanel, aunque estoy en Pantheon y lo corren cada hora, tarda bastante, creo que si le metiera Queue Api tardaría aún mas.
pero si, me quedo con ello, para ver como le va al cliente y me guardo Queue API en la manga