Пример #1
0
 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;
 }
Пример #2
0
	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;
	}
Пример #3
0
 /**
  * Remove all object relations from the database
  *
  * @param void
  * @return boolean
  */
 function clearObjectRelations()
 {
     return LinkedObjects::clearRelationsByObject($this);
 }
Пример #4
0
	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;
		}
	}
Пример #5
0
 /**
  * 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
Пример #7
0
	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;
 }
Пример #9
0
 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();
 }
Пример #10
0
 /**
 * Return manager instance
 *
 * @access protected
 * @param void
 * @return LinkedObject 
 */
 function manager() {
   if(!($this->manager instanceof LinkedObject)) $this->manager = LinkedObjects::instance();
   return $this->manager;
 } // manager