/** * Link object to this object * * @param ProjectDataObject $object * @return LinkedObject */ function linkObject(ApplicationDataObject $object) { $manager_class = get_class($this->manager()); $object_id = $this->getObjectId(); $linked_object = LinkedObjects::findById(array('rel_object_manager' => $manager_class, 'rel_object_id' => $object_id, 'object_id' => $object->getId(), 'object_manager' => get_class($object->manager()))); // findById if ($linked_object instanceof LinkedObject) { return $linked_object; // Already linked } else { //check inverse link $linked_object = LinkedObjects::findById(array('rel_object_manager' => get_class($object->manager()), 'rel_object_id' => $object->getId(), 'object_id' => $object_id, 'object_manager' => $manager_class)); // findById if ($linked_object instanceof LinkedObject) { return $linked_object; // Already linked } } // if $linked_object = new LinkedObject(); $linked_object->setRelObjectManager($manager_class); $linked_object->setRelObjectId($object_id); $linked_object->setObjectId($object->getId()); $linked_object->setObjectManager(get_class($object->manager())); $linked_object->save(); /* if(!$object->getIsVisible()) { $object->setIsVisible(true); $object->setExpirationTime(EMPTY_DATETIME); $object->save(); } // if*/ return $linked_object; }