/**
  * returns a real or fake member against which we save the wishlist.
  * @return Member | WishListMember
  */
 static function get_member_for_wishlist()
 {
     $member = Member::currentMember();
     if (!$member) {
         $wishListMemberID = Session::get(self::get_session_variable_name() . "_wishListMemberID");
         if ($wishListMemberID) {
             if ($wishListMember = DataObject::get_by_id("WishListMember", intval($wishListMemberID))) {
                 //do nothing
             } else {
                 $wishListMemberID = null;
             }
         }
         if (!$wishListMemberID) {
             $wishListMember = new WishListMember();
             $wishListMember->write();
             Session::set(self::get_session_variable_name() . "_wishListMemberID", $wishListMember->ID);
         }
         return $wishListMember;
     } else {
         //copy if the member does not have a wish list, but the session does.
         if (!$member->WishList) {
             if (!$member->IsAdmin()) {
                 $wishListMemberID = Session::get(self::get_session_variable_name() . "_wishListMemberID");
                 if ($wishListMemberID) {
                     if ($wishListMember = DataObject::get_by_id("WishListMember", intval($wishListMemberID))) {
                         if ($wishListMember->WishList) {
                             $member->WishList = $wishListMember->WishList;
                             $member->write();
                         }
                         $wishListMember->delete();
                         Session::clear(self::get_session_variable_name() . "_wishListMemberID");
                     }
                 }
             }
         }
         return $member;
     }
 }