diff --git a/lib/midcom/config/test.php b/lib/midcom/config/test.php
index b43571bbe..eec2b980a 100644
--- a/lib/midcom/config/test.php
+++ b/lib/midcom/config/test.php
@@ -228,23 +228,11 @@ private function print_section(string $heading, array $messages)
foreach ($messages as $testname => $data) {
echo "
\n \n";
- switch ($data['result']) {
- case self::OK:
- echo " ";
- break;
-
- case self::WARNING:
- echo " ";
- break;
-
- case self::ERROR:
- echo " ";
- break;
-
- default:
- throw new midcom_error("Unknown error code {$data['result']}.");
- }
-
+ echo match ($data['result']) {
+ self::OK => " ",
+ self::WARNING => " ",
+ self::ERROR => " "
+ };
echo " {$testname} | \n";
echo " {$data['message']} | \n";
echo "
\n";
diff --git a/lib/midcom/helper/reflector/main.php b/lib/midcom/helper/reflector/main.php
index d51c7c923..fd3c8d4a0 100644
--- a/lib/midcom/helper/reflector/main.php
+++ b/lib/midcom/helper/reflector/main.php
@@ -204,30 +204,23 @@ private static function get_icon(string $object_class, string $object_baseclass,
self::$_cache[$mode . '_map'] ??= self::_get_icon_map($mode . '_magic', $mode === 'create_type' ? 'file-o' : 'file');
$map = self::$_cache[$mode . '_map'];
- switch (true) {
- case (isset($map[$object_class])):
- return $map[$object_class];
+ return match (true) {
+ isset($map[$object_class]) => $map[$object_class],
- case (isset($map[$object_baseclass])):
- return $map[$object_baseclass];
+ isset($map[$object_baseclass]) => $map[$object_baseclass],
- case (str_contains($object_class, 'person')):
- return $mode === 'create_type' ? 'user-o' : 'user';
+ str_contains($object_class, 'person') => $mode === 'create_type' ? 'user-o' : 'user',
- case (str_contains($object_class, 'event')):
- return 'calendar-o';
+ str_contains($object_class, 'event') => 'calendar-o',
- case (str_contains($object_class, 'member')):
- case (str_contains($object_class, 'organization')):
- case (str_contains($object_class, 'group')):
- return 'users';
+ str_contains($object_class, 'member'),
+ str_contains($object_class, 'organization'),
+ str_contains($object_class, 'group') => 'users',
- case (str_contains($object_class, 'element')):
- return 'file-code-o';
+ str_contains($object_class, 'element') => 'file-code-o',
- default:
- return $map['__default__'];
- }
+ default => $map['__default__']
+ };
}
/**
diff --git a/lib/midgard/admin/asgard/handler/object/attachments.php b/lib/midgard/admin/asgard/handler/object/attachments.php
index 33bd27254..df3a6012a 100644
--- a/lib/midgard/admin/asgard/handler/object/attachments.php
+++ b/lib/midgard/admin/asgard/handler/object/attachments.php
@@ -227,23 +227,12 @@ public function _handler_edit(Request $request, string $handler_id, string $guid
$data['attachment_text_types'] = $this->_config->get_array('attachment_text_types');
if (array_key_exists($this->_file->mimetype, $data['attachment_text_types'])) {
// Figure out correct syntax from MIME type
- switch (preg_replace('/.+?\//', '', $this->_file->mimetype)) {
- case 'css':
- $data['file_syntax'] = 'css';
- break;
-
- case 'html':
- $data['file_syntax'] = 'html';
- break;
-
- case 'x-javascript':
- case 'javascript':
- $data['file_syntax'] = 'javascript';
- break;
-
- default:
- $data['file_syntax'] = 'text';
- }
+ $data['file_syntax'] = match (preg_replace('/.+?\//', '', $this->_file->mimetype)) {
+ 'css' => 'css',
+ 'html' => 'html',
+ 'x-javascript', 'javascript' => 'javascript',
+ default => 'text'
+ };
}
midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data);
diff --git a/lib/midgard/admin/asgard/plugin.php b/lib/midgard/admin/asgard/plugin.php
index c051f6877..50911ab73 100644
--- a/lib/midgard/admin/asgard/plugin.php
+++ b/lib/midgard/admin/asgard/plugin.php
@@ -89,36 +89,19 @@ public static function bind_to_object(midcom_core_dbaobject $object, string $han
public static function set_pagetitle($object, string $handler_id, array &$data)
{
+ $l10n = midcom::get()->i18n->get_l10n('midgard.admin.asgard');
// Figure out correct title and language handling
- switch ($handler_id) {
- case 'object_edit':
- $title_string = midcom::get()->i18n->get_string('edit %s %s', 'midgard.admin.asgard');
- break;
- case 'object_metadata':
- $title_string = midcom::get()->i18n->get_string('metadata of %s %s', 'midgard.admin.asgard');
- break;
- case 'object_attachments':
- case 'object_attachments_edit':
- $title_string = midcom::get()->i18n->get_string('attachments of %s %s', 'midgard.admin.asgard');
- break;
- case 'object_parameters':
- $title_string = midcom::get()->i18n->get_string('parameters of %s %s', 'midgard.admin.asgard');
- break;
- case 'object_permissions':
- // Figure out label for the object's class
- $type = $data['object_reflector']->get_class_label();
- $title_string = sprintf(midcom::get()->i18n->get_string('permissions for %s %s', 'midgard.admin.asgard'), $type, $data['object_reflector']->get_object_label($object));
- break;
- case 'object_create':
- $title_string = sprintf(midcom::get()->i18n->get_string('create %s under %s', 'midgard.admin.asgard'), self::get_type_label($data['current_type']), '%s %s');
- break;
- case 'object_delete':
- $title_string = midcom::get()->i18n->get_string('delete %s %s', 'midgard.admin.asgard');
- break;
- default:
- $title_string = midcom::get()->i18n->get_string('%s %s', 'midgard.admin.asgard');
- break;
- }
+ $title_string = match ($handler_id) {
+ 'object_edit' => $l10n->get('edit %s %s'),
+ 'object_metadata' => $l10n->get('metadata of %s %s'),
+ 'object_attachments',
+ 'object_attachments_edit' => $l10n->get('attachments of %s %s'),
+ 'object_parameters' => $l10n->get('parameters of %s %s'),
+ 'object_permissions' => $l10n->get('permissions for %s %s'),
+ 'object_create' => sprintf($l10n->get('create %s under %s'), self::get_type_label($data['current_type']), '%s %s'),
+ 'object_delete' => $l10n->get('delete %s %s'),
+ default => $l10n->get('%s %s')
+ };
$label = $data['object_reflector']->get_object_label($object);
$type_label = self::get_type_label(get_class($object));
diff --git a/lib/midgard/admin/asgard/schemadb.php b/lib/midgard/admin/asgard/schemadb.php
index c728e74dd..c15faf381 100644
--- a/lib/midgard/admin/asgard/schemadb.php
+++ b/lib/midgard/admin/asgard/schemadb.php
@@ -216,25 +216,16 @@ private function _get_score(string $field) : int
$address_fields = $this->_config->get_array('object_address_fields');
$location_fields = $this->_config->get_array('object_location_fields');
- $score = 7;
-
- if ($this->reflector->get_midgard_type($field) == MGD_TYPE_LONGTEXT) {
- $score = 1;
- } elseif (in_array($field, $preferred_fields)) {
- $score = 0;
- } elseif ($this->reflector->is_link($field)) {
- $score = 2;
- } elseif (in_array($field, $timerange_fields)) {
- $score = 3;
- } elseif (in_array($field, $phone_fields)) {
- $score = 4;
- } elseif (in_array($field, $address_fields)) {
- $score = 5;
- } elseif (in_array($field, $location_fields)) {
- $score = 6;
- }
-
- return $score;
+ return match (true) {
+ $this->reflector->get_midgard_type($field) == MGD_TYPE_LONGTEXT => 1,
+ in_array($field, $preferred_fields) => 0,
+ $this->reflector->is_link($field) => 2,
+ in_array($field, $timerange_fields) => 3,
+ in_array($field, $phone_fields) => 4,
+ in_array($field, $address_fields) => 5,
+ in_array($field, $location_fields) => 6,
+ default => 7
+ };
}
public function sort_schema_fields(string $first, string $second) : int
@@ -251,20 +242,12 @@ public function sort_schema_fields(string $first, string $second) : int
|| $score1 > 6) {
return strnatcmp($first, $second);
}
- switch ($score1) {
- case 3:
- $type = 'timerange';
- break;
- case 4:
- $type = 'phone';
- break;
- case 5:
- $type = 'address';
- break;
- case 6:
- $type = 'location';
- break;
- }
+ $type = match ($score1) {
+ 3 => 'timerange',
+ 4 => 'phone',
+ 5 => 'address',
+ 6 => 'location'
+ };
$fields = $this->_config->get_array('object_' . $type . '_fields');
return array_search($first, $fields) <=> array_search($second, $fields);
}
diff --git a/lib/org/openpsa/helpers/handler/chooser.php b/lib/org/openpsa/helpers/handler/chooser.php
index 9c8083890..e946b667c 100644
--- a/lib/org/openpsa/helpers/handler/chooser.php
+++ b/lib/org/openpsa/helpers/handler/chooser.php
@@ -92,16 +92,10 @@ private function _load_component_node()
throw new midcom_error("Could not load node information for topic {$topic_guid}. Last error was: " . midcom_connection::get_error_string());
}
- switch ($this->_dbaclass) {
- case 'org_openpsa_contacts_person_dba':
- $title = 'person';
- break;
- case 'org_openpsa_products_product_group_dba':
- $title = 'product group';
- break;
- default:
- throw new midcom_error("The DBA class {$this->_dbaclass} is unsupported");
- }
+ $title = match ($this->_dbaclass) {
+ 'org_openpsa_contacts_person_dba' => 'person',
+ 'org_openpsa_products_product_group_dba' => 'product group'
+ };
$title = sprintf($this->_l10n_midcom->get('create %s'), $this->_i18n->get_string($title, $this->_node[MIDCOM_NAV_COMPONENT]));
midcom::get()->head->set_pagetitle($title);
}
@@ -111,18 +105,10 @@ private function _load_component_node()
*/
private function _get_schemadb_snippet() : string
{
- $config_key = 'schemadb';
-
- switch ($this->_dbaclass) {
- case 'org_openpsa_contacts_person_dba':
- $config_key .= '_person';
- break;
- case 'org_openpsa_products_product_group_dba':
- $config_key .= '_group';
- break;
- default:
- throw new midcom_error("The DBA class {$this->_dbaclass} is unsupported");
- }
+ $config_key = 'schemadb' . match ($this->_dbaclass) {
+ 'org_openpsa_contacts_person_dba' => '_person',
+ 'org_openpsa_products_product_group_dba' => '_group'
+ };
return $this->_node[MIDCOM_NAV_CONFIGURATION]->get($config_key);
}
diff --git a/lib/org/openpsa/invoices/status.php b/lib/org/openpsa/invoices/status.php
index 21a798d0d..6859b6fef 100644
--- a/lib/org/openpsa/invoices/status.php
+++ b/lib/org/openpsa/invoices/status.php
@@ -26,22 +26,13 @@ public function __construct(org_openpsa_invoices_invoice_dba $invoice)
public function get_current_status() : string
{
- switch ($this->invoice->get_status()) {
- case 'unsent':
- return $this->l10n->get('unsent');
-
- case 'open':
- return sprintf($this->l10n->get('due on %s'), $this->l10n->get_formatter()->date($this->invoice->due));
-
- case 'overdue':
- return '' . sprintf($this->l10n->get('overdue since %s'), $this->l10n->get_formatter()->date($this->invoice->due)) . '';
-
- case 'paid':
- return sprintf($this->l10n->get('paid on %s'), $this->l10n->get_formatter()->date($this->invoice->paid));
-
- case 'canceled':
- return sprintf($this->l10n->get('invoice canceled on %s'), $this->l10n->get_formatter()->date($this->invoice->paid));
- }
+ return match ($this->invoice->get_status()) {
+ 'unsent' => $this->l10n->get('unsent'),
+ 'open' => sprintf($this->l10n->get('due on %s'), $this->l10n->get_formatter()->date($this->invoice->due)),
+ 'overdue' => '' . sprintf($this->l10n->get('overdue since %s'), $this->l10n->get_formatter()->date($this->invoice->due)) . '',
+ 'paid' => sprintf($this->l10n->get('paid on %s'), $this->l10n->get_formatter()->date($this->invoice->paid)),
+ 'canceled' => sprintf($this->l10n->get('invoice canceled on %s'), $this->l10n->get_formatter()->date($this->invoice->paid))
+ };
}
public function get_status_class() : string
diff --git a/lib/org/openpsa/projects/handler/task/list.php b/lib/org/openpsa/projects/handler/task/list.php
index 17a80bdd8..d8eb9907c 100644
--- a/lib/org/openpsa/projects/handler/task/list.php
+++ b/lib/org/openpsa/projects/handler/task/list.php
@@ -107,26 +107,17 @@ public function _show_list(string $handler_id, array &$data)
private function get_status_type(org_openpsa_projects_task_dba $task) : string
{
- $type = 'closed';
$is_manager = $task->manager == midcom_connection::get_user();
- switch ($task->status) {
- case org_openpsa_projects_task_status_dba::PROPOSED:
- $type = ($is_manager) ? 'pending_accept' : 'proposed';
- break;
- case org_openpsa_projects_task_status_dba::STARTED:
- case org_openpsa_projects_task_status_dba::REOPENED:
- case org_openpsa_projects_task_status_dba::ACCEPTED:
- $type = 'current';
- break;
- case org_openpsa_projects_task_status_dba::DECLINED:
- $type = 'declined';
- break;
- case org_openpsa_projects_task_status_dba::COMPLETED:
- $type = ($is_manager) ? 'pending_approve' : 'completed';
- break;
- }
- return $type;
+ return match ($task->status) {
+ org_openpsa_projects_task_status_dba::PROPOSED => ($is_manager) ? 'pending_accept' : 'proposed',
+ org_openpsa_projects_task_status_dba::STARTED,
+ org_openpsa_projects_task_status_dba::REOPENED,
+ org_openpsa_projects_task_status_dba::ACCEPTED => 'current',
+ org_openpsa_projects_task_status_dba::DECLINED => 'declined',
+ org_openpsa_projects_task_status_dba::COMPLETED => ($is_manager) ? 'pending_approve' : 'completed',
+ default => 'closed'
+ };
}
private function render_workflow_controls(org_openpsa_projects_task_dba $task) : string
diff --git a/lib/org/openpsa/relatedto/handler/relatedto.php b/lib/org/openpsa/relatedto/handler/relatedto.php
index 25076855f..224148dc1 100644
--- a/lib/org/openpsa/relatedto/handler/relatedto.php
+++ b/lib/org/openpsa/relatedto/handler/relatedto.php
@@ -128,13 +128,11 @@ private function _get_object_links(bool $inbound) : array
*/
private function _get_object_links_sort_time(midcom_core_dbaobject $obj)
{
- switch (true) {
- case $obj instanceof org_openpsa_calendar_event_dba:
- case $obj instanceof org_openpsa_projects_task_dba:
- return $obj->start;
- default:
- return $obj->metadata->created;
- }
+ return match (true) {
+ $obj instanceof org_openpsa_calendar_event_dba,
+ $obj instanceof org_openpsa_projects_task_dba => $obj->start,
+ default => $obj->metadata->created
+ };
}
/**
@@ -197,30 +195,16 @@ private function _render_line(array $link, midcom_core_dbaobject &$other_obj)
$other_obj = new $link['class']($other_obj);
}
- switch ($link['class']) {
- case net_nemein_wiki_wikipage::class:
- $this->_render_line_wikipage($other_obj);
- break;
- case org_openpsa_calendar_event_dba::class:
- $this->_render_line_event($other_obj);
- break;
- case org_openpsa_projects_task_dba::class:
- case org_openpsa_projects_project::class:
- $this->_render_line_task($other_obj);
- break;
- case org_openpsa_documents_document_dba::class:
- $this->_render_line_document($other_obj);
- break;
- case org_openpsa_sales_salesproject_dba::class:
- $this->_render_line_salesproject($other_obj);
- break;
- case org_openpsa_invoices_invoice_dba::class:
- $this->_render_line_invoice($other_obj);
- break;
- default:
- $this->_render_line_default($link, $other_obj);
- break;
- }
+ match ($link['class']) {
+ net_nemein_wiki_wikipage::class => $this->_render_line_wikipage($other_obj),
+ org_openpsa_calendar_event_dba::class => $this->_render_line_event($other_obj),
+ org_openpsa_projects_task_dba::class,
+ org_openpsa_projects_project::class => $this->_render_line_task($other_obj),
+ org_openpsa_documents_document_dba::class => $this->_render_line_document($other_obj),
+ org_openpsa_sales_salesproject_dba::class => $this->_render_line_salesproject($other_obj),
+ org_openpsa_invoices_invoice_dba::class => $this->_render_line_invoice($other_obj),
+ default => $this->_render_line_default($link, $other_obj)
+ };
}
private function get_node_url(string $component)
diff --git a/lib/org/openpsa/sales/salesproject/deliverable.php b/lib/org/openpsa/sales/salesproject/deliverable.php
index a0c8342c5..def987d1b 100644
--- a/lib/org/openpsa/sales/salesproject/deliverable.php
+++ b/lib/org/openpsa/sales/salesproject/deliverable.php
@@ -101,21 +101,15 @@ private function _update_parent()
public function get_state() : string
{
- switch ($this->state) {
- case self::STATE_NEW:
- return 'proposed';
- case self::STATE_DECLINED:
- return 'declined';
- case self::STATE_ORDERED:
- return 'ordered';
- case self::STATE_STARTED:
- return 'started';
- case self::STATE_DELIVERED:
- return 'delivered';
- case self::STATE_INVOICED:
- return 'invoiced';
- }
- return '';
+ return match ($this->state) {
+ self::STATE_NEW => 'proposed',
+ self::STATE_DECLINED => 'declined',
+ self::STATE_ORDERED => 'ordered',
+ self::STATE_STARTED => 'started',
+ self::STATE_DELIVERED => 'delivered',
+ self::STATE_INVOICED => 'invoiced',
+ default => ''
+ };
}
/**
diff --git a/src/midcom/grid/provider.php b/src/midcom/grid/provider.php
index 3a83fa168..447428765 100644
--- a/src/midcom/grid/provider.php
+++ b/src/midcom/grid/provider.php
@@ -188,17 +188,10 @@ public function setup_grid()
public function render()
{
- switch ($this->_datatype) {
- case 'json':
- $this->_render_json();
- break;
- case 'local':
- $this->get_grid()->render();
- break;
- default:
- debug_add('Datatype ' . $this->_get_grid_option('datatype', 'json') . ' is not supported', MIDCOM_LOG_ERROR);
- throw new midcom_error('Unsupported datatype');
- }
+ match ($this->_datatype) {
+ 'json' => $this->_render_json(),
+ 'local' => $this->get_grid()->render()
+ };
}
private function _get_grid_option(string $key, $default = null)