コード例 #1
0
ファイル: class-sp-event.php プロジェクト: kleitz/ProSports
 public function performance($admin = false)
 {
     $teams = get_post_meta($this->ID, 'sp_team', false);
     $performance = (array) get_post_meta($this->ID, 'sp_players', true);
     $labels = sp_get_var_labels('sp_performance');
     $columns = get_post_meta($this->ID, 'sp_columns', true);
     if (is_array($teams)) {
         foreach ($teams as $i => $team_id) {
             $players = sp_array_between((array) get_post_meta($this->ID, 'sp_player', false), 0, $i);
             $data = sp_array_combine($players, sp_array_value($performance, $team_id, array()));
             $totals = array();
             foreach ($labels as $key => $label) {
                 $totals[$key] = 0;
             }
             foreach ($data as $player_id => $player_performance) {
                 foreach ($labels as $key => $label) {
                     if (array_key_exists($key, $totals)) {
                         $totals[$key] += sp_array_value($player_performance, $key, 0);
                     }
                 }
                 if (!array_key_exists('number', $player_performance)) {
                     $performance[$team_id][$player_id]['number'] = get_post_meta($player_id, 'sp_number', true);
                 }
                 if (!array_key_exists('position', $player_performance) || $player_performance['position'] == null) {
                     $performance[$team_id][$player_id]['position'] = get_post_meta($player_id, 'sp_position', true);
                 }
             }
             foreach ($totals as $key => $value) {
                 $manual_total = sp_array_value(sp_array_value($performance, 0, array()), $key, null);
                 if ($manual_total != null) {
                     $totals[$key] = $manual_total;
                 }
             }
         }
     }
     if ($admin) {
         return array($labels, $columns, $performance, $teams);
     } else {
         // Add position to performance labels
         $labels = array_merge(array('position' => __('Position', 'prosports')), $labels);
         if (is_array($columns)) {
             foreach ($labels as $key => $label) {
                 if (!in_array($key, $columns)) {
                     unset($labels[$key]);
                 }
             }
         }
         // Move individual players to top level of array
         if (array_key_exists(0, $performance)) {
             foreach ($performance[0] as $player_id => $player_performance) {
                 $performance[$player_id] = array($player_id => $player_performance);
             }
         }
         $performance[0] = $labels;
         return $performance;
     }
 }
