<?php declare(strict_types=1); /** * @copyright 2020 Ad Aures * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 * @link https://castopod.org/ */ namespace App\Models; use App\Entities\Language; use CodeIgniter\Model; class LanguageModel extends Model { /** * @var string */ protected $table = 'languages'; /** * @var string */ protected $primaryKey = 'id'; /** * @var list<string> */ protected $allowedFields = ['code', 'native_name']; /** * @var string */ protected $returnType = Language::class; /** * @var bool */ protected $useSoftDeletes = false; /** * @var bool */ protected $useTimestamps = false; /** * @return array<string, string> */ public function getLanguageOptions(): array { if (! ($options = cache('language_options'))) { $languages = $this->findAll(); $options = array_reduce( $languages, static function (array $result, Language $language): array { $result[] = [ 'value' => $language->code, 'label' => $language->native_name, ]; return $result; }, [], ); cache() ->save('language_options', $options, DECADE); } return $options; } }