'default|default', 'delete_blogroll_links' => '1', 'default_cat_name' => 'Uncategorized', 'default_link_cat' => 'Links', 'delete_first_post' => 0, 'delete_first_comment' => 0 ); // Add a site option so that we'll know set up ran add_site_option( 'bp_groupblog_blog_defaults_setup', 1 ); add_site_option( 'bp_groupblog_blog_defaults_options', $groupblog_blogdefaults); } register_activation_hook( __FILE__, 'bp_groupblog_setup' ); /** * Load the required groupblog component files. * Check for BuddyPress and don't include the other files if it's not there. */ if ( bp_groupblog_load_buddypress() ) { require ( WP_PLUGIN_DIR . '/bp-groupblog/bp-groupblog-admin.php' ); require ( WP_PLUGIN_DIR . '/bp-groupblog/bp-groupblog-cssjs.php' ); require ( WP_PLUGIN_DIR . '/bp-groupblog/bp-groupblog-classes.php' ); require ( WP_PLUGIN_DIR . '/bp-groupblog/bp-groupblog-templatetags.php' ); } /** * Add language support. */ if ( file_exists( WP_PLUGIN_DIR . '/bp-groupblog/languages/groupblog-' . get_locale() . '.mo' ) ) load_textdomain( 'groupblog', WP_PLUGIN_DIR . '/bp-groupblog/languages/groupblog-' . get_locale() . '.mo' ); /** * bp_groupblog_setup_globals() */ function bp_groupblog_setup_globals() { global $bp, $wpdb; $bp->groupblog->image_base = WP_PLUGIN_DIR . '/bp-groupblog/groupblog/images'; $bp->groupblog->slug = BP_GROUPBLOG_SLUG; $bp->groupblog->default_admin_role = BP_GROUPBLOG_DEFAULT_ADMIN_ROLE; $bp->groupblog->default_mod_role = BP_GROUPBLOG_DEFAULT_MOD_ROLE; $bp->groupblog->default_member_role = BP_GROUPBLOG_DEFAULT_MEMBER_ROLE; } add_action( 'plugins_loaded', 'bp_groupblog_setup_globals', 5 ); add_action( 'admin_menu', 'bp_groupblog_setup_globals', 2 ); /** * bp_groupblog_add_admin_menu() */ function bp_groupblog_add_admin_menu() { global $wpdb, $bp; if ( !is_site_admin() ) return false; /* Add the administration tab under the "Site Admin" tab for site administrators */ add_submenu_page( 'wpmu-admin.php', __( 'Groupblog Settings', 'groupblog' ), __( 'Groupblog Settings', 'groupblog' ), 1, 'bp_groupblog_management_page', 'bp_groupblog_management_page' ); } add_action( 'admin_menu', 'bp_groupblog_add_admin_menu' ); /** * bp_groupblog_setup_nav() */ function bp_groupblog_setup_nav() { global $bp, $current_blog; if ( $bp->current_component == $bp->groups->slug && $bp->is_single_item ) { $bp->groups->current_group->is_group_visible_to_member = ( 'public' == $bp->groups->current_group->status || $is_member ) ? true : false; $group_link = $bp->root_domain . '/' . $bp->groups->slug . '/' . $bp->groups->current_group->slug . '/'; if ( bp_groupblog_is_blog_enabled( $bp->groups->current_group->id ) ) bp_core_new_subnav_item( array( 'name' => __( 'Blog', 'groupblog' ), 'slug' => 'blog', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groupblog_screen_blog', 'position' => 32, 'item_css_id' => 'group-blog' ) ); } } add_action( 'wp', 'bp_groupblog_setup_nav', 2 ); add_action( 'admin_menu', 'bp_groupblog_setup_nav', 2 ); /** * groupblog_edit_settings() * * Save the blog-settings accessible only by the group admin or mod. */ function groupblog_edit_settings() { global $bp, $groupblog_blog_id, $errors; $group_id = $_POST['groupblog-group-id']; if ( !isset( $group_id ) ) $group_id = $bp->groups->current_group->id; if ( $bp->current_component == $bp->groups->slug && 'group-blog' == $bp->action_variables[0] ) { if ( $bp->is_item_admin || $bp->is_item_mod ) { // If the edit form has been submitted, save the edited details if ( isset( $_POST['save'] ) ) { if ( !bp_groupblog_blog_exists( $bp->groups->current_group->id ) ) { if ( isset( $_POST['groupblog-enable-blog'] ) ) { if ( $_POST['groupblog-create-new'] == 'yes' ) { //Create a new blog and assign the blog id to the global $groupblog_blog_id if ( !bp_groupblog_validate_blog_signup() ) { $errors = $filtered_results['errors']; bp_core_add_message ( $errors ); $group_id = ''; } } else if ( $_POST['groupblog-create-new'] == 'no' ) { // They're using an existing blog, so we try to assign that to $groupblog_blog_id if ( !( $groupblog_blog_id = $_POST['groupblog-blogid'] ) ) { //They forgot to choose a blog, so send them back and make them do it! bp_core_add_message( __( 'Please choose one of your blogs from the drop-down menu.' . $group_id, 'groupblog' ), 'error' ); if ( $bp->action_variables[0] == 'step' ) { bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] ); } else { bp_core_redirect( site_url() . '/' . $bp->current_component . '/' . $bp->current_item . '/admin/group-blog' ); } } } } } else { // They already have a blog associated with the group, we're just saving other settings $groupblog_blog_id = groups_get_groupmeta ( $bp->groups->current_group->id, 'groupblog_blog_id' ); } if ( !groupblog_edit_base_settings( $_POST['groupblog-enable-blog'], $_POST['groupblog-silent-add'], $_POST['default-administrator'], $_POST['default-moderator'], $_POST['default-member'], $bp->groups->current_group->id, $groupblog_blog_id ) ) { bp_core_add_message( __( 'There was an error creating your group blog, please try again.', 'groupblog' ), 'error' ); } else { bp_core_add_message( __( 'Group details were successfully updated.', 'groupblog' ) ); } do_action( 'groupblog_details_edited', $bp->groups->current_group->id ); bp_core_redirect( $bp->root_domain . '/' . $bp->current_component . '/' . $bp->current_item . '/admin/group-blog' ); } } } } add_action( 'wp', 'groupblog_edit_settings', 4 ); /** * groupblog_edit_base_settings() * * Updates the groupmeta with the blog_id and if it is enabled or not. */ /* Changed by Boone */ function groupblog_edit_base_settings( $groupblog_enable_blog, $groupblog_silent_add = NULL, $groupblog_default_admin_role, $groupblog_default_mod_role, $groupblog_default_member_role, $group_id, $groupblog_blog_id = NULL ) { global $bp; if ( empty( $group_id ) ) return false; $default_role_array = array( 'groupblog_silent_add' => $groupblog_silent_add, 'groupblog_default_admin_role' => $groupblog_default_admin_role, 'groupblog_default_mod_role' => $groupblog_default_mod_role, 'groupblog_default_member_role' => $groupblog_default_member_role ); foreach ( $default_role_array as $role_name => $role ) { $old_default_role = groups_get_groupmeta ( $group_id, $role_name ); if ( $role != $old_default_role ) { groups_update_groupmeta ( $group_id, $role_name, $role ); bp_groupblog_member_join( $group_id ); break; } } do_action( 'groups_details_updated', $group->id ); return true; } /* New - Runs whenever member permissions are changed and saved - by Boone */ function bp_groupblog_member_join( $group_id ) { global $bp, $wpdb, $username, $blog_id, $userdata, $current_blog; $blog_id = groups_get_groupmeta ( $group_id, 'groupblog_blog_id' ); $group = new BP_Groups_Group ( $group_id ); if ( bp_group_has_members( array( 'per_page' => 1000 ) ) ) { while ( bp_group_members() ) { bp_group_the_member(); $user_id = bp_get_group_member_id(); bp_groupblog_upgrade_user( $blog_id, $user_id, $group_id ); } } } /* New - Subscribes user in question to blog in question - by Boone */ function bp_groupblog_upgrade_user( $blog_id, $user_id, $group_id ) { // Setup some variables $groupblog_silent_add = groups_get_groupmeta ( $group_id, 'groupblog_silent_add' ); $groupblog_default_member_role = groups_get_groupmeta ( $group_id, 'groupblog_default_member_role' ); $groupblog_default_mod_role = groups_get_groupmeta ( $group_id, 'groupblog_default_mod_role' ); $groupblog_default_admin_role = groups_get_groupmeta ( $group_id, 'groupblog_default_admin_role' ); $groupblog_creator_role = 'admin'; $user = new WP_User($user_id); $user_role = bp_groupblog_get_user_role( $user_id, $user->data->user_login, $blog_id ); if ( bp_groupblog_check_is_admin ( $user_id, $group_id ) ) { $default_role = $groupblog_default_admin_role; } else if ( bp_groupblog_check_is_mod ( $user_id, $group_id ) ) { $default_role = $groupblog_default_mod_role; } else if ( bp_groupblog_check_is_member ( $user_id, $group_id ) ) { $default_role = $groupblog_default_member_role; } else { return; } if ($user_role == $default_role && $groupblog_silent_add == true) return false; if ( !is_user_member_of_blog($user_id, $blog_id) && $groupblog_silent_add == true ){ add_user_to_blog($blog_id, $user_id, $default_role); } else if ( $groupblog_silent_add == true ) { $user = new WP_User($user_id); $user->set_role($default_role); wp_cache_delete($user_id, 'users' ); } else if ( $groupblog_silent_add != true ) { $user = new WP_User($user_id); $user->set_role('subscriber'); wp_cache_delete($user_id, 'users' ); } do_action('bp_groupblog_upgrade_user',$user_id, $user_role, $default_role); } /* New - called when user joins group - by Boone */ function bp_groupblog_just_joined_group( $group_id, $user_id ) { $blog_id = groups_get_groupmeta ( $group_id, 'groupblog_blog_id' ); bp_groupblog_upgrade_user( $blog_id, $user_id, $group_id ); } add_action( 'groups_join_group', 'bp_groupblog_just_joined_group', 10, 2 ); /* New - reworked version of bp_groupblog_get_current_role - by Boone */ function bp_groupblog_get_user_role( $user_id, $user_login, $blog_id ) { global $bp, $blog_id, $current_blog; if ( !$blog_id || !$user_id ) return false; // determine users role, if any, on this blog $roles = get_usermeta( $user_id, 'wp_' . $blog_id . '_capabilities' ); // this seems to be the only way to do this if ( isset( $roles['subscriber'] ) ) $user_role = 'subscriber'; elseif ( isset( $roles['contributor'] ) ) $user_role = 'contributor'; elseif ( isset( $roles['author'] ) ) $user_role = 'author'; elseif ( isset( $roles['editor'] ) ) $user_role = 'editor'; elseif ( isset( $roles['administrator'] ) ) $user_role = 'administrator'; elseif ( is_site_admin( $user_login ) ) $user_role = 'siteadmin'; else $user_role = 'norole'; return $user_role; } /** * bp_groupblog_create_screen_save() * * Saves the information from the BP group blog creation step. * TO-DO: groupblog-edit-settings is more efficient, rewrite this to be more like that one. */ function bp_groupblog_create_screen_save() { global $bp; global $groupblog_blog_id, $groupblog_create_screen; if ( $bp->action_variables[0] == 'step' ) { $groupblog_create_screen = true; } else { $groupblog_create_screen = false; } $groupblog_default_admin_role = $_POST['default-administrator']; $groupblog_default_mod_role = $_POST['default-moderator']; $groupblog_default_member_role = $_POST['default-member']; $groupblog_group_id = $_POST['group_id']; $silent_add = $_POST['groupblog-silent-add']; if ( isset ($_POST['save'] ) && isset ($_POST['groupblog-create-save']) && isset($_POST['groupblog-enable-blog']) ) { if ( $_POST['groupblog-create-new'] == 'yes' ) { //Create a new blog and assign the blog id to the global $groupblog_blog_id if ( !bp_groupblog_validate_blog_signup() ) { $errors = $filtered_results['errors']; bp_core_add_message ( $errors ); $group_id = ''; } } else if ( $_POST['groupblog-create-new'] == 'no' ) { // They're using an existing blog, so we try to assign that to $groupblog_blog_id if ( !( $groupblog_blog_id = $_POST['groupblog-blogid'] ) ) { //They forgot to choose a blog, so send them back and make them do it! bp_core_add_message( __( 'Please choose one of your blogs from the drop-down menu.' . $group_id, 'groupblog' ), 'error' ); bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] ); } } else { // They already have a blog associated with the group, we're just saving other settings $groupblog_blog_id = groups_get_groupmeta ( $bp->groups->current_group->id, 'groupblog_blog_id' ); } if ( !groupblog_edit_base_settings( $_POST['groupblog-enable-blog'], $_POST['groupblog-silent-add'], $_POST['default-administrator'], $_POST['default-moderator'], $_POST['default-member'], $groupblog_group_id, $groupblog_blog_id ) ) { bp_core_add_message( __( 'There was an error creating your group blog, please try again.', 'groupblog' ), 'error' ); bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] ); } } } add_action( 'init', 'bp_groupblog_create_screen_save', 4 ); /** * bp_groupblog_show_blog_form( $blogname = '', $blog_title = '', $errors = '' ) * * Displays the blog signup form and takes the privacy settings from the * group privacy settings, where "private & hidden" equal "private". */ function bp_groupblog_show_blog_form( $blogname = '', $blog_title = '', $errors = '' ) { global $bp, $groupblog_create_screen, $current_site; ?>
blogname; ?>
get_error_message('blogname') ) { ?> groups->current_group->slug ); ?>siteurl; ?>
groups->current_group->status == 'public' ? $group_public = '1' : $group_public = '0'; ?>disabled="true" type="radio" value="no" name="groupblog-create-new" />
disabled="true" type="radio" value="yes" name="groupblog-create-new" checked="checked" />