99 lines
2.1 KiB
PHP
99 lines
2.1 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Doctrine\ORM\Event;
|
||
|
|
||
|
use Doctrine\Common\EventArgs,
|
||
|
Doctrine\ORM\EntityManager;
|
||
|
|
||
|
/**
|
||
|
* Class that holds event arguments for a preInsert/preUpdate event.
|
||
|
*
|
||
|
* @author Roman Borschel <roman@code-factory.org>
|
||
|
* @author Benjamin Eberlei <kontakt@beberlei.de>
|
||
|
* @since 2.0
|
||
|
*/
|
||
|
class PreUpdateEventArgs extends LifecycleEventArgs
|
||
|
{
|
||
|
/**
|
||
|
* @var array
|
||
|
*/
|
||
|
private $_entityChangeSet;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @param object $entity
|
||
|
* @param EntityManager $em
|
||
|
* @param array $changeSet
|
||
|
*/
|
||
|
public function __construct($entity, $em, array &$changeSet)
|
||
|
{
|
||
|
parent::__construct($entity, $em);
|
||
|
$this->_entityChangeSet = &$changeSet;
|
||
|
}
|
||
|
|
||
|
public function getEntityChangeSet()
|
||
|
{
|
||
|
return $this->_entityChangeSet;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Field has a changeset?
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function hasChangedField($field)
|
||
|
{
|
||
|
return isset($this->_entityChangeSet[$field]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the old value of the changeset of the changed field.
|
||
|
*
|
||
|
* @param string $field
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function getOldValue($field)
|
||
|
{
|
||
|
$this->_assertValidField($field);
|
||
|
|
||
|
return $this->_entityChangeSet[$field][0];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the new value of the changeset of the changed field.
|
||
|
*
|
||
|
* @param string $field
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function getNewValue($field)
|
||
|
{
|
||
|
$this->_assertValidField($field);
|
||
|
|
||
|
return $this->_entityChangeSet[$field][1];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set the new value of this field.
|
||
|
*
|
||
|
* @param string $field
|
||
|
* @param mixed $value
|
||
|
*/
|
||
|
public function setNewValue($field, $value)
|
||
|
{
|
||
|
$this->_assertValidField($field);
|
||
|
|
||
|
$this->_entityChangeSet[$field][1] = $value;
|
||
|
}
|
||
|
|
||
|
private function _assertValidField($field)
|
||
|
{
|
||
|
if (!isset($this->_entityChangeSet[$field])) {
|
||
|
throw new \InvalidArgumentException(
|
||
|
"Field '".$field."' is not a valid field of the entity ".
|
||
|
"'".get_class($this->getEntity())."' in PreInsertUpdateEventArgs."
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|