コード例 #2
0
ファイル: class-sp-event.php プロジェクト: perren/SportsPress
 public function performance($admin = false)
 {
     $teams = get_post_meta($this->ID, 'sp_team', false);
     $performance = (array) get_post_meta($this->ID, 'sp_players', true);
     $labels = apply_filters('sportspress_event_performance_labels', sp_get_var_labels('sp_performance'), $this);
     $columns = get_post_meta($this->ID, 'sp_columns', true);
     if (is_array($teams)) {
         foreach ($teams as $i => $team_id) {
             $players = sp_array_between((array) get_post_meta($this->ID, 'sp_player', false), 0, $i);
             $data = sp_array_combine($players, sp_array_value($performance, $team_id, array()));
             $totals = array();
             foreach ($labels as $key => $label) {
                 $totals[$key] = 0;
             }
             foreach ($data as $player_id => $player_performance) {
                 foreach ($labels as $key => $label) {
                     if (array_key_exists($key, $totals)) {
                         $totals[$key] += sp_array_value($player_performance, $key, 0);
                     }
                 }
                 if (!array_key_exists('number', $player_performance)) {
                     $performance[$team_id][$player_id]['number'] = get_post_meta($player_id, 'sp_number', true);
                 }
                 if (!array_key_exists('position', $player_performance) || $player_performance['position'] == null) {
                     $performance[$team_id][$player_id]['position'] = sp_get_the_term_id($player_id, 'sp_position', null);
                 }
             }
             foreach ($totals as $key => $value) {
                 $manual_total = sp_array_value(sp_array_value($performance, 0, array()), $key, null);
                 if ($manual_total != null) {
                     $totals[$key] = $manual_total;
                 }
             }
         }
     }
     if ($admin) {
         return array($labels, $columns, $performance, $teams);
     } else {
         // Add position to performance labels
         if (taxonomy_exists('sp_position')) {
             $labels = array_merge(array('position' => __('Position', 'sportspress')), $labels);
         }
         if ('manual' == get_option('sportspress_event_performance_columns', 'auto') && is_array($columns)) {
             foreach ($labels as $key => $label) {
                 if (!in_array($key, $columns)) {
                     unset($labels[$key]);
                 }
             }
         }
         if ('no' == get_option('sportspress_event_show_position', 'yes')) {
             unset($labels['position']);
         }
         $performance[0] = $labels;
         return $performance;
     }
 }
    /**
     * Output the metabox
     */
    public static function output($post)
    {
        $event = new SP_Event($post);
        list($labels, $columns, $stats, $teams) = $event->performance(true);
        $i = 0;
        foreach ($teams as $key => $team_id) {
            if (-1 == $team_id) {
                continue;
            }
            // Get results for players in the team
            $players = sp_array_between((array) get_post_meta($post->ID, 'sp_player', false), 0, $key);
            $players[] = -1;
            $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
            // Determine if we need checkboxes
            if ('manual' == get_option('sportspress_event_performance_columns', 'auto') && $i == 0) {
                $has_checkboxes = true;
            } else {
                $has_checkboxes = false;
            }
            // Determine if we need extras
            if ('yes' == get_option('sportspress_event_show_extras', 'no')) {
                $show_extras = true;
            } else {
                $show_extras = false;
            }
            // Determine if we are splitting positions
            if ('yes' == get_option('sportspress_event_split_players_by_position', 'no')) {
                $split_positions = true;
            } else {
                $split_positions = false;
            }
            ?>
			<div>
				<?php 
            if ($team_id) {
                ?>
					<p><strong><?php 
                echo get_the_title($team_id);
                ?>
</strong></p>
				<?php 
            } elseif ($i) {
                ?>
					<br>
				<?php 
            }
            ?>
				<?php 
            self::table($labels, $columns, $data, $team_id, $has_checkboxes, $show_extras, $split_positions);
            ?>
			</div>
			<?php 
            $i++;
        }
    }
コード例 #4
0
    /**
     * Output the metabox
     */
    public static function output($post)
    {
        $event = new SP_Event($post);
        list($labels, $columns, $stats, $teams) = $event->performance(true);
        $i = 0;
        foreach ($teams as $key => $team_id) {
            if (-1 == $team_id) {
                continue;
            }
            // Get results for players in the team
            $players = sp_array_between((array) get_post_meta($post->ID, 'sp_player', false), 0, $key);
            $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
            ?>
			<div>
				<?php 
            if ($team_id) {
                ?>
					<p><strong><?php 
                echo get_the_title($team_id);
                ?>
</strong></p>
				<?php 
            } elseif ($i) {
                ?>
					<br>
				<?php 
            }
            ?>
				<?php 
            self::table($labels, $columns, $data, $team_id, $i == 0);
            ?>
			</div>
			<?php 
            $i++;
        }
    }
