post_type_name ) ) return; if( current_user_can( 'manage_options' ) ) add_action( 'admin_menu', array( &$this, 'add_admin_page' ), 20 ); add_filter( 'map_meta_cap', array( &$this, 'map_meta_cap' ), 10, 4 ); if( !current_user_can( 'manage_users' ) ) return; add_filter( 'manage_posts_columns', array( &$this, 'manage_posts_columns' ), 10, 2 ); add_action( 'manage_posts_custom_column', array( &$this, 'manage_posts_custom_column' ), 1, 2 ); add_filter( 'manage_users_columns', array( &$this, 'manage_users_columns' ) ); add_filter( 'manage_users_custom_column', array( &$this, 'manage_users_custom_column' ), 1, 3 ); add_action( 'personal_options', array( &$this, 'personal_options' ) ); add_action( 'personal_options_update', array( &$this, 'update_profile' ) ); add_action( 'edit_user_profile_update', array( &$this, 'update_profile' ) ); } /* add post column for admins */ function manage_posts_columns( $columns, $post_type ) { if( $post_type == $this->post_type_name ) $columns[$post_type] = __( 'Document Role', 'document-repository' ); return $columns; } function manage_posts_custom_column( $column_name, $post_id ) { if( $column_name != $this->post_type_name ) return; $roles = $this->get_roles(); $post = get_post( $post_id ); $user = get_userdata( $post->post_author ); if( !empty( $user->doc_role ) && !empty( $roles[$user->doc_role] ) ) echo $roles[$user->doc_role]; } /* add user column for admins */ function manage_users_columns( $columns ) { $columns[$this->post_type_name] = __( 'Document Role', 'document-repository' ); return $columns; } function manage_users_custom_column( $content, $column_name, $user_id ) { if( $column_name != $this->post_type_name ) return; $roles = $this->get_roles(); $user = get_userdata( $user_id ); if( !empty( $user->doc_role ) && !empty( $roles[$user->doc_role] ) ) $content .= $roles[$user->doc_role]; return $content; } /* role admin page */ function admin_page() { global $wpdb; $wpdb->doc_roles = $wpdb->base_prefix . 'doc_roles'; if( !empty( $_GET['delete_role'] ) ) { $role = (int)$_GET['delete_role']; if( $role && wp_verify_nonce( $_GET['_wpnonce'], 'delete' . $role ) ) $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->doc_roles} WHERE role_id = %d", $role ) ); } if( !empty( $_POST['new_role'] ) ) $wpdb->insert( $wpdb->doc_roles, array( 'role_desc' => trim( $_POST['new_role'] ) ) ); if( !empty( $_POST['doc_role'] ) && !empty( $_POST['original_doc_role'] ) ) { foreach( (array)$_POST['doc_role'] as $id => $desc ) { if( isset( $_POST['original_doc_role'][$id] ) && $_POST['original_doc_role'][$id] != $desc ) $wpdb->update( $wpdb->doc_roles, array( 'role_desc' => trim( $desc ) ), array( 'role_id' => $id ) ); } } $roles = $this->get_roles( true ); ?>