client = new Redmine\Client($url, $apiKey); if ($impersonate == self::RI_IMPERSONATE) { $this->client->setImpersonateUser($user); } } function getProjectIdentifier($project_name) { $project_id = $this->client->project->getIdByName($project_name); $project = $this->client->project->show($project_id); return $project['project']['identifier']; } function getIssue($issue_id){ return $this->client->issue->show($issue_id); } function getStatuses(){ return $this->client->issue_status->all(); } function getIdByUsername($username){ $all_users = $this->client->user->all(['limit' => '500']); for ($i = 0; $i < count($all_users['users']); $i++) { $cur_name = $all_users['users'][$i]['firstname'] . ' ' . $all_users['users'][$i]['lastname']; $pos = strpos($cur_name, $username); if ($pos !== false) return $all_users['users'][$i]['id']; } return null; } function getDateAndTime($dateTime){ $dateTimeExploded = explode('T', $dateTime); $timeExploded = explode('Z', $dateTimeExploded[1]); return ['date' => $dateTimeExploded[0], 'time' => $timeExploded[0]]; } function getDatesTimesIssue($issue){ $created = $issue['issue']['created_on']; $updated = $issue['issue']['updated_on']; $closed = $issue['issue']['closed_on']; if($closed){ $closedTime = $this->getDateAndTime($closed); } else { $closedTime = $closed; } $dates_times = [ 'created' => $this->getDateAndTime($created), 'updated' => $this->getDateAndTime($updated), 'closed' => $closedTime, ]; return $dates_times; } function getPriorityColor($id_priority) { $all_prio = $this->client->issue_priority->all(); $normal_prio = 0; // Get the normal index and current index for ($i = 0; $i < count($all_prio['issue_priorities']); $i++) { $current_prio = $all_prio['issue_priorities'][$i]; if ($current_prio['is_default'] == 1) { $normal_prio = $i; } if($current_prio['id'] == $id_priority){ $index_prio = $i; } } $min_prio = 0; $low_prio = $normal_prio - 1; $high_prio = $normal_prio + 1; $critical_prio = count($all_prio['issue_priorities']) - 1; if($index_prio == $normal_prio) { $color_prio = 'success'; } elseif($index_prio == $min_prio) { $color_prio = 'info'; } elseif($index_prio < $normal_prio && $index_prio > $min_prio) { $color_prio = 'primary'; } elseif($index_prio > $normal_prio && $index_prio < $critical_prio) { $color_prio = 'warning'; } else { $color_prio = 'danger'; } return $color_prio; } function getIsClosedValue($statusId){ $statuses = $this->getStatuses(); for($i = 0; $i < count($statuses['issue_statuses']); $i++) { if($statuses['issue_statuses'][$i]['id'] == $statusId) { $isClosed = $statuses['issue_statuses'][$i]['is_closed']; } } return $isClosed; } }