/** * 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; }