--- profiles/commons/modules/commons/commons_trusted_contacts/commons_trusted_contacts.module.ori 2015-10-28 15:30:50.411173552 +0100 +++ profiles/commons/modules/commons/commons_trusted_contacts/commons_trusted_contacts.module 2015-10-28 15:31:52.599171120 +0100 @@ -528,8 +528,6 @@ $wrapper = entity_metadata_wrapper('og_membership', $og_membership); - $wrapper_original = entity_metadata_wrapper('og_membership', $og_membership->original); - // Set the second OG Membership according to the first one. // As we are referencing the requesting user to the requested user, we want to // keep everything synced. @@ -553,40 +551,44 @@ $wrapper2 = entity_metadata_wrapper('og_membership', $membership_id); $og_membership2 = $wrapper2->value(); - if ($wrapper->state->value() != $wrapper_original->state->value()) { - // State was changed. - $wrapper2->state->set($wrapper->state->value()); - - if ($wrapper_original->state->value() == OG_STATE_PENDING) { - // Responding to a Trusted-Contact request. - $confirmation = $wrapper->state->value() == OG_STATE_ACTIVE; - $wrapper->field_confirmation->set($confirmation); - $wrapper->field_response_date->set(time()); - - // Prevent recursion. - $og_membership->_skip_membership_update = TRUE; - - // Clone the Og membership, as in EntityAPIController::save() the - // entity->original property is removed. However since are re-saving the - // same updated entity, we want to make sure it doesn't happen on the - // original one, thus causing notices for example in - // og_og_membership_update() - $og_membership_clone = clone $og_membership; - $og_membership_clone->save(); + if ($og_membership->original) { + $wrapper_original = entity_metadata_wrapper('og_membership', $og_membership->original); - // Subtract 1 from unread invitations count. - $account = user_load($og_membership->gid); + if ($wrapper->state->value() != $wrapper_original->state->value()) { + // State was changed. + $wrapper2->state->set($wrapper->state->value()); + + if ($wrapper_original->state->value() == OG_STATE_PENDING) { + // Responding to a Trusted-Contact request. + $confirmation = $wrapper->state->value() == OG_STATE_ACTIVE; + $wrapper->field_confirmation->set($confirmation); + $wrapper->field_response_date->set(time()); + + // Prevent recursion. + $og_membership->_skip_membership_update = TRUE; + + // Clone the Og membership, as in EntityAPIController::save() the + // entity->original property is removed. However since are re-saving the + // same updated entity, we want to make sure it doesn't happen on the + // original one, thus causing notices for example in + // og_og_membership_update() + $og_membership_clone = clone $og_membership; + $og_membership_clone->save(); + + // Subtract 1 from unread invitations count. + $account = user_load($og_membership->gid); + } } - } - if ($wrapper->field_confirmation->value() != $wrapper_original->field_confirmation->value()) { - // Confirmation was changed. - $wrapper2->field_confirmation->set($wrapper->field_confirmation->value()); - } + if ($wrapper->field_confirmation->value() != $wrapper_original->field_confirmation->value()) { + // Confirmation was changed. + $wrapper2->field_confirmation->set($wrapper->field_confirmation->value()); + } - if ($wrapper->field_response_date->value() != $wrapper_original->field_response_date->value()) { - // Response Date was changed. - $wrapper2->field_response_date->set($wrapper->field_response_date->value()); + if ($wrapper->field_response_date->value() != $wrapper_original->field_response_date->value()) { + // Response Date was changed. + $wrapper2->field_response_date->set($wrapper->field_response_date->value()); + } } // Prevent recursion.