示例#1
0
 function update_object($group_id, $fields)
 {
     $group = new BP_Groups_Group($group_id);
     foreach ($fields as $field_name => $value) {
         if (isset($group->field_name)) {
             $group->field_name = $value;
         }
     }
     $group->save();
     return $group;
 }
 function save()
 {
     global $bp, $wpdb;
     $this->slug = $this->true_slug;
     parent::save();
     if ($this->id) {
         $sql = $wpdb->prepare("UPDATE {$bp->groups->table_name} SET\r\n\t\t\t\t\tparent_id = %d\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tid = %d\r\n\t\t\t\t", $this->parent_id, $this->id);
         if (false === $wpdb->query($sql)) {
             return false;
         }
         if (!$this->id) {
             $this->id = $wpdb->insert_id;
         }
         $this->path = $this->buildPath();
         $this->slug = $this->path;
         return true;
     }
     return false;
 }
 function save()
 {
     global $bp, $wpdb;
     $this->slug = $this->true_slug;
     parent::save();
     if ($this->id) {
         do_action_ref_array('bp_group_hierarchy_before_save', array(&$this));
         $sql = $wpdb->prepare("UPDATE {$bp->groups->table_name} SET\r\n\t\t\t\t\tparent_id = %d\r\n\t\t\t\tWHERE\r\n\t\t\t\t\tid = %d\r\n\t\t\t\t", $this->parent_id, $this->id);
         if (false === $wpdb->query($sql)) {
             return false;
         }
         if (!$this->id) {
             $this->id = $wpdb->insert_id;
         }
         $this->path = $this->buildPath();
         $this->slug = $this->path;
         do_action_ref_array('bp_group_hierarchy_after_save', array(&$this));
         return true;
     }
     return false;
 }
/**
* 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;
}
 /**
  * @group save
  * @group cache
  */
 public function test_save_clear_cache()
 {
     $g = $this->factory->group->create();
     // Prime cache
     groups_get_group(array('group_id' => $g));
     $this->assertNotEmpty(wp_cache_get($g, 'bp_groups'));
     $group = new BP_Groups_Group($g);
     $group->name = 'Foo';
     $group->save();
     $this->assertFalse(wp_cache_get($g, 'bp_groups'));
 }
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;
}
/**
* 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 groups_edit_group_settings($group_id, $enable_forum, $status, $invite_status = false)
{
    global $bp;
    $group = new BP_Groups_Group($group_id);
    $group->enable_forum = $enable_forum;
    /***
     * Before we potentially switch the group status, if it has been changed to public
     * from private and there are outstanding membership requests, auto-accept those requests.
     */
    if ('private' == $group->status && 'public' == $status) {
        groups_accept_all_pending_membership_requests($group->id);
    }
    // Now update the status
    $group->status = $status;
    if (!$group->save()) {
        return false;
    }
    // If forums have been enabled, and a forum does not yet exist, we need to create one.
    if ($group->enable_forum) {
        if (bp_is_active('forums') && !groups_get_groupmeta($group->id, 'forum_id')) {
            groups_new_group_forum($group->id, $group->name, $group->description);
        }
    }
    // Set the invite status
    if ($invite_status) {
        groups_update_groupmeta($group->id, 'invite_status', $invite_status);
    }
    groups_update_groupmeta($group->id, 'last_activity', bp_core_current_time());
    do_action('groups_settings_updated', $group->id);
    return true;
}
示例#9
0
function groups_edit_group_settings( $group_id, $enable_forum, $status ) {
	global $bp;

	$group = new BP_Groups_Group( $group_id );
	$group->enable_forum = $enable_forum;

	/***
	 * Before we potentially switch the group status, if it has been changed to public
	 * from private and there are outstanding membership requests, auto-accept those requests.
	 */
	if ( 'private' == $group->status && 'public' == $status )
		groups_accept_all_pending_membership_requests( $group->id );

	/* Now update the status */
	$group->status = $status;

	if ( !$group->save() )
		return false;

	/* If forums have been enabled, and a forum does not yet exist, we need to create one. */
	if ( $group->enable_forum ) {
		if ( function_exists( 'bp_forums_setup' ) && '' == groups_get_groupmeta( $group->id, 'forum_id' ) ) {
			groups_new_group_forum( $group->id, $group->name, $group->description );
		}
	}

	groups_update_groupmeta( $group->id, 'last_activity', gmdate( "Y-m-d H:i:s" ) );
	do_action( 'groups_settings_updated', $group->id );

	return true;
}
示例#10
0
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 
}
示例#11
0
function demodata_create_group($groupname, $num)
{
    // set up the new group
    $group_obj = new BP_Groups_Group();
    $group_obj->name = $groupname;
    $group_obj->slug = sanitize_title($groupname);
    $group_obj->description = "Demo group " . $num . " created by Demo Data Creator plugin.";
    $group_obj->status = 'public';
    $group_obj->is_invitation_only = 0;
    $group_obj->enable_wire = 1;
    $group_obj->enable_forum = 1;
    $group_obj->enable_photos = 1;
    $group_obj->photos_admin_only = 0;
    $group_obj->date_created = time();
    // save the group
    $saved = $group_obj->save();
    if ($saved) {
        return $group_obj->id;
    } else {
        return false;
    }
}
示例#12
0
function groups_edit_group_settings($group_id, $enable_wire, $enable_forum, $enable_photos, $photos_admin_only, $status)
{
    global $bp;
    /* Check the nonce first. */
    if (!check_admin_referer('groups_edit_group_settings')) {
        return false;
    }
    $group = new BP_Groups_Group($group_id, false, false);
    $group->enable_wire = $enable_wire;
    $group->enable_forum = $enable_forum;
    $group->enable_photos = $enable_photos;
    $group->photos_admin_only = $photos_admin_only;
    $group->status = $status;
    if (!$group->save()) {
        return false;
    }
    /* If forums have been enabled, and a forum does not yet exist, we need to create one. */
    if ($group->enable_forum) {
        if (function_exists('bp_forums_setup') && '' == groups_get_groupmeta($group->id, 'forum_id')) {
            groups_new_group_forum($group->id, $group->name, $group->description);
        }
    }
    do_action('groups_settings_updated', $group->id);
    return true;
}
示例#13
0
 /**
  * @group remove_from_group
  */
 public function test_wp_idea_stream_groups_member_banned_hidden_group()
 {
     $bp = buddypress();
     $group = new BP_Groups_Group($this->group_id);
     $group->status = 'hidden';
     $group->save();
     // Set current group
     $bp->groups->current_group = groups_get_group(array('group_id' => $this->group_id, 'populate_extras' => true));
     $u = $this->factory->user->create();
     groups_join_group($this->group_id, $u);
     $idea1 = $this->factory->idea->create(array('author' => $u, 'metas' => array('group_id' => $this->group_id), 'status' => 'private'));
     $idea2 = $this->factory->idea->create(array('author' => $u, 'metas' => array('group_id' => $this->group_id), 'status' => 'private'));
     $bp->is_item_admin = true;
     groups_ban_member($u, $this->group_id);
     // Check metas
     $this->assertEmpty(wp_idea_stream_ideas_get_meta($idea1, 'group_id'));
     $this->assertEmpty(wp_idea_stream_ideas_get_meta($idea2, 'group_id'));
     $ideas = wp_idea_stream_ideas_get_ideas(array('include' => array($idea1, $idea2)));
     $public_ideas = wp_filter_object_list($ideas['ideas'], array('post_status' => 'publish'), 'and', 'ID');
     $this->assertEqualSets(array($idea1, $idea2), $public_ideas, 'When a member is banned from the group, ideas should always be public');
     // Reset item admin
     $bp->is_item_admin = false;
 }
