/** * Unlink object from related object * * @param void * @return null */ function unlink_from_object() { // ex detach_from_object() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $object_id = get_id('object_id'); $object1 = Objects::findObject($object_id); $dont_reload = array_var($_GET, 'dont_reload'); if (array_var($_GET, 'rel_objects')) { $objects_to_unlink = explode(",", array_var($_GET, 'rel_objects')); } else { $objects_to_unlink = array(get_id('rel_object_id')); } try { DB::beginWork(); $err = 0; $succ = 0; foreach ($objects_to_unlink as $rel_object_id) { $object2 = Objects::findObject($rel_object_id); if (!$object1 instanceof ApplicationDataObject || !$object2 instanceof ApplicationDataObject) { flash_error(lang('object not found')); ajx_current("empty"); return; } // if $linked_object = LinkedObjects::findById(array('rel_object_id' => $object_id, 'object_id' => $rel_object_id)); // findById if (!$linked_object instanceof LinkedObject) { //search for reverse link $linked_object = LinkedObjects::findById(array('rel_object_id' => $rel_object_id, 'object_id' => $object_id)); // findById } if (!$linked_object instanceof LinkedObject) { $err++; continue; } // if $linked_object->delete(); if ($object1 instanceof ContentDataObject) { ApplicationLogs::createLog($object1, ApplicationLogs::ACTION_UNLINK, false, null, true, $object2->getId()); } if ($object2 instanceof ContentDataObject) { ApplicationLogs::createLog($object2, ApplicationLogs::ACTION_UNLINK, false, null, true, $object1->getId()); } $succ++; } DB::commit(); $message = ""; if ($err > 0) { $message .= lang("error unlink object", $err) . "\n"; } if ($succ > 0) { $message .= lang("success unlink object", $succ) . "\n"; } if ($succ == 0 && $err > 0) { flash_error($message); } else { if ($succ > 0) { flash_success($message); } } flash_success(lang('success unlink object')); if ($dont_reload) { ajx_current("empty"); } else { ajx_current("reload"); } } catch (Exception $e) { flash_error(lang('error unlink object')); DB::rollback(); ajx_current("empty"); } // try }
/** * 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; }
/** * Link object to this object * * @param ApplicationDataObject $object * @return LinkedObject */ function linkObject(ApplicationDataObject $object) { $object_id = $this->getObjectId(); $linked_object = LinkedObjects::findById(array('rel_object_id' => $object_id, 'object_id' => $object->getId())); // findById if ($linked_object instanceof LinkedObject) { return $linked_object; // Already linked } else { //check inverse link $linked_object = LinkedObjects::findById(array('rel_object_id' => $object->getId(), 'object_id' => $object_id)); // findById if ($linked_object instanceof LinkedObject) { return $linked_object; // Already linked } } // if $linked_object = new LinkedObject(); $linked_object->setRelObjectId($object_id); $linked_object->setObjectId($object->getId()); $linked_object->save(); return $linked_object; }