/** * Updates the team metadata (membership list). * * This is called by WordPress's `save_post_{$post->post_type}` hook. * * @link https://developer.wordpress.org/reference/hooks/save_post_post-post_type/ * * @global $_POST * * @uses wp_verify_nonce() * @uses WP_Buoy_Team::remove_member() * @uses WP_Buoy_Team::get_member_ids() * @uses WP_Buoy_Team::add_member() * * @param int $post_id * @param WP_Post $post * * @return void */ public static function saveTeam($post_id, $post) { $team = new self($post_id); // Remove any team members indicated. if (isset($_POST[self::$prefix . '_choose_team_nonce']) && wp_verify_nonce($_POST[self::$prefix . '_choose_team_nonce'], self::$prefix . '_choose_team')) { if (isset($_POST['remove_team_members'])) { foreach ($_POST['remove_team_members'] as $id) { $team->remove_member($id); } } } // Add a new team member if (isset($_POST[self::$prefix . '_add_team_member_nonce']) && wp_verify_nonce($_POST[self::$prefix . '_add_team_member_nonce'], self::$prefix . '_add_team_member')) { $add_team_member_input = $_POST[self::$prefix . '_add_team_member']; $user_id = username_exists($add_team_member_input); if (false !== $user_id) { if (!in_array($user_id, $team->get_member_ids())) { $team->add_member($user_id); } } else { if (is_email($add_team_member_input)) { $email = $add_team_member_input; $user = get_user_by('email', $email); if ($user) { $team->add_member($user->ID); } else { $team->invite_user($email); } } } } // If this is the user's only team, make this the default one. $cnt = count(get_posts(array('post_type' => $post->post_type, 'author' => $post->post_author, 'fields' => 'ids'))); if (0 === $cnt) { $team->make_default(); } }