コード例 #5
0
        /**
         * Ajax checklist.
         */
        public function checklist($post_id = null, $post_type = 'post', $display = 'block', $team = null, $index = null, $slug = null)
        {
            if (!isset($slug)) {
                $slug = $post_type;
            }
            $selected = (array) get_post_meta($post_id, $slug, false);
            if (sizeof($selected)) {
                $selected = sp_array_between($selected, 0, $index);
            } else {
                $selected = sp_array_between((array) get_post_meta($post_id, $post_type, false), 0, $index);
            }
            if ('yes' == get_option('sportspress_event_filter_teams_by_league', 'no')) {
                $leagues = get_the_terms($post_id, 'sp_league');
            } else {
                $leagues = false;
            }
            if ('yes' == get_option('sportspress_event_filter_teams_by_season', 'no')) {
                $seasons = get_the_terms($post_id, 'sp_season');
            } else {
                $seasons = false;
            }
            $args = array('orderby' => 'menu_order');
            if ('sp_player' == $post_type) {
                $args['meta_key'] = 'sp_number';
                $args['orderby'] = 'meta_value_num';
                $args['order'] = 'ASC';
            }
            $args['meta_query'] = array(array('key' => 'sp_current_team', 'value' => $team));
            if ($leagues || $seasons) {
                $args['tax_query'] = array('relation' => 'AND');
                if ($leagues) {
                    $args['tax_query'][] = array('taxonomy' => 'sp_league', 'field' => 'id', 'terms' => wp_list_pluck($leagues, 'term_id'));
                }
                if ($seasons) {
                    $args['tax_query'][] = array('taxonomy' => 'sp_season', 'field' => 'id', 'terms' => wp_list_pluck($seasons, 'term_id'));
                }
            }
            $posts = sp_get_posts($post_type, $args);
            $post_ids = wp_list_pluck($posts, 'ID');
            $diff = array_diff($post_ids, $selected);
            $selected = array_flip($selected);
            ?>
		<div id="<?php 
            echo $slug;
            ?>
-all" class="posttypediv wp-tab-panel sp-tab-panel sp-ajax-checklist sp-select-all-range" style="display: <?php 
            echo $display;
            ?>
;">
			<input type="hidden" value="0" name="<?php 
            echo $slug;
            if (isset($index)) {
                echo '[' . $index . ']';
            }
            ?>
[]" />
			<ul class="categorychecklist form-no-clear">
				<?php 
            if (is_array($posts) && sizeof($posts)) {
                ?>
					<li class="sp-select-all-container">
						<label class="selectit">
							<input type="checkbox" class="sp-select-all" <?php 
                checked(empty($diff));
                ?>
>
							<strong><?php 
                _e('Select All', 'sportspress');
                ?>
</strong>
						</label>
					</li>
					<?php 
                foreach ($posts as $post) {
                    ?>
						<li>
							<label class="selectit">
								<input type="checkbox" value="<?php 
                    echo $post->ID;
                    ?>
" name="<?php 
                    echo $slug;
                    if (isset($index)) {
                        echo '[' . $index . ']';
                    }
                    ?>
[]" <?php 
                    checked(array_key_exists($post->ID, $selected));
                    ?>
>
								<?php 
                    echo sp_get_player_name_with_number($post->ID);
                    ?>
							</label>
						</li>
						<?php 
                    unset($selected[$post->ID]);
                    ?>
					<?php 
                }
                ?>
					<?php 
                if (is_array($selected) && sizeof($selected)) {
                    foreach ($selected as $post_id => $post) {
                        ?>
						<?php 
                        if (!$post_id) {
                            continue;
                        }
                        ?>
						<li>
							<label class="selectit">
								<input type="checkbox" value="<?php 
                        echo $post_id;
                        ?>
" name="<?php 
                        echo $slug;
                        if (isset($index)) {
                            echo '[' . $index . ']';
                        }
                        ?>
[]" <?php 
                        checked(true);
                        ?>
>
								<?php 
                        echo sp_get_player_name_with_number($post_id);
                        ?>
							</label>
						</li>
					<?php 
                    }
                }
                ?>
					<li class="sp-ajax-show-all-container"><a class="sp-ajax-show-all" href="#show-all-<?php 
                echo $slug;
                ?>
s"><?php 
                _e('Show all', 'sportspress');
                ?>
</a></li>
				<?php 
            } else {
                ?>
					<li class="sp-ajax-show-all-container"><?php 
                _e('No results found.', 'sportspress');
                ?>
					<a class="sp-ajax-show-all" href="#show-all-<?php 
                echo $slug;
                ?>
s"><?php 
                _e('Show all', 'sportspress');
                ?>
</a></li>
				<?php 
            }
            ?>
			</ul>
		</div>
		<?php 
        }
