public function save($data = null, $value = null, $id = null, $params = null)
{
if (null !== $value) {
$data = array($data => $value);
}
$fetch = false;
if (null === $id || $this->row && $id == $this->id()) {
$fetch = true;
if (null === $id) {
$id = $this->id();
}
}
$data = (array) $this->do_hook('save', $data, $id);
if (empty($data)) {
return $id;
}
$default = array();
if (!empty($params) && is_array($params)) {
$default = $params;
}
$params = array('pod' => $this->pod, 'id' => $id, 'data' => $data, 'allow_custom_fields' => true, 'clear_slug_cache' => false);
if (!empty($default)) {
$params = array_merge($params, $default);
}
$id = $this->api->save_pod_item($params);
if (0 < $id && $fetch) {
$this->fetch($id, false);
}
if (!empty($this->pod_data['field_slug'])) {
if (0 < $id && $fetch) {
$slug = $this->field($this->pod_data['field_slug']);
} else {
$slug = pods($this->pod, $id)->field($this->pod_data['field_slug']);
}
if (0 < strlen($slug)) {
pods_cache_clear($slug, 'pods_items_' . $this->pod);
}
}
return $id;
}