public function procesar_formularios() { if (isset($_POST['lidoma_action'])) { $nonce = isset($_POST['_wpnonce']) ? $_POST['_wpnonce'] : ''; if (!wp_verify_nonce($nonce, 'lidoma_nonce')) { wp_die('Error de seguridad'); } switch ($_POST['lidoma_action']) { case 'buscar_lista': $this->procesar_busqueda_lista(); break; case 'crear_lista': $this->procesar_creacion_lista(); break; case 'editar_lista': $this->procesar_edicion_lista(); break; case 'eliminar_lista': $this->procesar_eliminacion_lista(); break; case 'reservar_regalo': $this->procesar_reserva_regalo(); break; } } } private function procesar_reserva_regalo() { // Lógica para reservar regalo (accesible sin login) if (!empty($_POST['elemento_id']) && !empty($_POST['lista_id'])) { global $wpdb; $elemento_id = intval($_POST['elemento_id']); $lista_id = intval($_POST['lista_id']); // Verificar que el elemento existe y tiene disponibilidad $table_elementos = $wpdb->prefix . 'lidoma_elementos'; $elemento = $wpdb->get_row($wpdb->prepare( "SELECT * FROM $table_elementos WHERE id = %d AND lista_id = %d", $elemento_id, $lista_id )); if ($elemento && $elemento->cantidad_reservada < $elemento->cantidad_deseada) { // Incrementar la cantidad reservada $wpdb->update( $table_elementos, array('cantidad_reservada' => $elemento->cantidad_reservada + 1), array('id' => $elemento_id), array('%d'), array('%d') ); set_transient('lidoma_reserva_exitosa', '1', 30); } else { set_transient('lidoma_error_reserva', __('No se pudo reservar el regalo.', 'lidoma-listas'), 30); } // Redirigir de vuelta a la lista wp_redirect(add_query_arg('lista_id', $lista_id, get_permalink())); exit; } }