mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2025-12-24 05:57:45 -05:00
- add an enum to handle hook types (enum are available since PHP 8.1) - change hook calls from string value to enum value
66 lines
1.7 KiB
PHP
66 lines
1.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Represents a view mode option for the reading configuration
|
|
*/
|
|
final class FreshRSS_ViewMode {
|
|
private string $id;
|
|
private string $name;
|
|
private string $controller;
|
|
private string $action;
|
|
|
|
public function __construct(string $id, string $name, string $controller = 'index', string $action = '') {
|
|
$this->id = $id;
|
|
$this->name = $name;
|
|
$this->controller = $controller;
|
|
$this->action = $action ?: $id;
|
|
}
|
|
|
|
public function id(): string {
|
|
return $this->id;
|
|
}
|
|
|
|
public function name(): string {
|
|
return $this->name;
|
|
}
|
|
|
|
public function controller(): string {
|
|
return $this->controller;
|
|
}
|
|
|
|
public function action(): string {
|
|
return $this->action;
|
|
}
|
|
|
|
/**
|
|
* @return array<string,FreshRSS_ViewMode> Mode ID => FreshRSS_ViewMode
|
|
*/
|
|
public static function getDefaultModes(): array {
|
|
return [
|
|
'normal' => new self(id: 'normal', name: _t('conf.reading.view.normal'), controller: 'index', action: 'normal'),
|
|
'reader' => new self(id: 'reader', name: _t('conf.reading.view.reader'), controller: 'index', action: 'reader'),
|
|
'global' => new self(id: 'global', name: _t('conf.reading.view.global'), controller: 'index', action: 'global'),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array<string,FreshRSS_ViewMode> Mode ID => FreshRSS_ViewMode
|
|
*/
|
|
public static function getAllModes(): array {
|
|
$modes = self::getDefaultModes();
|
|
|
|
// Allow extensions to add their own view modes
|
|
$extensionModes = Minz_ExtensionManager::callHook(Minz_HookType::ViewModes, []);
|
|
if (is_array($extensionModes)) {
|
|
foreach ($extensionModes as $mode) {
|
|
if ($mode instanceof FreshRSS_ViewMode) {
|
|
$modes[$mode->id()] = $mode;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $modes;
|
|
}
|
|
}
|