PodsField_Pick::delete PHP Method

delete() public method

Delete the value from the DB
Since: 2.3
public delete ( integer $id = null, string $name = null, array $options = null, array $pod = null )
$id integer
$name string
$options array
$pod array
    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']);
                        }
                    }
                }
            }
        }
    }