コード例 #6
0
    function sp_post_checklist($post_id = null, $meta = 'post', $display = 'block', $filters = null, $index = null, $slug = null)
    {
        if (!isset($post_id)) {
            global $post_id;
        }
        if (!isset($slug)) {
            $slug = $meta;
        }
        ?>
		<div id="<?php 
        echo $slug;
        ?>
-all" class="posttypediv tabs-panel wp-tab-panel sp-tab-panel sp-tab-filter-panel sp-select-all-range" style="display: <?php 
        echo $display;
        ?>
;">
			<input type="hidden" value="0" name="<?php 
        echo $slug;
        if (isset($index)) {
            echo '[' . $index . ']';
        }
        ?>
[]" />
			<ul class="categorychecklist form-no-clear">
				<li class="sp-select-all-container"><label class="selectit"><input type="checkbox" class="sp-select-all"> <strong><?php 
        _e('Select All', 'sportspress');
        ?>
</strong></label></li>
				<?php 
        $selected = (array) get_post_meta($post_id, $slug, false);
        if (!sizeof($selected)) {
            $selected = (array) get_post_meta($post_id, $meta, false);
        }
        $selected = sp_array_between($selected, 0, $index);
        if (empty($posts)) {
            $query = array('post_type' => $meta, 'numberposts' => -1, 'post_per_page' => -1, 'orderby' => 'menu_order');
            if ($meta == 'sp_player') {
                $query['meta_key'] = 'sp_number';
                $query['orderby'] = 'meta_value_num';
                $query['order'] = 'ASC';
            }
            $posts = get_posts($query);
        }
        foreach ($posts as $post) {
            $parents = get_post_ancestors($post);
            if ($filters) {
                if (is_array($filters)) {
                    $filter_values = array();
                    foreach ($filters as $filter) {
                        if (get_taxonomy($filter)) {
                            $terms = (array) get_the_terms($post->ID, $filter);
                            foreach ($terms as $term) {
                                if (is_object($term) && property_exists($term, 'term_id')) {
                                    $filter_values[] = $term->term_id;
                                }
                            }
                        } else {
                            $filter_values = array_merge($filter_values, (array) get_post_meta($post->ID, $filter, false));
                        }
                    }
                } else {
                    $filter = $filters;
                    if (get_taxonomy($filter)) {
                        $terms = (array) get_the_terms($post->ID, $filter);
                        foreach ($terms as $term) {
                            if (is_object($term) && property_exists($term, 'term_id')) {
                                $filter_values[] = $term->term_id;
                            }
                        }
                    } else {
                        $filter_values = (array) get_post_meta($post->ID, $filter, false);
                    }
                }
            }
            ?>
					<li class="sp-post sp-filter-0<?php 
            if ($filters) {
                foreach ($filter_values as $filter_value) {
                    echo ' sp-filter-' . $filter_value;
                }
            }
            ?>
">
						<?php 
            echo str_repeat('<ul><li>', sizeof($parents));
            ?>
						<label class="selectit">
							<input type="checkbox" value="<?php 
            echo $post->ID;
            ?>
" name="<?php 
            echo $slug;
            if (isset($index)) {
                echo '[' . $index . ']';
            }
            ?>
[]"<?php 
            if (in_array($post->ID, $selected)) {
                echo ' checked="checked"';
            }
            ?>
>
							<?php 
            echo sp_get_player_name_with_number($post->ID);
            ?>
						</label>
						<?php 
            echo str_repeat('</li></ul>', sizeof($parents));
            ?>
					</li>
					<?php 
        }
        ?>
				<li class="sp-not-found-container">
					<?php 
        _e('No results found.', 'sportspress');
        ?>
					<?php 
        if (sizeof($posts)) {
            ?>
<a class="sp-show-all" href="#show-all-<?php 
            echo $slug;
            ?>
s"><?php 
            _e('Show all', 'sportspress');
            ?>
</a><?php 
        }
        ?>
				</li>
				<?php 
        if (sizeof($posts)) {
            ?>
					<li class="sp-show-all-container"><a class="sp-show-all" href="#show-all-<?php 
            echo $slug;
            ?>
s"><?php 
            _e('Show all', 'sportspress');
            ?>
</a></li>
				<?php 
        }
        ?>
			</ul>
		</div>
		<?php 
    }
