Crear diferentes nodos si se repite la fecha del evento

Events happening in the community are now at Drupal community events on www.drupal.org.
leandro713's picture

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

oskar_calvo's picture

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

leandro713's picture

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

lunatic's picture

si encuentras problemas con Batch API como:

  • memoria de parte del servidor
  • o timeouts de parte del cliente

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

<?php
while ($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

leandro713's picture

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

Madrid

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: