/** * Returns the list of incident types available. * * @param RemoteApi $client The connection resource * @param array $auth Array of authentication information (email, password) * @param integer $issue_id The issue ID * @param boolean $redeemed_only If this should only show items that have been redeemed. * @return array|string */ public function promptIncidentTypes($client, $auth, $issue_id, $redeemed_only = false) { $types = $client->getIncidentTypes($auth[0], $auth[1], $issue_id, $redeemed_only); if (count($types) < 1) { if ($redeemed_only) { self::quit('No incident types have been redeemed for this issue'); } else { self::quit('All incident types have already been redeemed for this issue'); } } $prompt = 'Please enter a comma seperated list of incident types to '; if ($redeemed_only) { $prompt .= 'un'; } $prompt .= "redeem for this issue.\n"; foreach ($types as $id => $data) { $prompt .= sprintf(" [%s] => %s (Total: %s; Left: %s)\n", $id, $data['title'], $data['total'], $data['total'] - $data['redeemed']); } $requested_types = CLI_Misc::prompt($prompt, false); $requested_types = explode(',', $requested_types); if (count($requested_types) < 1) { self::quit('Please enter a comma seperated list of issue types'); } $type_keys = array_keys($types); foreach ($requested_types as $type_id) { if (!in_array($type_id, $type_keys)) { self::quit("Input '{$type_id}' is not a valid incident type"); } } return $requested_types; }