コード例 #7
0
function prosports_array_between($array = array(), $delimiter = 0, $index = 0)
{
    return sp_array_between($array, $delimiter, $index);
}
コード例 #8
0
ファイル: event-staff.php プロジェクト: kleitz/ProSports
<?php

/**
 * Event Staff
 *
 * @author 		ProSports
 * @package 	ProSports/Templates
 * @version     1.1
 */
if (!defined('ABSPATH')) {
    exit;
}
// Exit if accessed directly
$defaults = array('id' => get_the_ID(), 'index' => 0, 'link_posts' => get_option('prosports_link_staff', 'yes') == 'yes' ? true : false);
$staffs = array_filter(sp_array_between((array) get_post_meta($id, 'sp_staff', false), 0, $index));
if (!$staffs) {
    return;
}
extract($defaults, EXTR_SKIP);
?>
<p class="sp-event-staff">
<?php 
foreach ($staffs as $staff_id) {
    if (!$staff_id) {
        continue;
    }
    $name = get_the_title($staff_id);
    if (!$name) {
        continue;
    }
    $staff = new SP_Staff($staff_id);
コード例 #9
0
     $performance_posts = get_posts(array('posts_per_page' => -1, 'post_type' => 'sp_performance'));
     foreach ($performance_posts as $post) {
         $performance_ids[$post->post_name] = $post->ID;
     }
 }
 if ($reverse_teams) {
     $teams = array_reverse($teams, true);
 }
 if ($split_teams) {
     // Split tables
     foreach ($teams as $index => $team_id) {
         if (-1 == $team_id) {
             continue;
         }
         // Get results for players in the team
         $players = sp_array_between((array) get_post_meta($id, 'sp_player', false), 0, $index);
         $has_players = sizeof($players) > 1;
         $players = apply_filters('sportspress_event_performance_split_team_players', $players);
         $show_team_players = $show_players && $has_players;
         if (0 < $team_id) {
             $data = sp_array_combine($players, sp_array_value($performance, $team_id, array()));
         } elseif (0 == $team_id) {
             $data = array();
             foreach ($players as $player_id) {
                 if (isset($performance[$player_id][$player_id])) {
                     $data[$player_id] = $performance[$player_id][$player_id];
                 }
             }
         } else {
             $data = sp_array_value(array_values($performance), $index);
         }
コード例 #10
0
    /**
     * Admin edit tables
     */
    public static function tables($post_id, $stats = array(), $labels = array(), $columns = array(), $teams = array(), $has_checkboxes = false, $split_positions = false, $split_teams = true, $positions = array(), $status = true)
    {
        $i = 0;
        if ($split_teams) {
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                // Get results for players in the team
                $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                $players[] = -1;
                $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                ?>
				<div>
					<?php 
                if ($team_id) {
                    ?>
						<p><strong><?php 
                    echo get_the_title($team_id);
                    ?>
</strong></p>
					<?php 
                } elseif ($i) {
                    ?>
						<br>
					<?php 
                }
                ?>
					<?php 
                self::table($labels, $columns, $data, $team_id, $has_checkboxes, $split_positions, $positions, $status);
                ?>
				</div>
				<?php 
                $i++;
            }
        } else {
            ?>
			<div class="sp-data-table-container">
				<table class="widefat sp-data-table sp-performance-table sp-sortable-table">
					<?php 
            self::header($columns, $labels, $positions, $labels, $has_checkboxes, $status, false, false);
            ?>
					<?php 
            self::footer(sp_array_value($stats, -1), $labels, 0, $positions, $labels, $split_positions, $status, false, false);
            ?>
					<tbody>
						<?php 
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                // Get results for players in the team
                $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                $players[] = -1;
                $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                foreach ($data as $player_id => $player_performance) {
                    self::row($labels, $player_id, $player_performance, $team_id, $data, !empty($positions), $status, false, false);
                }
            }
            ?>
					</tbody>
				</table>
			</div>
			<?php 
        }
    }
