public function delete_relationships($related_id, $id, $related_pod, $related_field)
{
if (is_array($related_id)) {
foreach ($related_id as $rid) {
$this->delete_relationships($rid, $id, $related_pod, $related_field);
}
return;
}
if (is_array($id)) {
foreach ($id as $rid) {
$this->delete_relationships($related_id, $rid, $related_pod, $related_field);
}
return;
}
$id = (int) $id;
if (empty($id)) {
return;
}
$related_ids = $this->lookup_related_items($related_field['id'], $related_pod['id'], $related_id, $related_field, $related_pod);
if (empty($related_ids)) {
return;
} elseif (!in_array($id, $related_ids)) {
return;
}
if (isset(self::$related_item_cache[$related_pod['id']][$related_field['id']])) {
// Delete relationship from cache
unset(self::$related_item_cache[$related_pod['id']][$related_field['id']]);
}
unset($related_ids[array_search($id, $related_ids)]);
$no_conflict = pods_no_conflict_check($related_pod['type']);
if (!$no_conflict) {
pods_no_conflict_on($related_pod['type']);
}
// Post Types, Media, Users, and Comments (meta-based)
if (in_array($related_pod['type'], array('post_type', 'media', 'taxonomy', 'user', 'comment'))) {
$object_type = $related_pod['type'];
if (in_array($object_type, array('post_type', 'media'))) {
$object_type = 'post';
} elseif ('taxonomy' == $object_type) {
$object_type = 'term';
}
delete_metadata($object_type, $related_id, $related_field['name']);
if (!empty($related_ids)) {
update_metadata($object_type, $related_id, '_pods_' . $related_field['name'], $related_ids);
foreach ($related_ids as $rel_id) {
add_metadata($object_type, $related_id, $related_field['name'], $rel_id);
}
} else {
delete_metadata($object_type, $related_id, '_pods_' . $related_field['name']);
}
} elseif ('settings' == $related_pod['type']) {
if (!empty($related_ids)) {
update_option($related_pod['name'] . '_' . $related_field['name'], $related_ids);
} else {
delete_option($related_pod['name'] . '_' . $related_field['name']);
}
}
// Relationships table
if (!pods_tableless()) {
pods_query("\n DELETE FROM `@wp_podsrel`\n WHERE\n (\n `pod_id` = %d\n AND `field_id` = %d\n AND `item_id` = %d\n AND `related_item_id` = %d\n )\n OR (\n `related_pod_id` = %d\n AND `related_field_id` = %d\n AND `related_item_id` = %d\n AND `item_id` = %d\n )\n ", array($related_pod['id'], $related_field['id'], $related_id, $id, $related_pod['id'], $related_field['id'], $related_id, $id));
}
if (!$no_conflict) {
pods_no_conflict_off($related_pod['type']);
}
}