Exemplo n.º 1
0
 public function testCopyAndDeleteObject()
 {
     $objectList = new Object_List();
     $objectList->setCondition("o_key like '%_data%' and o_type = 'object'");
     $objects = $objectList->load();
     $parent = $objects[0];
     $this->assertTrue($parent instanceof Object_Unittest);
     //remove childs if there are some
     if ($parent->hasChilds()) {
         foreach ($parent->getChilds() as $child) {
             $child->delete();
         }
     }
     $this->assertFalse($parent->hasChilds());
     $service = new Object_Service(User::getById(1));
     //copy as child
     $service->copyAsChild($parent, $parent);
     $this->assertTrue($parent->hasChilds());
     $this->assertTrue(count($parent->getChilds()) == 1);
     //copy as child no. 2
     $service->copyAsChild($parent, $parent);
     $this->assertTrue($parent->hasChilds());
     $this->assertTrue(count($parent->getChilds()) == 2);
     $childs = $parent->getChilds();
     //load all in case of lazy loading fields
     Object_Service::loadAllObjectFields($parent);
     Object_Service::loadAllObjectFields($childs[0]);
     Object_Service::loadAllObjectFields($childs[1]);
     $this->assertTrue(Test_Tool::objectsAreEqual($parent, $childs[0], true));
     $this->assertTrue(Test_Tool::objectsAreEqual($parent, $childs[1], true));
     //copy recursivley
     $rootNode = Object_Abstract::getById(1);
     $copy = $service->copyRecursive($rootNode, $parent);
     $this->assertTrue($copy->hasChilds());
     Object_Service::loadAllObjectFields($copy);
     $this->assertTrue(count($copy->getChilds()) == 2);
     $this->assertTrue(Test_Tool::objectsAreEqual($parent, $copy, true));
     //create empty object
     $emptyObject = new Object_Unittest();
     $emptyObject->setOmitMandatoryCheck(true);
     $emptyObject->setParentId(1);
     $emptyObject->setUserOwner(1);
     $emptyObject->setUserModification(1);
     $emptyObject->setCreationDate(time());
     $emptyObject->setKey(uniqid() . rand(10, 99));
     $emptyObject->save();
     $emptyObject->setOmitMandatoryCheck(false);
     $this->assertFalse(Test_Tool::objectsAreEqual($emptyObject, $copy, true));
     //copy contents
     $emptyObject = $service->copyContents($emptyObject, $copy);
     $this->assertTrue(Test_Tool::objectsAreEqual($emptyObject, $copy, true));
     //todo copy contents must fail if types differ
     //delete recusively
     $shouldBeDeleted[] = $copy->getId();
     $childs = $copy->getChilds();
     foreach ($childs as $child) {
         $shouldBeDeleted[] = $child->getId();
     }
     $copy->delete();
     foreach ($shouldBeDeleted as $id) {
         $o = Object_Abstract::getById($id);
         $this->assertFalse($o instanceof Object_Abstract);
     }
 }
Exemplo n.º 2
0
 /**
  * @param int $id
  * @return Webservice_Data_Object_Concrete_Out
  */
 public function getObjectConcreteById($id)
 {
     try {
         $object = Object_Concrete::getById($id);
         if ($object instanceof Object_Concrete) {
             // load all data (eg. lazy loaded fields like multihref, object, ...)
             Object_Service::loadAllObjectFields($object);
             $apiObject = Webservice_Data_Mapper::map($object, "Webservice_Data_Object_Concrete_Out", "out");
             return $apiObject;
         }
         throw new Exception("Object with given ID (" . $id . ") does not exist.");
     } catch (Exception $e) {
         Logger::error($e);
         throw $e;
     }
 }
Exemplo n.º 3
0
 /**
  * @static
  * @param Element_Interface $element
  * @return Element_Interface
  */
 public static function loadAllFields(Element_Interface $element)
 {
     if ($element instanceof Document) {
         Document_Service::loadAllDocumentFields($element);
     } else {
         if ($element instanceof Object_Concrete) {
             Object_Service::loadAllObjectFields($element);
         }
     }
     return $element;
 }