コード例 #11
0
    /**
     * Admin edit tables
     */
    public static function tables($post_id, $stats = array(), $labels = array(), $columns = array(), $teams = array(), $has_checkboxes = false, $positions = array(), $status = true, $formats = array(), $order = array(), $numbers = true, $is_individual = false, $timeline = array())
    {
        $sections = get_option('sportspress_event_performance_sections', -1);
        if ($is_individual) {
            ?>
			<div class="sp-data-table-container">
				<table class="widefat sp-data-table sp-performance-table sp-sortable-table">
					<?php 
            self::header($columns, $labels, $positions, $has_checkboxes, $status, false, $numbers, -1, $formats);
            ?>
					<?php 
            self::footer(sp_array_value($stats, -1), $labels, 0, $positions, $status, false, $numbers, -1, $formats);
            ?>
					<tbody>
						<?php 
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                // Get results for players in the team
                $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                $players[] = -1;
                $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                // Get team timeline
                if (is_array($timeline)) {
                    $team_timeline = (array) sp_array_value($timeline, $team_id, array());
                } else {
                    $team_timeline = false;
                }
                foreach ($data as $player_id => $player_performance) {
                    // Get player timeline
                    if (is_array($team_timeline)) {
                        $player_timeline = (array) sp_array_value($team_timeline, $player_id, array());
                    } else {
                        $player_timeline = false;
                    }
                    self::row($labels, $player_id, $player_performance, $team_id, $data, !empty($positions), $status, false, $numbers, -1, $formats, $player_timeline);
                }
            }
            ?>
					</tbody>
				</table>
			</div>
			<?php 
        } else {
            $i = 0;
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                if (-1 == $sections) {
                    // Get results for players in the team
                    $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                    $players[] = -1;
                    $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                    // Get team timeline
                    if (is_array($timeline)) {
                        $team_timeline = (array) sp_array_value($timeline, $team_id, array());
                    } else {
                        $team_timeline = false;
                    }
                    ?>
					<div>
						<p><strong><?php 
                    echo get_the_title($team_id);
                    ?>
</strong></p>
						<?php 
                    self::table($labels, $columns, $data, $team_id, $has_checkboxes, $positions, $status, -1, $formats, $order, $numbers, $team_timeline);
                    ?>
						<?php 
                    do_action('sportspress_after_event_performance_table_admin', $labels, $columns, $data, $team_id);
                    ?>
					</div>
				<?php 
                } else {
                    ?>
					<?php 
                    // Get labels by section
                    $args = array('post_type' => 'sp_performance', 'numberposts' => 100, 'posts_per_page' => 100, 'orderby' => 'menu_order', 'order' => 'ASC');
                    $performances = get_posts($args);
                    $labels = array(array(), array());
                    foreach ($performances as $performance) {
                        $section = get_post_meta($performance->ID, 'sp_section', true);
                        if ('' === $section) {
                            $section = -1;
                        }
                        switch ($section) {
                            case 1:
                                $labels[1][$performance->post_name] = $performance->post_title;
                                break;
                            default:
                                $labels[0][$performance->post_name] = $performance->post_title;
                        }
                    }
                    $offense = (array) get_post_meta($post_id, 'sp_offense', false);
                    $defense = (array) get_post_meta($post_id, 'sp_defense', false);
                    $data = array();
                    if (sizeof($offense) || sizeof($defense)) {
                        // Get results for offensive players in the team
                        $offense = sp_array_between($offense, 0, $key);
                        $offense[] = -1;
                        $data[0] = sp_array_combine($offense, sp_array_value($stats, $team_id, array()));
                        // Get results for defensive players in the team
                        $defense = sp_array_between($defense, 0, $key);
                        $defense[] = -1;
                        $data[1] = sp_array_combine($defense, sp_array_value($stats, $team_id, array()));
                    } else {
                        // Get results for all players in the team
                        $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                        $players[] = -1;
                        $data[0] = $data[1] = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                    }
                    // Get team timeline
                    if (is_array($timeline)) {
                        $team_timeline = (array) sp_array_value($timeline, $team_id, array());
                    } else {
                        $team_timeline = false;
                    }
                    // Determine order of sections
                    if (1 == $sections) {
                        $section_order = array(1 => __('Defense', 'sportspress'), 0 => __('Offense', 'sportspress'));
                    } else {
                        $section_order = array(__('Offense', 'sportspress'), __('Defense', 'sportspress'));
                    }
                    foreach ($section_order as $section_id => $section_label) {
                        ?>
						<div>
							<p><strong><?php 
                        echo get_the_title($team_id);
                        ?>
 &mdash; <?php 
                        echo $section_label;
                        ?>
</strong></p>
							<?php 
                        self::table($labels[$section_id], $columns, $data[$section_id], $team_id, $has_checkboxes && 0 === $i, $positions, $status, $section_id, $formats, $order, $numbers, $team_timeline);
                        ?>
							<?php 
                        do_action('sportspress_after_event_performance_table_admin', $labels[$section_id], $columns, $data[$section_id], $team_id);
                        ?>
						</div>
						<?php 
                    }
                }
                $i++;
            }
        }
    }
