contrib_todo_list-1.1.1/src/data/TodoState.php
src/data/TodoState.php
<?php
namespace Drupal\contrib_todo_list\data;
/**
* Class TodoState
*/
class TodoState {
const PENDING = 'pending';
const IN_PROGRESS = 'in-progress';
const COMPLETED = 'completed';
/**
* Define states mapping.
*/
private static function getStatesMapping(): array {
return [
self::PENDING => 'Pending',
self::IN_PROGRESS => 'In progress',
self::COMPLETED => 'Completed',
];
}
/**
* Get state constant from key word.
*
* @param string $key
*
* @return string
*/
public static function getStateFromKey(string $key): string {
return self::getStatesMapping()[$key] ?? self::PENDING;
}
/**
* Get available state keys.
*
* @return array
*/
public static function getStateKeys(): array {
return array_keys(self::getStatesMapping());
}
/**
* Get available state labels.
*
* @return array
*/
public static function getStateLabels(): array {
return array_values(self::getStatesMapping());
}
/**
* Get available states.
*
* @return array
*/
public static function getStates(): array {
return self::getStatesMapping();
}
/**
* Get key by label.
*
* @param string $label
*
* @return string
*/
public static function getKeyByLabel(string $label): string {
$states = array_flip(self::getStatesMapping());
return $states[$label] ?? self::PENDING;
}
}
