public function update(UpdateEventArgs $eventArgs) { //Check update permissions $document = $eventArgs->getDocument(); $actions = []; foreach ($eventArgs->getChangeSet()->getFieldNames() as $field) { $actions[] = Actions::update($field); } if ($this->getAccessController()->areAllowed($actions, $eventArgs->getMetadata(), $document)->getAllowed()) { return; } $eventArgs->setReject(true); $eventArgs->getEventManager()->dispatchEvent(AccessControlEvents::UPDATE_DENIED, new EventArgs($document, 'update')); }
/** * * @param \Zoop\Shard\Stamp\UpdateEventArgs $eventArgs */ public function update(UpdateEventArgs $eventArgs) { $document = $eventArgs->getDocument(); $metadata = $eventArgs->getMetadata(); $stampMetadata = $metadata->getStamp(); if (isset($stampMetadata['updatedBy'])) { $metadata->setFieldValue($document, $stampMetadata['updatedBy'], $this->getUsername()); $eventArgs->addRecompute($stampMetadata['updatedBy']); } if (isset($stampMetadata['updatedOn'])) { $metadata->setFieldValue($document, $stampMetadata['updatedOn'], time()); $eventArgs->addRecompute($stampMetadata['updatedOn']); } }
public function update(UpdateEventArgs $eventArgs) { if ($eventArgs->getReject()) { return; } $metadata = $eventArgs->getMetadata(); if (!($stateMetadata = $metadata->getState())) { return; } $document = $eventArgs->getDocument(); $eventManager = $eventArgs->getEventManager(); $changeSet = $eventArgs->getChangeSet(); $field = array_keys($stateMetadata)[0]; list($fromState, $toState) = $changeSet->getField($field); //stop state change if the new state is not on the defined state list if (count($stateMetadata[$field]) > 0 && !in_array($toState, $stateMetadata[$field])) { $metadata->setFieldValue($document, $field, $fromState); $eventManager->dispatchEvent(Events::BAD_STATE, $eventArgs); $eventArgs->setReject(true); return; } // Raise preTransition $transitionEventArgs = new TransitionEventArgs($document, $metadata, new Transition($fromState, $toState), $changeSet, $eventManager); $eventManager->dispatchEvent(Events::PRE_TRANSITION, $transitionEventArgs); if ($transitionEventArgs->getReject()) { $eventArgs->setReject(true); return; } // Raise postTransition $eventManager->dispatchEvent(Events::POST_TRANSITION, $transitionEventArgs); if ($transitionEventArgs->getReject()) { $eventArgs->setReject(true); return; } }
/** * * @param \Zoop\Shard\Core\UpdateEventArgs $eventArgs * @return type */ public function update(UpdateEventArgs $eventArgs) { $document = $eventArgs->getDocument(); $freezer = $this->getFreezer(); $metadata = $eventArgs->getMetadata(); if (!$freezer->getFreezeField($metadata) || !$freezer->isFrozen($document, $metadata)) { return; } $freezeMetadata = $metadata->getFreeze(); $changeSet = $eventArgs->getChangeSet(); $count = 0; array_walk($freezeMetadata, function ($item) use($changeSet, &$count) { if ($changeSet->hasField($item)) { ++$count; } }); if (count($changeSet->getFieldNames()) == $count) { return; } // Updates to frozen models are not allowed. Roll them back $eventArgs->setReject(true); // Raise frozenUpdateDenied $eventArgs->getEventManager()->dispatchEvent(Events::FROZEN_UPDATE_DENIED, new AccessControlEventArgs($document, 'update')); }