コード例 #12
0
    /**
     * Admin edit tables
     */
    public static function tables($post_id, $stats = array(), $labels = array(), $columns = array(), $teams = array(), $has_checkboxes = false, $split_positions = false, $split_teams = true, $positions = array(), $status = true)
    {
        $i = 0;
        if ($split_teams) {
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                // Get results for players in the team
                $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                $players[] = -1;
                $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                $tabs = array();
                if ($team_id) {
                    $tabs['values'] = get_the_title($team_id);
                } elseif ($i) {
                    echo '<br>';
                }
                $tabs = apply_filters('sportspress_event_performance_tabs_admin', $tabs);
                ?>
				<div>
					<?php 
                if (sizeof($tabs)) {
                    ?>
						<?php 
                    if (sizeof($tabs) > 1) {
                        ?>
							<ul class="subsubsub sp-performance-table-bar">
								<?php 
                        $t = 0;
                        ?>
								<?php 
                        foreach ($tabs as $key => $label) {
                            ?>
									<li>
										<a href="#"<?php 
                            if (0 == $t) {
                                ?>
 class="current"<?php 
                            }
                            ?>
>
											<?php 
                            echo $label;
                            ?>
										</a>
									</li>
									<?php 
                            if (sizeof($tabs) > $t + 1) {
                                ?>
 | <?php 
                            }
                            ?>
								<?php 
                            $t++;
                            ?>
								<?php 
                        }
                        ?>
							</ul>
						<?php 
                    } else {
                        ?>
							<?php 
                        $label = reset($tabs);
                        ?>
							<p><strong><?php 
                        echo $label;
                        ?>
</strong></p>
						<?php 
                    }
                    ?>
					<?php 
                }
                ?>
					<?php 
                self::table($labels, $columns, $data, $team_id, $has_checkboxes, $split_positions, $positions, $status);
                ?>
					<?php 
                do_action('sportspress_after_event_performance_table_admin', $labels, $columns, $data, $team_id);
                ?>
				</div>
				<?php 
                $i++;
            }
        } else {
            ?>
			<div class="sp-data-table-container">
				<table class="widefat sp-data-table sp-performance-table sp-sortable-table">
					<?php 
            self::header($columns, $labels, $positions, $has_checkboxes, $status, false, false);
            ?>
					<?php 
            self::footer(sp_array_value($stats, -1), $labels, 0, $positions, $split_positions, $status, false, false);
            ?>
					<tbody>
						<?php 
            foreach ($teams as $key => $team_id) {
                if (-1 == $team_id) {
                    continue;
                }
                // Get results for players in the team
                $players = sp_array_between((array) get_post_meta($post_id, 'sp_player', false), 0, $key);
                $players[] = -1;
                $data = sp_array_combine($players, sp_array_value($stats, $team_id, array()));
                foreach ($data as $player_id => $player_performance) {
                    self::row($labels, $player_id, $player_performance, $team_id, $data, !empty($positions), $status, false, false);
                }
            }
            ?>
					</tbody>
				</table>
			</div>
			<?php 
        }
    }
