예제 #1
0
 /**
  * Checks for inserted object to update its logEntry
  * foreign key
  *
  * @param EventArgs $eventArgs
  *
  * @return void
  */
 public function postPersist(EventArgs $eventArgs)
 {
     $object = $eventArgs->getObject();
     $em = $eventArgs->getEntityManager();
     $oid = spl_object_hash($object);
     $uow = $em->getUnitOfWork();
     if ($this->pendingInserts && array_key_exists($oid, $this->pendingInserts)) {
         $activityStream = $this->pendingInserts[$oid];
         $logEntryMeta = $em->getClassMetadata(get_class($activityStream));
         $id = $object->getId();
         $logEntryMeta->getReflectionProperty('objectId')->setValue($activityStream, $id);
         $uow->scheduleExtraUpdate($activityStream, array('objectId' => array(null, $id)));
         unset($this->pendingInserts[$oid]);
     }
 }
예제 #2
0
 public function preRemove(EventArgs $args)
 {
     $chain = $this->container->get('oneup_acl.driver_chain');
     $manager = $this->container->get('oneup_acl.manager');
     $remove = $this->container->getParameter('oneup_acl.remove_orphans');
     if ($args instanceof \Doctrine\ODM\MongoDB\Event\LifecycleEventArgs) {
         $entity = $args->getDocument();
     } else {
         $entity = $args->getObject();
     }
     $object = new \ReflectionClass($entity);
     $metaData = $chain->readMetaData($object);
     if ($remove && (!isset($metaData['remove']) || $metaData['remove']) || !$remove && isset($metaData['remove']) && $metaData['remove']) {
         $manager->revokeAllObjectPermissions($entity);
         $manager->revokeAllObjectFieldPermissions($entity);
     }
 }
 /**
  * Compute sortRank for entities that are created
  *
  * @param EventArgs $args
  */
 public function prePersist(EventArgs $args)
 {
     $em = $args->getEntityManager();
     $object = $args->getObject();
     $class = get_class($object);
     $meta = $em->getClassMetadata($class);
     $reflectionClass = $meta->getReflectionClass();
     if (!$reflectionClass || !$this->hasTrait($reflectionClass, 'Librinfo\\DoctrineBundle\\Entity\\Traits\\Sortable')) {
         return;
     }
     // return if current entity doesn't use Sortable trait
     if ($object->getSortRank()) {
         return;
     }
     $maxPos = $this->getMaxPosition($em, $meta);
     $maxPos = $maxPos ? $maxPos + 1000 : 65536;
     $object->setSortRank($maxPos);
     $this->maxPositions[$class] = $maxPos;
 }
 /**
  * @inheritdoc
  */
 protected function getMedia(EventArgs $args)
 {
     return $args->getObject();
 }
예제 #5
0
 /**
  * @param EventArgs $eventArgs
  */
 public function postLoad(EventArgs $eventArgs)
 {
     $this->initialize($eventArgs->getObject());
 }