Enable user roles for players, staff, and managers
This commit is contained in:
@@ -1,137 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Player Performance
|
||||
*
|
||||
* @author ThemeBoy
|
||||
* @category Admin
|
||||
* @package SportsPress/Admin/Meta Boxes
|
||||
* @version 0.8
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
/**
|
||||
* SP_Meta_Box_Player_Performance
|
||||
*/
|
||||
class SP_Meta_Box_Player_Performance {
|
||||
|
||||
/**
|
||||
* Output the metabox
|
||||
*/
|
||||
public static function output( $post ) {
|
||||
$leagues = get_the_terms( $post->ID, 'sp_league' );
|
||||
|
||||
$league_num = sizeof( $leagues );
|
||||
|
||||
// Loop through performance for each league
|
||||
if ( $leagues ): foreach ( $leagues as $league ):
|
||||
|
||||
if ( $league_num > 1 ):
|
||||
?>
|
||||
<p><strong><?php echo $league->name; ?></strong></p>
|
||||
<?php
|
||||
endif;
|
||||
|
||||
$player = new SP_Player( $post );
|
||||
|
||||
list( $columns, $data, $placeholders, $merged, $seasons_teams ) = $player->data( $league->term_id, true );
|
||||
|
||||
self::table( $post->ID, $league->term_id, $columns, $data, $placeholders, $merged, $seasons_teams, ! current_user_can( 'edit_sp_teams' ) );
|
||||
|
||||
endforeach; else:
|
||||
|
||||
printf( __( 'Select %s', 'sportspress' ), __( 'Leagues', 'sportspress' ) );
|
||||
|
||||
endif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save meta box data
|
||||
*/
|
||||
public static function save( $post_id, $post ) {
|
||||
update_post_meta( $post_id, 'sp_leagues', sp_array_value( $_POST, 'sp_leagues', array() ) );
|
||||
if ( current_user_can( 'edit_sp_teams' ) )
|
||||
update_post_meta( $post_id, 'sp_performance', sp_array_value( $_POST, 'sp_performance', array() ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Admin edit table
|
||||
*/
|
||||
public static function table( $id = null, $league_id, $columns = array(), $data = array(), $placeholders = array(), $merged = array(), $leagues = array(), $readonly = true ) {
|
||||
if ( ! $id )
|
||||
$id = get_the_ID();
|
||||
|
||||
$teams = array_filter( get_post_meta( $id, 'sp_team', false ) );
|
||||
?>
|
||||
<div class="sp-data-table-container">
|
||||
<table class="widefat sp-data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php _e( 'Season', 'sportspress' ); ?></th>
|
||||
<th><?php _e( 'Team', 'sportspress' ); ?></th>
|
||||
<?php foreach ( $columns as $label ): ?>
|
||||
<th><?php echo $label; ?></th>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$i = 0;
|
||||
foreach ( $data as $div_id => $div_stats ):
|
||||
if ( !$div_id || $div_id == 'performance' ) continue;
|
||||
$div = get_term( $div_id, 'sp_season' );
|
||||
?>
|
||||
<tr class="sp-row sp-post<?php if ( $i % 2 == 0 ) echo ' alternate'; ?>">
|
||||
<td>
|
||||
<?php echo $div->name; ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
$value = sp_array_value( $leagues, $div_id, '-1' );
|
||||
$args = array(
|
||||
'post_type' => 'sp_team',
|
||||
'name' => 'sp_leagues[' . $league_id . '][' . $div_id . ']',
|
||||
'show_option_none' => __( '— None —', 'sportspress' ),
|
||||
'sort_order' => 'ASC',
|
||||
'sort_column' => 'menu_order',
|
||||
'selected' => $value,
|
||||
'values' => 'ID',
|
||||
'include' => $teams,
|
||||
'tax_query' => array(
|
||||
'relation' => 'AND',
|
||||
array(
|
||||
'taxonomy' => 'sp_league',
|
||||
'terms' => $league_id,
|
||||
'field' => 'id',
|
||||
),
|
||||
array(
|
||||
'taxonomy' => 'sp_season',
|
||||
'terms' => $div_id,
|
||||
'field' => 'id',
|
||||
),
|
||||
),
|
||||
);
|
||||
if ( ! sp_dropdown_pages( $args ) ):
|
||||
_e( 'No results found.', 'sportspress' );
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
<?php foreach( $columns as $column => $label ):
|
||||
?>
|
||||
<td><?php
|
||||
$value = sp_array_value( sp_array_value( $data, $div_id, array() ), $column, null );
|
||||
$placeholder = sp_array_value( sp_array_value( $placeholders, $div_id, array() ), $column, 0 );
|
||||
echo '<input type="text" name="sp_performance[' . $league_id . '][' . $div_id . '][' . $column . ']" value="' . $value . '" placeholder="' . $placeholder . '"' . ( $readonly ? ' disabled="disabled"' : '' ) . ' />';
|
||||
?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php
|
||||
$i++;
|
||||
endforeach;
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class SP_Meta_Box_Player_Statistics {
|
||||
$player = new SP_Player( $post );
|
||||
list( $columns, $data, $placeholders, $merged, $seasons_teams ) = $player->data( $league->term_id, true );
|
||||
|
||||
self::table( $post->ID, $league->term_id, $columns, $data, $placeholders, $merged, $seasons_teams, ! current_user_can( 'edit_sp_teams' ) );
|
||||
self::table( $post->ID, $league->term_id, $columns, $data, $placeholders, $merged, $seasons_teams, ! current_user_can( 'edit_sp_player_statistics' ) );
|
||||
|
||||
endforeach; else:
|
||||
|
||||
@@ -49,7 +49,7 @@ class SP_Meta_Box_Player_Statistics {
|
||||
*/
|
||||
public static function save( $post_id, $post ) {
|
||||
update_post_meta( $post_id, 'sp_leagues', sp_array_value( $_POST, 'sp_leagues', array() ) );
|
||||
if ( current_user_can( 'edit_sp_teams' ) )
|
||||
if ( current_user_can( 'edit_sp_player_statistics' ) )
|
||||
update_post_meta( $post_id, 'sp_statistics', sp_array_value( $_POST, 'sp_statistics', array() ) );
|
||||
}
|
||||
|
||||
@@ -117,7 +117,10 @@ class SP_Meta_Box_Player_Statistics {
|
||||
<td><?php
|
||||
$value = sp_array_value( sp_array_value( $data, $div_id, array() ), $column, null );
|
||||
$placeholder = sp_array_value( sp_array_value( $placeholders, $div_id, array() ), $column, 0 );
|
||||
echo '<input type="text" name="sp_statistics[' . $league_id . '][' . $div_id . '][' . $column . ']" value="' . $value . '" placeholder="' . $placeholder . '"' . ( $readonly ? ' disabled="disabled"' : '' ) . ' />';
|
||||
if ( $readonly )
|
||||
echo $value ? $value : $placeholder;
|
||||
else
|
||||
echo '<input type="text" name="sp_statistics[' . $league_id . '][' . $div_id . '][' . $column . ']" value="' . $value . '" placeholder="' . $placeholder . '"' . ( $readonly ? ' disabled="disabled"' : '' ) . ' />';
|
||||
?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
|
||||
@@ -38,7 +38,7 @@ class SP_Meta_Box_Team_Columns {
|
||||
|
||||
list( $columns, $data, $placeholders, $merged, $leagues_seasons ) = $team->data( $league_id, true );
|
||||
|
||||
self::table( $league_id, $columns, $data, $placeholders, $merged, $leagues_seasons, ! current_user_can( 'edit_sp_tables' ) );
|
||||
self::table( $league_id, $columns, $data, $placeholders, $merged, $leagues_seasons, ! current_user_can( 'edit_sp_team_columns' ) );
|
||||
|
||||
endforeach; else:
|
||||
|
||||
@@ -52,7 +52,7 @@ class SP_Meta_Box_Team_Columns {
|
||||
*/
|
||||
public static function save( $post_id, $post ) {
|
||||
update_post_meta( $post_id, 'sp_leagues', sp_array_value( $_POST, 'sp_leagues', array() ) );
|
||||
if ( current_user_can( 'edit_sp_tables' ) )
|
||||
if ( current_user_can( 'edit_sp_team_columns' ) )
|
||||
update_post_meta( $post_id, 'sp_columns', sp_array_value( $_POST, 'sp_columns', array() ) );
|
||||
}
|
||||
|
||||
@@ -92,7 +92,10 @@ class SP_Meta_Box_Team_Columns {
|
||||
<td><?php
|
||||
$value = sp_array_value( sp_array_value( $data, $div_id, array() ), $column, null );
|
||||
$placeholder = sp_array_value( sp_array_value( $placeholders, $div_id, array() ), $column, 0 );
|
||||
echo '<input type="text" name="sp_columns[' . $league_id . '][' . $div_id . '][' . $column . ']" value="' . $value . '" placeholder="' . $placeholder . '"' . ( $readonly ? ' disabled="disabled"' : '' ) . ' />';
|
||||
if ( $readonly )
|
||||
echo $value ? $value : $placeholder;
|
||||
else
|
||||
echo '<input type="text" name="sp_columns[' . $league_id . '][' . $div_id . '][' . $column . ']" value="' . $value . '" placeholder="' . $placeholder . '"' . ( $readonly ? ' disabled="disabled"' : '' ) . ' />';
|
||||
?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
|
||||
@@ -76,6 +76,7 @@ class SP_Install {
|
||||
* Install SP
|
||||
*/
|
||||
public function install() {
|
||||
$this->remove_roles();
|
||||
$this->create_roles();
|
||||
|
||||
// Register post types
|
||||
@@ -148,27 +149,33 @@ class SP_Install {
|
||||
public function create_roles() {
|
||||
global $wp_roles;
|
||||
|
||||
if ( class_exists( 'WP_Roles' ) ) {
|
||||
if ( ! isset( $wp_roles ) ) {
|
||||
if ( class_exists( 'WP_Roles' ) ):
|
||||
if ( ! isset( $wp_roles ) ):
|
||||
$wp_roles = new WP_Roles();
|
||||
}
|
||||
}
|
||||
endif;
|
||||
endif;
|
||||
|
||||
if ( is_object( $wp_roles ) ) {
|
||||
if ( is_object( $wp_roles ) ):
|
||||
|
||||
add_role(
|
||||
'sp_player',
|
||||
__( 'Player', 'sportspress' ),
|
||||
array(
|
||||
'read' => true,
|
||||
'edit_posts' => true,
|
||||
'delete_posts' => true,
|
||||
'upload_files' => true,
|
||||
'level_1' => true,
|
||||
'level_0' => true,
|
||||
|
||||
'edit_sp_player' => true,
|
||||
'edit_sp_players' => true,
|
||||
'read_sp_players' => true,
|
||||
'delete_sp_players' => true,
|
||||
'read' => true,
|
||||
'delete_posts' => true,
|
||||
'edit_posts' => true,
|
||||
|
||||
'edit_sp_player' => true,
|
||||
'read_sp_player' => true,
|
||||
'delete_sp_player' => true,
|
||||
'edit_sp_players' => true,
|
||||
'delete_sp_players' => true,
|
||||
'edit_published_sp_players' => true,
|
||||
|
||||
'assign_sp_player_terms' => true,
|
||||
)
|
||||
);
|
||||
|
||||
@@ -176,15 +183,21 @@ class SP_Install {
|
||||
'sp_staff',
|
||||
__( 'Staff', 'sportspress' ),
|
||||
array(
|
||||
'read' => true,
|
||||
'edit_posts' => true,
|
||||
'delete_posts' => true,
|
||||
'upload_files' => true,
|
||||
'level_1' => true,
|
||||
'level_0' => true,
|
||||
|
||||
'edit_sp_staff' => true,
|
||||
'edit_sp_staffs' => true,
|
||||
'read_sp_staffs' => true,
|
||||
'delete_sp_staffs' => true,
|
||||
'read' => true,
|
||||
'delete_posts' => true,
|
||||
'edit_posts' => true,
|
||||
|
||||
'edit_sp_staff' => true,
|
||||
'read_sp_staff' => true,
|
||||
'delete_sp_staff' => true,
|
||||
'edit_sp_staffs' => true,
|
||||
'delete_sp_staffs' => true,
|
||||
'edit_published_sp_staffs' => true,
|
||||
|
||||
'assign_sp_staff_terms' => true,
|
||||
)
|
||||
);
|
||||
|
||||
@@ -192,98 +205,112 @@ class SP_Install {
|
||||
'sp_team_manager',
|
||||
__( 'Team Manager', 'sportspress' ),
|
||||
array(
|
||||
'read' => true,
|
||||
'edit_posts' => true,
|
||||
'delete_posts' => true,
|
||||
'upload_files' => true,
|
||||
'level_2' => true,
|
||||
'level_1' => true,
|
||||
'level_0' => true,
|
||||
|
||||
'edit_sp_player' => true,
|
||||
'edit_sp_players' => true,
|
||||
'edit_private_sp_players' => true,
|
||||
'edit_published_sp_players' => true,
|
||||
'read_sp_players' => true,
|
||||
'read_private_sp_players' => true,
|
||||
'publish_sp_players' => true,
|
||||
'delete_sp_players' => true,
|
||||
'delete_private_sp_players' => true,
|
||||
'delete_published_sp_players' => true,
|
||||
'read' => true,
|
||||
'delete_posts' => true,
|
||||
'edit_posts' => true,
|
||||
'delete_published_posts' => true,
|
||||
'publish_posts' => true,
|
||||
'upload_files' => true,
|
||||
'edit_published_posts' => true,
|
||||
|
||||
'edit_sp_staff' => true,
|
||||
'edit_sp_staffs' => true,
|
||||
'edit_private_sp_staffs' => true,
|
||||
'edit_published_sp_staffs' => true,
|
||||
'read_sp_staffs' => true,
|
||||
'read_private_sp_staffs' => true,
|
||||
'publish_sp_staffs' => true,
|
||||
'delete_sp_staffs' => true,
|
||||
'delete_private_sp_staffs' => true,
|
||||
'delete_published_sp_staffs' => true,
|
||||
'edit_sp_player' => true,
|
||||
'read_sp_player' => true,
|
||||
'delete_sp_player' => true,
|
||||
'edit_sp_players' => true,
|
||||
'edit_others_sp_players' => true,
|
||||
'publish_sp_players' => true,
|
||||
'delete_sp_players' => true,
|
||||
'delete_published_sp_players' => true,
|
||||
'edit_published_sp_players' => true,
|
||||
|
||||
'edit_sp_team' => true,
|
||||
'edit_sp_teams' => true,
|
||||
'read_sp_teams' => true,
|
||||
'delete_sp_teams' => true,
|
||||
'edit_sp_staff' => true,
|
||||
'read_sp_staff' => true,
|
||||
'delete_sp_staff' => true,
|
||||
'edit_sp_staffs' => true,
|
||||
'edit_others_sp_staffs' => true,
|
||||
'delete_sp_staffs' => true,
|
||||
'delete_published_sp_staffs' => true,
|
||||
'edit_published_sp_staffs' => true,
|
||||
|
||||
'edit_sp_list' => true,
|
||||
'edit_sp_lists' => true,
|
||||
'read_sp_lists' => true,
|
||||
'delete_sp_lists' => true,
|
||||
'manage_sp_player_terms' => true,
|
||||
'edit_sp_player_terms' => true,
|
||||
'delete_sp_player_terms' => true,
|
||||
'assign_sp_player_terms' => true,
|
||||
|
||||
'manage_sp_staff_terms' => true,
|
||||
'edit_sp_staff_terms' => true,
|
||||
'delete_sp_staff_terms' => true,
|
||||
'assign_sp_staff_terms' => true,
|
||||
|
||||
'edit_sp_team' => true,
|
||||
'read_sp_team' => true,
|
||||
'delete_sp_team' => true,
|
||||
'edit_sp_teams' => true,
|
||||
'delete_sp_teams' => true,
|
||||
'edit_published_sp_teams' => true,
|
||||
|
||||
'edit_sp_player_statistics' => true,
|
||||
)
|
||||
);
|
||||
|
||||
// League manager role
|
||||
add_role( 'sp_league_manager', __( 'League Manager', 'sportspress' ), array(
|
||||
'level_9' => true,
|
||||
'level_8' => true,
|
||||
'level_7' => true,
|
||||
'level_6' => true,
|
||||
'level_5' => true,
|
||||
'level_4' => true,
|
||||
'level_3' => true,
|
||||
'level_2' => true,
|
||||
'level_1' => true,
|
||||
'level_0' => true,
|
||||
'read' => true,
|
||||
'read_private_pages' => true,
|
||||
'read_private_posts' => true,
|
||||
'edit_users' => true,
|
||||
'edit_posts' => true,
|
||||
'edit_pages' => true,
|
||||
'edit_published_posts' => true,
|
||||
'edit_published_pages' => true,
|
||||
'edit_private_pages' => true,
|
||||
'edit_private_posts' => true,
|
||||
'edit_others_posts' => true,
|
||||
'edit_others_pages' => true,
|
||||
'publish_posts' => true,
|
||||
'publish_pages' => true,
|
||||
'delete_posts' => true,
|
||||
'delete_pages' => true,
|
||||
'delete_private_pages' => true,
|
||||
'delete_private_posts' => true,
|
||||
'delete_published_pages' => true,
|
||||
'delete_published_posts' => true,
|
||||
'delete_others_posts' => true,
|
||||
'delete_others_pages' => true,
|
||||
'manage_categories' => true,
|
||||
'manage_links' => true,
|
||||
'moderate_comments' => true,
|
||||
'unfiltered_html' => true,
|
||||
'upload_files' => true,
|
||||
'export' => true,
|
||||
'import' => true,
|
||||
'list_users' => true
|
||||
) );
|
||||
add_role( 'sp_league_manager', __( 'League Manager', 'sportspress' ),
|
||||
array(
|
||||
'level_7' => true,
|
||||
'level_6' => true,
|
||||
'level_5' => true,
|
||||
'level_4' => true,
|
||||
'level_3' => true,
|
||||
'level_2' => true,
|
||||
'level_1' => true,
|
||||
'level_0' => true,
|
||||
|
||||
'read' => true,
|
||||
'read_private_pages' => true,
|
||||
'read_private_posts' => true,
|
||||
'edit_users' => true,
|
||||
'edit_posts' => true,
|
||||
'edit_pages' => true,
|
||||
'edit_published_posts' => true,
|
||||
'edit_published_pages' => true,
|
||||
'edit_private_pages' => true,
|
||||
'edit_private_posts' => true,
|
||||
'edit_others_posts' => true,
|
||||
'edit_others_pages' => true,
|
||||
'publish_posts' => true,
|
||||
'publish_pages' => true,
|
||||
'delete_posts' => true,
|
||||
'delete_pages' => true,
|
||||
'delete_private_pages' => true,
|
||||
'delete_private_posts' => true,
|
||||
'delete_published_pages' => true,
|
||||
'delete_published_posts' => true,
|
||||
'delete_others_posts' => true,
|
||||
'delete_others_pages' => true,
|
||||
'manage_categories' => true,
|
||||
'manage_links' => true,
|
||||
'moderate_comments' => true,
|
||||
'unfiltered_html' => true,
|
||||
'upload_files' => true,
|
||||
'export' => true,
|
||||
'import' => true,
|
||||
'list_users' => true
|
||||
)
|
||||
);
|
||||
|
||||
$capabilities = $this->get_core_capabilities();
|
||||
|
||||
foreach ( $capabilities as $cap_group ) {
|
||||
foreach ( $cap_group as $cap ) {
|
||||
foreach ( $capabilities as $cap_group ):
|
||||
foreach ( $cap_group as $cap ):
|
||||
$wp_roles->add_cap( 'sp_league_manager', $cap );
|
||||
$wp_roles->add_cap( 'administrator', $cap );
|
||||
}
|
||||
}
|
||||
}
|
||||
endforeach;
|
||||
endforeach;
|
||||
endif;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -297,7 +324,9 @@ class SP_Install {
|
||||
|
||||
$capabilities['core'] = array(
|
||||
'manage_sportspress',
|
||||
'view_sportspress_reports'
|
||||
'view_sportspress_reports',
|
||||
'edit_sp_player_statistics',
|
||||
'edit_sp_team_columns',
|
||||
);
|
||||
|
||||
$capability_types = array( 'sp_config', 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' );
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user