added $sneaky arg to update()
this new argument allows update hooks to be skipped (for example, to avoid updating updated date for migration-type tasks)
This commit is contained in:
parent
a388c15650
commit
fd366a1297
4 changed files with 10 additions and 8 deletions
|
@ -47,7 +47,7 @@ class DSO extends FlatArray implements DSOInterface
|
|||
return $this->factory()->insert($this);
|
||||
}
|
||||
|
||||
public function update() : bool
|
||||
public function update(bool $sneaky = false) : bool
|
||||
{
|
||||
return $this->factory()->update($this);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ interface DSOFactoryInterface
|
|||
public function create(array $data = array()) : DSOInterface;
|
||||
public function read(string $value, string $field = 'dso.id', $deleted = false) : ?DSOInterface;
|
||||
public function insert(DSOInterface &$dso) : bool;
|
||||
public function update(DSOInterface &$dso) : bool;
|
||||
public function update(DSOInterface &$dso, bool $sneaky = false) : bool;
|
||||
public function delete(DSOInterface &$dso, bool $permanent = false) : bool;
|
||||
|
||||
public function search() : Search;
|
||||
|
|
|
@ -21,7 +21,7 @@ interface DSOInterface extends FlatArrayInterface
|
|||
public function removals() : array;
|
||||
|
||||
public function insert() : bool;
|
||||
public function update() : bool;
|
||||
public function update(bool $sneaky = false) : bool;
|
||||
public function delete(bool $permanent = false) : bool;
|
||||
public function undelete() : bool;
|
||||
}
|
||||
|
|
|
@ -109,13 +109,13 @@ class Factory implements DSOFactoryInterface
|
|||
return $this->driver->delete($this->table, $dso);
|
||||
}
|
||||
$dso['dso.deleted'] = time();
|
||||
return $this->update($dso);
|
||||
return $this->update($dso, true);
|
||||
}
|
||||
|
||||
public function undelete(DSOInterface &$dso) : bool
|
||||
{
|
||||
unset($dso['dso.deleted']);
|
||||
return $this->update($dso);
|
||||
return $this->update($dso, true);
|
||||
}
|
||||
|
||||
public function create(array $data = array()) : DSOInterface
|
||||
|
@ -148,13 +148,15 @@ class Factory implements DSOFactoryInterface
|
|||
return @$vcols[$path]['name'];
|
||||
}
|
||||
|
||||
public function update(DSOInterface &$dso) : bool
|
||||
public function update(DSOInterface &$dso, bool $sneaky = false) : bool
|
||||
{
|
||||
if (!$dso->changes() && !$dso->removals()) {
|
||||
return true;
|
||||
}
|
||||
$this->hook_update($dso);
|
||||
$dso->hook_update();
|
||||
if (!$sneaky) {
|
||||
$this->hook_update($dso);
|
||||
$dso->hook_update();
|
||||
}
|
||||
$out = $this->driver->update($this->table, $dso);
|
||||
$dso->resetChanges();
|
||||
return $out;
|
||||
|
|
Loading…
Reference in a new issue