コード例 #13
0
 public function performance($admin = false)
 {
     $teams = get_post_meta($this->ID, 'sp_team', false);
     $performance = (array) get_post_meta($this->ID, 'sp_players', true);
     $args = array('post_type' => 'sp_performance', 'numberposts' => 100, 'posts_per_page' => 100, 'orderby' => 'menu_order', 'order' => 'ASC');
     $vars = get_posts($args);
     $labels = array();
     foreach ($vars as $var) {
         $labels[$var->post_name] = $var->post_title;
         $format = get_post_meta($var->ID, 'sp_format', true);
         if ('' === $format) {
             $format = 'number';
         }
         $formats[$var->post_name] = $format;
     }
     $order = (array) get_post_meta($this->ID, 'sp_order', true);
     $labels = apply_filters('sportspress_event_performance_labels', $labels, $this);
     $columns = get_post_meta($this->ID, 'sp_columns', true);
     if (is_array($teams)) {
         foreach ($teams as $i => $team_id) {
             $players = sp_array_between((array) get_post_meta($this->ID, 'sp_player', false), 0, $i);
             $data = sp_array_combine($players, sp_array_value($performance, $team_id, array()));
             $totals = array();
             foreach ($labels as $key => $label) {
                 $totals[$key] = 0;
             }
             foreach ($data as $player_id => $player_performance) {
                 foreach ($labels as $key => $label) {
                     if (array_key_exists($key, $totals)) {
                         $totals[$key] += sp_array_value($player_performance, $key, 0);
                     }
                 }
                 if (!array_key_exists('number', $player_performance)) {
                     $performance[$team_id][$player_id]['number'] = apply_filters('sportspress_event_performance_default_squad_number', get_post_meta($player_id, 'sp_number', true));
                 }
                 if (!array_key_exists('position', $player_performance) || $player_performance['position'] == null) {
                     $performance[$team_id][$player_id]['position'] = sp_get_the_term_id($player_id, 'sp_position', null);
                 }
             }
             foreach ($totals as $key => $value) {
                 $manual_total = sp_array_value(sp_array_value($performance, 0, array()), $key, null);
                 if ($manual_total != null) {
                     $totals[$key] = $manual_total;
                 }
             }
         }
     }
     if ($admin) {
         return array($labels, $columns, $performance, $teams, $formats, $order);
     } else {
         // Add position to performance labels
         if (taxonomy_exists('sp_position')) {
             $labels = array_merge(array('position' => __('Position', 'sportspress')), $labels);
         }
         if ('manual' == get_option('sportspress_event_performance_columns', 'auto') && is_array($columns)) {
             foreach ($labels as $key => $label) {
                 if (!in_array($key, $columns)) {
                     unset($labels[$key]);
                 }
             }
         }
         if ('no' == get_option('sportspress_event_show_position', 'yes')) {
             unset($labels['position']);
         }
         if ('no' == get_option('sportspress_event_show_player_numbers', 'yes')) {
             unset($labels['number']);
         }
         $performance[0] = $labels;
         return apply_filters('sportspress_get_event_performance', $performance);
     }
 }