buddydrive_get_slug(), 'name' => buddydrive_get_name(), 'visibility' => apply_filters( 'buddydrive_group_nav_visibility', 'private' ), 'nav_item_position' => 31, 'enable_nav_item' => $this->enable_nav_item(), 'screens' => array( 'admin' => array( 'metabox_context' => 'side', 'metabox_priority' => 'core' ), 'create' => array( 'enabled' => false, ), 'edit' => array( 'enabled' => true, ), ) ); parent::init( $args ); } /** * The create screen method * * BuddyDrive do not add a step there * * @return boolean false */ public function create_screen( $group_id = null ) { return false; } /** * The create screen save method * * BuddyDrive do not have to handle this step * * @return boolean false */ public function create_screen_save( $group_id = null ) { return false; } /** * Displays settings in front/backend group admin * * BuddyDrive do not add a step there * * @param object $group the group object sent by backend * @uses bp_get_current_group_id() to get the group id * @uses groups_get_groupmeta() to get the BuddyDrive option * @uses checked() to activate/deactivate the checkbox * @uses is_admin() to check if we're in WP backend * @return string html output */ public function edit_screen( $group_id = null ) { $group_id = empty( $group_id ) ? bp_get_current_group_id() : $group_id; $checked = groups_get_groupmeta( $group_id, '_buddydrive_enabled' ); ?>

name ) ?>

name ) ?>

slug, 'buddydrive_group_admin' ); } /** * Save the settings of the group * * @param integer $group_id the group id we save settings for * @uses check_admin_referer() for security reasons * @uses bp_get_current_group_id() to get the group id * @uses groups_update_groupmeta() to set the BuddyDrive option if needed * @uses groups_delete_groupmeta() to delete the BuddyDrive option if needed * @uses buddydrive_remove_buddyfiles_from_group() to eventually remove attached BuddyDrive items * @uses is_admin() to check if we're in WP backend * @uses bp_core_add_message() to inform about success / error * @uses bp_core_redirect() to avoid some refreshing stuff * @uses bp_get_group_permalink() to redirect to */ public function edit_screen_save( $group_id = null ) { if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) return false; check_admin_referer( 'groups_edit_save_' . $this->slug, 'buddydrive_group_admin' ); $group_id = ! empty( $group_id ) ? $group_id : bp_get_current_group_id(); /* Insert your edit screen save code here */ $buddydrive_ok = ! empty( $_POST['_group_buddydrive_activate'] ) ? $_POST['_group_buddydrive_activate'] : false ; if( ! empty( $buddydrive_ok ) ){ $success = groups_update_groupmeta( $group_id, '_buddydrive_enabled', $buddydrive_ok ); } else { $success = groups_delete_groupmeta( $group_id, '_buddydrive_enabled' ); // we need to remove folders and items attached to this group in this case buddydrive_remove_buddyfiles_from_group( $group_id ); } if ( ! is_admin() ) { /* To post an error/success message to the screen, use the following */ if ( !$success ) bp_core_add_message( __( 'There was an error saving, please try again', 'buddydrive' ), 'error' ); else bp_core_add_message( __( 'Settings saved successfully', 'buddydrive' ) ); bp_core_redirect( bp_get_group_permalink( buddypress()->groups->current_group ) . 'admin/' . $this->slug ); } } /** * Displays the form into the Group Admin Meta Box * * @since version 1.1 * * @param integer $group_id group id * @uses BuddyDrive_Group::edit_screen() to output the form */ public function admin_screen( $group_id = null ) { $this->edit_screen( $group_id ); } /** * Saves the settings from the Group Admin Meta Box * * @since version 1.1 * * @param integer $group_id the group id * @uses BuddyDrive_Group::edit_screen_save() to save the settings */ public function admin_screen_save( $group_id = null ) { $this->edit_screen_save( $group_id ); } /** * Displays the BuddyDrive of the group * * @return string html output */ public function display( $group_id = null ) { $current_group = groups_get_current_group(); if ( ( 'public' !== $this->visibility || 'public' !== $current_group->status ) && ! groups_is_user_member( bp_loggedin_user_id(), $current_group->id ) && ! bp_current_user_can( 'bp_moderate' ) ) { printf( '

%s

', esc_html__( 'You must be a member of this group to view the files.', 'buddydrive' ) ); return; } if ( buddydrive_use_deprecated_ui() ) { buddydrive_group_deprecated_display( bp_get_current_group_id() ); } else { buddydrive_ui(); } } /** * We do not use widgets * * @return boolean false */ public function widget_display() { return false; } /** * Loads the BuddyDrive navigation if group admin activated BuddyDrive * * @uses bp_get_current_group_id() to get the group id * @uses groups_get_groupmeta() to get the BuddyDrive option * @return boolean true or false */ public function enable_nav_item() { $retval = false; $group_id = bp_get_current_group_id(); if ( empty( $group_id ) ) { return $retval; } if ( groups_get_groupmeta( $group_id, '_buddydrive_enabled' ) ) { $retval = true; } return (bool) apply_filters( 'buddydrive_group_enable_nav_item', $retval, $group_id ); } } /** * Waits for bp_init hook before loading the group extension * * Let's make sure the group id is defined before loading our stuff * * @since 1.1.1 * * @uses bp_register_group_extension() to register the group extension */ function buddydrive_register_group_extension() { bp_register_group_extension( 'BuddyDrive_Group' ); } add_action( 'bp_init', 'buddydrive_register_group_extension' ); endif;