public function delete($id = null, $name = null, $options = null, $pod = null)
{
if (empty(self::$api)) {
self::$api = pods_api();
}
$simple_tableless_objects = $this->simple_objects();
// Bidirectional relationship requirement checks
$related_object = pods_var(self::$type . '_object', $options, '');
// pod, post_type, taxonomy, etc..
$related_val = pods_var(self::$type . '_val', $options, $related_object, null, true);
// pod name, post type name, taxonomy name, etc..
$related_sister_id = (int) pods_var('sister_id', $options, 0);
if (!empty($related_sister_id) && !in_array($related_object, $simple_tableless_objects)) {
$related_pod = self::$api->load_pod(array('name' => $related_val, 'table_info' => false), false);
if (false !== $related_pod && ('pod' == $related_object || $related_object == $related_pod['type'])) {
$related_field = false;
// Ensure sister_id exists on related Pod
foreach ($related_pod['fields'] as $related_pod_field) {
if ('pick' == $related_pod_field['type'] && $related_sister_id == $related_pod_field['id']) {
$related_field = $related_pod_field;
break;
}
}
if (!empty($related_field)) {
$values = self::$api->lookup_related_items($options['id'], $pod['id'], $id, $options, $pod);
if (!empty($values)) {
$no_conflict = pods_no_conflict_check($related_pod['type']);
if (!$no_conflict) {
pods_no_conflict_on($related_pod['type']);
}
self::$api->delete_relationships($values, $id, $related_pod, $related_field);
if (!$no_conflict) {
pods_no_conflict_off($related_pod['type']);
}
}
}
}
}
}