public function update($name, $value, $autoload = null) { if (true === $autoload) { $autoload = 'yes'; } if (false === $autoload) { $autoload = 'no'; } $value = jsonizeMaybe($value); $updated_options = ['option_name' => $name, 'option_value' => $value]; if ($autoload !== null) { $updated_options['autoload'] = $autoload; } if ($this->option->updateOrCreate(['option_name' => $name], $updated_options)) { Cache::tags('options')->forget('option_' . md5($name)); return true; } return false; }
public function delete($metaType, $objectId, $metaKey, $metaValue = '', $deleteAll = false) { if (!$metaType || !$metaKey || !is_numeric($objectId) && !$deleteAll) { return false; } $objectId = abs((int) $objectId); if (!$objectId && !$deleteAll) { return false; } if (!($repositoryClassInstance = $this->metaRepoExists($metaType))) { return false; } $column = sanitizeKey($metaType . '_id'); $metaKey = e($metaKey); $metaValue = se($metaValue); $check = Plugin::apply_filters("delete_{$metaType}_metadata", null, $objectId, $metaKey, $metaValue, $deleteAll); if (null !== $check) { return (bool) $check; } $_metaValue = $metaValue; $metaValue = jsonizeMaybe($metaValue); $findQueryClauses = ['meta_key' => $metaKey]; if (!$deleteAll) { $findQueryClauses[$column] = $objectId; } if ('' !== $metaValue && null !== $metaValue && false !== $metaValue) { $findQueryClauses['meta_value'] = $metaValue; } $metaIds = degrade($this->{$repositoryClassInstance}->findWhere($findQueryClauses, ['id'])); if (!count($metaIds)) { return false; } if ($deleteAll) { $objectIds = degrade(array_pluck($this->{$repositoryClassInstance}->findWhere(['meta_key' => $metaKey], [$column]), $column)); } Plugin::do_action("delete_{$metaType}_meta", $metaIds, $objectId, $metaKey, $_metaValue); $delete = $this->{$repositoryClassInstance}->delete($metaIds); if (!$delete) { return false; } if ($deleteAll) { foreach ($objectIds as $oId) { Cache::tags(["{$metaType}_meta"])->forget($oId); } } else { Cache::tags(["{$metaType}_meta"])->forget($objectId); } Plugin::do_action("deleted_{$metaType}_meta", $metaIds, $objectId, $metaKey, $_metaValue); return true; }