' . '

' . $title . '

'; if (empty($modules) && !is_array($modules)) { echo '

' . __('There are no modules.') . '

' . '
'; return null; } echo '
' . '' . '' . '' . '' . '' . ''; foreach (self::sort($modules) as $id => $module) { echo '' . '' . '' . '' . '' . ''; } echo '
' . __('Id') . '' . __('Version') . '' . __('Name') . '' . __('Root') . '
' . html::escapeHTML($module['version']) . '' . __(html::escapeHTML($module['name'])) . '' . dirname(path::real($module['root'], false)) . '
' . '

' . '

' . ( !empty($_REQUEST['redir']) ? form::hidden( ['redir'], html::escapeHTML($_REQUEST['redir']) ) : '' ) . form::hidden(['p'], 'licenseBootstrap') . form::hidden(['type'], $type) . form::hidden(['action'], 'addlicense') . '' . dcCore::app()->formNonce() . '

' . '
' . '
'; } protected static function sort($modules) { $sorter = []; foreach ($modules as $id => $module) { $sorter[$id] = $id; } array_multisort($sorter, SORT_ASC, $modules); return $modules; } }