public static function start_run( $user_id, $game_id, $nickname ) { global $wpdb; $table_user_games = $wpdb->prefix . 'tpr_user_games'; $table_runs = $wpdb->prefix . 'tpr_runs'; $nickname = sanitize_text_field( trim( $nickname ) ); $game_id = intval( $game_id ); if ( empty( $user_id ) || empty( $game_id ) || empty( $nickname ) ) { return new WP_Error( 'invalid_data', 'Faltan datos para iniciar la partida.', array( 'status' => 400 ) ); } $has_game = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$table_user_games} WHERE user_id = %d AND game_id = %d AND is_active = 1 LIMIT 1", $user_id, $game_id ) ); if ( ! $has_game ) { return new WP_Error( 'game_not_owned', 'No tienes acceso a este juego.', array( 'status' => 403 ) ); } $inserted = $wpdb->insert( $table_runs, array( 'user_id' => $user_id, 'game_id' => $game_id, 'nickname' => $nickname, 'status' => 'running', 'started_at' => current_time( 'mysql' ), 'elapsed_seconds' => 0, 'hints_used' => 0, ), array( '%d', '%d', '%s', '%s', '%s', '%d', '%d' ) ); if ( false === $inserted ) { return new WP_Error( 'start_failed', 'No se pudo iniciar la partida.', array( 'status' => 500 ) ); } return array( 'success' => true, 'run_id' => $wpdb->insert_id, ); } paraxit – Play Paraxit Games

Autor: paraxit