public function get_best_fitting_rate($userID, $projectID, $activityID)
{
// validate input
if ($userID == null || !is_numeric($userID)) {
$userID = "NULL";
}
if ($projectID == null || !is_numeric($projectID)) {
$projectID = "NULL";
}
if ($activityID == null || !is_numeric($activityID)) {
$activityID = "NULL";
}
$query = "SELECT rate FROM " . $this->kga['server_prefix'] . "rates WHERE\n (userID = {$userID} OR userID IS NULL) AND\n (projectID = {$projectID} OR projectID IS NULL) AND\n (activityID = {$activityID} OR activityID IS NULL)\n ORDER BY userID DESC, activityID DESC, projectID DESC\n LIMIT 1;";
$result = $this->conn->Query($query);
if ($result === false) {
$this->logLastError('get_best_fitting_rate');
return false;
}
if ($this->conn->RowCount() == -1) {
// no error, but no best fitting rate, return default value
Kimai_Logger::logfile("get_best_fitting_rate - using default rate 0.00");
return 0.0;
}
$data = $this->conn->rowArray(0, MYSQLI_ASSOC);
return $data['rate'];
}