/** * {@inheritdoc} * * @param string $eventType * @param \Phalcon\Mvc\ModelInterface $model */ public function notify($eventType, ModelInterface $model) { if ($eventType == 'beforeDelete') { $options = $this->getOptions(); $field = $options['field']; $value = $options['value']; $model->skipOperation(true); if ($model->readAttribute($field) === $value) { $model->appendMessage(new Message('Model was already deleted')); return false; } $this->fireEvent($model, 'beforeSoftDelete'); $updateModel = clone $model; $updateModel->writeAttribute($field, $value); if (!$updateModel->update()) { foreach ($updateModel->getMessages() as $message) { $model->appendMessage($message); } return false; } $model->writeAttribute($field, $value); if (isset($options['cascade']) && $options['cascade'] === true) { $this->cascadeDelete($model); } $this->fireEvent($model, 'afterSoftDelete'); } }