コード例 #1
0
 /**
  * Fill-in data in the league table
  *
  * @param  integer  $id_league
  * @param  integer  $start
  * @param  integer  $fixture
  * @param  integer  $nb_clubs
  * @param  integer  $pt_victory
  * @param  integer  $pt_draw
  * @param  integer  $pt_defeat
  * @return object
  */
 public function fill_league_table($id_league, $start, $fixture, $nb_clubs, $sport, $pt_v, $pt_d, $pt_l)
 {
     global $wpdb;
     $self = new PHPLeague_Database();
     // Delete old data
     $wpdb->query("DELETE FROM {$wpdb->table_cache} WHERE id_league = {$id_league}");
     if (!$fixture) {
         $fixture = $nb_clubs * 2 - 2;
     }
     if (!$start) {
         $start = 1;
     }
     // Get settings
     $pt_victory = $pt_v;
     $pt_draw = $pt_d;
     $pt_defeat = $pt_l;
     // Home victory
     $query = "SELECT t_home.id, COUNT(t_home.id) as count_home_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_home, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_home.id_league = {$id_league}\n                    AND t_home.id_club = c.id\n                    AND t_home.id = g.id_team_home\n                    AND g.goal_home > g.goal_away\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['home_v'] = $row->count_home_id;
         if (!isset($table[$name]['home_g_for'])) {
             $table[$name]['home_g_for'] = $row->g_home;
         } else {
             $table[$name]['home_g_for'] += $row->g_home;
         }
         if (!isset($table[$name]['home_g_against'])) {
             $table[$name]['home_g_against'] = $row->g_away;
         } else {
             $table[$name]['home_g_against'] += $row->g_away;
         }
     }
     // Home defeat
     $query = "SELECT t_home.id, COUNT(t_home.id) as count_home_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_home, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_home.id_league = {$id_league}\n                    AND t_home.id_club = c.id\n                    AND t_home.id = g.id_team_home\n                    AND g.goal_home < g.goal_away\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['home_l'] = $row->count_home_id;
         if (!isset($table[$name]['home_g_for'])) {
             $table[$name]['home_g_for'] = $row->g_home;
         } else {
             $table[$name]['home_g_for'] += $row->g_home;
         }
         if (!isset($table[$name]['home_g_against'])) {
             $table[$name]['home_g_against'] = $row->g_away;
         } else {
             $table[$name]['home_g_against'] += $row->g_away;
         }
     }
     // Home draw
     $query = "SELECT t_home.id, COUNT(t_home.id) as count_home_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_home, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_home.id_league = {$id_league}\n                    AND t_home.id_club = c.id\n                    AND t_home.id = g.id_team_home\n                    AND g.goal_home = g.goal_away\n                    AND g.goal_home IS NOT NULL\n                    AND g.goal_away IS NOT NULL\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['home_d'] = $row->count_home_id;
         if (!isset($table[$name]['home_g_for'])) {
             $table[$name]['home_g_for'] = $row->g_home;
         } else {
             $table[$name]['home_g_for'] += $row->g_home;
         }
         if (!isset($table[$name]['home_g_against'])) {
             $table[$name]['home_g_against'] = $row->g_away;
         } else {
             $table[$name]['home_g_against'] += $row->g_away;
         }
     }
     // Away victory
     $query = "SELECT t_away.id, COUNT(t_away.id) as count_away_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_away, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_away.id_league = {$id_league}\n                    AND t_away.id_club = c.id\n                    AND t_away.id = g.id_team_away\n                    AND g.goal_away > g.goal_home\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['away_v'] = $row->count_away_id;
         if (!isset($table[$name]['away_g_for'])) {
             $table[$name]['away_g_for'] = $row->g_away;
         } else {
             $table[$name]['away_g_for'] += $row->g_away;
         }
         if (!isset($table[$name]['away_g_against'])) {
             $table[$name]['away_g_against'] = $row->g_home;
         } else {
             $table[$name]['away_g_against'] += $row->g_home;
         }
     }
     // Away defeat
     $query = "SELECT t_away.id, COUNT(t_away.id) as count_away_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_away, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_away.id_league = {$id_league}\n                    AND t_away.id_club = c.id\n                    AND t_away.id = g.id_team_away\n                    AND g.goal_away < g.goal_home\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['away_l'] = $row->count_away_id;
         if (!isset($table[$name]['away_g_for'])) {
             $table[$name]['away_g_for'] = $row->g_away;
         } else {
             $table[$name]['away_g_for'] += $row->g_away;
         }
         if (!isset($table[$name]['away_g_against'])) {
             $table[$name]['away_g_against'] = $row->g_home;
         } else {
             $table[$name]['away_g_against'] += $row->g_home;
         }
     }
     // Away draw
     $query = "SELECT t_away.id, COUNT(t_away.id) as count_away_id, c.name, SUM(g.goal_home) as g_home, SUM(g.goal_away) as g_away\n                    FROM {$wpdb->team} t_away, {$wpdb->club} c, {$wpdb->match} g, {$wpdb->fixture} d, {$wpdb->league} l\n                    WHERE t_away.id_league = {$id_league}\n                    AND t_away.id_club = c.id\n                    AND t_away.id = g.id_team_away\n                    AND g.goal_away = g.goal_home\n                    AND g.goal_away IS NOT NULL\n                    AND g.goal_home IS NOT NULL\n                    AND l.id = d.id_league\n                    AND d.id = g.id_fixture\n                    AND d.number >= {$start}\n                    AND d.number <= {$fixture}\n                    GROUP BY c.name";
     foreach ($wpdb->get_results($wpdb->prepare($query, NULL)) as $row) {
         $name = trim($row->name);
         $table[$name]['away_d'] = $row->count_away_id;
         if (!isset($table[$name]['away_g_for'])) {
             $table[$name]['away_g_for'] = $row->g_away;
         } else {
             $table[$name]['away_g_for'] += $row->g_away;
         }
         if (!isset($table[$name]['away_g_against'])) {
             $table[$name]['away_g_against'] = $row->g_home;
         } else {
             $table[$name]['away_g_against'] += $row->g_home;
         }
     }
     // Get all the data we need to fill in the table
     foreach ($self->get_teams_information_table($id_league) as $row) {
         $name = trim($row->name);
         $home_victory = isset($table[$name]['home_v']) ? $table[$name]['home_v'] : '';
         $home_draw = isset($table[$name]['home_d']) ? $table[$name]['home_d'] : '';
         $home_defeat = isset($table[$name]['home_l']) ? $table[$name]['home_l'] : '';
         $away_victory = isset($table[$name]['away_v']) ? $table[$name]['away_v'] : '';
         $away_draw = isset($table[$name]['away_d']) ? $table[$name]['away_d'] : '';
         $away_defeat = isset($table[$name]['away_l']) ? $table[$name]['away_l'] : '';
         $away_g_for = isset($table[$name]['away_g_for']) ? $table[$name]['away_g_for'] : '';
         $home_g_for = isset($table[$name]['home_g_for']) ? $table[$name]['home_g_for'] : '';
         $away_g_aga = isset($table[$name]['away_g_against']) ? $table[$name]['away_g_against'] : '';
         $home_g_aga = isset($table[$name]['home_g_against']) ? $table[$name]['home_g_against'] : '';
         $home_played = $home_victory + $home_draw + $home_defeat;
         $away_played = $away_victory + $away_draw + $away_defeat;
         $played = $home_played + $away_played;
         $home_pts = $home_victory * $pt_victory + $home_draw * $pt_draw + $home_defeat * $pt_defeat;
         $away_pts = $away_victory * $pt_victory + $away_draw * $pt_draw + $away_defeat * $pt_defeat;
         $points = $home_pts + $away_pts + $row->penalty;
         $nb_victory = $home_victory + $away_victory;
         $nb_draw = $home_draw + $away_draw;
         $nb_defeat = $home_defeat + $away_defeat;
         $home_v = $home_victory;
         $home_d = $home_draw;
         $home_l = $home_defeat;
         $away_v = $away_victory;
         $away_d = $away_draw;
         $away_l = $away_defeat;
         $goal_for = $away_g_for + $home_g_for;
         $home_g_for = $home_g_for;
         $away_g_for = $away_g_for;
         $goal_against = $home_g_aga + $away_g_aga;
         $home_g_against = $home_g_aga;
         $away_g_against = $away_g_aga;
         $diff = $goal_for - $goal_against;
         $home_diff = $home_g_for - $home_g_against;
         $away_diff = $away_g_for - $away_g_against;
         $wpdb->insert($wpdb->table_cache, array('club_name' => $name, 'id_team' => $row->team_id, 'id_league' => $id_league, 'points' => $points, 'home_points' => $home_pts, 'away_points' => $away_pts, 'played' => $played, 'home_played' => $home_played, 'away_played' => $away_played, 'victory' => $nb_victory, 'draw' => $nb_draw, 'defeat' => $nb_defeat, 'home_v' => $home_v, 'home_d' => $home_d, 'home_l' => $home_l, 'away_v' => $away_v, 'away_d' => $away_d, 'away_l' => $away_l, 'goal_for' => $goal_for, 'goal_against' => $goal_against, 'home_g_for' => $home_g_for, 'home_g_against' => $home_g_against, 'away_g_for' => $away_g_for, 'away_g_against' => $away_g_against, 'diff' => $diff, 'home_diff' => $home_diff, 'away_diff' => $away_diff, 'pen' => $row->penalty), array('%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d'));
     }
 }