Example #1
0
 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'));
 }
Example #2
0
 /**
  *
  * @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']);
     }
 }
Example #3
0
 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;
     }
 }
Example #4
0
 /**
  *
  * @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'));
 }