Skip to content

Instantly share code, notes, and snippets.

@underhilllabs
Created January 27, 2016 18:05
Show Gist options
  • Save underhilllabs/caa71e9fdf0c1c2d7593 to your computer and use it in GitHub Desktop.
Save underhilllabs/caa71e9fdf0c1c2d7593 to your computer and use it in GitHub Desktop.
Using the entity metadata wrapper with a field list of references.
<?php
/**
* Removes user as owner if they are currently owner.
*/
function bglib_remove_owner($nid, $uid) {
$u = user_load($uid);
$wrapper = entity_metadata_wrapper('node', $nid);
$owners = $wrapper->field_owners->value();
foreach($owners as $delta => $owner) {
if($owner == $u) {
unset($wrapper->field_owners[$delta]);
$wrapper->save();
}
}
}
/**
* Adds user as owner if they are not already
*/
function bglib_add_owner($nid, $uid) {
$found = false;
$u = user_load($uid);
$wrapper = entity_metadata_wrapper('node', $nid);
$owners = $wrapper->field_owners->value();
foreach($owners as $owner) {
if ($owner == $u) {
$found = true;
}
}
if($found == false) {
$wrapper->field_owners[] = $u;
$wrapper->save();
}
}
<?php
$node_wrapper = entity_metadata_wrapper('node', 8);
$owners = $node_wrapper->field_owners->value();
$u = user_load(1);
print "owners are : " ;
$found = 0;
foreach($owners as $delta => $owner) {
print "\n owner name: " . $owner->name;
if($u == $owner) {
print "\nfound owner at $delta!";
$found = $delta;
unset($node_wrapper->field_owners[$delta]);
$node_wrapper->save();
}
//dpm( $owner);
}
dpm($owners);
//dpm($node_wrapper->field_owners);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment