/** * 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]); } }
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(); }
/** * @param EventArgs $eventArgs */ public function postLoad(EventArgs $eventArgs) { $this->initialize($eventArgs->getObject()); }