It appears that you are unable to set the language property when running og_membership_type_create. The error returned is:

EntityMetadataWrapperException: Entity property language doesn't support writing. in EntityStructureWrapper->setProperty() (line 497 of /var/www/html/teams/sites/all/modules/entity/includes/entity.wrapper.inc).

Works fine if language is not set in the "values" array.

Comments

amitaibu’s picture

Btw, Why not use og_group() ?

ejsteven’s picture

Hi Amitaibu.. Thanks for your reply. I am using og_group() but I'd like to programmatically create my own og membership types rather than just use the default one. Reason being that I'm going to attach some fields to my membership entity.

amitaibu’s picture

Are you trying to create an OgMembership or OgMembershipType?

If it's OgMembership then use og_membership_create(), and the language is recognized by the wrapper -- see OgMembershipMetadataController

ejsteven’s picture

Currently, I'm trying to create a OG Membership Type i.e. a new bundle by using og_membership_type_create(). In the current code, it is attempting to set the current system language to the OgMembershipType but fails. After I'm successful I will be using og_membership_create() or og_group() to establish memberships.

caxy4’s picture

Issue summary: View changes

I just ran into the same issue ejsteven did.

My workaround was to call entity_property_values_create_entity('og_membership_type', $values) with a custom $values array and then save the value of the returned wrapper using og_membership_type_save() as follows.

$og_membership_type_wrapper = entity_property_values_create_entity('og_membership_type', array('name' => 'my_custom_membership_type'));
og_membership_type_save($og_membership_type_wrapper->value());