| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | function HumanDate(?string $Time): string
|
|---|
| 4 | {
|
|---|
| 5 | return date('j.n.Y', $Time);
|
|---|
| 6 | }
|
|---|
| 7 |
|
|---|
| 8 | function GetMicrotime(): float
|
|---|
| 9 | {
|
|---|
| 10 | list($Usec, $Sec) = explode(' ', microtime());
|
|---|
| 11 | return (float)$Usec + (float)$Sec;
|
|---|
| 12 | }
|
|---|
| 13 |
|
|---|
| 14 | function MakeLink(string $Target, string $Title): string
|
|---|
| 15 | {
|
|---|
| 16 | return '<a href="'.$Target.'">'.$Title.'</a>';
|
|---|
| 17 | }
|
|---|
| 18 |
|
|---|
| 19 | function Table(array $Table): string
|
|---|
| 20 | {
|
|---|
| 21 | $Result = '<table class="BasicTable">';
|
|---|
| 22 | if (array_key_exists('Header', $Table))
|
|---|
| 23 | {
|
|---|
| 24 | $Result .= '<tr>';
|
|---|
| 25 | foreach ($Table['Header'] as $Item)
|
|---|
| 26 | $Result .= '<th>'.$Item.'</th>';
|
|---|
| 27 | $Result .= '</tr>';
|
|---|
| 28 | }
|
|---|
| 29 | foreach ($Table['Rows'] as $Row)
|
|---|
| 30 | {
|
|---|
| 31 | $Result .= '<tr>';
|
|---|
| 32 | foreach ($Row as $Index => $Item)
|
|---|
| 33 | {
|
|---|
| 34 | if ($Index == 0) $Class = ' class="Header"'; else $Class = '';
|
|---|
| 35 | $Result .= '<td'.$Class.' style="width: '.(floor(100 / count($Row))).'%">'.$Item.'</td>';
|
|---|
| 36 | }
|
|---|
| 37 | $Result .= '</tr>';
|
|---|
| 38 | }
|
|---|
| 39 | $Result .= '</table>';
|
|---|
| 40 | return $Result;
|
|---|
| 41 | }
|
|---|
| 42 |
|
|---|
| 43 | function ShowEditTable(string $ClassName, array $Values): string
|
|---|
| 44 | {
|
|---|
| 45 | global $Classes, $Types;
|
|---|
| 46 | $Class = $Classes[$ClassName];
|
|---|
| 47 | $Table = array(
|
|---|
| 48 | 'Header' => array('Položka', 'Hodnota'),
|
|---|
| 49 | 'Rows' => array(),
|
|---|
| 50 | );
|
|---|
| 51 |
|
|---|
| 52 | foreach ($Class as $Index => $Item)
|
|---|
| 53 | {
|
|---|
| 54 | if (!array_key_exists($Index, $Values)) $Values[$Index] = $Item['Default'];
|
|---|
| 55 | switch ($Item['Type'])
|
|---|
| 56 | {
|
|---|
| 57 | case 'Boolean':
|
|---|
| 58 | if ($Values[$Index] == 0) $Checked = ''; else $Checked = ' checked="yes"';
|
|---|
| 59 | $Edit = '<input type="checkbox" name="'.$Index.'"'.$Checked.'>';
|
|---|
| 60 | break;
|
|---|
| 61 | case 'String':
|
|---|
| 62 | $Edit = '<input type="text" name="'.$Index.'" value="'.$Values[$Index].'">';
|
|---|
| 63 | break;
|
|---|
| 64 | case 'Integer':
|
|---|
| 65 | $Edit = '<input type="text" name="'.$Index.'" value="'.$Values[$Index].'">';
|
|---|
| 66 | break;
|
|---|
| 67 | default:
|
|---|
| 68 | $Edit = 'Neznámý typ';
|
|---|
| 69 | }
|
|---|
| 70 | array_push($Table['Rows'], array($Item['Caption'], $Edit));
|
|---|
| 71 | }
|
|---|
| 72 | $Output = '<h3>Tabulka '.$ClassName.'</h3>'.Table($Table).MakeLink('?Operation=Add2', 'Přidat');
|
|---|
| 73 | return $Output;
|
|---|
| 74 | }
|
|---|
| 75 |
|
|---|
| 76 | function ProcessURL(): array
|
|---|
| 77 | {
|
|---|
| 78 | if (array_key_exists('REDIRECT_QUERY_STRING', $_SERVER))
|
|---|
| 79 | $PathString = $_SERVER['REDIRECT_QUERY_STRING'];
|
|---|
| 80 | else $PathString = '';
|
|---|
| 81 | if (substr($PathString, -1, 1) == '/') $PathString = substr($PathString, 0, -1);
|
|---|
| 82 | $PathItems = explode('/', $PathString);
|
|---|
| 83 | if (array_key_exists('REQUEST_URI', $_SERVER) and (strpos($_SERVER['REQUEST_URI'], '?') !== false))
|
|---|
| 84 | $_SERVER['QUERY_STRING'] = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?') + 1);
|
|---|
| 85 | else $_SERVER['QUERY_STRING'] = '';
|
|---|
| 86 | parse_str($_SERVER['QUERY_STRING'], $_GET);
|
|---|
| 87 | return $PathItems;
|
|---|
| 88 | }
|
|---|
| 89 |
|
|---|
| 90 | function GetQueryStringArray(string $QueryString): array
|
|---|
| 91 | {
|
|---|
| 92 | $Result = array();
|
|---|
| 93 | $Parts = explode('&', $QueryString);
|
|---|
| 94 | foreach ($Parts as $Part)
|
|---|
| 95 | {
|
|---|
| 96 | if ($Part != '')
|
|---|
| 97 | {
|
|---|
| 98 | if (!strpos($Part, '=')) $Part .= '=';
|
|---|
| 99 | $Item = explode('=', $Part);
|
|---|
| 100 | $Result[$Item[0]] = $Item[1];
|
|---|
| 101 | }
|
|---|
| 102 | }
|
|---|
| 103 | return $Result;
|
|---|
| 104 | }
|
|---|
| 105 |
|
|---|
| 106 | function SetQueryStringArray(array $QueryStringArray): string
|
|---|
| 107 | {
|
|---|
| 108 | $Parts = array();
|
|---|
| 109 | foreach ($QueryStringArray as $Index => $Item)
|
|---|
| 110 | {
|
|---|
| 111 | $Parts[] = $Index.'='.$Item;
|
|---|
| 112 | }
|
|---|
| 113 | return implode('&', $Parts);
|
|---|
| 114 | }
|
|---|
| 115 |
|
|---|
| 116 | function GetRemoteAddress(): string
|
|---|
| 117 | {
|
|---|
| 118 | if (array_key_exists('REMOTE_ADDR', $_SERVER)) $IP = $_SERVER['REMOTE_ADDR'];
|
|---|
| 119 | else $IP = '0.0.0.0';
|
|---|
| 120 | return $IP;
|
|---|
| 121 | }
|
|---|