Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * @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;
 }