示例#14
0
文件: group.php 项目: hscale/webento
 /**
  * Save the Group Forum data on edit
  *
  * @since bbPress (r3465)
  * @uses bbp_new_forum_handler() To check for forum creation
  * @uses bbp_edit_forum_handler() To check for forum edit
  */
 public function edit_screen_save()
 {
     // Bail if not a POST action
     if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
         return;
     }
     check_admin_referer('groups_edit_save_' . $this->slug);
     $edit_forum = !empty($_POST['bbp-edit-group-forum']) ? true : false;
     $forum_id = 0;
     $group_id = bp_get_current_group_id();
     $forum_ids = array_values(bbp_get_group_forum_ids($group_id));
     // Normalize group forum relationships now
     if (!empty($forum_ids)) {
         // Loop through forums, and make sure they exist
         foreach ($forum_ids as $forum_id) {
             // Look for forum
             $forum = bbp_get_forum($forum_id);
             // No forum exists, so break the relationship
             if (empty($forum)) {
                 $this->remove_forum(array('forum_id' => $forum_id));
                 unset($forum_ids[$forum_id]);
             }
         }
         // No support for multiple forums yet
         $forum_id = (int) (is_array($forum_ids) ? $forum_ids[0] : $forum_ids);
     }
     // Update the group forum setting
     $group = new BP_Groups_Group($group_id);
     $group->enable_forum = $edit_forum;
     $group->save();
     // Create a new forum
     if (empty($forum_id) && true === $edit_forum) {
         // 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));
         // Run the BP-specific functions for new groups
         $this->new_forum(array('forum_id' => $forum_id));
     }
     // Redirect after save
     bp_core_redirect(trailingslashit(bp_get_group_permalink(buddypress()->groups->current_group) . '/admin/' . $this->slug));
 }