/** * Return all relation objects ( LinkedObjects) for specific object * * @param ApplicationDataObject $object * @return array */ static function getRelationsByObject(ApplicationDataObject $object) { return self::findAll(array( 'conditions' => array('(`rel_object_id` = ?) or (`object_id` = ?)', $object->getObjectId(), $object->getObjectId()), 'order' => '`created_on`' )); // findAll } // getRelationsByObject
/** * Return all read objects ( ReadObjects) for specific object and user * * @param ApplicationDataObject $object * @return array */ static function getReadByObject(ApplicationDataObject $object, int $contact_id) { return self::findAll(array( 'conditions' => array('(`rel_object_id` = ?) and `contact_id` = ? and is_read = 1', $object->getObjectId(), $contact_id), 'order' => '`created_on`' )); // findAll } // getReadByObject
/** * Create new log entry and return it * * Delete actions are automaticly marked as silent if $is_silent value is not provided (not NULL) * * @param ApplicationDataObject $object * @param Project $project * @param DataManager $manager * @param boolean $save Save log object before you save it * @return ApplicationLog */ static function createLog(ApplicationDataObject $object, $project, $action = null, $is_private = false, $is_silent = null, $save = true) { if (is_null($action)) { $action = self::ACTION_ADD; } // if if (!self::isValidAction($action)) { throw new Error("'{$action}' is not valid log action"); } // if if (is_null($is_silent)) { $is_silent = $action == self::ACTION_DELETE; } else { $is_silent = (bool) $is_silent; } // if $manager = $object->manager(); if (!$manager instanceof DataManager) { throw new Error('Invalid object manager'); } // if $log = new ApplicationLog(); if ($project instanceof Project) { $log->setProjectId($project->getId()); } // if $log->setTakenById(logged_user()->getId()); $log->setRelObjectId($object->getObjectId()); $log->setObjectName($object->getObjectName()); $log->setRelObjectManager(get_class($manager)); $log->setAction($action); $log->setIsPrivate($is_private); $log->setIsSilent($is_silent); if ($save) { $log->save(); } // if // Update is private for this object if ($object instanceof ProjectDataObject) { ApplicationLogs::setIsPrivateForObject($object); } // if return $log; }
/** * Return tags for specific object * * @access public * @param ApplicationDataObject $object * @param string $manager_class * @return array */ function getTagsByObject(ApplicationDataObject $object, $manager_class) { return self::findAll(array('conditions' => array('`rel_object_id` = ? AND `rel_object_manager` = ?', $object->getObjectId(), get_class($object->manager())), 'order' => '`tag`')); // findAll }
/** * Drop columns content from table related to $object * * @param ApplicationDataObject $object * @return boolean */ static function dropContentByObjectColumns(ApplicationDataObject $object, $columns = array()) { $columns_csv = "'" . implode("','", $columns) . "'"; return SearchableObjects::delete(array('`rel_object_id` = ? AND `column_name` in (' . $columns_csv . ')', $object->getObjectId())); }
/** * Clear all attachments by object * * @param ApplicationDataObject * @return boolean */ static function clearAttachmentsByObject(ApplicationDataObject $object) { return self::delete(array('`rel_object_manager` = ? AND `rel_object_id` = ?', get_class($object->manager()), $object->getObjectId())); }
/** * Return all read objects ( ReadObjects) for specific object and user * * @param ProjectDataObject $object * @return array */ static function getReadByObject(ApplicationDataObject $object, int $user_id) { return self::findAll(array('conditions' => array('(`rel_object_manager` = ? and `rel_object_id` = ?) and `user_id` = ? and is_read = 1', get_class($object->manager()), $object->getObjectId(), $user_id), 'order' => '`created_on`')); // findAll }