/** * Create a group. * * @since 1.0.0 * * @param array|string $args { * An array of arguments. * @type int|bool $group_id Pass a group ID to update an existing item, or * 0 / false to create a new group. Default: 0. * @type int $creator_id The user ID that creates the group. * @type string $name The group name. * @type string $description Optional. The group's description. * @type string $slug The group slug. * @type string $status The group's status. Accepts 'public', 'private' or 'hidden'. Defaults to 'public'. * @type int $enable_forum Optional. Whether the group has a forum enabled. * If the legacy forums are enabled for this group * or if a bbPress forum is enabled for the group, * set this to 1. Default: 0. * @type string $date_created The GMT time, in Y-m-d h:i:s format, when the group * was created. Defaults to the current time. * } * @return int|bool The ID of the group on success. False on error. */ function groups_create_group($args = '') { $defaults = array('group_id' => 0, 'creator_id' => 0, 'name' => '', 'description' => '', 'slug' => '', 'status' => 'public', 'enable_forum' => 0, 'date_created' => bp_core_current_time()); $args = wp_parse_args($args, $defaults); extract($args, EXTR_SKIP); // Pass an existing group ID if (!empty($group_id)) { $group = groups_get_group(array('group_id' => (int) $group_id)); $name = !empty($name) ? $name : $group->name; $slug = !empty($slug) ? $slug : $group->slug; $description = !empty($description) ? $description : $group->description; // Groups need at least a name if (empty($name)) { return false; } // Create a new group } else { // Instantiate new group object $group = new BP_Groups_Group(); } // Set creator ID if ($creator_id) { $group->creator_id = (int) $creator_id; } elseif (is_user_logged_in()) { $group->creator_id = bp_loggedin_user_id(); } if (!$group->creator_id) { return false; } // Validate status if (!groups_is_valid_status($status)) { return false; } // Set group name $group->name = $name; $group->description = $description; $group->slug = $slug; $group->status = $status; $group->enable_forum = (int) $enable_forum; $group->date_created = $date_created; // Save group if (!$group->save()) { return false; } // If this is a new group, set up the creator as the first member and admin if (empty($group_id)) { $member = new BP_Groups_Member(); $member->group_id = $group->id; $member->user_id = $group->creator_id; $member->is_admin = 1; $member->user_title = __('Group Admin', 'buddypress'); $member->is_confirmed = 1; $member->date_modified = bp_core_current_time(); $member->save(); /** * Fires after the creation of a new group and a group creator needs to be made. * * @since 1.5.0 * * @param int $id ID of the newly created group. * @param BP_Groups_Member $member Instance of the member who is assigned * as group creator. * @param BP_Groups_Group $group Instance of the group being created. */ do_action('groups_create_group', $group->id, $member, $group); } else { /** * Fires after the update of a group. * * @since 1.5.0 * * @param int $id ID of the updated group. * @param BP_Groups_Group $group Instance of the group being updated. */ do_action('groups_update_group', $group->id, $group); } /** * Fires after the creation or update of a group. * * @since 1.0.0 * * @param int $id ID of the newly created group. * @param BP_Groups_Group $group Instance of the group being updated. */ do_action('groups_created_group', $group->id, $group); return $group->id; }
function groups_create_group($args = '') { extract($args); /** * Possible parameters (pass as assoc array): * 'group_id' * 'creator_id' * 'name' * 'description' * 'slug' * 'status' * 'enable_forum' * 'date_created' */ if (!empty($group_id)) { $group = groups_get_group(array('group_id' => $group_id)); } else { $group = new BP_Groups_Group(); } if (!empty($creator_id)) { $group->creator_id = $creator_id; } else { $group->creator_id = bp_loggedin_user_id(); } if (isset($name)) { $group->name = $name; } if (isset($description)) { $group->description = $description; } if (isset($slug) && groups_check_slug($slug)) { $group->slug = $slug; } if (isset($status)) { if (groups_is_valid_status($status)) { $group->status = $status; } } if (isset($enable_forum)) { $group->enable_forum = $enable_forum; } else { if (empty($group_id) && !isset($enable_forum)) { $group->enable_forum = 1; } } if (isset($date_created)) { $group->date_created = $date_created; } if (!$group->save()) { return false; } // If this is a new group, set up the creator as the first member and admin if (empty($group_id)) { $member = new BP_Groups_Member(); $member->group_id = $group->id; $member->user_id = $group->creator_id; $member->is_admin = 1; $member->user_title = __('Group Admin', 'buddypress'); $member->is_confirmed = 1; $member->date_modified = bp_core_current_time(); $member->save(); groups_update_groupmeta($group->id, 'last_activity', bp_core_current_time()); do_action('groups_create_group', $group->id, $member, $group); } else { do_action('groups_update_group', $group->id, $group); } do_action('groups_created_group', $group->id, $group); return $group->id; }
function groups_create_group( $args = '' ) { global $bp; extract( $args ); /** * Possible parameters (pass as assoc array): * 'group_id' * 'creator_id' * 'name' * 'description' * 'slug' * 'status' * 'enable_forum' * 'date_created' */ if ( $group_id ) $group = new BP_Groups_Group( $group_id ); else $group = new BP_Groups_Group; if ( $creator_id ) $group->creator_id = $creator_id; else $group->creator_id = $bp->loggedin_user->id; if ( isset( $name ) ) $group->name = $name; if ( isset( $description ) ) $group->description = $description; if ( isset( $slug ) && groups_check_slug( $slug ) ) $group->slug = $slug; if ( isset( $status ) ) { if ( groups_is_valid_status( $status ) ) $group->status = $status; } if ( isset( $enable_forum ) ) $group->enable_forum = $enable_forum; else if ( !$group_id && !isset( $enable_forum ) ) $group->enable_forum = 1; if ( isset( $date_created ) ) $group->date_created = $date_created; if ( !$group->save() ) return false; if ( !$group_id ) { // If this is a new group, set up the creator as the first member and admin $member = new BP_Groups_Member; $member->group_id = $group->id; $member->user_id = $group->creator_id; $member->is_admin = 1; $member->user_title = __( 'Group Admin', 'buddypress' ); $member->is_confirmed = 1; $member->date_modified = gmdate( "Y-m-d H:i:s" ); $member->save(); do_action( 'groups_create_group', $group->id, $member, $group ); } else { do_action( 'groups_update_group', $group->id, $group ); } do_action( 'groups_created_group', $group->id ); return $group->id; }
/** * Create a group. * * @since BuddyPress (1.0.0) * * @param array $args { * An array of arguments. * @type int|bool $group_id Pass a group ID to update an existing item, or * 0 / false to create a new group. Default: 0. * @type int $creator_id The user ID that creates the group. * @type string $name The group name. * @type string $description Optional. The group's description. * @type string $slug The group slug. * @type string $status The group's status. Accepts 'public', 'private' or 'hidden'. Defaults to 'public'. * @type int $enable_forum Optional. Whether the group has a forum enabled. * If the legacy forums are enabled for this group or if a bbPress * forum is enabled for the group, set this to 1. Default: 0. * @type string $date_created The GMT time, in Y-m-d h:i:s format, * when the group was created. Defaults to the current time. * } * @return int|bool The ID of the group on success. False on error. */ function groups_create_group($args = '') { $defaults = array('group_id' => 0, 'creator_id' => 0, 'name' => '', 'description' => '', 'slug' => '', 'status' => 'public', 'enable_forum' => 0, 'date_created' => bp_core_current_time()); $args = wp_parse_args($args, $defaults); extract($args, EXTR_SKIP); // Pass an existing group ID if (!empty($group_id)) { $group = groups_get_group(array('group_id' => (int) $group_id)); $name = !empty($name) ? $name : $group->name; $slug = !empty($slug) ? $slug : $group->slug; $description = !empty($description) ? $description : $group->description; // Groups need at least a name if (empty($name)) { return false; } // Create a new group } else { // Instantiate new group object $group = new BP_Groups_Group(); } // Set creator ID if ($creator_id) { $group->creator_id = (int) $creator_id; } elseif (is_user_logged_in()) { $group->creator_id = bp_loggedin_user_id(); } if (!$group->creator_id) { return false; } // Validate status if (!groups_is_valid_status($status)) { return false; } // Set group name $group->name = $name; $group->description = $description; $group->slug = $slug; $group->status = $status; $group->enable_forum = (int) $enable_forum; $group->date_created = $date_created; // Save group if (!$group->save()) { return false; } // If this is a new group, set up the creator as the first member and admin if (empty($group_id)) { $member = new BP_Groups_Member(); $member->group_id = $group->id; $member->user_id = $group->creator_id; $member->is_admin = 1; $member->user_title = __('Group Admin', 'buddypress'); $member->is_confirmed = 1; $member->date_modified = bp_core_current_time(); $member->save(); groups_update_groupmeta($group->id, 'last_activity', bp_core_current_time()); do_action('groups_create_group', $group->id, $member, $group); } else { do_action('groups_update_group', $group->id, $group); } do_action('groups_created_group', $group->id, $group); return $group->id; }
function bp_group_organizer_admin_page() { global $wpdb; // Permissions Check if (!current_user_can('manage_options')) { wp_die(__('Cheatin’ uh?')); } // Load all the nav menu interface functions require_once 'includes/group-meta-boxes.php'; require_once 'includes/group-organizer-template.php'; require_once 'includes/group-organizer.php'; // Container for any messages displayed to the user $messages = array(); // Container that stores the name of the active menu $nav_menu_selected_title = ''; // Allowed actions: add, update, delete $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'edit'; $errored = false; switch ($action) { case 'add-group': check_admin_referer('add-group', 'group-settings-column-nonce'); $group['name'] = stripslashes($_POST['group_name']); $group['description'] = stripslashes($_POST['group_desc']); $group['slug'] = groups_check_slug($_POST['group_slug']); $group['status'] = $_POST['group_status']; $group['enable_forum'] = isset($_POST['group_forum']) ? true : false; $group['date_created'] = date('Y-m-d H:i:s'); if ($group['slug'] != $_POST['group_slug']) { $messages[] = '<div class="updated warning"><p>' . sprintf(__('The group slug you specified was unavailable or invalid. This group was created with the slug: <code>%s</code>.', 'bp-group-organizer'), $group['slug']) . '</p></div>'; } if (empty($group['name'])) { $messages[] = '<div class="error"><p>' . __('Group could not be created because one or more required fields were not filled in', 'bp-group-organizer') . '</p></div>'; $errored = true; } if (!$errored) { $group_id = groups_create_group($group); if (!$group_id) { $wpdb->show_errors(); $wpdb->print_error(); $messages[] = '<div class="error"><p>' . __('Group was not successfully created.', 'bp-group-organizer') . '</p></div>'; } else { $messages[] = '<div class="updated"><p>' . __('Group was created successfully.', 'bp-group-organizer') . '</p></div>'; } } if (!empty($group_id)) { groups_update_groupmeta($group_id, 'total_member_count', 1); if (bpgo_is_hierarchy_available()) { $obj_group = new BP_Groups_Hierarchy($group_id); $obj_group->parent_id = (int) $_POST['group_parent']; $obj_group->save(); } // Create the forum if enable_forum is checked if ($group['enable_forum']) { // Ensure group forums are activated, and group does not already have a forum if (bp_is_active('forums')) { // Check for BuddyPress group forums if (!groups_get_groupmeta($group_id, 'forum_id')) { groups_new_group_forum($group_id, $group['name'], $group['description']); } } else { if (function_exists('bbp_is_group_forums_active') && bbp_is_group_forums_active()) { // Check for bbPress group forums if (count(bbp_get_group_forum_ids($group_id)) == 0) { // Create the group forum - implementation from BBP_Forums_Group_Extension:create_screen_save // Set the default forum status switch ($group['status']) { case 'hidden': $status = bbp_get_hidden_status_id(); break; case 'private': $status = bbp_get_private_status_id(); break; case 'public': default: $status = bbp_get_public_status_id(); break; } // Create the initial forum $forum_id = bbp_insert_forum(array('post_parent' => bbp_get_group_forums_root_id(), 'post_title' => $group['name'], 'post_content' => $group['description'], 'post_status' => $status)); bbp_add_forum_id_to_group($group_id, $forum_id); bbp_add_group_id_to_forum($forum_id, $group_id); } } } } do_action('bp_group_organizer_save_new_group_options', $group_id); } break; case 'delete-group': $group_id = (int) $_REQUEST['group_id']; check_admin_referer('delete-group_' . $group_id); break; case 'update': check_admin_referer('update-groups', 'update-groups-nonce'); $groups_order = $_POST['group']; $parent_ids = $_POST['menu-item-parent-id']; $db_ids = $_POST['menu-item-db-id']; foreach ($groups_order as $id => $group) { $group_reference = new BP_Groups_Group($id); if (defined('BP_GROUP_HIERARCHY_IS_INSTALLED') && method_exists('BP_Groups_Hierarchy', 'get_tree')) { // if group hierarchy is installed and available, check for tree changes $group_hierarchy = new BP_Groups_Hierarchy($id); if ($parent_ids[$id] !== null && $group_hierarchy->parent_id != $parent_ids[$id]) { $group_hierarchy->parent_id = $parent_ids[$id]; $group_hierarchy->save(); } else { if ($group_hierarchy->parent_id != $group['parent_id']) { $group_hierarchy->parent_id = $group['parent_id']; $group_hierarchy->save(); } } unset($group_hierarchy); } // check for group attribute changes $attrs_changed = array(); if ($group['name'] != $group_reference->name) { $group_reference->name = stripslashes($group['name']); $attrs_changed[] = 'name'; } if ($group['slug'] != $group_reference->slug) { $slug = groups_check_slug($group['slug']); if ($slug == $group['slug']) { $group_reference->slug = $group['slug']; $attrs_changed[] = 'slug'; } } if ($group['description'] != $group_reference->description) { $group_reference->description = stripslashes($group['description']); $attrs_changed[] = 'description'; } if ($group['status'] != $group_reference->status && groups_is_valid_status($group['status'])) { $group_reference->status = $group['status']; $attrs_changed[] = 'status'; } if (!isset($group['forum_enabled']) || $group['forum_enabled'] != $group_reference->enable_forum) { $group_reference->enable_forum = isset($group['forum_enabled']) ? true : false; $attrs_changed[] = 'enable_forum'; } if (count($attrs_changed) > 0) { $group_reference->save(); } // finally, let plugins run any other changes do_action('group_details_updated', $group_reference->id); do_action('bp_group_organizer_save_group_options', $group, $group_reference); } break; case 'import': if (!isset($_FILES['import_groups'])) { // No files was uploaded } if (!is_uploaded_file($_FILES['import_groups']['tmp_name'])) { // Not an uploaded file $errors = array(UPLOAD_ERR_OK => sprintf(__('File uploaded successfully, but there is a problem. (%d)', 'bp-group-organizer'), UPLOAD_ERR_OK), UPLOAD_ERR_INI_SIZE => sprintf(__('File exceeded PHP\'s maximum upload size. (%d)', 'bp-group-organizer'), UPLOAD_ERR_INI_SIZE), UPLOAD_ERR_FORM_SIZE => sprintf(__('File exceeded the form\'s maximum upload size. (%d)', 'bp-group-organizer'), UPLOAD_ERR_FORM_SIZE), UPLOAD_ERR_PARTIAL => sprintf(__('File was only partially uploaded. (%d)', 'bp-group-organizer'), UPLOAD_ERR_PARTIAL), UPLOAD_ERR_NO_FILE => sprintf(__('No uploaded file was found. (%d)', 'bp-group-organizer'), UPLOAD_ERR_NO_FILE), 6 => sprintf(__('No temporary folder could be found for the uploaded file. (%d)', 'bp-group-organizer'), 6), 7 => sprintf(__('Could not write uploaded file to disk. (%d)', 'bp-group-organizer'), 7), 8 => sprintf(__('Upload was stopped by a PHP extension. (%d)', 'bp-group-organizer'), 8)); $messages[] = '<div class="error"><p>' . sprintf(__('', 'bp-group-organizer'), $errors[$_FILES['import_groups']['error']]) . '</p></div>'; break; } require_once dirname(__FILE__) . '/includes/group-organizer-import.php'; if ($result = bp_group_organizer_import_csv_file($_FILES['import_groups']['tmp_name'], $_POST['import'])) { $messages[] = '<div class="updated"><p>' . implode('<br />', $result) . '</p></div>'; } else { $messages[] = '<div class="error"><p>' . 'ERROR - IMPORT FAILED COMPLETELY' . '</p></div>'; } break; } // Ensure the user will be able to scroll horizontally // by adding a class for the max menu depth. global $_wp_nav_menu_max_depth; $_wp_nav_menu_max_depth = 0; if (isset($_REQUEST['screen']) && $_REQUEST['screen'] == 'import') { $action = 'import'; } else { $action = 'organize'; } if ($action == 'import') { $edit_markup = bp_group_organizer_import_export_page(); } else { $edit_markup = bp_get_groups_to_edit(); } ?> <div class="wrap"> <h2><?php esc_html_e('Group Organizer'); ?> </h2> <?php foreach ($messages as $message) { echo $message . "\n"; } ?> <div <?php if ($action == 'organize') { echo 'id="nav-menus-frame"'; } ?> > <div id="menu-settings-column" class="metabox-holder nav-menus-php"> <form id="group-organizer-meta" action="" class="group-organizer-meta" method="post" enctype="multipart/form-data"> <input type="hidden" name="action" value="add-group" /> <?php wp_nonce_field('add-group', 'group-settings-column-nonce'); ?> <?php if ($action == 'organize') { do_meta_boxes('group-organizer', 'side', null); } ?> </form> </div><!-- /#menu-settings-column --> <div id="menu-management-liquid"> <div id="menu-management" class="nav-menus-php"> <div class="nav-tabs-wrapper"> <div class="nav-tabs"> <a href="<?php echo esc_url(remove_query_arg(array('screen'))); ?> " class="nav-tab <?php if ($action == 'organize') { echo 'nav-tab-active'; } ?> "> <?php printf('<abbr title="%s">%s</abbr>', esc_html__('Drag and drop your groups', 'bp-group-hierarchy'), __('Organize', 'bp-group-organizer')); ?> </a> <a href="<?php echo esc_url(add_query_arg(array('screen' => 'import'))); ?> " class="nav-tab <?php if ($action == 'import') { echo 'nav-tab-active'; } ?> "> <?php printf('<abbr title="%s">%s</abbr>', esc_html__('Import or export groups in bulk', 'bp-group-organizer'), __('Import / Export', 'bp-group-organizer')); ?> </a> </div> </div> <div class="menu-edit"> <?php if ($action == 'organize') { ?> <form id="update-nav-menu" action="" method="post" enctype="multipart/form-data"> <?php } ?> <div id="nav-menu-header"> <div id="submitpost" class="submitbox"> <div class="major-publishing-actions"> <label class="menu-name-label howto open-label" for="menu-name"> <span><?php _e('Group Organizer', 'bp-group-organizer'); ?> </span> </label> <div class="publishing-action"> <?php if ($action == 'organize') { submit_button(__('Save Groups', 'bp-group-organizer'), 'button-primary menu-save', 'save_menu', false, array('id' => 'save_menu_header')); } ?> </div><!-- END .publishing-action --> </div><!-- END .major-publishing-actions --> </div><!-- END #submitpost .submitbox --> <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); wp_nonce_field('update-groups', 'update-groups-nonce'); ?> <input type="hidden" name="action" value="update" /> </div><!-- END #nav-menu-header --> <div id="post-body"> <div id="post-body-content"> <?php if (isset($edit_markup)) { if (!is_wp_error($edit_markup)) { echo $edit_markup; } } else { echo '<div class="post-body-plain">'; echo '<p>' . __('You don\'t yet have any groups.', 'bp-group-organizer') . '</p>'; echo '</div>'; } ?> </div><!-- /#post-body-content --> </div><!-- /#post-body --> <div id="nav-menu-footer"> <div class="major-publishing-actions"> <div class="publishing-action"> <?php if ($action == 'organize') { submit_button(__('Save Groups', 'bp-group-organizer'), 'button-primary menu-save', 'save_menu', false, array('id' => 'save_menu_header')); } ?> </div> </div> </div><!-- /#nav-menu-footer --> <?php if ($action == 'organize') { ?> </form><!-- /#update-nav-menu --> <?php } ?> </div><!-- /.menu-edit --> </div><!-- /#menu-management --> </div><!-- /#menu-management-liquid --> </div><!-- /#nav-menus-frame --> </div><!-- /.wrap--> <?php }