/** * Saves the custom fields when edited from the admin screens (edit/post new) * * @package WP Idea Stream * @subpackage ideas/classes * * @since 2.0.0 * * @param int $id the idea ID * @param WP_Post $idea the idea object * @param bool $update whether it's an update or not * @uses check_admin_referer() to check the request was made on the site * @uses wp_idea_stream_ideas_get_meta() to get an idea meta value * @uses wp_idea_stream_ideas_delete_meta() to delete an idea meta value * @uses wp_idea_stream_ideas_update_meta() to update an idea meta value * @return int the ID of the idea */ public function save_metabox($id = 0, $idea = null, $update = false) { // Bail if no meta to save if (empty($_POST['wp_idea_stream']['meta_keys'])) { return $id; } check_admin_referer('admin-ideastream-metas', '_admin_ideastream_metas'); $the_metas = array(); if (!empty($_POST['wp_idea_stream']['_the_metas'])) { $the_metas = $_POST['wp_idea_stream']['_the_metas']; } $meta_keys = explode(',', $_POST['wp_idea_stream']['meta_keys']); $meta_keys = array_map('sanitize_key', (array) $meta_keys); foreach ($meta_keys as $meta_key) { if (empty($the_metas[$meta_key]) && wp_idea_stream_ideas_get_meta($id, $meta_key)) { wp_idea_stream_ideas_delete_meta($id, $meta_key); } else { if (!empty($the_metas[$meta_key])) { wp_idea_stream_ideas_update_meta($id, $meta_key, $the_metas[$meta_key]); } } } return $id; }
/** * @group remove_from_group */ public function test_wp_idea_stream_groups_member_remove_public_group() { $bp = buddypress(); // 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))); $idea2 = $this->factory->idea->create(array('author' => $u, 'metas' => array('group_id' => $this->group_id))); $bp->is_item_admin = true; groups_remove_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; }