[+FEATURE] Extbase (DomainObject): Added _isClone() property on abstract domain objec...
authorSebastian Kurfürst <sebastian@typo3.org>
Fri, 7 Aug 2009 06:18:40 +0000 (06:18 +0000)
committerSebastian Kurfürst <sebastian@typo3.org>
Fri, 7 Aug 2009 06:18:40 +0000 (06:18 +0000)
typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php
typo3/sysext/extbase/Classes/Persistence/Repository.php

index 76f9f2c..9725e2e 100644 (file)
@@ -39,6 +39,12 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
        protected $uid;
 
        /**
+        * TRUE if the object is a clone
+        * @var boolean
+        */
+       protected $isClone = FALSE;
+
+       /**
         * The generic constructor. If you want to implement your own __constructor() method in your Domain Object you have to call
         * $this->initializeObject() in the first line of your constructor.
         *
@@ -147,5 +153,23 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
        public function _isDirty() {
                return FALSE;
        }
+
+       /**
+        * Returns TRUE if the object has been clonesd, cloned, FALSE otherwise.
+        *
+        * @return boolean TRUE if the object has been cloned
+        */
+       public function _isClone() {
+               return $this->_isClone;
+       }
+
+       /**
+        * Clone method. Sets the _isClone property.
+        *
+        * @return void
+        */
+       public function __clone() {
+               $this->_isClone = TRUE;
+       }
 }
 ?>
\ No newline at end of file
index 25e4795..b0d3411 100644 (file)
@@ -112,7 +112,6 @@ class Tx_Extbase_Persistence_Repository implements Tx_Extbase_Persistence_Reposi
         * Replaces an existing object with the same identifier by the given object
         *
         * @param object $modifiedObject The modified object
-        * @author Robert Lemke <robert@typo3.org>
         * @api
         */
        public function update($modifiedObject) {
@@ -120,8 +119,7 @@ class Tx_Extbase_Persistence_Repository implements Tx_Extbase_Persistence_Reposi
                        throw new Tx_Extbase_Persistence_Exception_IllegalObjectType('The modified object given to update() was not of the type (' . $this->objectType . ') this repository manages.', 1249479625);
                }
 
-               $backend = $this->persistenceManager->getBackend();
-               $uid = $backend->getIdentifierByObject($modifiedObject);
+               $uid = $modifiedObject->getUid();
                if ($uid !== NULL) {
                        $existingObject = $this->findByUid($uid);
                        $this->replace($existingObject, $modifiedObject);