Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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;
 }