12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace Gedmo\Loggable\Mapping\Event\Adapter;
- use Gedmo\Mapping\Event\Adapter\ORM as BaseAdapterORM;
- use Gedmo\Loggable\Mapping\Event\LoggableAdapter;
- /**
- * Doctrine event adapter for ORM adapted
- * for Loggable behavior
- *
- * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
- * @package Gedmo\Loggable\Mapping\Event\Adapter
- * @subpackage ORM
- * @link http://www.gediminasm.org
- * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
- */
- final class ORM extends BaseAdapterORM implements LoggableAdapter
- {
- /**
- * {@inheritDoc}
- */
- public function getDefaultLogEntryClass()
- {
- return 'Gedmo\\Loggable\\Entity\\LogEntry';
- }
- /**
- * {@inheritDoc}
- */
- public function getNewVersion($meta, $object)
- {
- $em = $this->getObjectManager();
- $objectMeta = $em->getClassMetadata(get_class($object));
- $identifierField = $this->getSingleIdentifierFieldName($objectMeta);
- $objectId = $objectMeta->getReflectionProperty($identifierField)->getValue($object);
- $dql = "SELECT MAX(log.version) FROM {$meta->name} log";
- $dql .= " WHERE log.objectId = :objectId";
- $dql .= " AND log.objectClass = :objectClass";
- $q = $em->createQuery($dql);
- $q->setParameters(array(
- 'objectId' => $objectId,
- 'objectClass' => $objectMeta->name
- ));
- return $q->getSingleScalarResult() + 1;
- }
- }
|