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)