function hasReferences() { $id = $this->getId(); //Check for objects in Person Member $objects_in_person_member_count = 0; if (Plugins::instance()->isActivePlugin('core_dimensions')) { $persons_dim = Dimensions::findByCode('feng_persons'); $members = Members::findByObjectId($this->getId(), $persons_dim->getId()); $member_ids = array(); foreach ($members as $member) { $member_ids[] = $member->getId(); } $objects_in_person_member_count = ObjectMembers::count("`member_id` IN (" . implode(",", $member_ids) . ") AND object_id <> {$id} "); } if ($objects_in_person_member_count > 0) { return true; } // Check form linked objects $linked_obj_references_count = LinkedObjects::count("`created_by_id` = {$id}"); if ($linked_obj_references_count > 0) { return true; } // Check direct references $references = DB::executeAll("SELECT id FROM " . TABLE_PREFIX . "objects WHERE `created_by_id` = {$id} OR `updated_by_id` = {$id} OR `trashed_by_id` = {$id} OR `archived_by_id` = {$id} limit 1"); if (count($references) > 0) { return true; } return false; }
function hasReferences() { $id = $this->getId(); // Check form linked objects $linked_obj_references_count = LinkedObjects::count("`created_by_id` = $id"); if ($linked_obj_references_count > 0){ return true; } // Check direct references $references = DB::executeAll("SELECT id FROM ".TABLE_PREFIX."objects WHERE `created_by_id` = $id OR `updated_by_id` = $id OR `trashed_by_id` = $id OR `archived_by_id` = $id limit 1"); if (count($references) > 0){ return true; } return false; }
/** * Remove all object relations from the database * * @param void * @return boolean */ function clearObjectRelations() { return LinkedObjects::clearRelationsByObject($this); }
function getLinkedObjects() { $conv_emails = MailContents::getMailsFromConversation($this); $objects = array(); foreach ($conv_emails as $mail){ if(logged_user()->isMemberOfOwnerCompany()) { $mail_objects = $mail->getAllLinkedObjects(); } else { if (is_null($mail->linked_objects)) { $mail->linked_objects = LinkedObjects::getLinkedObjectsByObject($this, true); } $mail_objects = $mail->linked_objects; } if (is_array($mail_objects)){ foreach ($mail_objects as $mo){ $objects[] = $mo; } } } if ($this->isTrashed()) { $include_trashed = true; } else { $include_trashed = false; } if ($include_trashed) { return $objects; } else { $ret = array(); if (is_array($objects) && count($objects)) { foreach ($objects as $o) { if (!$o instanceof ContentDataObject || !$o->isTrashed()) { $ret[] = $o; } } } return $ret; } }
/** * 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 }
/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if(isset($this) && instance_of($this, 'LinkedObjects')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return LinkedObjects::instance()->paginate($arguments, $items_per_page, $current_page); //$instance =& LinkedObjects::instance(); //return $instance->paginate($arguments, $items_per_page, $current_page); } // if } // paginate
function delete($deleteMails = false){ MailAccountContacts::deleteByAccount($this); if ($deleteMails) { session_commit(); ini_set('memory_limit', '1024M'); LinkedObjects::delete(array("(`object_id` IN (SELECT `object_id` FROM `".TABLE_PREFIX."mail_contents` WHERE `account_id` = " . DB::escape($this->getId()).")) or (`rel_object_id` IN (SELECT `object_id` FROM `".TABLE_PREFIX."mail_contents` WHERE `account_id` = " . DB::escape($this->getId())."))")); SearchableObjects::delete(array("`rel_object_id` IN (SELECT `object_id` FROM `".TABLE_PREFIX."mail_contents` WHERE `account_id` = " . DB::escape($this->getId()).") ")); ReadObjects::delete("`rel_object_id` IN (SELECT `object_id` FROM `".TABLE_PREFIX."mail_contents` WHERE `account_id` = " . DB::escape($this->getId()).") "); $account_email_ids = MailContents::findAll(array('id' => true, 'conditions' => '`account_id` = ' . DB::escape($this->getId()), 'include_trashed' => true)); if (count($account_email_ids) > 0) { MailDatas::delete('id IN ('.implode(',', $account_email_ids).')'); MailContents::delete('`account_id` = ' . DB::escape($this->getId())); } } if ($this->getIsImap()) { MailAccountImapFolders::delete('account_id = ' . $this->getId()); } parent::delete(); }
/** * Return manager instance * * @access protected * @param void * @return LinkedObject */ function manager() { if (!$this->manager instanceof LinkedObject) { $this->manager = LinkedObjects::instance(); } return $this->manager; }
function delete($deleteMails = false) { MailAccountUsers::deleteByAccount($this); if ($deleteMails) { session_commit(); LinkedObjects::delete(array("(`object_id` IN (SELECT `id` FROM `" . TABLE_PREFIX . "mail_contents` WHERE `account_id` = " . DB::escape($this->getId()) . ") and `object_manager` = 'MailContents') \n\t\t\t\tor (`rel_object_id` IN (SELECT `id` FROM `" . TABLE_PREFIX . "mail_contents` WHERE `account_id` = " . DB::escape($this->getId()) . ") and `rel_object_manager` = 'MailContents')")); SearchableObjects::delete(array("`rel_object_manager` = 'MailContents' AND `rel_object_id` IN (SELECT `id` FROM `" . TABLE_PREFIX . "mail_contents` WHERE `account_id` = " . DB::escape($this->getId()) . ") ")); ReadObjects::delete("`rel_object_manager` = 'MailContents' AND `rel_object_id` IN (SELECT `id` FROM `" . TABLE_PREFIX . "mail_contents` WHERE `account_id` = " . DB::escape($this->getId()) . ") "); $account_emails = MailContents::findAll(array('conditions' => '`account_id` = ' . DB::escape($this->getId()), 'include_trashed' => true)); foreach ($account_emails as $email) { $email->delete(); } //MailContents::delete('`account_id` = ' . DB::escape($this->getId())); } if ($this->getIsImap()) { MailAccountImapFolders::delete('account_id = ' . $this->getId()); } parent::delete(); }
/** * Return manager instance * * @access protected * @param void * @return LinkedObject */ function manager() { if(!($this->manager instanceof LinkedObject)) $this->manager = LinkedObjects::instance(); return $this->manager; } // manager