Changeset 8 for trunk/Packages
- Timestamp:
- Jun 1, 2023, 12:18:18 AM (18 months ago)
- Location:
- trunk/Packages
- Files:
-
- 48 added
- 4 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/Common/Base.php
r1 r8 1 1 <?php 2 3 class System4 {5 /* @var Database */6 var $Database;7 8 function __construct()9 {10 $this->Database = new Database();11 }12 }13 2 14 3 class Base 15 4 { 16 /** @var Application */ 17 var $System; 18 /* @var Database */ 19 var $Database; 5 public System $System; 6 public Database $Database; 20 7 21 function __construct( Application$System)8 function __construct(System $System) 22 9 { 23 10 $this->System = &$System; 24 11 $this->Database = &$System->Database; 25 12 } 13 14 static function GetClassName() 15 { 16 return get_called_class(); 17 } 26 18 } 27 28 class Model extends Base29 {30 31 }32 33 class View extends Base34 {35 36 }37 38 class Controller extends Base39 {40 41 } -
trunk/Packages/Common/Common.php
r7 r8 11 11 include_once(dirname(__FILE__).'/Error.php'); 12 12 include_once(dirname(__FILE__).'/Base.php'); 13 include_once(dirname(__FILE__).'/Application.php'); 14 include_once(dirname(__FILE__).'/AppModule.php'); 13 include_once(dirname(__FILE__).'/View.php'); 14 include_once(dirname(__FILE__).'/Model.php'); 15 include_once(dirname(__FILE__).'/ModelDesc.php'); 16 include_once(dirname(__FILE__).'/Controller.php'); 17 include_once(dirname(__FILE__).'/System.php'); 18 include_once(dirname(__FILE__).'/Module.php'); 19 include_once(dirname(__FILE__).'/ModuleManager.php'); 20 include_once(dirname(__FILE__).'/ModelDef.php'); 15 21 include_once(dirname(__FILE__).'/Config.php'); 16 22 include_once(dirname(__FILE__).'/Page.php'); 17 23 include_once(dirname(__FILE__).'/Locale.php'); 18 24 include_once(dirname(__FILE__).'/Update.php'); 19 include_once(dirname(__FILE__).'/Setup.php');20 25 include_once(dirname(__FILE__).'/Table.php'); 21 include_once(dirname(__FILE__).'/Form/Form.php'); 26 include_once(dirname(__FILE__).'/Process.php'); 27 include_once(dirname(__FILE__).'/Generics.php'); 28 include_once(dirname(__FILE__).'/BigInt.php'); 29 include_once(dirname(__FILE__).'/Int128.php'); 30 include_once(dirname(__FILE__).'/Pdf.php'); 31 include_once(dirname(__FILE__).'/Paging.php'); 32 include_once(dirname(__FILE__).'/Modules/Setup.php'); 33 include_once(dirname(__FILE__).'/Modules/ModuleManager.php'); 22 34 23 35 class PackageCommon 24 36 { 25 var$Name;26 var$Version;27 var$ReleaseDate;28 var$License;29 var$Creator;30 var$Homepage;37 public string $Name; 38 public string $Version; 39 public int $ReleaseDate; 40 public string $License; 41 public string $Creator; 42 public string $Homepage; 31 43 32 44 function __construct() … … 34 46 $this->Name = 'Common'; 35 47 $this->Version = '1.2'; 36 $this->ReleaseDate = strtotime('20 16-01-22');48 $this->ReleaseDate = strtotime('2023-05-31'); 37 49 $this->Creator = 'Chronos'; 38 $this->License = 'GNU/GPL ';39 $this->Homepage = 'http ://svn.zdechov.net/svn/PHPlib/Common/';50 $this->License = 'GNU/GPLv3'; 51 $this->Homepage = 'https://svn.zdechov.net/PHPlib/Common/'; 40 52 } 41 53 } 42 43 class Paging44 {45 var $TotalCount;46 var $ItemPerPage;47 var $Around;48 var $SQLLimit;49 var $Page;50 51 function __construct(Application $System)52 {53 $this->ItemPerPage = $System->Config['Web']['ItemsPerPage'];54 $this->Around = $System->Config['Web']['VisiblePagingItems'];55 }56 57 function Show()58 {59 $QueryItems = GetQueryStringArray($_SERVER['QUERY_STRING']);60 61 $Result = '';62 if (array_key_exists('all', $QueryItems))63 {64 $PageCount = 1;65 $ItemPerPage = $this->TotalCount;66 } else67 {68 $ItemPerPage = $this->ItemPerPage;69 $Around = round($this->Around / 2);70 $PageCount = floor($this->TotalCount / $ItemPerPage) + 1;71 }72 73 if (!array_key_exists('Page', $_SESSION)) $_SESSION['Page'] = 0;74 if (array_key_exists('page', $_GET)) $_SESSION['Page'] = $_GET['page'] * 1;75 if ($_SESSION['Page'] < 0) $_SESSION['Page'] = 0;76 if ($_SESSION['Page'] >= $PageCount) $_SESSION['Page'] = $PageCount - 1;77 $CurrentPage = $_SESSION['Page'];78 79 $Result .= 'Počet položek: <strong>'.$this->TotalCount.'</strong> Stránky: ';80 81 $Result = '';82 if ($PageCount > 1)83 {84 if ($CurrentPage > 0)85 {86 $QueryItems['page'] = 0;87 $Result.= '<a href="?'.SetQueryStringArray($QueryItems).'"><<</a> ';88 $QueryItems['page'] = ($CurrentPage - 1);89 $Result.= '<a href="?'.SetQueryStringArray($QueryItems).'"><</a> ';90 }91 $PagesMax = $PageCount - 1;92 $PagesMin = 0;93 if ($PagesMax > ($CurrentPage + $Around)) $PagesMax = $CurrentPage + $Around;94 if ($PagesMin < ($CurrentPage - $Around))95 {96 $Result.= ' ... ';97 $PagesMin = $CurrentPage - $Around;98 }99 for ($i = $PagesMin; $i <= $PagesMax; $i++)100 {101 if ($i == $CurrentPage) $Result.= '<strong>'.($i + 1).'</strong> ';102 else {103 $QueryItems['page'] = $i;104 $Result .= '<a href="?'.SetQueryStringArray($QueryItems).'">'.($i + 1).'</a> ';105 }106 }107 if ($PagesMax < ($PageCount - 1)) $Result .= ' ... ';108 if ($CurrentPage < ($PageCount - 1))109 {110 $QueryItems['page'] = ($CurrentPage + 1);111 $Result.= '<a href="?'.SetQueryStringArray($QueryItems).'">></a> ';112 $QueryItems['page'] = ($PageCount - 1);113 $Result.= '<a href="?'.SetQueryStringArray($QueryItems).'">>></a>';114 }115 }116 $QueryItems['all'] = '1';117 if ($PageCount > 1) $Result.= ' <a href="?'.SetQueryStringArray($QueryItems).'">Vše</a>';118 119 $Result = '<div style="text-align: center">'.$Result.'</div>';120 $this->SQLLimit = ' LIMIT '.$CurrentPage * $ItemPerPage.', '.$ItemPerPage;121 $this->Page = $CurrentPage;122 return $Result;123 }124 } -
trunk/Packages/Common/Config.php
r7 r8 3 3 class Config 4 4 { 5 var$Data;5 public array $Data; 6 6 7 7 function __construct() … … 10 10 } 11 11 12 function ReadValue( $Name)12 function ReadValue(string $Name) 13 13 { 14 14 if (!is_array($Name)) $Name = explode('/', $Name); … … 22 22 } 23 23 24 function WriteValue( $Name, $Value)24 function WriteValue(string $Name, $Value) 25 25 { 26 26 if (!is_array($Name)) $Name = explode('/', $Name); … … 34 34 } 35 35 36 function LoadFromFile( $FileName)36 function LoadFromFile(string $FileName): void 37 37 { 38 38 $ConfigData = array(); … … 40 40 foreach ($this->Data as $Index => $Item) 41 41 { 42 if (array_key_exi ts($Index, $ConfigData))42 if (array_key_exists($Index, $ConfigData)) 43 43 $this->Data[$Index] = $ConfigData[$Index]; 44 44 } 45 45 } 46 46 47 function SaveToFile( $FileName)47 function SaveToFile(string $FileName): void 48 48 { 49 49 file_put_contents($FileName, "<?php \n\n\$ConfigData = ".var_export($this->Data, true).";\n"); 50 50 } 51 51 52 function GetAsArray() 52 function GetAsArray(): array 53 53 { 54 54 return $this->Data; -
trunk/Packages/Common/Database.php
r7 r8 2 2 3 3 // Extended database class 4 // Date: 2016-01-11 4 // Date: 2020-11-10 5 6 function microtime_float() 7 { 8 list($usec, $sec) = explode(" ", microtime()); 9 return (float)$usec + (float)$sec; 10 } 5 11 6 12 class DatabaseResult 7 13 { 8 var$PDOStatement;9 var$num_rows = 0;14 public PDOStatement $PDOStatement; 15 public int $num_rows = 0; 10 16 11 17 function fetch_assoc() … … 27 33 class Database 28 34 { 29 var $Prefix; 30 var $Functions; 31 var $Type; 32 var $PDO; 33 var $Error; 34 var $insert_id; 35 var $LastQuery; 36 var $ShowSQLError; 37 var $ShowSQLQuery; 38 var $LogSQLQuery; 39 var $LogFile; 35 public string $Prefix; 36 public array $Functions; 37 public string $Type; 38 public PDO $PDO; 39 public string $Error; 40 public string $insert_id; 41 public string $LastQuery; 42 public bool $ShowSQLError; 43 public bool $ShowSQLQuery; 44 public bool $LogSQLQuery; 45 public string $LogFile; 46 public string $Database; 40 47 41 48 function __construct() 42 49 { 43 50 $this->Prefix = ''; 44 $this->Functions = array('NOW( )', 'CURDATE()', 'CURTIME()', 'UUID()');51 $this->Functions = array('NOW(', 'CURDATE(', 'CURTIME(', 'UUID(', 'SHA1('); 45 52 $this->Type = 'mysql'; // mysql, pgsql 46 53 $this->Error = ''; … … 50 57 $this->LogSQLQuery = false; 51 58 $this->LogFile = dirname(__FILE__).'/../../Query.log'; 52 } 53 54 function Connect($Host, $User, $Password, $Database) 59 $this->Database = ''; 60 } 61 62 function Connect(string $Host, string $User, string $Password, string $Database): void 55 63 { 56 64 if ($this->Type == 'mysql') $ConnectionString = 'mysql:host='.$Host.';dbname='.$Database; 57 65 else if ($this->Type == 'pgsql') $ConnectionString = 'pgsql:dbname='.$Database.';host='.$Host; 58 66 else $ConnectionString = ''; 67 $this->Database = $Database; 59 68 try { 60 69 $this->PDO = new PDO($ConnectionString, $User, $Password); 61 62 70 } catch (Exception $E) 63 71 { … … 67 75 } 68 76 69 function Disconnect() 77 function Disconnect(): void 70 78 { 71 79 unset($this->PDO); 72 80 } 73 81 74 function Connected() 82 function Connected(): bool 75 83 { 76 84 return isset($this->PDO); 77 85 } 78 86 79 function select_db( $Database)87 function select_db(string $Database) 80 88 { 81 89 $this->query('USE `'.$Database.'`'); 82 90 } 83 91 84 function query($Query) 92 function query($Query): DatabaseResult 85 93 { 86 94 if (!$this->Connected()) throw new Exception(T('Not connected to database')); 87 if (($this->ShowSQLQuery == true) or ($this->LogSQLQuery == true)) $QueryStartTime = microtime ();95 if (($this->ShowSQLQuery == true) or ($this->LogSQLQuery == true)) $QueryStartTime = microtime_float(); 88 96 $this->LastQuery = $Query; 89 97 if (($this->ShowSQLQuery == true) or ($this->LogSQLQuery == true)) 90 $Duration = ' ; '.round(microtime() - $QueryStartTime, 4). ' s'; 91 if ($this->LogSQLQuery == true) 98 { 99 $Time = round(microtime_float() - $QueryStartTime, 4); 100 $Duration = ' ; '.$Time. ' s'; 101 } 102 if (($this->LogSQLQuery == true) and ($Time != 0)) 92 103 file_put_contents($this->LogFile, $Query.$Duration."\n", FILE_APPEND); 93 104 if ($this->ShowSQLQuery == true) … … 95 106 'padding-bottom: 3px; padding-top: 3px; font-size: 12px; font-family: Arial;">'.$Query.$Duration.'</div>'."\n"); 96 107 $Result = new DatabaseResult(); 97 $Result->PDOStatement = $this->PDO->query($Query); 98 if ($Result->PDOStatement) 99 { 100 $Result->num_rows = $Result->PDOStatement->rowCount(); 108 $Statement = $this->PDO->query($Query); 109 if ($Statement) 110 { 111 $Result->PDOStatement = $Statement; 112 $Result->num_rows = $Statement->rowCount(); 101 113 $this->insert_id = $this->PDO->lastInsertId(); 102 114 } else 103 115 { 104 $ this->Error = $this->PDO->errorInfo();105 $this->Error = $ this->Error[2];116 $Error = $this->PDO->errorInfo(); 117 $this->Error = $Error[2]; 106 118 if (($this->Error != '') and ($this->ShowSQLError == true)) 107 119 echo('<div><strong>SQL Error: </strong>'.$this->Error.'<br />'.$Query.'</div>'); … … 111 123 } 112 124 113 function select( $Table, $What = '*', $Condition = 1)125 function select(string $Table, string $What = '*', string $Condition = '1'): DatabaseResult 114 126 { 115 127 return $this->query('SELECT '.$What.' FROM `'.$this->Prefix.$Table.'` WHERE '.$Condition); 116 128 } 117 129 118 function delete( $Table, $Condition)130 function delete(string $Table, string $Condition): void 119 131 { 120 132 $this->query('DELETE FROM `'.$this->Prefix.$Table.'` WHERE '.$Condition); 121 133 } 122 134 123 function insert($Table, $Data) 135 function insert(string $Table, array $Data): int 136 { 137 $this->query($this->GetInsert($Table, $Data)); 138 $this->insert_id = $this->PDO->lastInsertId(); 139 return $this->insert_id; 140 } 141 142 function IsFunction(string $Text): bool 143 { 144 $Pos = strpos($Text, '('); 145 return ($Pos !== false) && in_array(substr($Text, 0, $Pos + 1), $this->Functions); 146 } 147 148 function GetInsert(string $Table, array $Data): string 124 149 { 125 150 $Name = ''; … … 128 153 { 129 154 $Name .= ',`'.$Key.'`'; 130 if (!in_array($Value, $this->Functions)) 155 if (is_null($Value)) $Value = 'NULL'; 156 else if (!$this->IsFunction($Value)) 131 157 { 132 if (is_null($Value)) $Value = 'NULL'; 133 else $Value = $this->PDO->quote($Value); 158 $Value = $this->PDO->quote($Value); 134 159 } 135 160 $Values .= ','.$Value; … … 137 162 $Name = substr($Name, 1); 138 163 $Values = substr($Values, 1); 139 $this->query('INSERT INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'); 140 $this->insert_id = $this->PDO->lastInsertId(); 141 } 142 143 function update($Table, $Condition, $Data) 164 return 'INSERT INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'; 165 } 166 167 function update(string $Table, string $Condition, array $Data): void 168 { 169 $this->query($this->GetUpdate($Table, $Condition, $Data)); 170 } 171 172 function GetUpdate(string $Table, string $Condition, array $Data): string 144 173 { 145 174 $Values = ''; 146 175 foreach ($Data as $Key => $Value) 147 176 { 148 if (!in_array($Value, $this->Functions)) 177 if (is_null($Value)) $Value = 'NULL'; 178 else if (!$this->IsFunction($Value)) 149 179 { 150 if (is_null($Value)) $Value = 'NULL'; 151 else $Value = $this->PDO->quote($Value); 180 $Value = $this->PDO->quote($Value); 152 181 } 153 182 $Values .= ', `'.$Key.'`='.$Value; 154 183 } 155 184 $Values = substr($Values, 2); 156 $this->query('UPDATE `'.$this->Prefix.$Table.'` SET '.$Values.' WHERE ('.$Condition.')');157 } 158 159 function replace( $Table, $Data)185 return 'UPDATE `'.$this->Prefix.$Table.'` SET '.$Values.' WHERE ('.$Condition.')'; 186 } 187 188 function replace(string $Table, array $Data): void 160 189 { 161 190 $Name = ''; … … 163 192 foreach ($Data as $Key => $Value) 164 193 { 165 if (!in_array($Value, $this->Functions)) 194 if (is_null($Value)) $Value = 'NULL'; 195 else if (!$this->IsFunction($Value)) 166 196 { 167 if (is_null($Value)) $Value = 'NULL'; 168 else $Value = $this->PDO->quote($Value); 197 $Value = $this->PDO->quote($Value); 169 198 } 170 199 $Name .= ',`'.$Key.'`'; … … 173 202 $Name = substr($Name, 1); 174 203 $Values = substr($Values, 1); 175 //echo('REPLACE INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES ('.$Values.')<br />');176 204 $this->query('REPLACE INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'); 177 //echo($this->error().'<br>'); 178 } 179 180 function charset($Charset) 205 } 206 207 function charset(string $Charset): void 181 208 { 182 209 $this->query('SET NAMES "'.$Charset.'"'); 183 210 } 184 211 185 function real_escape_string( $Text)212 function real_escape_string(string $Text): string 186 213 { 187 214 return addslashes($Text); 188 215 } 189 216 190 function quote( $Text)217 function quote(string $Text): string 191 218 { 192 219 return $this->PDO->quote($Text); 193 220 } 194 221 195 public function __sleep() 222 public function __sleep(): array 196 223 { 197 224 return array('LastQuery'); 198 225 } 199 226 200 public function __wakeup() 201 { 227 public function __wakeup(): void 228 { 229 } 230 231 public function Transaction(array $Queries): void 232 { 233 $this->PDO->beginTransaction(); 234 foreach ($Queries as $Query) 235 { 236 $Statement = $this->PDO->prepare($Query); 237 $Statement->execute(); 238 } 239 $this->PDO->commit(); 240 } 241 242 public function TableExists(string $Name): bool 243 { 244 $DbResult = $this->query('SELECT * FROM information_schema.tables WHERE table_schema = "'.$this->Database. 245 '" AND table_name = "'.$Name.'" LIMIT 1'); 246 return $DbResult->num_rows != 0; 202 247 } 203 248 } -
trunk/Packages/Common/Error.php
r7 r8 3 3 class ErrorHandler 4 4 { 5 var$Encoding;6 var$ShowError;7 var$UserErrors;8 var$OnError;5 public string $Encoding; 6 public bool $ShowError; 7 public int $UserErrors; 8 public $OnError; 9 9 10 10 function __construct() … … 16 16 } 17 17 18 function Start() 18 function Start(): void 19 19 { 20 20 set_error_handler(array($this, 'ErrorHandler')); … … 22 22 } 23 23 24 function Stop() 24 function Stop(): void 25 25 { 26 26 restore_error_handler(); … … 28 28 } 29 29 30 function ErrorHandler( $Number, $Message, $FileName, $LineNumber, $Variables)30 function ErrorHandler(int $Number, string $Message, string $FileName, int $LineNumber, array $Variables = array()): bool 31 31 { 32 32 $ErrorType = array … … 63 63 } 64 64 65 function ExceptionHandler(Throwable $Exception) 65 function ExceptionHandler(Throwable $Exception): void 66 66 { 67 67 $Backtrace = $Exception->getTrace(); … … 75 75 } 76 76 77 function ShowDefaultError( $Message)77 function ShowDefaultError(string $Message): void 78 78 { 79 79 $Output = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>'."\n". … … 88 88 } 89 89 90 function Report( $Backtrace)90 function Report(array $Backtrace): void 91 91 { 92 92 $Date = date('Y-m-d H:i:s'); -
trunk/Packages/Common/Image.php
r7 r8 9 9 class Font 10 10 { 11 var$Size;12 var$FileName;13 var$Color;11 public int $Size; 12 public string $FileName; 13 public int $Color; 14 14 15 15 function __construct() … … 23 23 class Pen 24 24 { 25 var$Color;26 var$X;27 var$Y;25 public int $Color; 26 public int $X; 27 public int $Y; 28 28 29 29 function __construct() … … 38 38 class Brush 39 39 { 40 var$Color;40 public int $Color; 41 41 42 42 function __construct() … … 49 49 class Image 50 50 { 51 var $Image; 52 var $Type; 53 var $Font; 54 var $Pen; 51 public $Image; 52 public int $Type; 53 public Font $Font; 54 public Pen $Pen; 55 public Brush $Brush; 55 56 56 57 function __construct() … … 63 64 } 64 65 65 function SaveToFile( $FileName)66 function SaveToFile(string $FileName): void 66 67 { 67 68 if ($this->Type == IMAGETYPE_JPEG) … … 79 80 } 80 81 81 function LoadFromFile( $FileName)82 function LoadFromFile(string $FileName): void 82 83 { 83 84 $ImageInfo = getimagesize($FileName); … … 89 90 if ($this->Type == IMAGETYPE_GIF) 90 91 { 91 $this->Image = imagecreatefromgif ($FileName);92 $this->Image = imagecreatefromgif ($FileName); 92 93 } else 93 94 if ( $this->Type == IMAGETYPE_PNG) … … 97 98 } 98 99 99 function Output() 100 { 101 $this->SaveToFile(NULL); 102 } 103 104 function SetSize($Width, $Height) 100 function SetSize(int $Width, int $Height): void 105 101 { 106 102 $NewImage = imagecreatetruecolor($Width, $Height); … … 110 106 } 111 107 112 function GetWidth() 108 function GetWidth(): int 113 109 { 114 110 return imagesx($this->Image); 115 111 } 116 112 117 function GetHeight() 113 function GetHeight(): int 118 114 { 119 115 return imagesy($this->Image); 120 116 } 121 117 122 function TextOut( $X, $Y, $Text)118 function TextOut(int $X, int $Y, string $Text): void 123 119 { 124 120 imagettftext($this->Image, $this->Font->Size, 0, $X, $Y, $this->ConvertColor($this->Font->Color), $this->Font->FileName, $Text); 125 121 } 126 122 127 function ConvertColor( $Color)123 function ConvertColor(int $Color): int 128 124 { 129 125 return imagecolorallocate($this->Image, ($Color >> 16) & 0xff, ($Color >> 8) & 0xff, $Color & 0xff); 130 126 } 131 127 132 function FillRect( $X1, $Y1, $X2, $Y2)128 function FillRect(int $X1, int $Y1, int $X2, int $Y2): void 133 129 { 134 130 imagefilledrectangle($this->Image, $X1, $Y1, $X2, $Y2, $this->ConvertColor($this->Brush->Color)); 135 131 } 136 132 137 function Line( $X1, $Y1, $X2, $Y2)133 function Line(int $X1, int $Y1, int $X2, int $Y2): void 138 134 { 139 135 imageline($this->Image, $X1, $Y1, $X2, $Y2, $this->ConvertColor($this->Pen->Color)); -
trunk/Packages/Common/Locale.php
r7 r8 3 3 class LocaleText 4 4 { 5 var$Data;6 var$Code;7 var$Title;5 public array $Data; 6 public string $Code; 7 public string $Title; 8 8 9 9 function __construct() … … 14 14 } 15 15 16 function Load() 17 { 18 } 19 20 function Translate( $Text, $Group = '')16 function Load(): void 17 { 18 } 19 20 function Translate(string $Text, string $Group = ''): string 21 21 { 22 22 if (array_key_exists($Text, $this->Data[$Group]) and ($this->Data[$Group][$Text] != '')) … … 25 25 } 26 26 27 function TranslateReverse( $Text, $Group = '')27 function TranslateReverse(string $Text, string $Group = ''): string 28 28 { 29 29 $Key = array_search($Text, $this->Data[$Group]); … … 35 35 class LocaleFile extends Model 36 36 { 37 var$Texts;38 var$Dir;37 public LocaleText $Texts; 38 public string $Dir; 39 39 40 40 function __construct(System $System) … … 44 44 } 45 45 46 function Load( $Language)46 function Load(string $Language): void 47 47 { 48 48 $FileName = $this->Dir.'/'.$Language.'.php'; … … 55 55 } 56 56 57 function AnalyzeCode( $Path)57 function AnalyzeCode(string $Path): void 58 58 { 59 59 // Search for php files … … 75 75 $Previous = strtolower(substr($Content, strpos($Content, 'T(') - 1, 1)); 76 76 $Content = substr($Content, strpos($Content, 'T(') + 2); 77 $Ord = ord($Previous); 78 //echo($Ord.','); 77 $Ord = ord($Previous); 79 78 if (!(($Ord >= ord('a')) and ($Ord <= ord('z')))) 80 79 { … … 98 97 } 99 98 100 function SaveToFile( $FileName)99 function SaveToFile(string $FileName): void 101 100 { 102 101 $Content = '<?php'."\n". … … 119 118 } 120 119 121 function LoadFromDatabase( $Database, $LangCode)120 function LoadFromDatabase(Database $Database, string $LangCode): void 122 121 { 123 122 $DbResult = $Database->select('Language', '*', 'Code='.$Database->quote($LangCode)); … … 132 131 } 133 132 134 function SaveToDatabase( Database $Database, $LangCode)135 { 136 $DbResult = $ Database->select('Language', '*', 'Code='.$Database->quote($LangCode));133 function SaveToDatabase(string $LangCode): void 134 { 135 $DbResult = $this->Database->select('Language', '*', 'Code='.$this->Database->quote($LangCode)); 137 136 if ($DbResult->num_rows > 0) 138 137 { 139 138 $Language = $DbResult->fetch_assoc(); 140 $ Database->delete('Locale', '`Language`='.$Language['Id']);139 $this->Database->delete('Locale', '`Language`='.$Language['Id']); 141 140 foreach ($this->Texts->Data as $Index => $Item) 142 $ Database->query('INSERT INTO `Locale` (`Language`,`Original`,`Translated`) '.143 'VALUES('.$Language['Id'].','.$ Database->quote($Index).','.$Database->quote($Item).')');144 } 145 } 146 147 function UpdateToDatabase( Database $Database, $LangCode)148 { 149 $DbResult = $ Database->select('Language', '*', '`Code`='.$Database->quote($LangCode));141 $this->Database->query('INSERT INTO `Locale` (`Language`,`Original`,`Translated`) '. 142 'VALUES('.$Language['Id'].','.$this->Database->quote($Index).','.$this->Database->quote($Item).')'); 143 } 144 } 145 146 function UpdateToDatabase(string $LangCode): void 147 { 148 $DbResult = $this->Database->select('Language', '*', '`Code`='.$this->Database->quote($LangCode)); 150 149 if ($DbResult->num_rows > 0) 151 150 { … … 153 152 foreach ($this->Texts->Data as $Index => $Item) 154 153 { 155 $DbResult = $ Database->select('Locale', '*', '(`Original` ='.$Database->quote($Index).154 $DbResult = $this->Database->select('Locale', '*', '(`Original` ='.$this->Database->quote($Index). 156 155 ') AND (`Language`='.($Language['Id']).')'); 157 156 if ($DbResult->num_rows > 0) 158 $ Database->update('Locale', '(`Language`='.($Language['Id']).') AND '.159 '(`Original` ='.$ Database->quote($Index).')', array('Translated' => $Item));160 else $ Database->insert('Locale', array('Language' => $Language['Id'],157 $this->Database->update('Locale', '(`Language`='.($Language['Id']).') AND '. 158 '(`Original` ='.$this->Database->quote($Index).')', array('Translated' => $Item)); 159 else $this->Database->insert('Locale', array('Language' => $Language['Id'], 161 160 'Original' => $Index, 'Translated' => $Item)); 162 161 } … … 167 166 class LocaleManager extends Model 168 167 { 169 var$CurrentLocale;170 var$Codes;171 var$Dir;172 var$LangCode;173 var$DefaultLangCode;174 var$Available;168 public LocaleFile $CurrentLocale; 169 public array $Codes; 170 public string $Dir; 171 public string $LangCode; 172 public string $DefaultLangCode; 173 public array $Available; 175 174 176 175 function __construct(System $System) … … 182 181 $this->DefaultLangCode = 'en'; 183 182 $this->Available = array(); 184 } 185 186 function LoadAvailable() 183 $this->Dir = ''; 184 } 185 186 function LoadAvailable(): void 187 187 { 188 188 $this->Available = array(); … … 201 201 } 202 202 203 function UpdateAll( $Directory)203 function UpdateAll(string $Directory): void 204 204 { 205 205 $Locale = new LocaleFile($this->System); … … 222 222 if (!array_key_exists($Index, $Locale->Texts->Data)) 223 223 unset($FileLocale->Texts->Data[$Index]); 224 $FileLocale->UpdateToDatabase($ this->System->Database, $FileLocale->Texts->Code);224 $FileLocale->UpdateToDatabase($FileLocale->Texts->Code); 225 225 $FileName = $this->Dir.'/'.$FileLocale->Texts->Code.'.php'; 226 226 $FileLocale->SaveToFile($FileName); … … 230 230 } 231 231 232 function LoadLocale( $Code)232 function LoadLocale(string $Code): void 233 233 { 234 234 if (array_key_exists($Code, $this->Available)) … … 241 241 242 242 // Short named global translation function 243 function T( $Text, $Group = '')243 function T(string $Text, string $Group = ''): string 244 244 { 245 245 global $GlobalLocaleManager; -
trunk/Packages/Common/Mail.php
r7 r8 9 9 class Mail 10 10 { 11 var $Priorities; 12 var $Subject; 13 var $From; 14 var $Recipients; 15 var $Bodies; 16 var $Attachments; 17 var $AgentIdent; 18 var $Organization; 19 var $ReplyTo; 20 var $Headers; 11 public string $Subject; 12 public string $From; 13 public array $Recipients; 14 public array $Bodies; 15 public array $Attachments; 16 public string $AgentIdent; 17 public string $Organization; 18 public string $ReplyTo; 19 public array $Headers; 20 private array $Priorities; 21 private string $Boundary; 22 public bool $TestMode; 23 public string $SenderAddress; 24 public string $SenderName; 21 25 22 26 function __construct() … … 25 29 $this->Boundary = md5(date('r', time())); 26 30 $this->AgentIdent = 'PHP/Mail'; 31 $this->TestMode = false; 27 32 $this->Clear(); 28 33 } 29 34 30 function Clear() 35 function Clear(): void 31 36 { 32 37 $this->Bodies = array(); … … 41 46 } 42 47 43 function AddToCombined( $Address)48 function AddToCombined(string $Address): void 44 49 { 45 50 $this->Recipients[] = array('Address' => $Address, 'Type' => 'SendCombined'); 46 51 } 47 52 48 function AddTo( $Address, $Name)53 function AddTo(string $Address, string $Name): void 49 54 { 50 55 $this->Recipients[] = array('Address' => $Address, 'Name' => $Name, 'Type' => 'Send'); 51 56 } 52 57 53 function AddCc( $Address, $Name)58 function AddCc(string $Address, string $Name): void 54 59 { 55 60 $this->Recipients[] = array('Address' => $Address, 'Name' => $Name, 'Type' => 'Copy'); 56 61 } 57 62 58 function AddBcc( $Address, $Name)63 function AddBcc(string $Address, string $Name): void 59 64 { 60 65 $this->Recipients[] = array('Address' => $Address, 'Name' => $Name, 'Type' => 'HiddenCopy'); 61 66 } 62 67 63 function AddBody( $Content, $MimeType = 'text/plain', $Charset = 'utf-8')68 function AddBody(string $Content, string $MimeType = 'text/plain', string $Charset = 'utf-8'): void 64 69 { 65 70 $this->Bodies[] = array('Content' => $Content, 'Type' => strtolower($MimeType), … … 67 72 } 68 73 69 function Organization( $org)70 { 71 if (trim($org != '')) $this-> xheaders['Organization'] = $org;72 } 73 74 function Priority( $Priority)74 function Organization(string $org): void 75 { 76 if (trim($org != '')) $this->Headers['Organization'] = $org; 77 } 78 79 function Priority(int $Priority): bool 75 80 { 76 81 if (!intval($Priority)) return false; 77 82 78 if (!isset($this-> priorities[$Priority - 1])) return false;79 80 $this-> xheaders['X-Priority'] = $this->priorities[$Priority - 1];83 if (!isset($this->Priorities[$Priority - 1])) return false; 84 85 $this->Headers['X-Priority'] = $this->Priorities[$Priority - 1]; 81 86 return true; 82 87 } 83 88 84 function AttachFile($FileName, $FileType, $Disposition = DISPOSITION_ATTACHMENT) 89 function AttachFile($FileName, $FileType, $Disposition = DISPOSITION_ATTACHMENT): void 85 90 { 86 91 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, … … 88 93 } 89 94 90 function AttachData($FileName, $FileType, $Data, $Disposition = DISPOSITION_ATTACHMENT) 95 function AttachData($FileName, $FileType, $Data, $Disposition = DISPOSITION_ATTACHMENT): void 91 96 { 92 97 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, … … 94 99 } 95 100 96 function Send() 101 function Send(): bool 97 102 { 98 103 if (count($this->Bodies) == 0) throw new Exception(T('Mail message need at least one text body')); … … 132 137 if ($this->AgentIdent != '') $this->Headers['X-Mailer'] = $this->AgentIdent; 133 138 if ($this->ReplyTo != '') $this->Headers['Reply-To'] = $this->ReplyTo; 134 if ($this->From != '') $this->Headers['From'] = $this->From; 139 if ($this->From != '') 140 { 141 $IndexStart = strpos($this->From, '<'); 142 if ($IndexStart !== false) 143 { 144 $this->Headers['From'] = '=?utf-8?Q?'.quoted_printable_encode(trim(substr($this->From, 0, $IndexStart))).'?= '.substr($this->From, $IndexStart); 145 } else 146 { 147 $this->Headers['From'] = $this->From; 148 } 149 } 135 150 136 151 $Headers = ''; … … 144 159 if ($this->Subject == '') throw new Exception(T('Mail message missing Subject')); 145 160 146 147 $res = mail($To, $this->Subject, $Body, $Headers); 161 if ($this->TestMode) 162 { 163 echo('to: '.$To.', subject: '.$this->Subject.', body: '.$Body.', headers: '.$Headers); 164 $res = true; 165 } else 166 { 167 $res = mail($To, $this->Subject, $Body, $Headers); 168 } 148 169 return $res; 149 170 } 150 171 151 function ValidEmail( $Address)152 { 153 if ( ereg(".*<(.+)>", $Address, $regs)) $Address = $regs[1];154 if ( ereg("^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$", $Address))172 function ValidEmail(string $Address): bool 173 { 174 if (preg_match(".*<(.+)>", $Address, $regs)) $Address = $regs[1]; 175 if (preg_match("^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$", $Address)) 155 176 return true; 156 177 else return false; 157 178 } 158 179 159 function CheckAdresses( $Addresses)180 function CheckAdresses(array $Addresses): void 160 181 { 161 182 foreach ($Addresses as $Address) 162 183 { 163 184 if (!$this->ValidEmail($Address)) 164 throw new Exception(sprintf(T('Mail message invalid address %s'), $Address)); 165 } 166 } 167 168 private function ContentEncoding($Charset) 185 { 186 throw new Exception(sprintf(T('Mail message invalid address %s'), $Address)); 187 } 188 } 189 } 190 191 private function ContentEncoding($Charset): string 169 192 { 170 193 if ($Charset != CHARSET_ASCII) return '8bit'; … … 172 195 } 173 196 174 private function BuildAttachment($Body) 197 private function BuildAttachment($Body): string 175 198 { 176 199 if (count($this->Attachments) > 0) … … 206 229 } 207 230 208 private function BuildBody() 231 private function BuildBody(): string 209 232 { 210 233 $Result = ''; … … 219 242 $this->Headers['Content-Transfer-Encoding'] = $this->ContentEncoding($this->Bodies[0]['Charset']); 220 243 } 221 222 244 223 245 foreach ($this->Bodies as $Body) -
trunk/Packages/Common/NetworkAddress.php
r7 r8 1 1 <?php 2 3 define('IPV4_BIT_WIDTH', 32); 2 4 3 5 class NetworkAddressIPv4 4 6 { 5 var$Address;6 var$Prefix;7 public int $Address; 8 public int $Prefix; 7 9 8 10 function __construct() … … 12 14 } 13 15 14 function GetNetMask() 16 function GetNetMask(): int 15 17 { 16 return 0xffffffff ^ ((1 << (32- $this->Prefix)) - 1);18 return ((1 << IPV4_BIT_WIDTH) - 1) ^ ((1 << (IPV4_BIT_WIDTH - $this->Prefix)) - 1); 17 19 } 18 20 19 function AddressToString() 21 function AddressToString(): string 20 22 { 21 23 return implode('.', array(($this->Address >> 24) & 255, ($this->Address >> 16) & 255, ($this->Address >> 8) & 255, ($this->Address & 255))); 22 24 } 23 25 24 function AddressFromString( $Value)26 function AddressFromString(string $Value): void 25 27 { 26 28 $Parts = explode('.', $Value); … … 28 30 } 29 31 30 function GetRange() 32 function GetRange(): array 31 33 { 32 34 $From = new NetworkAddressIPv4(); 33 35 $From->Address = $this->Address; 34 $From->Prefix = 32;36 $From->Prefix = IPV4_BIT_WIDTH; 35 37 $HostMask = 0xffffffff ^ $this->GetNetMask(); 36 38 $To = new NetworkAddressIPv4(); 37 39 $To->Address = $From->Address + $HostMask; 38 $To->Prefix = 32;40 $To->Prefix = IPV4_BIT_WIDTH; 39 41 return array('From' => $From, 'To' => $To); 40 42 } 41 43 42 function ChangePrefix( $NewPrefix)44 function ChangePrefix(int $NewPrefix): void 43 45 { 44 46 $this->Prefix = $NewPrefix; 45 if ($this->Prefix > 32) $this->Prefix = 32;47 if ($this->Prefix > IPV4_BIT_WIDTH) $this->Prefix = IPV4_BIT_WIDTH; 46 48 if ($this->Prefix < 0) $this->Prefix = 0; 47 49 $this->Address = $this->Address & $this->GetNetMask(); 48 50 } 49 51 50 function Contain( $Address)52 function Contain(NetworkAddressIPv4 $Address): bool 51 53 { 52 54 $UpperNetmask = $this->GetNetMask(); 53 55 if (($this->Prefix < $Address->Prefix) and (($Address->Address & $UpperNetmask) == ($this->Address & $UpperNetmask))) $Result = true; 54 56 else $Result = false; 55 //echo($Address->AddressToString().'/'.$Address->Prefix.' in '.$this->AddressToString().'/'.$this->Prefix.' '.$Result."\n");56 57 return $Result; 57 58 } 58 59 } 59 60 61 define('IPV6_BIT_WIDTH', 128); 62 60 63 class NetworkAddressIPv6 61 64 { 62 var$Address;63 var$Prefix;65 public string $Address; 66 public int $Prefix; 64 67 65 68 function __construct() … … 69 72 } 70 73 71 function AddressToString() 74 function GetNetMask(): string 75 { 76 return Int128Xor(Int128Sub(Int128Shl(IntToInt128(1), IntToInt128(IPV6_BIT_WIDTH)), IntToInt128(1)), 77 Int128Sub(Int128Shl(IntToInt128(1), IntToInt128(IPV6_BIT_WIDTH - $this->Prefix)), IntToInt128(1))); 78 } 79 80 function AddressToString(): string 72 81 { 73 82 return inet_ntop($this->Address); 74 83 } 75 84 76 function AddressFromString( $Value)85 function AddressFromString(string $Value) 77 86 { 78 87 $this->Address = inet_pton($Value); 79 88 } 80 89 81 function GetOctets() 90 function ChangePrefix(int $NewPrefix): void 91 { 92 $this->Prefix = $NewPrefix; 93 if ($this->Prefix > IPV6_BIT_WIDTH) $this->Prefix = IPV6_BIT_WIDTH; 94 if ($this->Prefix < 0) $this->Prefix = 0; 95 $this->Address = Int128And($this->Address, $this->GetNetMask()); 96 } 97 98 function GetOctets(): array 82 99 { 83 100 $Result = array(); … … 85 102 foreach ($Data as $Item) 86 103 { 87 88 104 $Result[] = dechex($Item & 15); 89 105 $Result[] = dechex(($Item >> 4) & 15); … … 92 108 } 93 109 94 function EncodeMAC( $MAC)110 function EncodeMAC(string $MAC): void 95 111 { 96 112 $MAC = explode(':', $MAC); … … 107 123 } 108 124 125 function Contain(NetworkAddressIPv6 $Address): bool 126 { 127 $UpperNetmask = $this->GetNetMask(); 128 if (($this->Prefix < $Address->Prefix) and ((Int128Equal(Int128And($Address->Address, $UpperNetmask), Int128And($this->Address, $UpperNetmask))))) $Result = true; 129 else $Result = false; 130 return $Result; 131 } 109 132 } -
trunk/Packages/Common/Page.php
r7 r8 3 3 class Page extends View 4 4 { 5 var $Title; 6 var $ParentClass; 7 var $RawPage; 8 var $OnSystemMessage; 5 public string $Title; 6 public string $Description; 7 public string $ParentClass; 8 public bool $RawPage; 9 public $OnSystemMessage; 10 public string $Load; 11 public string $Unload; 9 12 10 13 function __construct(System $System) … … 13 16 $this->RawPage = false; 14 17 $this->OnSystemMessage = array(); 18 $this->Title = ""; 19 $this->Description = ""; 20 $this->ParentClass = ""; 15 21 } 16 22 17 function Show() 23 function Show(): string 18 24 { 19 25 return ''; 20 26 } 21 27 22 function GetOutput() 28 function GetOutput(): string 23 29 { 24 30 $Output = $this->Show(); … … 26 32 } 27 33 28 function SystemMessage( $Title, $Text)34 function SystemMessage(string $Title, string $Text): string 29 35 { 30 36 return call_user_func_array($this->OnSystemMessage, array($Title, $Text)); -
trunk/Packages/Common/PrefixMultiplier.php
r7 r8 72 72 class PrefixMultiplier 73 73 { 74 function TruncateDigits($Value, $Digits = 4) 74 function TruncateDigits($Value, $Digits = 4): string 75 75 { 76 76 for ($II = 2; $II > -6; $II--) … … 87 87 } 88 88 89 function Add($Value, $Unit, $Digits = 4, $PrefixType = 'Decimal') 89 function Add($Value, $Unit, $Digits = 4, $PrefixType = 'Decimal'): string 90 90 { 91 91 global $PrefixMultipliers; -
trunk/Packages/Common/RSS.php
r7 r8 3 3 class RSS 4 4 { 5 var$Charset;6 var$Title;7 var$Link;8 var$Description;9 var$WebmasterEmail;10 var$Items;5 public string $Charset; 6 public string $Title; 7 public string $Link; 8 public string $Description; 9 public string $WebmasterEmail; 10 public array $Items; 11 11 12 12 function __construct() 13 13 { 14 14 $this->Charset = 'utf8'; 15 $this->Title = ''; 16 $this->Link = ''; 17 $this->Description = ''; 18 $this->WebmasterEmail = ''; 15 19 $this->Items = array(); 16 20 } 17 21 18 function Generate() 22 function Generate(): string 19 23 { 20 24 $Result = '<?xml version="1.0" encoding="'.$this->Charset.'" ?>'."\n". //<? -
trunk/Packages/Common/Table.php
r7 r8 3 3 class Control 4 4 { 5 var$Name;5 public string $Name; 6 6 7 function Show() 7 function Show(): string 8 8 { 9 9 return ''; … … 13 13 class Table 14 14 { 15 function GetCell($Y, $X) 15 function GetCell($Y, $X): string 16 16 { 17 17 return ''; … … 26 26 } 27 27 28 function RowsCount() 28 function RowsCount(): int 29 29 { 30 30 return 0; … … 34 34 class TableMemory extends Table 35 35 { 36 var$Cells;36 public array $Cells; 37 37 38 function GetCell($Y, $X) 38 function GetCell($Y, $X): string 39 39 { 40 40 return $this->Cells[$Y][$X]; 41 41 } 42 42 43 function RowsCount() 43 function RowsCount(): int 44 44 { 45 45 return count($this->Cells); … … 49 49 class TableSQL extends Table 50 50 { 51 var$Query;52 var$Database;53 var$Cells;51 public string $Query; 52 public Database $Database; 53 public array $Cells; 54 54 55 function GetCell($Y, $X) 55 function GetCell($Y, $X): string 56 56 { 57 57 return $this->Cells[$Y][$X]; … … 73 73 } 74 74 75 function RowsCount() 75 function RowsCount(): int 76 76 { 77 77 return count($this->Cells); … … 81 81 class TableColumn 82 82 { 83 var$Name;84 var$Title;83 public string $Name; 84 public string $Title; 85 85 } 86 86 87 87 class VisualTable extends Control 88 88 { 89 var $Cells; 90 var $Columns; 91 var $OrderSQL; 92 var $OrderColumn; 93 var $OrderDirection; 94 var $OrderArrowImage; 95 var $DefaultColumn; 96 var $DefaultOrder; 97 var $Table; 98 var $Style; 89 public array $Cells; 90 public array $Columns; 91 public string $OrderSQL; 92 public string $OrderColumn; 93 public int $OrderDirection; 94 public array $OrderArrowImage; 95 public string $DefaultColumn; 96 public int $DefaultOrder; 97 public TableMemory $Table; 98 public string $Style; 99 private array $OrderDirSQL; 99 100 100 function __construct( Application $System)101 function __construct() 101 102 { 103 global $System; 104 102 105 $this->Columns = array(); 103 106 $this->Table = new TableMemory(); … … 124 127 } 125 128 126 function Show() 129 function Show(): string 127 130 { 128 131 $Output = '<table class="'.$this->Style.'">'; … … 146 149 } 147 150 148 function GetOrderHeader() 151 function GetOrderHeader(): string 149 152 { 150 153 if (array_key_exists('OrderCol', $_GET)) $_SESSION['OrderCol'] = $_GET['OrderCol']; -
trunk/Packages/Common/UTF8.php
r7 r8 526 526 } 527 527 528 function ToUTF8( $String, $Charset = 'iso2')528 function ToUTF8(string $String, string $Charset = 'iso2'): string 529 529 { 530 530 $Result = ''; … … 540 540 } 541 541 542 function FromUTF8( $String, $Charset = 'iso2')542 function FromUTF8(string $String, string $Charset = 'iso2'): string 543 543 { 544 544 $Result = ''; … … 546 546 for ($I = 0; $I < strlen($String); $I++) 547 547 { 548 if (ord($String {$I}) & 0x80) // UTF control character548 if (ord($String[$I]) & 0x80) // UTF control character 549 549 { 550 if (ord($String {$I}) & 0x40) // First550 if (ord($String[$I]) & 0x40) // First 551 551 { 552 552 if ($UTFPrefix != '') $Result .= chr(array_search($UTFPrefix, $this->CharTable[$Charset])); 553 $UTFPrefix = $String {$I};553 $UTFPrefix = $String[$I]; 554 554 } 555 else $UTFPrefix .= $String {$I}; // Next555 else $UTFPrefix .= $String[$I]; // Next 556 556 } else 557 557 { 558 558 if ($UTFPrefix != '') $Result .= chr(array_search($UTFPrefix, $this->CharTable[$Charset])); 559 559 $UTFPrefix = ''; 560 $Result .= $String {$I};560 $Result .= $String[$I]; 561 561 } 562 562 } -
trunk/Packages/Common/Update.php
r7 r8 3 3 class UpdateManager 4 4 { 5 var$Revision;6 var$Trace;7 var$VersionTable;8 /* @var Database */9 var $Database;10 var $InstallMethod;5 public int $Revision; 6 public array $Trace; 7 public string $VersionTable; 8 public Database $Database; 9 public string $InstallMethod; 10 public $InsertSampleDataMethod; 11 11 12 12 function __construct() … … 19 19 } 20 20 21 function GetDbVersion() 21 function GetDbVersion(): ?int 22 22 { 23 23 $DbResult = $this->Database->select($this->VersionTable, '*', 'Id=1'); … … 26 26 } 27 27 28 function IsInstalled() 28 function IsInstalled(): bool 29 29 { 30 30 $DbResult = $this->Database->query('SHOW TABLES LIKE "'.$this->VersionTable.'"'); … … 32 32 } 33 33 34 function IsUpToDate() 34 function IsUpToDate(): bool 35 35 { 36 36 return $this->Revision <= $this->GetDbVersion(); 37 37 } 38 38 39 function Upgrade() 39 function Upgrade(): string 40 40 { 41 41 $DbRevision = $this->GetDbVersion(); … … 43 43 while ($this->Revision > $DbRevision) 44 44 { 45 if (!array_key_exists($DbRevision, $this->Trace)) 46 die('Missing upgrade trace for revision '.$DbRevision); 45 47 $TraceItem = $this->Trace[$DbRevision]; 46 48 $Output .= 'Aktualizace na verzi '.$TraceItem['Revision'].':<br/>'; … … 57 59 } 58 60 59 function Install() 61 function Install(): void 60 62 { 61 63 $InstallMethod = $this->InstallMethod; 62 64 $InstallMethod($this); 63 $this->Update();64 65 } 65 66 66 function Uninstall() 67 function Uninstall(): void 67 68 { 68 69 69 } 70 70 71 function InsertSampleData() 71 function InsertSampleData(): void 72 72 { 73 73 $InstallMethod = $this->InsertSampleDataMethod; … … 75 75 } 76 76 77 function Execute( $Query)77 function Execute(string $Query): DatabaseResult 78 78 { 79 79 echo($Query.';<br/>');
Note:
See TracChangeset
for help on using the changeset viewer.