From 537bb48b22509d44d32f8172fe35317a2277f4e0 Mon Sep 17 00:00:00 2001 From: naomi Date: Fri, 22 Apr 2022 16:25:49 +0100 Subject: [PATCH] Added class for updating fields based on time elapsed --- src/TimeBasedFieldUpdater.php | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/TimeBasedFieldUpdater.php diff --git a/src/TimeBasedFieldUpdater.php b/src/TimeBasedFieldUpdater.php new file mode 100644 index 0000000..2195946 --- /dev/null +++ b/src/TimeBasedFieldUpdater.php @@ -0,0 +1,37 @@ +date_field = $date_field; + $this->conditions = $conditions; + $this->date_format = $date_format; + $this->entity_type = $entity_type; + } + + final public function update($time_elapsed, $old_values, $new_values): void { + $query = Drupal::entityQuery($this->entity_type); + foreach($this->conditions as $cond_field=>$cond_value) { + $query->condition($cond_field, $cond_value); + } + foreach($old_values as $old_field=>$old_value) { + $query->condition($old_field, $old_value); + } + $query->condition($this->date_field, date($this->date_format, strtotime('-'.$time_elapsed)), "<"); + foreach($query->execute() as $id) { + $entity = Drupal::entityTypeManager()->getStorage($this->entity_type)->load($id); + foreach($new_values as $new_field=>$new_value) { + $entity->set($new_field, $new_value); + } + $entity->save(); + } + } +} \ No newline at end of file