Changeset 738
- Timestamp:
- Apr 14, 2015, 10:20:16 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 128 edited
-
Application/FormClasses.php (modified) (1 diff)
-
Application/System.php (modified) (4 diffs)
-
Application/Version.php (modified) (1 diff)
-
Common/AppModule.php (modified) (26 diffs)
-
Common/Application.php (modified) (1 diff)
-
Common/Base.php (modified) (2 diffs)
-
Common/Config.php (modified) (1 diff)
-
Common/Form/Form.php (modified) (5 diffs)
-
Common/Form/Types/Base.php (modified) (2 diffs)
-
Common/Form/Types/Boolean.php (modified) (1 diff)
-
Common/Form/Types/Enumeration.php (modified) (2 diffs)
-
Common/Form/Types/Hidden.php (modified) (1 diff)
-
Common/Form/Types/IPv4Address.php (modified) (1 diff)
-
Common/Form/Types/IPv6Address.php (modified) (1 diff)
-
Common/Form/Types/Image.php (modified) (1 diff)
-
Common/Form/Types/Integer.php (modified) (1 diff)
-
Common/Form/Types/MacAddress.php (modified) (1 diff)
-
Common/Form/Types/Password.php (modified) (3 diffs)
-
Common/Form/Types/RandomHash.php (modified) (1 diff)
-
Common/Global.php (modified) (7 diffs)
-
Common/Image.php (modified) (6 diffs)
-
Common/Mail.php (modified) (14 diffs)
-
Common/NetworkAddress.php (modified) (1 diff)
-
Common/Page.php (modified) (12 diffs)
-
Common/RSS.php (modified) (5 diffs)
-
Common/Setup/FullInstall.php (modified) (2 diffs)
-
Common/Setup/Setup.php (modified) (4 diffs)
-
Common/Setup/Update.php (modified) (1 diff)
-
Common/Setup/Updates.php (modified) (28 diffs)
-
Common/Table.php (modified) (11 diffs)
-
Common/UTF8.php (modified) (3 diffs)
-
Common/VCL/Database.php (modified) (1 diff)
-
Modules/Chat/Chat.php (modified) (5 diffs)
-
Modules/Chat/irc_bot.php (modified) (4 diffs)
-
Modules/Customer/Customer.php (modified) (5 diffs)
-
Modules/EmailQueue/EmailQueue.php (modified) (1 diff)
-
Modules/Employee/Employee.php (modified) (1 diff)
-
Modules/Error/Error.php (modified) (3 diffs)
-
Modules/File/File.php (modified) (3 diffs)
-
Modules/File/MimeTypes.php (modified) (1 diff)
-
Modules/Finance/Bill.php (modified) (5 diffs)
-
Modules/Finance/Finance.php (modified) (13 diffs)
-
Modules/Finance/Import.php (modified) (8 diffs)
-
Modules/Finance/Manage.php (modified) (8 diffs)
-
Modules/Finance/UserState.php (modified) (4 diffs)
-
Modules/Finance/Zivnost.php (modified) (9 diffs)
-
Modules/FinanceBankAPI/FileImport.php (modified) (11 diffs)
-
Modules/FinanceBankAPI/FinanceBankAPI.php (modified) (3 diffs)
-
Modules/FinanceBankAPI/Fio.php (modified) (4 diffs)
-
Modules/FinanceBankAPI/FioAPI.php (modified) (10 diffs)
-
Modules/FinanceBankAPI/FioDemo.php (modified) (5 diffs)
-
Modules/FinanceBankAPI/GPC.php (modified) (4 diffs)
-
Modules/FinanceBankAPI/ImportFio.php (modified) (4 diffs)
-
Modules/FinanceBankAPI/ImportPS.php (modified) (4 diffs)
-
Modules/IS/IS.php (modified) (17 diffs)
-
Modules/Map/Map.php (modified) (10 diffs)
-
Modules/Map/MapAPI.php (modified) (6 diffs)
-
Modules/Meals/Meals.php (modified) (7 diffs)
-
Modules/Meteostation/Meteostation.php (modified) (8 diffs)
-
Modules/Network/HostList.php (modified) (2 diffs)
-
Modules/Network/Network.php (modified) (7 diffs)
-
Modules/Network/Subnet.php (modified) (2 diffs)
-
Modules/Network/UserHosts.php (modified) (2 diffs)
-
Modules/NetworkConfig/Generate.php (modified) (1 diff)
-
Modules/NetworkConfig/NetworkConfig.php (modified) (2 diffs)
-
Modules/NetworkConfigLinux/Generators/DHCP.php (modified) (1 diff)
-
Modules/NetworkConfigLinux/Generators/DNS.php (modified) (5 diffs)
-
Modules/NetworkConfigLinux/Generators/IPTables.php (modified) (3 diffs)
-
Modules/NetworkConfigLinux/Generators/NAT.php (modified) (3 diffs)
-
Modules/NetworkConfigLinux/Generators/TrafficShaping.php (modified) (11 diffs)
-
Modules/NetworkConfigLinux/NetworkConfigLinux.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/Generators/AddressPortability.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/Generators/Common.php (modified) (9 diffs)
-
Modules/NetworkConfigRouterOS/Generators/DHCP.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/Generators/FirewallFilter.php (modified) (3 diffs)
-
Modules/NetworkConfigRouterOS/Generators/FirewallMangle.php (modified) (6 diffs)
-
Modules/NetworkConfigRouterOS/Generators/FirewallNAT.php (modified) (6 diffs)
-
Modules/NetworkConfigRouterOS/Generators/Netwatch.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/Generators/NetwatchImport.php (modified) (4 diffs)
-
Modules/NetworkConfigRouterOS/Generators/Queue.php (modified) (3 diffs)
-
Modules/NetworkConfigRouterOS/Generators/Signal.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/NetworkConfigRouterOS.php (modified) (4 diffs)
-
Modules/NetworkConfigRouterOS/Routerboard2.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/RouterboardAPI.php (modified) (1 diff)
-
Modules/NetworkConfigRouterOS/SSH.php (modified) (2 diffs)
-
Modules/NetworkShare/NetworkShare.php (modified) (1 diff)
-
Modules/NetworkShare/SharePage.php (modified) (5 diffs)
-
Modules/NetworkShare/browse.php (modified) (12 diffs)
-
Modules/NetworkShare/firefox.php (modified) (1 diff)
-
Modules/NetworkShare/online.php (modified) (4 diffs)
-
Modules/NetworkShare/playlist.php (modified) (2 diffs)
-
Modules/NetworkShare/update.php (modified) (4 diffs)
-
Modules/NetworkTopology/NetworkTopology.php (modified) (6 diffs)
-
Modules/NetworkTopology/topologie-img.php (modified) (15 diffs)
-
Modules/NetworkTopology/topologie2.php (modified) (5 diffs)
-
Modules/News/ImportKinoVatra.php (modified) (2 diffs)
-
Modules/News/News.php (modified) (1 diff)
-
Modules/OpeningHours/OpeningHours.php (modified) (12 diffs)
-
Modules/Portal/Portal.php (modified) (1 diff)
-
Modules/RSS/RSS.php (modified) (3 diffs)
-
Modules/Scheduler/Scheduler.php (modified) (5 diffs)
-
Modules/Search/Search.php (modified) (5 diffs)
-
Modules/SpeedTest/SpeedTest.php (modified) (5 diffs)
-
Modules/SpeedTest/download.php (modified) (7 diffs)
-
Modules/SpeedTest/results.php (modified) (2 diffs)
-
Modules/Stock/Stock.php (modified) (7 diffs)
-
Modules/Subject/Subject.php (modified) (2 diffs)
-
Modules/System/System.php (modified) (23 diffs)
-
Modules/TV/TV.php (modified) (8 diffs)
-
Modules/Task/Task.php (modified) (1 diff)
-
Modules/TimeMeasure/Graph.php (modified) (1 diff)
-
Modules/TimeMeasure/Main.php (modified) (1 diff)
-
Modules/TimeMeasure/Measurement/MeasureClient.php (modified) (1 diff)
-
Modules/TimeMeasure/Measurement/WoW.php (modified) (2 diffs)
-
Modules/User/User.php (modified) (3 diffs)
-
Modules/User/UserPage.php (modified) (3 diffs)
-
Modules/VPS/VPS.php (modified) (1 diff)
-
Modules/WebCam/WebCam.php (modified) (4 diffs)
-
Modules/WebCam/webcam_refresh.php (modified) (1 diff)
-
Modules/Wiki/Wiki.php (modified) (3 diffs)
-
temp/Bills.php (modified) (1 diff)
-
temp/FioCVSToSQL.php (modified) (2 diffs)
-
temp/meteo/Image.php (modified) (8 diffs)
-
temp/meteo/load_meteo.php (modified) (5 diffs)
-
temp/product.php (modified) (2 diffs)
-
temp/renumbering.php (modified) (2 diffs)
-
temp/test.php (modified) (1 diff)
-
temp/user_mail.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Application/FormClasses.php
r736 r738 311 311 'Filter' => '1', 312 312 ), 313 'TFinanceInvoiceItemListInvoice' => array(313 'TFinanceInvoiceItemListInvoice' => array( 314 314 'Type' => 'ManyToOne', 315 315 'Table' => 'FinanceInvoiceItem', -
trunk/Application/System.php
r737 r738 83 83 function ShowPage() 84 84 { 85 /* @var $Page Page */85 /* @var $Page Page */ 86 86 $ClassName = $this->SearchPage($this->PathItems, $this->Pages); 87 87 if($ClassName != '') … … 118 118 function ShowAction($Id) 119 119 { 120 $Output = '';120 $Output = ''; 121 121 $DbResult = $this->Database->query('SELECT *, `ActionIcon`.`Name` AS `Icon` FROM `Action` '. 122 122 'LEFT JOIN `ActionIcon` ON `ActionIcon`.`Id` = `Action`.`Icon` '. … … 136 136 function RunCommon() 137 137 { 138 global $Database, $ScriptTimeStart, $ConfigFileName, $Mail, $Type,138 global $Database, $ScriptTimeStart, $ConfigFileName, $Mail, $Type, 139 139 $DatabaseRevision, $Config; 140 140 … … 195 195 function RunCommandLine() 196 196 { 197 global $argv;198 199 $this->RunCommon();200 if(count($argv) > 1)201 {197 global $argv; 198 199 $this->RunCommon(); 200 if(count($argv) > 1) 201 { 202 202 if(array_key_exists($argv[1], $this->CommandLine)) 203 203 { 204 $Command = $this->CommandLine[$argv[1]];205 if(is_string($Command['Callback'][0]))206 {207 $Class = new $Command['Callback'][0]($this);208 $Output = $Class->$Command['Callback'][1]();209 } else $Output = call_user_func($Command['Callback']);210 echo($Output);204 $Command = $this->CommandLine[$argv[1]]; 205 if(is_string($Command['Callback'][0])) 206 { 207 $Class = new $Command['Callback'][0]($this); 208 $Output = $Class->$Command['Callback'][1](); 209 } else $Output = call_user_func($Command['Callback']); 210 echo($Output); 211 211 } else echo('Command "'.$argv[1].'" not supported.'."\n"); 212 } else echo('No command was given as parameter'."\n");212 } else echo('No command was given as parameter'."\n"); 213 213 } 214 214 215 215 function RegisterCommandLine($Name, $Callback) 216 216 { 217 $this->CommandLine[$Name] = array('Name' => $Name, 'Callback' => $Callback);217 $this->CommandLine[$Name] = array('Name' => $Name, 'Callback' => $Callback); 218 218 } 219 219 220 220 function RegisterPageBar($Name) 221 221 { 222 $this->Bars[$Name] = array();222 $this->Bars[$Name] = array(); 223 223 } 224 224 225 225 function UnregisterPageBar($Name) 226 226 { 227 unset($this->Bars[$Name]);227 unset($this->Bars[$Name]); 228 228 } 229 229 230 230 function RegisterPageBarItem($BarName, $ItemName, $Callback) 231 231 { 232 $this->Bars[$BarName][$ItemName] = $Callback;232 $this->Bars[$BarName][$ItemName] = $Callback; 233 233 } 234 234 } -
trunk/Application/Version.php
r736 r738 1 1 <?php 2 2 3 $Revision = 73 6; // Subversion revision3 $Revision = 738; // Subversion revision 4 4 $DatabaseRevision = 736; // SQL structure revision 5 $ReleaseTime = strtotime('2015-04- 06');5 $ReleaseTime = strtotime('2015-04-14'); -
trunk/Common/AppModule.php
r731 r738 1 1 <?php 2 2 3 /* This implementation will not support installation from remote source. Just 3 /* This implementation will not support installation from remote source. Just 4 4 * installation of already presented modules mainly to persistence preparation. 5 5 */ … … 7 7 class ModuleType 8 8 { 9 const System = 0;10 const Normal = 1;11 const Application = 2;9 const System = 0; 10 const Normal = 1; 11 const Application = 2; 12 12 } 13 13 … … 40 40 var $Title; 41 41 var $Version; 42 var $License; 42 var $License; 43 43 var $Creator; 44 44 var $HomePage; … … 58 58 var $Manager; 59 59 var $OnChange; 60 60 61 61 function __construct(System $System) 62 62 { … … 74 74 $this->Type = ModuleType::Normal; 75 75 } 76 76 77 77 function Install() 78 78 { … … 82 82 $this->Manager->Perform($List, array(ModuleAction::Install), array(ModuleCondition::NotInstalled)); 83 83 $this->DoInstall(); 84 $this->Installed = true;85 $this->InstalledVersion = $this->Version;86 $this->Manager->Modules[$this->Name] = $this;87 } 88 84 $this->Installed = true; 85 $this->InstalledVersion = $this->Version; 86 $this->Manager->Modules[$this->Name] = $this; 87 } 88 89 89 function Uninstall() 90 90 { … … 97 97 $this->DoUninstall(); 98 98 } 99 99 100 100 function Upgrade() 101 101 { … … 106 106 $this->DoUpgrade(); 107 107 } 108 108 109 109 function Reinstall() 110 110 { … … 113 113 $this->Install(); 114 114 } 115 115 116 116 function Start() 117 117 { 118 118 if($this->Running) return; 119 if(!$this->Installed) return; 119 if(!$this->Installed) return; 120 120 $List = array(); 121 121 $this->Manager->EnumDependenciesCascade($this, $List, array(ModuleCondition::NotRunning)); 122 122 $this->Manager->Perform($List, array(ModuleAction::Start), array(ModuleCondition::NotRunning)); 123 123 $this->DoStart(); 124 $this->Running = true;125 } 126 124 $this->Running = true; 125 } 126 127 127 function Stop() 128 128 { 129 if(!$this->Running) return;129 if(!$this->Running) return; 130 130 $this->Running = false; 131 $List = array();132 $this->Manager->EnumSuperiorDependenciesCascade($this, $List, array(ModuleCondition::Running));131 $List = array(); 132 $this->Manager->EnumSuperiorDependenciesCascade($this, $List, array(ModuleCondition::Running)); 133 133 $this->Manager->Perform($List, array(ModuleAction::Stop), array(ModuleCondition::Running)); 134 $this->DoStop();135 } 136 134 $this->DoStop(); 135 } 136 137 137 function Restart() 138 138 { … … 140 140 $this->Start(); 141 141 } 142 142 143 143 function Enable() 144 144 { … … 150 150 $this->Enabled = true; 151 151 } 152 152 153 153 function Disable() 154 154 { … … 160 160 $this->Manager->Perform($List, array(ModuleAction::Disable), array(ModuleCondition::Enabled)); 161 161 } 162 162 163 163 protected function DoStart() 164 164 { 165 165 } 166 166 167 167 protected function DoStop() 168 { 168 { 169 169 } 170 170 … … 172 172 { 173 173 } 174 174 175 175 protected function DoUninstall() 176 176 { … … 179 179 180 180 /* Manage installed modules */ 181 class AppModuleManager 181 class AppModuleManager 182 182 { 183 183 var $Modules; … … 185 185 var $FileName; 186 186 var $OnLoadModules; 187 187 188 188 function __construct(System $System) 189 189 { 190 190 $this->Modules = array(); 191 191 $this->System = &$System; 192 $this->FileName = 'Config/Modules.php'; 193 } 194 192 $this->FileName = 'Config/Modules.php'; 193 } 194 195 195 function Perform($List, $Actions, $Conditions = array(ModuleCondition::All)) 196 196 { … … 217 217 } 218 218 } 219 219 220 220 function EnumDependenciesCascade($Module, &$List, $Conditions = array(ModuleCondition::All)) 221 221 { … … 236 236 } 237 237 } 238 238 239 239 function EnumSuperiorDependenciesCascade($Module, &$List, $Conditions = array(ModuleCondition::All)) 240 240 { 241 241 foreach($this->Modules as $RefModule) 242 242 { 243 if(in_array($Module->Name, $RefModule->Dependencies) and 243 if(in_array($Module->Name, $RefModule->Dependencies) and 244 244 (in_array(ModuleCondition::All, $Conditions) or 245 245 ($Module->Running and in_array(ModuleCondition::Running, $Conditions)) or … … 255 255 } 256 256 } 257 257 258 258 function Start() 259 259 { … … 262 262 $this->StartEnabled(); 263 263 } 264 264 265 265 function StartAll() 266 266 { 267 267 $this->Perform($this->Modules, array(ModuleAction::Start)); 268 268 } 269 269 270 270 function StartEnabled() 271 271 { … … 277 277 $this->Perform($this->Modules, array(ModuleAction::Stop)); 278 278 } 279 279 280 280 function UninstallAll() 281 281 { … … 283 283 $this->SaveState(); 284 284 } 285 285 286 286 function ModulePresent($Name) 287 287 { 288 288 return(array_key_exists($Name, $this->Modules)); 289 289 } 290 290 291 291 /* @return Module */ 292 292 function SearchModuleById($Id) … … 299 299 return(''); 300 300 } 301 301 302 302 function LoadState() 303 303 { 304 $ConfigModules = array();304 $ConfigModules = array(); 305 305 include($this->FileName); 306 306 foreach($ConfigModules as $Mod) … … 312 312 $this->Modules[$Mod['Name']]->Installed = $Mod['Installed']; 313 313 $this->Modules[$Mod['Name']]->InstalledVersion = $Mod['Version']; 314 } 315 } 316 } 317 314 } 315 } 316 } 317 318 318 function SaveState() 319 319 { … … 321 321 foreach($this->Modules as $Module) 322 322 { 323 $Data[] = array('Name' => $Module->Name, 'Enabled' => $Module->Enabled, 323 $Data[] = array('Name' => $Module->Name, 'Enabled' => $Module->Enabled, 324 324 'Version' => $Module->Version, 'Installed' => $Module->Installed); 325 325 } 326 326 file_put_contents($this->FileName, "<?php \n\n\$ConfigModules = ".var_export($Data, true).";\n"); 327 327 } 328 328 329 329 function RegisterModule(AppModule $Module) 330 330 { … … 333 333 $Module->OnChange = &$this->OnModuleChange; 334 334 } 335 335 336 336 function UnregisterModule(AppModule $Module) 337 337 { 338 338 unset($this->Modules[array_search($Module, $this->Modules)]); 339 339 } 340 340 341 341 function LoadModulesFromDir($Directory) 342 342 { 343 $List = scandir($Directory);343 $List = scandir($Directory); 344 344 foreach($List as $Item) 345 345 { … … 352 352 } 353 353 } 354 354 355 355 function LoadModules() 356 356 { 357 if(method_exists($this->OnLoadModules[0], $this->OnLoadModules[1]))357 if(method_exists($this->OnLoadModules[0], $this->OnLoadModules[1])) 358 358 $this->OnLoadModules(); 359 359 else $this->LoadModulesFromDir(dirname(__FILE__).'/../Modules'); -
trunk/Common/Application.php
r578 r738 3 3 class Application 4 4 { 5 var $Name;6 var $System;7 8 function Run()9 {10 11 }5 var $Name; 6 var $System; 7 8 function Run() 9 { 10 11 } 12 12 } -
trunk/Common/Base.php
r565 r738 11 11 { 12 12 $this->System = &$System; 13 $this->Database = &$System->Database; 13 $this->Database = &$System->Database; 14 14 } 15 15 } … … 17 17 class Model extends Base 18 18 { 19 19 20 20 } 21 21 22 22 class View extends Base 23 23 { 24 24 25 25 } 26 26 27 27 class Controller extends Base 28 28 { 29 29 30 30 } -
trunk/Common/Config.php
r593 r738 1 1 <?php 2 2 3 class Config 3 class Config 4 4 { 5 5 var $Data; 6 6 7 7 function __construct() 8 8 { 9 $this->Data = array();9 $this->Data = array(); 10 10 } 11 11 12 12 function ReadValue($Name) 13 13 { 14 if(!is_array($Name)) $Name = explode('/', $Name);15 $Last = array_pop($Name);16 $Data = &$this->Data;17 foreach($Name as $Item)18 {19 $Data = &$Data[$Item];20 }21 return($Data[$Last]); 14 if(!is_array($Name)) $Name = explode('/', $Name); 15 $Last = array_pop($Name); 16 $Data = &$this->Data; 17 foreach($Name as $Item) 18 { 19 $Data = &$Data[$Item]; 20 } 21 return($Data[$Last]); 22 22 } 23 23 24 24 function WriteValue($Name, $Value) 25 25 { 26 if(!is_array($Name)) $Name = explode('/', $Name);27 $Last = array_pop($Name);28 $Data = &$this->Data;29 foreach($Name as $Item)30 {31 $Data = &$Data[$Item];32 }26 if(!is_array($Name)) $Name = explode('/', $Name); 27 $Last = array_pop($Name); 28 $Data = &$this->Data; 29 foreach($Name as $Item) 30 { 31 $Data = &$Data[$Item]; 32 } 33 33 $Data[$Item] = $Value; 34 34 } 35 35 36 36 function LoadFromFile($FileName) 37 37 { 38 $ConfigData = array();38 $ConfigData = array(); 39 39 include $FileName; 40 40 foreach($this->Data as $Index => $Item) 41 41 { 42 if(array_key_exits($Index, $ConfigData))42 if(array_key_exits($Index, $ConfigData)) 43 43 $this->Data[$Index] = $ConfigData[$Index]; 44 44 } 45 } 46 45 } 46 47 47 function SaveToFile($FileName) 48 48 { 49 49 file_put_contents($FileName, "<?php \n\n\$ConfigData = ".var_export($this->Data, true).";\n"); 50 50 } 51 51 52 52 function GetAsArray() 53 53 { 54 return($this->Data);54 return($this->Data); 55 55 } 56 56 } -
trunk/Common/Form/Form.php
r737 r738 50 50 { 51 51 if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) 52 $this->Values[$Index] = $Item['Default'];52 $this->Values[$Index] = $Item['Default']; 53 53 } 54 54 } … … 62 62 function GetValue($Index, $Event = 'OnView') 63 63 { 64 $Item = $this->Definition['Items'][$Index];65 if(array_key_exists($Item['Type'], $this->FormManager->FormTypes))66 {67 if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList))68 $this->FormManager->Type->RegisterType($Item['Type'], '', $this->FormManager->FormTypes[$Item['Type']]);69 if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference')70 $UseType = 'OneToMany';71 else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration')72 $UseType = 'Enumeration';73 } else $UseType = $Item['Type'];74 return $this->FormManager->Type->ExecuteTypeEvent($UseType, $Event,64 $Item = $this->Definition['Items'][$Index]; 65 if(array_key_exists($Item['Type'], $this->FormManager->FormTypes)) 66 { 67 if(!array_key_exists($Item['Type'], $this->FormManager->Type->TypeDefinitionList)) 68 $this->FormManager->Type->RegisterType($Item['Type'], '', $this->FormManager->FormTypes[$Item['Type']]); 69 if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Reference') 70 $UseType = 'OneToMany'; 71 else if($this->FormManager->FormTypes[$Item['Type']]['Type'] == 'Enumeration') 72 $UseType = 'Enumeration'; 73 } else $UseType = $Item['Type']; 74 return $this->FormManager->Type->ExecuteTypeEvent($UseType, $Event, 75 75 array('Value' => $this->Values[$Index], 'Name' => $Index, 76 76 'Type' => $Item['Type'], 'Values' => $this->Values, … … 163 163 if(array_key_exists($Index, $this->ValuesValidate) and 164 164 $this->ValuesValidate[$Index]) { 165 $Format = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'GetValidationFormat', array());166 if($Format != '') $Caption .= '<br/><small>'.$Format.'</small>';167 $Caption = '<span style="color:red;">'.$Caption.'</span>';165 $Format = $this->FormManager->Type->ExecuteTypeEvent($UseType, 'GetValidationFormat', array()); 166 if($Format != '') $Caption .= '<br/><small>'.$Format.'</small>'; 167 $Caption = '<span style="color:red;">'.$Caption.'</span>'; 168 168 } 169 169 if(!$this->FormManager->Type->IsHidden($UseType)) … … 305 305 { 306 306 if(isset($Item['Default'])) { 307 if(isset($Item['Null']) and ($Item['Null'] == true))308 $Values[$Index] = null;309 else $Values[$Index] = $Item['Default'];307 if(isset($Item['Null']) and ($Item['Null'] == true)) 308 $Values[$Index] = null; 309 else $Values[$Index] = $Item['Default']; 310 310 } 311 311 } … … 342 342 if(!$this->FormManager->Type->ExecuteTypeEvent($UseType, 'Validate', 343 343 $Parameters)) { 344 $this->ValuesValidate[$Index] = true;345 $Valid = false;344 $this->ValuesValidate[$Index] = true; 345 $Valid = false; 346 346 } 347 347 } -
trunk/Common/Form/Types/Base.php
r606 r738 44 44 return(addslashes($Value)); 45 45 } 46 46 47 47 function OnFilterName($Item) 48 48 { 49 if(array_key_exists('SQL', $Item) and ($Item['SQL'] != '')) 49 if(array_key_exists('SQL', $Item) and ($Item['SQL'] != '')) 50 50 $SQL = '('.$Item['SQL'].') AS '; 51 51 else $SQL = ''; … … 55 55 function OnFilterNameQuery($Item) 56 56 { 57 if(array_key_exists('SQL', $Item) and ($Item['SQL'] != '')) 57 if(array_key_exists('SQL', $Item) and ($Item['SQL'] != '')) 58 58 $Output = '('.$Item['SQL'].') AS `'.$Item['Name'].'`, ('.$Item['SQL'].') AS `'.$Item['Name'].'_Filter`'; 59 59 else $Output = '`'.$Item['Name'].'`, `'.$Item['Name'].'` AS `'.$Item['Name'].'_Filter`'; 60 60 return($Output); 61 61 } 62 62 63 63 function Validate($Item) 64 64 { 65 return(true);65 return(true); 66 66 } 67 67 68 68 function GetValidationFormat() 69 69 { 70 return('');70 return(''); 71 71 } 72 72 } -
trunk/Common/Form/Types/Boolean.php
r548 r738 21 21 function OnLoad($Item) 22 22 { 23 if(array_key_exists($Item['Name'], $_POST)) return(1); 23 if(array_key_exists($Item['Name'], $_POST)) return(1); 24 24 else return(0); 25 25 } -
trunk/Common/Form/Types/Enumeration.php
r548 r738 18 18 $Type = $this->FormManager->Type->GetTypeDefinition($Item['Type']); 19 19 $Output = '<select name="'.$Item['Name'].'">'; 20 if(array_key_exists('Null', $Item) and $Item['Null']) 20 if(array_key_exists('Null', $Item) and $Item['Null']) 21 21 { 22 22 if($Item['Value'] == NULL) $Selected = ' selected="1"'; else $Selected = ''; … … 37 37 return($_POST[$Item['Name']]); 38 38 } 39 39 40 40 function OnLoadDb($Item) 41 41 { -
trunk/Common/Form/Types/Hidden.php
r548 r738 10 10 $this->Hidden = true; 11 11 } 12 12 13 13 function OnView($Item) 14 14 { -
trunk/Common/Form/Types/IPv4Address.php
r606 r738 21 21 return($_POST[$Item['Name']]); 22 22 } 23 23 24 24 function Validate($Item) 25 25 { 26 if($Item['Null'] and ($Item['Value'] == '')) return(true);27 return(filter_var($Item['Value'], FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4)));26 if($Item['Null'] and ($Item['Value'] == '')) return(true); 27 return(filter_var($Item['Value'], FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4))); 28 28 } 29 29 30 30 function GetValidationFormat() 31 31 { 32 return('x.x.x.x kde x je hodnota 0..255');33 } 32 return('x.x.x.x kde x je hodnota 0..255'); 33 } 34 34 } -
trunk/Common/Form/Types/IPv6Address.php
r606 r738 21 21 return($_POST[$Item['Name']]); 22 22 } 23 23 24 24 function Validate($Item) 25 25 { 26 if($Item['Null'] and ($Item['Value'] == '')) return(true);27 return(filter_var($Item['Value'], FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV6)));26 if($Item['Null'] and ($Item['Value'] == '')) return(true); 27 return(filter_var($Item['Value'], FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV6))); 28 28 } 29 29 30 30 function GetValidationFormat() 31 31 { 32 return('xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx kde x je hexa hodnota 0..f');32 return('xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx kde x je hexa hodnota 0..f'); 33 33 } 34 34 } -
trunk/Common/Form/Types/Image.php
r631 r738 2 2 3 3 class TypeImage extends TypeString 4 { 4 { 5 5 function OnView($Item) 6 6 { 7 7 global $System; 8 8 9 9 return('<img src="'.$System->Link('/images/favicons/'.$Item['Value']).'"/> '.$Item['Value']); 10 10 } -
trunk/Common/Form/Types/Integer.php
r611 r738 23 23 return($_POST[$Item['Name']]); 24 24 } 25 25 26 26 function Validate($Item) 27 27 { 28 if($Item['Null'] and ($Item['Value'] == '')) return(true);29 return(preg_match('/^\-*[0-9\.]+$/', $Item['Value']));28 if($Item['Null'] and ($Item['Value'] == '')) return(true); 29 return(preg_match('/^\-*[0-9\.]+$/', $Item['Value'])); 30 30 } 31 31 32 32 function GetValidationFormat() 33 33 { 34 return('číselná hodnota');35 } 34 return('číselná hodnota'); 35 } 36 36 } -
trunk/Common/Form/Types/MacAddress.php
r683 r738 32 32 function Validate($Item) 33 33 { 34 if($Item['Null'] and ($Item['Value'] == '')) return(true);35 return(preg_match('/^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$/', $Item['Value']));34 if($Item['Null'] and ($Item['Value'] == '')) return(true); 35 return(preg_match('/^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$/', $Item['Value'])); 36 36 } 37 37 38 38 function GetValidationFormat() 39 39 { 40 return('XX:XX:XX:XX:XX:XX kde X je hexa hodnota 0..F');40 return('XX:XX:XX:XX:XX:XX kde X je hexa hodnota 0..F'); 41 41 } 42 42 } -
trunk/Common/Form/Types/Password.php
r548 r738 27 27 $Result = $_POST[$Item['Name']]; 28 28 /* 29 if(!array_key_exists('SourceItemId', $Item)) $Result = sha1($_POST[$Item['Name']]); 29 if(!array_key_exists('SourceItemId', $Item)) $Result = sha1($_POST[$Item['Name']]); 30 30 else 31 31 { … … 41 41 return($Result); 42 42 } 43 43 44 44 function OnSaveDb($Item) 45 45 { 46 if($Item['Value'] == '') return(''); 46 if($Item['Value'] == '') return(''); 47 47 else { 48 48 $PasswordHash = new PasswordHash(); … … 50 50 } 51 51 } 52 52 53 53 function OnLoadDb($Item) 54 54 { -
trunk/Common/Form/Types/RandomHash.php
r548 r738 10 10 $this->Hidden = true; 11 11 } 12 12 13 13 function OnView($Item) 14 14 { -
trunk/Common/Global.php
r729 r738 25 25 26 26 $MonthNames = array('', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 27 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec');27 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'); 28 28 29 29 $UnitNames = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB'); … … 58 58 function HumanDate($Time) 59 59 { 60 if($Time != '') {60 if($Time != '') { 61 61 $Date = explode(' ', $Time); 62 62 $Parts = explode('-', $Date[0]); 63 63 if($Date != '0000-00-00') return(($Parts[2]*1).'.'.($Parts[1]*1).'.'.$Parts[0]); 64 64 else return(' '); 65 } else return(' ');65 } else return(' '); 66 66 } 67 67 … … 106 106 { 107 107 return(array( 108 'Year' => date('Y', $Time),109 'Month' => date('n', $Time),110 'Day' => date('j', $Time),111 'Hour' => date('h', $Time),112 'Minute' => date('i', $Time),113 'Second' => date('s', $Time)108 'Year' => date('Y', $Time), 109 'Month' => date('n', $Time), 110 'Day' => date('j', $Time), 111 'Hour' => date('h', $Time), 112 'Minute' => date('i', $Time), 113 'Second' => date('s', $Time) 114 114 )); 115 115 } … … 143 143 class Paging 144 144 { 145 var $TotalCount;146 var $ItemPerPage;147 var $Around;148 var $SQLLimit;149 var $Page;150 151 function __construct()152 {153 global $System;154 155 $this->ItemPerPage = $System->Config['Web']['ItemsPerPage'];156 $this->Around = $System->Config['Web']['VisiblePagingItems'];157 }145 var $TotalCount; 146 var $ItemPerPage; 147 var $Around; 148 var $SQLLimit; 149 var $Page; 150 151 function __construct() 152 { 153 global $System; 154 155 $this->ItemPerPage = $System->Config['Web']['ItemsPerPage']; 156 $this->Around = $System->Config['Web']['VisiblePagingItems']; 157 } 158 158 159 159 function Show() … … 356 356 function IsInternetAddr() 357 357 { 358 global $Config;359 360 $Result = true;358 global $Config; 359 360 $Result = true; 361 361 $RemoteAddr = GetRemoteAddress(); 362 362 foreach($Config['Web']['IntranetSubnets'] as $Subnet) … … 364 364 if(substr($RemoteAddr, 0, strlen($Subnet)) == $Subnet) 365 365 { 366 $Result = false;367 break;366 $Result = false; 367 break; 368 368 } 369 369 } … … 467 467 function pack_array($v, $a) 468 468 { 469 return call_user_func_array('pack', array_merge(array($v), (array)$a));470 } 471 469 return call_user_func_array('pack', array_merge(array($v), (array)$a)); 470 } 471 -
trunk/Common/Image.php
r548 r738 12 12 var $FileName; 13 13 var $Color; 14 15 function __construct() 14 15 function __construct() 16 16 { 17 17 $this->Color = COLOR_BLACK; … … 27 27 var $Y; 28 28 29 function __construct() 29 function __construct() 30 30 { 31 31 $this->Color = COLOR_BLACK; … … 40 40 var $Color; 41 41 42 function __construct() 42 function __construct() 43 43 { 44 44 $this->Color = COLOR_BLACK; … … 47 47 } 48 48 49 class Image 49 class Image 50 50 { 51 var $Image; 51 var $Image; 52 52 var $Type; 53 53 var $Font; 54 54 var $Pen; 55 55 56 56 function __construct() 57 57 { … … 59 59 $this->Type = IMAGETYPE_PNG; 60 60 $this->Pen = new Pen(); 61 $this->Font = new Font(); 62 $this->Brush = new Brush(); 61 $this->Font = new Font(); 62 $this->Brush = new Brush(); 63 63 } 64 64 65 65 function SaveToFile($FileName) 66 66 { 67 if($this->Type == IMAGETYPE_JPEG) 67 if($this->Type == IMAGETYPE_JPEG) 68 68 { 69 69 imagejpeg($this->Image, $FileName); 70 70 } else 71 if($this->Type == IMAGETYPE_GIF) 71 if($this->Type == IMAGETYPE_GIF) 72 72 { 73 73 imagegif($this->Image, $FileName); 74 74 } else 75 if($this->Type == IMAGETYPE_PNG) 75 if($this->Type == IMAGETYPE_PNG) 76 76 { 77 77 imagepng($this->Image, $FileName); 78 78 } 79 79 } 80 80 81 81 function LoadFromFile($FileName) 82 82 { 83 83 $ImageInfo = getimagesize($FileName); 84 84 $this->Type = $ImageInfo[2]; 85 if($this->Type == IMAGETYPE_JPEG) 85 if($this->Type == IMAGETYPE_JPEG) 86 86 { 87 87 $this->Image = imagecreatefromjpeg($FileName); 88 88 } else 89 if($this->Type == IMAGETYPE_GIF) 89 if($this->Type == IMAGETYPE_GIF) 90 90 { 91 91 $this->Image = imagecreatefromgif($FileName); 92 92 } else 93 if( $this->Type == IMAGETYPE_PNG) 93 if( $this->Type == IMAGETYPE_PNG) 94 94 { 95 95 $this->Image = imagecreatefrompng($FileName); 96 } 96 } 97 97 } 98 98 99 99 function Output() 100 100 { … … 103 103 104 104 function SetSize($Width, $Height) 105 { 105 { 106 106 $NewImage = imagecreatetruecolor($Width, $Height); 107 imagecopy($NewImage, $this->Image, 0, 0, 0, 0, $this->GetWidth(), $this->GetHeight()); 107 imagecopy($NewImage, $this->Image, 0, 0, 0, 0, $this->GetWidth(), $this->GetHeight()); 108 108 imagedestroy($this->Image); 109 109 $this->Image = $NewImage; 110 110 } 111 111 112 function GetWidth() 113 { 112 function GetWidth() 113 { 114 114 return(imagesx($this->Image)); 115 115 } 116 117 function GetHeight() 116 117 function GetHeight() 118 118 { 119 119 return(imagesy($this->Image)); 120 120 } 121 121 122 122 function TextOut($X, $Y, $Text) 123 123 { 124 124 imagettftext($this->Image, $this->Font->Size, 0, $X, $Y, $this->ConvertColor($this->Font->Color), $this->Font->FileName, $Text); 125 125 } 126 126 127 127 function ConvertColor($Color) 128 128 { 129 129 return(imagecolorallocate($this->Image, ($Color >> 16) & 0xff, ($Color >> 8) & 0xff, $Color & 0xff)); 130 130 } 131 131 132 132 function FillRect($X1, $Y1, $X2, $Y2) 133 133 { 134 134 imagefilledrectangle($this->Image, $X1, $Y1, $X2, $Y2, $this->ConvertColor($this->Brush->Color)); 135 135 } 136 136 137 137 function Line($X1, $Y1, $X2, $Y2) 138 138 { -
trunk/Common/Mail.php
r579 r738 13 13 var $From; 14 14 var $Recipients; 15 var $Bodies; 15 var $Bodies; 16 16 var $Attachments; 17 17 var $AgentIdent; … … 19 19 var $ReplyTo; 20 20 var $Headers; 21 21 22 22 function __construct() 23 23 { 24 $this->Priorities = array('1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)'); 24 $this->Priorities = array('1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)'); 25 25 $this->Boundary = md5(date('r', time())); 26 26 $this->AgentIdent = 'PHP/Mail'; 27 27 $this->Clear(); 28 28 } 29 29 30 30 function Clear() 31 31 { … … 63 63 function AddBody($Content, $MimeType = 'text/plain', $Charset = 'utf-8') 64 64 { 65 $this->Bodies[] = array('Content' => $Content, 'Type' => strtolower($MimeType), 65 $this->Bodies[] = array('Content' => $Content, 'Type' => strtolower($MimeType), 66 66 'Charset' => strtolower($Charset)); 67 67 } … … 75 75 { 76 76 if(!intval($Priority)) return(false); 77 77 78 78 if(!isset($this->priorities[$Priority - 1])) return(false); 79 79 80 $this->xheaders['X-Priority'] = $this->priorities[$Priority - 1]; 80 $this->xheaders['X-Priority'] = $this->priorities[$Priority - 1]; 81 81 return(true); 82 82 } 83 83 84 84 function AttachFile($FileName, $FileType, $Disposition = DISPOSITION_ATTACHMENT) 85 { 86 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, 85 { 86 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, 87 87 'Disposition' => $Disposition, 'Type' => 'File'); 88 88 } … … 90 90 function AttachData($FileName, $FileType, $Data, $Disposition = DISPOSITION_ATTACHMENT) 91 91 { 92 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, 92 $this->Attachments[] = array('FileName' => $FileName, 'FileType' => $FileType, 93 93 'Disposition' => $Disposition, 'Type' => 'Data', 'Data' => $Data); 94 94 } … … 97 97 { 98 98 if(count($this->Bodies) == 0) throw new Exception('Mail: Need at least one text body'); 99 99 100 100 $Body = $this->BuildAttachment($this->BuildBody()); 101 101 102 102 $To = ''; 103 103 $this->Headers['CC'] = ''; 104 104 $this->Headers['BCC'] = ''; 105 foreach($this->Recipients as $Index => $Recipient) 105 foreach($this->Recipients as $Index => $Recipient) 106 106 { 107 107 if($Recipient['Type'] == 'SendCombined') … … 127 127 } 128 128 if($To == '') throw new Exception('Mail: Need at least one recipient address'); 129 129 130 130 $this->Headers['Mime-Version'] = '1.0'; 131 131 132 132 if($this->AgentIdent != '') $this->Headers['X-Mailer'] = $this->AgentIdent; 133 133 if($this->ReplyTo != '') $this->Headers['Reply-To'] = $this->ReplyTo; … … 135 135 136 136 $Headers = ''; 137 foreach($this->Headers as $Header => $Value) 137 foreach($this->Headers as $Header => $Value) 138 138 { 139 139 if(($Header != 'Subject') and ($Value != '')) $Headers .= $Header.': '.$Value."\n"; 140 } 140 } 141 141 142 142 $this->Subject = strtr($this->Subject, "\r\n", ' '); 143 143 144 144 if($this->Subject == '') throw new Exception('Mail: Missing Subject'); 145 145 146 146 147 147 $res = mail($To, $this->Subject, $Body, $Headers); … … 152 152 { 153 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)) 154 if(ereg("^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$", $Address)) 155 155 return(true); 156 156 else return(false); … … 159 159 function CheckAdresses($Addresses) 160 160 { 161 foreach($Addresses as $Address) 162 { 163 if(!$this->ValidEmail($Address)) 164 throw new Exception('Mail: Invalid address '.$Address);165 } 166 } 167 161 foreach($Addresses as $Address) 162 { 163 if(!$this->ValidEmail($Address)) 164 throw new Exception('Mail: Invalid address '.$Address); 165 } 166 } 167 168 168 private function ContentEncoding($Charset) 169 169 { … … 175 175 { 176 176 if(count($this->Attachments) > 0) 177 { 177 { 178 178 $this->Headers['Content-Type'] = "multipart/mixed;\n boundary=\"PHP-mixed-".$this->Boundary."\""; 179 179 $Result = "This is a multi-part message in MIME format.\n". 180 "--PHP-mixed-".$this->Boundary."\n"; 180 "--PHP-mixed-".$this->Boundary."\n"; 181 181 $Result .= $Body; 182 183 foreach($this->Attachments as $Attachment) 182 183 foreach($this->Attachments as $Attachment) 184 184 { 185 185 $FileName = $Attachment['FileName']; … … 189 189 if($Attachment['Type'] == 'File') 190 190 { 191 if(!file_exists($FileName)) 191 if(!file_exists($FileName)) 192 192 throw new Exception('Mail: Attached file '.$FileName.' can\'t be found'); 193 193 $Data = file_get_contents($FileName); 194 } else 194 } else 195 195 if($Attachment['Type'] == 'Data') $Data = $Attachment['Data']; 196 196 else $Data = ''; 197 197 198 198 $Result .= "\n".'--PHP-mixed-'.$this->Boundary."\n". 199 199 "Content-Type: ".$ContentType."; name=\"".$BaseName."\"\n". … … 203 203 } 204 204 } else $Result = $Body; 205 return($Result); 206 } 207 205 return($Result); 206 } 207 208 208 private function BuildBody() 209 209 { 210 210 $Result = ''; 211 if(count($this->Bodies) > 1) 211 if(count($this->Bodies) > 1) 212 212 { 213 213 $this->Headers['Content-Type'] = 'multipart/alternative; boundary="PHP-alt-'.$this->Boundary.'"'; 214 214 $Result .= 'Content-Type: multipart/alternative; boundary="PHP-alt-'.$this->Boundary.'"'. 215 215 "\n\n"; 216 } else 216 } else 217 217 { 218 218 $this->Headers['Content-Type'] = $this->Bodies[0]['Type'].'; charset='.$this->Bodies[0]['Charset']; … … 220 220 } 221 221 222 222 223 223 foreach($this->Bodies as $Body) 224 224 { 225 if(count($this->Bodies) > 1) $Result .= "\n\n".'--PHP-alt-'.$this->Boundary."\n"; 225 if(count($this->Bodies) > 1) $Result .= "\n\n".'--PHP-alt-'.$this->Boundary."\n"; 226 226 $Result .= 'Content-Type: '.$Body['Type'].'; charset='.$Body['Charset']. 227 "\nContent-Transfer-Encoding: ".$this->ContentEncoding($Body['Charset'])."\n\n".$Body['Content']."\n"; 227 "\nContent-Transfer-Encoding: ".$this->ContentEncoding($Body['Charset'])."\n\n".$Body['Content']."\n"; 228 228 } 229 229 return($Result); 230 } 230 } 231 231 } 232 232 -
trunk/Common/NetworkAddress.php
r705 r738 60 60 class NetworkAddressIPv6 61 61 { 62 var $Address;63 var $Prefix;62 var $Address; 63 var $Prefix; 64 64 65 function __construct()66 {67 $this->Address = 0;68 $this->Prefix = 0;69 }65 function __construct() 66 { 67 $this->Address = 0; 68 $this->Prefix = 0; 69 } 70 70 71 71 function AddressToString() 72 72 { 73 return(inet_ntop($this->Address));73 return(inet_ntop($this->Address)); 74 74 } 75 75 76 76 function AddressFromString($Value) 77 77 { 78 $this->Address = inet_pton($Value);78 $this->Address = inet_pton($Value); 79 79 } 80 80 81 81 function GetOctets() 82 82 { 83 $Result = array();84 $Data = array_reverse(unpack('C*', $this->Address));85 foreach($Data as $Item)86 {83 $Result = array(); 84 $Data = array_reverse(unpack('C*', $this->Address)); 85 foreach($Data as $Item) 86 { 87 87 88 $Result[] = dechex($Item & 15);89 $Result[] = dechex(($Item >> 4) & 15);90 }91 return($Result);88 $Result[] = dechex($Item & 15); 89 $Result[] = dechex(($Item >> 4) & 15); 90 } 91 return($Result); 92 92 } 93 93 94 94 function EncodeMAC($MAC) 95 95 { 96 $MAC = explode(':', $MAC);97 $Data = unpack('C*', $this->Address);98 $Data[9] = hexdec($MAC[0]) ^ 0x02;99 $Data[10] = hexdec($MAC[1]);100 $Data[11] = hexdec($MAC[2]);101 $Data[12] = 0xff;102 $Data[13] = 0xfe;103 $Data[14] = hexdec($MAC[3]);104 $Data[15] = hexdec($MAC[4]);105 $Data[16] = hexdec($MAC[5]);106 $this->Address = pack_array('C*', $Data);96 $MAC = explode(':', $MAC); 97 $Data = unpack('C*', $this->Address); 98 $Data[9] = hexdec($MAC[0]) ^ 0x02; 99 $Data[10] = hexdec($MAC[1]); 100 $Data[11] = hexdec($MAC[2]); 101 $Data[12] = 0xff; 102 $Data[13] = 0xfe; 103 $Data[14] = hexdec($MAC[3]); 104 $Data[15] = hexdec($MAC[4]); 105 $Data[16] = hexdec($MAC[5]); 106 $this->Address = pack_array('C*', $Data); 107 107 } 108 108 -
trunk/Common/Page.php
r729 r738 15 15 var $Encoding; 16 16 var $Style; 17 17 18 18 function __construct($System) 19 19 { 20 20 parent::__construct($System); 21 21 22 22 $this->FormatHTML = false; 23 23 $this->ShowRuntimeInfo = false; 24 24 $this->Encoding = 'utf-8'; 25 25 $this->Style = 'new'; 26 26 27 27 // TODO: Move to external code 28 28 if(isset($this->System->Config['Web']['FormatHTML'])) … … 35 35 $this->Style = $this->System->Config['Web']['Style']; 36 36 } 37 37 38 38 function Show() 39 39 { 40 return('');40 return(''); 41 41 } 42 42 43 43 function SystemMessage($Title, $Text) 44 { 44 { 45 45 return('<table align="center"><tr><td><div class="SystemMessage"><h3>'.$Title.'</h3><div>'.$Text.'</div></div></td></tr></table>'); 46 46 //ShowFooter(); … … 50 50 function ShowHeader($Title, $Path) 51 51 { 52 if(array_key_exists('REQUEST_URI', $_SERVER))52 if(array_key_exists('REQUEST_URI', $_SERVER)) 53 53 $ScriptName = $_SERVER['REQUEST_URI']; 54 else $ScriptName = '';54 else $ScriptName = ''; 55 55 while(strpos($ScriptName, '//') !== false) 56 56 $ScriptName = str_replace('//', '/', $ScriptName); … … 62 62 $Navigation = ''; 63 63 while($Page) 64 { 64 { 65 65 $Navigation = ' > <a href="'.$this->System->Link($ScriptName).'/">'.$Page->ShortTitle.'</a>'.$Navigation; 66 66 67 67 if(class_exists($Page->ParentClass)) 68 68 { … … 71 71 $ScriptName = substr($ScriptName, 0, strrpos($ScriptName, '/')); 72 72 } else $Page = null; 73 } 73 } 74 74 $Navigation = substr($Navigation, 6); 75 75 … … 89 89 //$Output .= '<div class="MainTitle">'.$Title.'</div>'; 90 90 $Output .= '<div class="MainTitle"><span class="MenuItem"><strong>Navigace :: </strong> '.$Navigation.'</span><div class="MenuItem2">'; 91 foreach($this->System->Bars['Top'] as $BarItem)92 $Output .= call_user_func($BarItem);91 foreach($this->System->Bars['Top'] as $BarItem) 92 $Output .= call_user_func($BarItem); 93 93 $Output .= '</div></div>'; 94 94 } … … 99 99 { 100 100 global $ScriptTimeStart, $Revision, $ReleaseTime; 101 101 102 102 $Time = round(GetMicrotime() - $ScriptTimeStart, 2); 103 103 $Output = ''; … … 112 112 } 113 113 $Output .= '</body></html>'; 114 return($Output); 114 return($Output); 115 115 } 116 116 … … 122 122 // $Output = 'Chyba: '.$E->getMessage(); 123 123 //} 124 if($this->ClearPage == false) 124 if($this->ClearPage == false) 125 125 { 126 126 $Output = $this->ShowHeader($this->FullTitle, $this->ShortTitle).$Output; … … 130 130 echo($Output); 131 131 } 132 132 133 133 function NewPage($ClassName) 134 134 { … … 156 156 } 157 157 $line = trim(substr($s, $start, $end + 1)); 158 if(strlen($line) > 0) 158 if(strlen($line) > 0) 159 159 if($line[0] == '<') 160 160 { 161 if($s[$start + 1] == '/') 161 if($s[$start + 1] == '/') 162 162 { 163 163 $n = $n - 2; 164 164 $nn = $n; 165 } else 165 } else 166 166 { 167 167 if(strpos($line, ' ')) $cmd = substr($line, 1, strpos($line, ' ') - 1); … … 169 169 //echo('['.$cmd.']'); 170 170 if(strpos($s, '</'.$cmd.'>')) $n = $n + 2; 171 } 171 } 172 172 }// else $line = '['.$line.']'; 173 173 //if($line != '') echo(htmlspecialchars(str_repeat(' ',$nn).$line."\n")); -
trunk/Common/RSS.php
r548 r738 1 1 <?php 2 2 3 class RSS 3 class RSS 4 4 { 5 5 var $Charset; … … 9 9 var $WebmasterEmail; 10 10 var $Items; 11 11 12 12 function __construct() 13 13 { … … 17 17 18 18 function Generate() 19 { 19 { 20 20 $Result = '<?xml version="1.0" encoding="'.$this->Charset.'" ?>'."\n". //<? 21 21 '<rss version="2.0">'."\n". … … 26 26 " <language>cs</language>\n". 27 27 " <webMaster>".$this->WebmasterEmail."</webMaster>\n". 28 " <pubDate>".date('r')."</pubDate>\n". 28 " <pubDate>".date('r')."</pubDate>\n". 29 29 " <ttl>20</ttl>\n"; 30 30 foreach($this->Items as $Item) … … 33 33 ' <title>'.htmlspecialchars($Item['Title'])."</title>\n". 34 34 ' <description>'.htmlspecialchars($Item['Description'])."</description>\n". 35 ' <pubDate>'.date('r',$Item['Time'])."</pubDate>\n".36 ' <link>'.$Item['Link']."</link>\n".35 ' <pubDate>'.date('r',$Item['Time'])."</pubDate>\n". 36 ' <link>'.$Item['Link']."</link>\n". 37 37 " </item>\n"; 38 38 } -
trunk/Common/Setup/FullInstall.php
r592 r738 9 9 CREATE DEFINER=`centrala`@`localhost` FUNCTION `CompareNetworkPrefix`(Address1 INT(11) UNSIGNED, Address2 INT(11) UNSIGNED, Size INT(11)) RETURNS tinyint(1) 10 10 RETURN Address1 & (-1 << (32 - Size)) = Address2 & (-1 << (32 - Size)); 11 11 12 12 -- 13 13 -- Struktura tabulky `ChatHistory` … … 2033 2033 $Manager->Execute("INSERT INTO `SystemVersion` (`Id`, `Revision`) VALUES 2034 2034 (1, 495);"); 2035 2035 2036 2036 } 2037 2037 -
trunk/Common/Setup/Setup.php
r737 r738 69 69 function Show() 70 70 { 71 global $ConfigDefinition, $DatabaseRevision, $Config, $Updates;72 73 $this->UpdateManager = $this->System->Setup->UpdateManager;74 $DefaultConfig = new DefaultConfig();75 $this->ConfigDefinition = $DefaultConfig->Get();76 $this->DatabaseRevision = $DatabaseRevision;77 $this->Config = &$Config;78 79 $Output = '';71 global $ConfigDefinition, $DatabaseRevision, $Config, $Updates; 72 73 $this->UpdateManager = $this->System->Setup->UpdateManager; 74 $DefaultConfig = new DefaultConfig(); 75 $this->ConfigDefinition = $DefaultConfig->Get(); 76 $this->DatabaseRevision = $DatabaseRevision; 77 $this->Config = &$Config; 78 79 $Output = ''; 80 80 if(isset($this->Config)) 81 81 { … … 105 105 $Output .= $this->System->Setup->Upgrade(); 106 106 } catch (Exception $E) { 107 $Output .= $this->SystemMessage('Chyba aktualizace', 'Došlo k chybě v SQL dotazu při aktualizaci: <br/>'.$E->getMessage());108 }109 $Output .= $this->ControlPanel();107 $Output .= $this->SystemMessage('Chyba aktualizace', 'Došlo k chybě v SQL dotazu při aktualizaci: <br/>'.$E->getMessage()); 108 } 109 $Output .= $this->ControlPanel(); 110 110 } else 111 111 if($Action == 'install') … … 353 353 class PageSetupRedirect extends Page 354 354 { 355 function Show()356 {357 $Output = '';358 if(!$this->Database->Connected()) $Output .= 'Nelze se připojit k databázi.<br>';359 else {360 if(!$this->System->Setup->UpdateManager->IsInstalled())361 $Output .= 'Systém vyžaduje instalaci databáze.<br>';362 else363 if(!$this->System->Setup->UpdateManager->IsUpToDate())364 $Output .= 'Systém vyžaduje aktualizaci databáze.<br>';365 }366 $Output .= 'Pokračujte <a href="'.$this->System->Link('/setup/').'">zde</a>';367 return($Output);368 }355 function Show() 356 { 357 $Output = ''; 358 if(!$this->Database->Connected()) $Output .= 'Nelze se připojit k databázi.<br>'; 359 else { 360 if(!$this->System->Setup->UpdateManager->IsInstalled()) 361 $Output .= 'Systém vyžaduje instalaci databáze.<br>'; 362 else 363 if(!$this->System->Setup->UpdateManager->IsUpToDate()) 364 $Output .= 'Systém vyžaduje aktualizaci databáze.<br>'; 365 } 366 $Output .= 'Pokračujte <a href="'.$this->System->Link('/setup/').'">zde</a>'; 367 return($Output); 368 } 369 369 } 370 370 … … 404 404 function Install() 405 405 { 406 global $DatabaseRevision;406 global $DatabaseRevision; 407 407 408 408 $this->Database->query('CREATE TABLE IF NOT EXISTS `SystemVersion` ( -
trunk/Common/Setup/Update.php
r725 r738 9 9 var $Database; 10 10 var $InstallMethod; 11 11 12 12 function __construct() 13 13 { 14 $this->Revision = 0;15 $this->Trace = array();16 $this->VersionTable = 'SystemVersion';17 $this->InstallMethod = 'FullInstall';18 $this->InsertSampleDataMethod = 'InsertSampleData';14 $this->Revision = 0; 15 $this->Trace = array(); 16 $this->VersionTable = 'SystemVersion'; 17 $this->InstallMethod = 'FullInstall'; 18 $this->InsertSampleDataMethod = 'InsertSampleData'; 19 19 } 20 20 21 21 function GetDbVersion() 22 22 { 23 $DbResult = $this->Database->select($this->VersionTable, '*', 'Id=1');24 $Version = $DbResult->fetch_assoc(); 23 $DbResult = $this->Database->select($this->VersionTable, '*', 'Id=1'); 24 $Version = $DbResult->fetch_assoc(); 25 25 return($Version['Revision']); 26 26 } 27 27 28 28 function IsInstalled() 29 { 29 { 30 30 debug_backtrace(); 31 $DbResult = $this->Database->query('SHOW TABLES LIKE "'.$this->VersionTable.'"');32 return($DbResult->num_rows > 0); 31 $DbResult = $this->Database->query('SHOW TABLES LIKE "'.$this->VersionTable.'"'); 32 return($DbResult->num_rows > 0); 33 33 } 34 34 35 35 function IsUpToDate() 36 36 { 37 return($this->Revision <= $this->GetDbVersion());37 return($this->Revision <= $this->GetDbVersion()); 38 38 } 39 39 40 40 function Upgrade() 41 41 { 42 $DbRevision = $this->GetDbVersion();43 $Output = 'Počáteční revize databáze: '.$DbRevision.'<br/>';44 while($this->Revision > $DbRevision)42 $DbRevision = $this->GetDbVersion(); 43 $Output = 'Počáteční revize databáze: '.$DbRevision.'<br/>'; 44 while($this->Revision > $DbRevision) 45 45 { 46 $TraceItem = $this->Trace[$DbRevision];47 $Output .= 'Aktualizace na verzi '.$TraceItem['Revision'].':<br/>';48 // Show applied SQL queries immediatelly 49 echo($Output);50 $Output = '';51 $RevUpdate = $TraceItem['Function'];46 $TraceItem = $this->Trace[$DbRevision]; 47 $Output .= 'Aktualizace na verzi '.$TraceItem['Revision'].':<br/>'; 48 // Show applied SQL queries immediatelly 49 echo($Output); 50 $Output = ''; 51 $RevUpdate = $TraceItem['Function']; 52 52 $RevUpdate($this); 53 $DbRevision = $TraceItem['Revision'];54 $this->Database->query('UPDATE `'.$this->VersionTable.'` SET `Revision`= '.55 $TraceItem['Revision'].' WHERE `Id`=1');56 }57 return($Output); 53 $DbRevision = $TraceItem['Revision']; 54 $this->Database->query('UPDATE `'.$this->VersionTable.'` SET `Revision`= '. 55 $TraceItem['Revision'].' WHERE `Id`=1'); 56 } 57 return($Output); 58 58 } 59 59 60 60 function Install() 61 { 62 $InstallMethod = $this->InstallMethod;63 $InstallMethod($this);64 $this->Update();61 { 62 $InstallMethod = $this->InstallMethod; 63 $InstallMethod($this); 64 $this->Update(); 65 65 } 66 66 67 67 function Uninstall() 68 68 { 69 69 70 70 } 71 71 72 72 function InsertSampleData() 73 { 74 $InstallMethod = $this->InsertSampleDataMethod;75 $InstallMethod($this);73 { 74 $InstallMethod = $this->InsertSampleDataMethod; 75 $InstallMethod($this); 76 76 } 77 77 78 78 function Execute($Query) 79 79 { 80 echo($Query.';<br/>');81 flush();82 return($this->Database->query($Query));80 echo($Query.';<br/>'); 81 flush(); 82 return($this->Database->query($Query)); 83 83 } 84 84 } -
trunk/Common/Setup/Updates.php
r736 r738 538 538 function UpdateTo627($Manager) 539 539 { 540 $Manager->Execute('ALTER TABLE `FinanceInvoice` CHANGE `TimeCreation` `Time` DATETIME NOT NULL DEFAULT "0000-00-00 00:00:00";');541 $Manager->Execute('ALTER TABLE `FinanceYear` ADD `Closed` INT NOT NULL ;');540 $Manager->Execute('ALTER TABLE `FinanceInvoice` CHANGE `TimeCreation` `Time` DATETIME NOT NULL DEFAULT "0000-00-00 00:00:00";'); 541 $Manager->Execute('ALTER TABLE `FinanceYear` ADD `Closed` INT NOT NULL ;'); 542 542 } 543 543 544 544 function UpdateTo632($Manager) 545 545 { 546 $Manager->Execute('CREATE TABLE IF NOT EXISTS `FinanceInvoiceOperationRel` (546 $Manager->Execute('CREATE TABLE IF NOT EXISTS `FinanceInvoiceOperationRel` ( 547 547 `Id` int(11) NOT NULL AUTO_INCREMENT, 548 548 `Invoice` int(11) NOT NULL, … … 559 559 function UpdateTo633($Manager) 560 560 { 561 $Manager->Execute('ALTER TABLE `UserOnline` ADD `StayLoggedHash` VARCHAR( 40 ) NOT NULL ;');561 $Manager->Execute('ALTER TABLE `UserOnline` ADD `StayLoggedHash` VARCHAR( 40 ) NOT NULL ;'); 562 562 } 563 563 564 564 function UpdateTo645($Manager) 565 565 { 566 $Manager->Execute('CREATE TABLE IF NOT EXISTS `FinanceVATType` (566 $Manager->Execute('CREATE TABLE IF NOT EXISTS `FinanceVATType` ( 567 567 `Id` int(11) NOT NULL, 568 568 `Name` varchar(255) NOT NULL, … … 578 578 function UpdateTo646($Manager) 579 579 { 580 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Contract` (580 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Contract` ( 581 581 `Id` int(11) NOT NULL AUTO_INCREMENT, 582 582 `BillCode` varchar(255) NOT NULL, … … 614 614 function UpdateTo647($Manager) 615 615 { 616 $Manager->Execute('ALTER TABLE `EmployeeSalary` ADD FOREIGN KEY ( `Employee` ) REFERENCES `Employee` (616 $Manager->Execute('ALTER TABLE `EmployeeSalary` ADD FOREIGN KEY ( `Employee` ) REFERENCES `Employee` ( 617 617 `Id` 618 618 ) ON DELETE RESTRICT ON UPDATE RESTRICT ;'); … … 649 649 function UpdateTo656($Manager) 650 650 { 651 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Measure` (651 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Measure` ( 652 652 `Id` int(11) NOT NULL AUTO_INCREMENT, 653 653 `Name` varchar(255) NOT NULL, … … 708 708 function UpdateTo657($Manager) 709 709 { 710 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkInterfaceUpDown` (710 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkInterfaceUpDown` ( 711 711 `Id` int(11) NOT NULL AUTO_INCREMENT, 712 712 `Time` datetime NOT NULL, … … 873 873 if($DbResult->num_rows > 0) 874 874 { 875 $DbRow = $DbResult->fetch_assoc();875 $DbRow = $DbResult->fetch_assoc(); 876 876 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 877 877 "VALUES (NULL , 'Oblíbené položky nabídky', ".$DbRow['Id'].", '".$ActionId."', '1');"); … … 887 887 function UpdateTo688($Manager) 888 888 { 889 // Convert monthly plus payment for consumption to regular service889 // Convert monthly plus payment for consumption to regular service 890 890 $DbResult = $Manager->Execute('SELECT `MonthlyPlus`, `Member` FROM `MemberPayment` WHERE `MonthlyPlus` > 0'); 891 891 while($DbRow = $DbResult->fetch_assoc) … … 935 935 936 936 function UpdateTo710($Manager) 937 { 937 { 938 938 $Manager->Execute('RENAME TABLE `StockItem` TO `StockSerialNumber`;'); 939 939 $Manager->Execute('UPDATE `Action` SET `URL`="/is/?t=StockSerialNumber&a=list",`Title`="Sériová čísla" WHERE `URL`="/is/?t=StockItem&a=list";'); 940 940 941 941 // StockMove 942 942 $Manager->Execute('CREATE TABLE IF NOT EXISTS `StockMove` ( … … 949 949 `File` int(11) DEFAULT NULL 950 950 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); 951 951 952 952 $Manager->Execute('ALTER TABLE `StockMove` 953 953 ADD PRIMARY KEY (`Id`), ADD KEY `DocumentLine` (`DocumentLine`), ADD KEY `StockFrom` (`StockFrom`), ADD KEY `StockTo` (`StockTo`), ADD KEY `File` (`File`);'); 954 954 955 955 $Manager->Execute('ALTER TABLE `StockMove` 956 956 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;'); 957 957 958 958 $Manager->Execute('ALTER TABLE `StockMove` 959 959 ADD CONSTRAINT `StockMove_ibfk_1` FOREIGN KEY (`StockFrom`) REFERENCES `Stock` (`Id`), 960 960 ADD CONSTRAINT `StockMove_ibfk_2` FOREIGN KEY (`StockTo`) REFERENCES `Stock` (`Id`), 961 961 ADD CONSTRAINT `StockMove_ibfk_3` FOREIGN KEY (`DocumentLine`) REFERENCES `DocumentLine` (`Id`);'); 962 962 963 963 // StockMoveItem 964 964 $Manager->Execute('CREATE TABLE IF NOT EXISTS `StockMoveItem` ( … … 970 970 `UnitPrice` int(11) NOT NULL 971 971 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); 972 972 973 973 $Manager->Execute('ALTER TABLE `StockMoveItem` 974 974 ADD PRIMARY KEY (`Id`), ADD KEY `Product` (`Product`), ADD KEY `StockMove` (`StockMove`);'); 975 975 976 976 $Manager->Execute('ALTER TABLE `StockMoveItem` 977 977 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;'); … … 979 979 $Manager->Execute('ALTER TABLE `StockMoveItem` 980 980 ADD CONSTRAINT `StockMoveItem_ibfk_2` FOREIGN KEY (`Product`) REFERENCES `Product` (`Id`), 981 ADD CONSTRAINT `StockMoveItem_ibfk_1` FOREIGN KEY (`StockMove`) REFERENCES `StockMove` (`Id`);'); 981 ADD CONSTRAINT `StockMoveItem_ibfk_1` FOREIGN KEY (`StockMove`) REFERENCES `StockMove` (`Id`);'); 982 982 983 983 // IS menu item … … 989 989 if($DbResult->num_rows > 0) 990 990 { 991 $DbRow = $DbResult->fetch_assoc();991 $DbRow = $DbResult->fetch_assoc(); 992 992 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 993 993 "VALUES (NULL , 'Skladové pohyby', ".$DbRow['Id'].", '".$ActionId."', '1');"); … … 997 997 function UpdateTo715($Manager) 998 998 { 999 $Manager->Execute('ALTER TABLE `StockSerialNumber` DROP FOREIGN KEY `StockSerialNumber_ibfk_6`;');1000 $Manager->Execute('ALTER TABLE `StockSerialNumber` DROP `Segment`');1001 $Manager->Execute('ALTER TABLE `Member` DROP `NetworkSegment`');1002 $Manager->Execute('DROP TABLE `NetworkSegment`');1003 $Manager->Execute('DELETE FROM `MenuItem` WHERE `Name`="Úseky sítě"');1004 $Manager->Execute('DELETE FROM `Action` WHERE `Title`="Úseky sítě"');999 $Manager->Execute('ALTER TABLE `StockSerialNumber` DROP FOREIGN KEY `StockSerialNumber_ibfk_6`;'); 1000 $Manager->Execute('ALTER TABLE `StockSerialNumber` DROP `Segment`'); 1001 $Manager->Execute('ALTER TABLE `Member` DROP `NetworkSegment`'); 1002 $Manager->Execute('DROP TABLE `NetworkSegment`'); 1003 $Manager->Execute('DELETE FROM `MenuItem` WHERE `Name`="Úseky sítě"'); 1004 $Manager->Execute('DELETE FROM `Action` WHERE `Title`="Úseky sítě"'); 1005 1005 } 1006 1006 1007 1007 function UpdateTo718($Manager) 1008 { 1008 { 1009 1009 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Company` ( 1010 1010 `Id` int(11) NOT NULL, … … 1027 1027 if($DbResult->num_rows > 0) 1028 1028 { 1029 $DbRow = $DbResult->fetch_assoc();1029 $DbRow = $DbResult->fetch_assoc(); 1030 1030 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1031 1031 "VALUES (NULL , 'Firmy', ".$DbRow['Id'].", '".$ActionId."', '1');"); … … 1034 1034 1035 1035 function UpdateTo719($Manager) 1036 { 1036 { 1037 1037 $Manager->Execute('ALTER TABLE `FinanceOperation` ADD `Direction` INT NOT NULL AFTER `Cash`;'); 1038 1038 $Manager->Execute('UPDATE `FinanceOperation` SET `Direction` = 1 WHERE `Value` >= 0 ;'); 1039 1039 $Manager->Execute('UPDATE `FinanceOperation` SET `Direction` = -1 WHERE `Value` < 0 ;'); 1040 1040 $Manager->Execute('UPDATE `FinanceOperation` SET `Value` = -`Value` WHERE `Value` < 0 ;'); 1041 // Set missing FinanceOperation DocumentLine according BillCode 1041 // Set missing FinanceOperation DocumentLine according BillCode 1042 1042 $Manager->Execute('UPDATE `FinanceOperation` SET `DocumentLine` = 1 WHERE (`BillCode` LIKE "PP%") AND (`DocumentLine` IS NULL)'); 1043 1043 $Manager->Execute('UPDATE `FinanceOperation` SET `DocumentLine` = 2 WHERE (`BillCode` LIKE "VP%") AND (`DocumentLine` IS NULL)'); 1044 1044 $Manager->Execute('UPDATE `FinanceOperation` SET `DocumentLine` = 3 WHERE (`BillCode` LIKE "BV%") AND (`DocumentLine` IS NULL)'); 1045 1045 $Manager->Execute('UPDATE `FinanceOperation` SET `DocumentLine` = 4 WHERE (`BillCode` LIKE "PR%") AND (`DocumentLine` IS NULL)'); 1046 1046 1047 1047 // IS menu item 1048 1048 $DbResult = $Manager->Execute('SELECT `Id` FROM `MenuItem` WHERE `Name`="Příjmy a výdaje"'); 1049 1049 if($DbResult->num_rows > 0) 1050 1050 { 1051 $DbRow = $DbResult->fetch_assoc();1051 $DbRow = $DbResult->fetch_assoc(); 1052 1052 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , 1053 1053 `Group` ,`Icon` ,`PermissionOperation` ,`Enable`) VALUES ( 1054 1054 NULL , "", "Příjem do pokladny", "1", "/is/?t=FinanceTreasuryIn&a=list", NULL , NULL , NULL , "1");'); 1055 1055 $ActionId = $Manager->Database->insert_id; 1056 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1056 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1057 1057 "VALUES (NULL , 'Příjem do pokladny', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1058 1058 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , … … 1060 1060 NULL , "", "Výdej z pokladny", "1", "/is/?t=FinanceTreasuryOut&a=list", NULL , NULL , NULL , "1");'); 1061 1061 $ActionId = $Manager->Database->insert_id; 1062 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1062 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1063 1063 "VALUES (NULL , 'Výdej z pokladny', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1064 1064 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , … … 1066 1066 NULL , "", "Příjem na účet", "1", "/is/?t=FinanceAccountIn&a=list", NULL , NULL , NULL , "1");'); 1067 1067 $ActionId = $Manager->Database->insert_id; 1068 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1068 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1069 1069 "VALUES (NULL , 'Příjem na účet', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1070 1070 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , … … 1072 1072 NULL , "", "Výdej z účtu", "1", "/is/?t=FinanceAccountOut&a=list", NULL , NULL , NULL , "1");'); 1073 1073 $ActionId = $Manager->Database->insert_id; 1074 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1074 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1075 1075 "VALUES (NULL , 'Výdej z účtu', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1076 1076 } … … 1079 1079 function UpdateTo720($Manager) 1080 1080 { 1081 $Manager->Execute('ALTER TABLE `FinanceInvoice` ADD `Direction` INT NOT NULL AFTER `TimePayment`;');1082 $Manager->Execute('UPDATE `FinanceInvoice` SET `Direction` = 1 WHERE `Value` >= 0 ;');1083 $Manager->Execute('UPDATE `FinanceInvoice` SET `Direction` = -1 WHERE `Value` < 0 ;');1084 $Manager->Execute('UPDATE `FinanceInvoice` SET `Value` = -`Value` WHERE `Value` < 0 ;');1085 // Set missing FinanceInvoice DocumentLine according BillCode1086 $Manager->Execute('UPDATE `FinanceInvoice` SET `DocumentLine` = 5 WHERE (`BillCode` LIKE "PF%") AND (`DocumentLine` IS NULL)');1087 $Manager->Execute('UPDATE `FinanceInvoice` SET `DocumentLine` = 6 WHERE (`BillCode` LIKE "VF%") AND (`DocumentLine` IS NULL)');1088 1089 // IS menu item1090 $DbResult = $Manager->Execute('SELECT `Id` FROM `MenuItem` WHERE `Name`="Závazky a pohledávky"');1091 if($DbResult->num_rows > 0)1092 {1093 $DbRow = $DbResult->fetch_assoc();1094 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` ,1081 $Manager->Execute('ALTER TABLE `FinanceInvoice` ADD `Direction` INT NOT NULL AFTER `TimePayment`;'); 1082 $Manager->Execute('UPDATE `FinanceInvoice` SET `Direction` = 1 WHERE `Value` >= 0 ;'); 1083 $Manager->Execute('UPDATE `FinanceInvoice` SET `Direction` = -1 WHERE `Value` < 0 ;'); 1084 $Manager->Execute('UPDATE `FinanceInvoice` SET `Value` = -`Value` WHERE `Value` < 0 ;'); 1085 // Set missing FinanceInvoice DocumentLine according BillCode 1086 $Manager->Execute('UPDATE `FinanceInvoice` SET `DocumentLine` = 5 WHERE (`BillCode` LIKE "PF%") AND (`DocumentLine` IS NULL)'); 1087 $Manager->Execute('UPDATE `FinanceInvoice` SET `DocumentLine` = 6 WHERE (`BillCode` LIKE "VF%") AND (`DocumentLine` IS NULL)'); 1088 1089 // IS menu item 1090 $DbResult = $Manager->Execute('SELECT `Id` FROM `MenuItem` WHERE `Name`="Závazky a pohledávky"'); 1091 if($DbResult->num_rows > 0) 1092 { 1093 $DbRow = $DbResult->fetch_assoc(); 1094 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , 1095 1095 `Group` ,`Icon` ,`PermissionOperation` ,`Enable`) VALUES ( 1096 1096 NULL , "", "Příjaté", "1", "/is/?t=FinanceInvoiceIn&a=list", NULL , NULL , NULL , "1");'); 1097 $ActionId = $Manager->Database->insert_id;1098 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1099 "VALUES (NULL , 'Přijaté', ".$DbRow['Id'].", '".$ActionId."', '1');");1100 1101 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` ,1097 $ActionId = $Manager->Database->insert_id; 1098 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1099 "VALUES (NULL , 'Přijaté', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1100 1101 $Manager->Execute('INSERT INTO `Action` (`Id` ,`Name` ,`Title` ,`Type` ,`URL` , 1102 1102 `Group` ,`Icon` ,`PermissionOperation` ,`Enable`) VALUES ( 1103 1103 NULL , "", "Vydané", "1", "/is/?t=FinanceInvoiceOut&a=list", NULL , NULL , NULL , "1");'); 1104 $ActionId = $Manager->Database->insert_id;1105 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1106 "VALUES (NULL , 'Vydané', ".$DbRow['Id'].", '".$ActionId."', '1');");1107 }1104 $ActionId = $Manager->Database->insert_id; 1105 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1106 "VALUES (NULL , 'Vydané', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1107 } 1108 1108 } 1109 1109 1110 1110 function UpdateTo722($Manager) 1111 1111 { 1112 $Manager->Execute('ALTER TABLE `Service` DROP `CustomerCount`;');1112 $Manager->Execute('ALTER TABLE `Service` DROP `CustomerCount`;'); 1113 1113 } 1114 1114 1115 1115 function UpdateTo725($Manager) 1116 1116 { 1117 // Text column of invoices is not used. Text from invoice items is taken instead.1118 $DbResult = $Manager->Execute('ALTER TABLE `FinanceInvoice` DROP `Text`;');1119 1120 $SearchText = 'Připojení k síti'; 1121 $DbResult = $Manager->Execute('SELECT * FROM `FinanceInvoiceItem` WHERE `Description` LIKE "'.$SearchText.' za období%";');1122 while($DbRow = $DbResult->fetch_assoc())1123 {1124 $Text = trim(substr($DbRow['Description'], strlen($SearchText.' za období') + 1));1125 $Text = explode('-', $Text); 1126 $PeriodFrom = explode('.', trim($Text[0]));1127 $PeriodFrom = $PeriodFrom[2].'-'.$PeriodFrom[1].'-'.$PeriodFrom[0];1128 $PeriodTo = explode('.', trim($Text[1]));1129 $PeriodTo = $PeriodTo[2].'-'.$PeriodTo[1].'-'.$PeriodTo[0];1130 $Manager->Execute('UPDATE `FinanceInvoice` SET `PeriodFrom`="'.$PeriodFrom.'", `PeriodTo`="'.$PeriodTo.'" WHERE `Id`='.$DbRow['FinanceInvoice']);1131 }1132 $DbResult = $Manager->Execute('UPDATE `FinanceInvoiceItem` SET `Description` = "'.$SearchText.'" WHERE `Description` LIKE "'.$SearchText.' za období%";');1133 1134 $SearchText = 'Připojení k Internetu'; 1135 $DbResult = $Manager->Execute('SELECT * FROM `FinanceInvoiceItem` WHERE `Description` LIKE "'.$SearchText.' za období%";');1136 while($DbRow = $DbResult->fetch_assoc())1137 {1138 $Text = trim(substr($DbRow['Description'], strlen($SearchText.' za období') + 1));1139 $Text = explode('-', $Text); 1140 $PeriodFrom = explode('.', trim($Text[0]));1141 $PeriodFrom = $PeriodFrom[2].'-'.$PeriodFrom[1].'-'.$PeriodFrom[0];1142 $Text[1] = trim($Text[1]);1143 if(strpos($Text[1], ' ') !== false) $Text[1] = substr($Text[1], 0, strpos($Text[1], ' '));1144 $PeriodTo = explode('.', trim($Text[1]));1145 $PeriodTo = $PeriodTo[2].'-'.$PeriodTo[1].'-'.$PeriodTo[0];1146 $Manager->Execute('UPDATE `FinanceInvoice` SET `PeriodFrom`="'.$PeriodFrom.'", `PeriodTo`="'.$PeriodTo.'" WHERE `Id`='.$DbRow['FinanceInvoice']);1147 }1148 $DbResult = $Manager->Execute('UPDATE `FinanceInvoiceItem` SET `Description` = "'.$SearchText.'" WHERE `Description` LIKE "'.$SearchText.' za období%";');1117 // Text column of invoices is not used. Text from invoice items is taken instead. 1118 $DbResult = $Manager->Execute('ALTER TABLE `FinanceInvoice` DROP `Text`;'); 1119 1120 $SearchText = 'Připojení k síti'; 1121 $DbResult = $Manager->Execute('SELECT * FROM `FinanceInvoiceItem` WHERE `Description` LIKE "'.$SearchText.' za období%";'); 1122 while($DbRow = $DbResult->fetch_assoc()) 1123 { 1124 $Text = trim(substr($DbRow['Description'], strlen($SearchText.' za období') + 1)); 1125 $Text = explode('-', $Text); 1126 $PeriodFrom = explode('.', trim($Text[0])); 1127 $PeriodFrom = $PeriodFrom[2].'-'.$PeriodFrom[1].'-'.$PeriodFrom[0]; 1128 $PeriodTo = explode('.', trim($Text[1])); 1129 $PeriodTo = $PeriodTo[2].'-'.$PeriodTo[1].'-'.$PeriodTo[0]; 1130 $Manager->Execute('UPDATE `FinanceInvoice` SET `PeriodFrom`="'.$PeriodFrom.'", `PeriodTo`="'.$PeriodTo.'" WHERE `Id`='.$DbRow['FinanceInvoice']); 1131 } 1132 $DbResult = $Manager->Execute('UPDATE `FinanceInvoiceItem` SET `Description` = "'.$SearchText.'" WHERE `Description` LIKE "'.$SearchText.' za období%";'); 1133 1134 $SearchText = 'Připojení k Internetu'; 1135 $DbResult = $Manager->Execute('SELECT * FROM `FinanceInvoiceItem` WHERE `Description` LIKE "'.$SearchText.' za období%";'); 1136 while($DbRow = $DbResult->fetch_assoc()) 1137 { 1138 $Text = trim(substr($DbRow['Description'], strlen($SearchText.' za období') + 1)); 1139 $Text = explode('-', $Text); 1140 $PeriodFrom = explode('.', trim($Text[0])); 1141 $PeriodFrom = $PeriodFrom[2].'-'.$PeriodFrom[1].'-'.$PeriodFrom[0]; 1142 $Text[1] = trim($Text[1]); 1143 if(strpos($Text[1], ' ') !== false) $Text[1] = substr($Text[1], 0, strpos($Text[1], ' ')); 1144 $PeriodTo = explode('.', trim($Text[1])); 1145 $PeriodTo = $PeriodTo[2].'-'.$PeriodTo[1].'-'.$PeriodTo[0]; 1146 $Manager->Execute('UPDATE `FinanceInvoice` SET `PeriodFrom`="'.$PeriodFrom.'", `PeriodTo`="'.$PeriodTo.'" WHERE `Id`='.$DbRow['FinanceInvoice']); 1147 } 1148 $DbResult = $Manager->Execute('UPDATE `FinanceInvoiceItem` SET `Description` = "'.$SearchText.'" WHERE `Description` LIKE "'.$SearchText.' za období%";'); 1149 1149 } 1150 1150 1151 1151 function UpdateTo726($Manager) 1152 1152 { 1153 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;');1154 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;');1155 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` DROP FOREIGN KEY `ServiceCustomerRel_ibfk_4`;');1156 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;');1157 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `ServiceCustomerRel`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;');1158 1159 $Manager->Execute('ALTER TABLE `Service` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;');1160 $Manager->Execute('ALTER TABLE `Service` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;');1161 $Manager->Execute('ALTER TABLE `Service` DROP FOREIGN KEY `Service_ibfk_2`;');1162 $Manager->Execute('ALTER TABLE `Service` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;');1163 $Manager->Execute('ALTER TABLE `Service` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `Service`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;');1164 1165 $Manager->Execute('ALTER TABLE `FinanceCharge` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;');1166 $Manager->Execute('ALTER TABLE `FinanceCharge` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;');1167 $Manager->Execute('ALTER TABLE `FinanceCharge` DROP FOREIGN KEY `FinanceCharge_ibfk_1`;');1168 $Manager->Execute('ALTER TABLE `FinanceCharge` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;');1169 $Manager->Execute('ALTER TABLE `FinanceCharge` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `FinanceCharge`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;');1170 1171 $Manager->Execute('ALTER TABLE `MemberPayment` DROP `NetworkDevice`;');1153 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;'); 1154 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;'); 1155 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` DROP FOREIGN KEY `ServiceCustomerRel_ibfk_4`;'); 1156 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;'); 1157 $Manager->Execute('ALTER TABLE `ServiceCustomerRel` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `ServiceCustomerRel`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;'); 1158 1159 $Manager->Execute('ALTER TABLE `Service` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;'); 1160 $Manager->Execute('ALTER TABLE `Service` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;'); 1161 $Manager->Execute('ALTER TABLE `Service` DROP FOREIGN KEY `Service_ibfk_2`;'); 1162 $Manager->Execute('ALTER TABLE `Service` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;'); 1163 $Manager->Execute('ALTER TABLE `Service` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `Service`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;'); 1164 1165 $Manager->Execute('ALTER TABLE `FinanceCharge` CHANGE `Action` `ChangeAction` ENUM("add","modify","remove") CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;'); 1166 $Manager->Execute('ALTER TABLE `FinanceCharge` ADD `ChangeTime` DATETIME NULL AFTER `ChangeAction`;'); 1167 $Manager->Execute('ALTER TABLE `FinanceCharge` DROP FOREIGN KEY `FinanceCharge_ibfk_1`;'); 1168 $Manager->Execute('ALTER TABLE `FinanceCharge` CHANGE `ReplaceId` `ChangeReplaceId` INT(11) NULL DEFAULT NULL;'); 1169 $Manager->Execute('ALTER TABLE `FinanceCharge` ADD FOREIGN KEY (`ChangeReplaceId`) REFERENCES `FinanceCharge`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;'); 1170 1171 $Manager->Execute('ALTER TABLE `MemberPayment` DROP `NetworkDevice`;'); 1172 1172 } 1173 1173 … … 1175 1175 { 1176 1176 $Manager->Execute('ALTER TABLE `FinanceBankAccount` ADD `AutoImport` INT NOT NULL ;'); 1177 1177 1178 1178 $Manager->Execute('CREATE TABLE IF NOT EXISTS `Scheduler` ( 1179 1179 `Id` int(11) NOT NULL, … … 1189 1189 $Manager->Execute('ALTER TABLE `Scheduler` 1190 1190 ADD PRIMARY KEY (`Id`);'); 1191 1191 1192 1192 $Manager->Execute('ALTER TABLE `Scheduler` 1193 1193 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;'); … … 1201 1201 if($DbResult->num_rows > 0) 1202 1202 { 1203 $DbRow = $DbResult->fetch_assoc();1203 $DbRow = $DbResult->fetch_assoc(); 1204 1204 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1205 1205 "VALUES (NULL , 'Plánovač', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1206 1206 } 1207 1207 1208 1208 $Manager->Execute('INSERT INTO `Module` (`Id`, `Name`, `Title`) VALUES (NULL, "Plánovač", "Scheduler");'); 1209 1209 } … … 1211 1211 function UpdateTo730($Manager) 1212 1212 { 1213 $Manager->Execute('CREATE TABLE IF NOT EXISTS `SchedulerAction` (1213 $Manager->Execute('CREATE TABLE IF NOT EXISTS `SchedulerAction` ( 1214 1214 `Id` int(11) NOT NULL AUTO_INCREMENT, 1215 1215 `Name` varchar(255) NOT NULL, 1216 1216 `Class` varchar(255) NOT NULL, 1217 PRIMARY KEY (`Id`)1218 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); 1217 PRIMARY KEY (`Id`) 1218 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); 1219 1219 $Manager->Execute('ALTER TABLE `Scheduler` CHANGE `Class` `Action` INT(11) NOT NULL;'); 1220 1220 $Manager->Execute("ALTER TABLE `Scheduler` ADD INDEX ( `Action` ) "); … … 1226 1226 function UpdateTo731($Manager) 1227 1227 { 1228 // NetworkDomain1229 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkDomain` (1228 // NetworkDomain 1229 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkDomain` ( 1230 1230 `Id` int(11) NOT NULL, 1231 1231 `Name` varchar(255) NOT NULL, … … 1252 1252 if($DbResult->num_rows > 0) 1253 1253 { 1254 $DbRow = $DbResult->fetch_assoc();1255 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ".1256 "VALUES (NULL , 'Síťová doména', ".$DbRow['Id'].", '".$ActionId."', '1');");1257 } 1258 1259 // Model additions1260 $Manager->Execute('ALTER TABLE `Model` ADD `Title` VARCHAR(255) NOT NULL , '.1261 'ADD `Query` VARCHAR(255) NOT NULL , '.1262 'ADD `DefaultSortColumn` VARCHAR(255) NOT NULL , '.1263 'ADD `DefaultSortOrder` INT NOT NULL ;');1264 1265 // ModelField1266 $Manager->Execute('CREATE TABLE IF NOT EXISTS `ModelField` (1267 `Id` int(11) NOT NULL,1268 `Name` varchar(255) NOT NULL,1269 `Model` int(11) NOT NULL,1270 `Query` varchar(255) NOT NULL,1271 `Type` varchar(255) NOT NULL,1272 `Title` varchar(255) NOT NULL,1273 `DefaultValue` varchar(255) NOT NULL,1274 `IsNull` int(11) NOT NULL,1275 `Suffix` varchar(255) NOT NULL1276 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;');1277 1278 $Manager->Execute('ALTER TABLE `ModelField`1279 ADD PRIMARY KEY (`Id`), ADD KEY `Model` (`Model`);');1280 1281 $Manager->Execute('ALTER TABLE `ModelField`1282 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;');1283 1284 $Manager->Execute('ALTER TABLE `ModelField`1285 ADD CONSTRAINT `ModelField_ibfk_1` FOREIGN KEY (`Model`) REFERENCES `Model` (`Id`);');1286 1287 // Module additions1288 $Manager->Execute('ALTER TABLE `Module` ADD `Version` VARCHAR(255) NOT NULL , '.1289 'ADD `Creator` VARCHAR(255) NOT NULL , '.1290 'ADD `License` VARCHAR(255) NOT NULL , '.1291 'ADD `Installed` INT NOT NULL , '.1292 'ADD `HomePage` VARCHAR(255) NOT NULL , '.1293 'ADD `Description` TEXT NOT NULL ;');1294 1295 // ModuleLink1296 $Manager->Execute('CREATE TABLE IF NOT EXISTS `ModuleLink` (1254 $DbRow = $DbResult->fetch_assoc(); 1255 $Manager->Execute("INSERT INTO `MenuItem` (`Id` ,`Name` ,`Parent` ,`Action` ,`Menu`) ". 1256 "VALUES (NULL , 'Síťová doména', ".$DbRow['Id'].", '".$ActionId."', '1');"); 1257 } 1258 1259 // Model additions 1260 $Manager->Execute('ALTER TABLE `Model` ADD `Title` VARCHAR(255) NOT NULL , '. 1261 'ADD `Query` VARCHAR(255) NOT NULL , '. 1262 'ADD `DefaultSortColumn` VARCHAR(255) NOT NULL , '. 1263 'ADD `DefaultSortOrder` INT NOT NULL ;'); 1264 1265 // ModelField 1266 $Manager->Execute('CREATE TABLE IF NOT EXISTS `ModelField` ( 1267 `Id` int(11) NOT NULL, 1268 `Name` varchar(255) NOT NULL, 1269 `Model` int(11) NOT NULL, 1270 `Query` varchar(255) NOT NULL, 1271 `Type` varchar(255) NOT NULL, 1272 `Title` varchar(255) NOT NULL, 1273 `DefaultValue` varchar(255) NOT NULL, 1274 `IsNull` int(11) NOT NULL, 1275 `Suffix` varchar(255) NOT NULL 1276 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;'); 1277 1278 $Manager->Execute('ALTER TABLE `ModelField` 1279 ADD PRIMARY KEY (`Id`), ADD KEY `Model` (`Model`);'); 1280 1281 $Manager->Execute('ALTER TABLE `ModelField` 1282 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;'); 1283 1284 $Manager->Execute('ALTER TABLE `ModelField` 1285 ADD CONSTRAINT `ModelField_ibfk_1` FOREIGN KEY (`Model`) REFERENCES `Model` (`Id`);'); 1286 1287 // Module additions 1288 $Manager->Execute('ALTER TABLE `Module` ADD `Version` VARCHAR(255) NOT NULL , '. 1289 'ADD `Creator` VARCHAR(255) NOT NULL , '. 1290 'ADD `License` VARCHAR(255) NOT NULL , '. 1291 'ADD `Installed` INT NOT NULL , '. 1292 'ADD `HomePage` VARCHAR(255) NOT NULL , '. 1293 'ADD `Description` TEXT NOT NULL ;'); 1294 1295 // ModuleLink 1296 $Manager->Execute('CREATE TABLE IF NOT EXISTS `ModuleLink` ( 1297 1297 `Id` int(11) NOT NULL, 1298 1298 `Module` int(11) NOT NULL, … … 1305 1305 1306 1306 $Manager->Execute('ALTER TABLE `ModuleLink` 1307 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;');1307 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT;'); 1308 1308 } 1309 1309 1310 1310 function UpdateTo735($Manager) 1311 1311 { 1312 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkFreeAccess` (1312 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkFreeAccess` ( 1313 1313 `Id` int(11) NOT NULL, 1314 1314 `IPAddress` varchar(255) NOT NULL, 1315 1315 `Time` datetime NOT NULL 1316 1316 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;'); 1317 1318 $Manager->Execute('ALTER TABLE `NetworkFreeAccess`1319 ADD PRIMARY KEY (`Id`);');1320 1321 $Manager->Execute('ALTER TABLE `NetworkFreeAccess`1322 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;');1323 1324 $Manager->Execute('ALTER TABLE `NetworkFreeAccess` ADD `Configured` INT NOT NULL ;');1325 $DbResult = $Manager->Execute('INSERT INTO `SchedulerAction` (`Id`, `Name`, `Class`) VALUES '.1326 '(NULL, "Konfigurace internetu zdarma", "ScheduleConfigureFreeAccess");');1327 $ActionId = $Manager->Database->insert_id;1328 $Manager->Execute('INSERT INTO `Scheduler` (`Id`, `Name`, `Enabled`, `Action`, 1329 `Log`, `LastExecutedTime`, `ScheduledTime`, `Period`) VALUES (NULL, "Internet zdarma", 1330 1, '.$ActionId.', "", NULL, "", 5);');1331 $Manager->Execute('ALTER TABLE `Scheduler` CHANGE `ScheduledTime` `ScheduledTime` DATETIME NULL;');1317 1318 $Manager->Execute('ALTER TABLE `NetworkFreeAccess` 1319 ADD PRIMARY KEY (`Id`);'); 1320 1321 $Manager->Execute('ALTER TABLE `NetworkFreeAccess` 1322 MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;'); 1323 1324 $Manager->Execute('ALTER TABLE `NetworkFreeAccess` ADD `Configured` INT NOT NULL ;'); 1325 $DbResult = $Manager->Execute('INSERT INTO `SchedulerAction` (`Id`, `Name`, `Class`) VALUES '. 1326 '(NULL, "Konfigurace internetu zdarma", "ScheduleConfigureFreeAccess");'); 1327 $ActionId = $Manager->Database->insert_id; 1328 $Manager->Execute('INSERT INTO `Scheduler` (`Id`, `Name`, `Enabled`, `Action`, 1329 `Log`, `LastExecutedTime`, `ScheduledTime`, `Period`) VALUES (NULL, "Internet zdarma", 1330 1, '.$ActionId.', "", NULL, "", 5);'); 1331 $Manager->Execute('ALTER TABLE `Scheduler` CHANGE `ScheduledTime` `ScheduledTime` DATETIME NULL;'); 1332 1332 } 1333 1333 1334 1334 function UpdateTo736($Manager) 1335 1335 { 1336 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkLinkType` (1336 $Manager->Execute('CREATE TABLE IF NOT EXISTS `NetworkLinkType` ( 1337 1337 `Id` int(11) NOT NULL, 1338 1338 `Name` varchar(255) NOT NULL … … 1399 1399 697 => array('Revision' => 707, 'Function' => 'UpdateTo707'), 1400 1400 707 => array('Revision' => 710, 'Function' => 'UpdateTo710'), 1401 710 => array('Revision' => 715, 'Function' => 'UpdateTo715'),1401 710 => array('Revision' => 715, 'Function' => 'UpdateTo715'), 1402 1402 715 => array('Revision' => 718, 'Function' => 'UpdateTo718'), 1403 1403 718 => array('Revision' => 719, 'Function' => 'UpdateTo719'), 1404 719 => array('Revision' => 720, 'Function' => 'UpdateTo720'),1405 720 => array('Revision' => 722, 'Function' => 'UpdateTo722'),1406 722 => array('Revision' => 725, 'Function' => 'UpdateTo725'),1407 725 => array('Revision' => 726, 'Function' => 'UpdateTo726'),1408 726 => array('Revision' => 729, 'Function' => 'UpdateTo729'),1409 729 => array('Revision' => 730, 'Function' => 'UpdateTo730'),1410 730 => array('Revision' => 731, 'Function' => 'UpdateTo731'),1411 731 => array('Revision' => 735, 'Function' => 'UpdateTo735'),1412 735 => array('Revision' => 736, 'Function' => 'UpdateTo736'),1404 719 => array('Revision' => 720, 'Function' => 'UpdateTo720'), 1405 720 => array('Revision' => 722, 'Function' => 'UpdateTo722'), 1406 722 => array('Revision' => 725, 'Function' => 'UpdateTo725'), 1407 725 => array('Revision' => 726, 'Function' => 'UpdateTo726'), 1408 726 => array('Revision' => 729, 'Function' => 'UpdateTo729'), 1409 729 => array('Revision' => 730, 'Function' => 'UpdateTo730'), 1410 730 => array('Revision' => 731, 'Function' => 'UpdateTo731'), 1411 731 => array('Revision' => 735, 'Function' => 'UpdateTo735'), 1412 735 => array('Revision' => 736, 'Function' => 'UpdateTo736'), 1413 1413 )); 1414 1414 } -
trunk/Common/Table.php
r636 r738 1 1 <?php 2 2 3 class Control 3 class Control 4 4 { 5 var $Name;6 5 var $Name; 6 7 7 function Show() 8 8 { 9 return('');9 return(''); 10 10 } 11 11 } … … 13 13 class Table 14 14 { 15 function GetCell($Y, $X)16 {17 return('');18 }15 function GetCell($Y, $X) 16 { 17 return(''); 18 } 19 19 20 function BeginRead()21 {22 }23 24 function EndRead()25 {26 }27 20 function BeginRead() 21 { 22 } 23 24 function EndRead() 25 { 26 } 27 28 28 function RowsCount() 29 29 { 30 return(0);30 return(0); 31 31 } 32 32 } … … 34 34 class TableMemory extends Table 35 35 { 36 var $Cells;37 38 function GetCell($Y, $X)39 {40 return($this->Cells[$Y][$X]);41 }36 var $Cells; 37 38 function GetCell($Y, $X) 39 { 40 return($this->Cells[$Y][$X]); 41 } 42 42 43 43 function RowsCount() 44 44 { 45 return(count($this->Cells));45 return(count($this->Cells)); 46 46 } 47 47 } … … 49 49 class TableSQL extends Table 50 50 { 51 var $Query;52 var $Database;53 var $Cells; 54 55 function GetCell($Y, $X)56 {57 return($this->Cells[$Y][$X]);58 }59 60 function BeginRead()61 {62 $this->Cells = array();63 $DbResult = $this->Database->query($this->Query);64 while($DbRow = $DbResult->fetch_row())65 {66 $this->Cells[] = $DbRow;67 }68 }69 70 function EndRead()71 {72 $this->Cells = array();73 }51 var $Query; 52 var $Database; 53 var $Cells; 54 55 function GetCell($Y, $X) 56 { 57 return($this->Cells[$Y][$X]); 58 } 59 60 function BeginRead() 61 { 62 $this->Cells = array(); 63 $DbResult = $this->Database->query($this->Query); 64 while($DbRow = $DbResult->fetch_row()) 65 { 66 $this->Cells[] = $DbRow; 67 } 68 } 69 70 function EndRead() 71 { 72 $this->Cells = array(); 73 } 74 74 75 75 function RowsCount() 76 76 { 77 return(count($this->Cells));77 return(count($this->Cells)); 78 78 } 79 79 } … … 81 81 class TableColumn 82 82 { 83 var $Name;84 var $Title;83 var $Name; 84 var $Title; 85 85 } 86 86 … … 96 96 var $DefaultOrder; 97 97 var $Table; 98 98 99 99 function __construct() 100 100 { 101 global $System;102 103 $this->Columns = array();104 $this->Table = new TableMemory();101 global $System; 102 103 $this->Columns = array(); 104 $this->Table = new TableMemory(); 105 105 $this->OrderDirSQL = array('ASC', 'DESC'); 106 $this->OrderArrowImage = array($System->Link('/images/sort_asc.png'), 106 $this->OrderArrowImage = array($System->Link('/images/sort_asc.png'), 107 107 $System->Link('/images/sort_desc.png')); 108 108 $this->DefaultOrder = 0; 109 109 } 110 110 111 111 function SetColumns($Columns) 112 112 { 113 $this->Columns = array();114 foreach($Columns as $Column)115 {116 $NewCol = new TableColumn();117 $NewCol->Name = $Column['Name'];118 $NewCol->Title = $Column['Title'];119 $this->Columns[] = $NewCol;120 }121 if(count($this->Columns) > 0)122 $this->DefaultColumn = $this->Columns[0]->Name;123 else $this->DefaultColumn = '';113 $this->Columns = array(); 114 foreach($Columns as $Column) 115 { 116 $NewCol = new TableColumn(); 117 $NewCol->Name = $Column['Name']; 118 $NewCol->Title = $Column['Title']; 119 $this->Columns[] = $NewCol; 120 } 121 if(count($this->Columns) > 0) 122 $this->DefaultColumn = $this->Columns[0]->Name; 123 else $this->DefaultColumn = ''; 124 124 } 125 125 126 126 function Show() 127 127 { 128 $Output = '<table class="WideTable">';129 $Output .= $this->GetOrderHeader();130 $this->Table->BeginRead();131 for($Y = 0; $Y < $this->Table->RowsCount(); $Y++)132 {133 $Output .= '<tr>';134 135 for($X = 0; $X < count($this->Columns); $X++)136 {137 $Cell = $this->Table->GetCell($Y, $X);138 if($Cell == '') $Output .= '<td> </td>'; 139 else $Output .= '<td>'.$Cell.'</td>';140 } 141 $Output .= '</tr>';142 }143 $this->Table->EndRead();144 $Output .= '</table>';128 $Output = '<table class="WideTable">'; 129 $Output .= $this->GetOrderHeader(); 130 $this->Table->BeginRead(); 131 for($Y = 0; $Y < $this->Table->RowsCount(); $Y++) 132 { 133 $Output .= '<tr>'; 134 135 for($X = 0; $X < count($this->Columns); $X++) 136 { 137 $Cell = $this->Table->GetCell($Y, $X); 138 if($Cell == '') $Output .= '<td> </td>'; 139 else $Output .= '<td>'.$Cell.'</td>'; 140 } 141 $Output .= '</tr>'; 142 } 143 $this->Table->EndRead(); 144 $Output .= '</table>'; 145 145 return($Output); 146 146 } 147 147 148 148 function GetOrderHeader() 149 149 { … … 152 152 if(!array_key_exists('OrderCol', $_SESSION)) $_SESSION['OrderCol'] = $this->DefaultColumn; 153 153 if(!array_key_exists('OrderDir', $_SESSION)) $_SESSION['OrderDir'] = $this->DefaultOrder; 154 154 155 155 // Check OrderCol 156 156 $Found = false; … … 159 159 if($Column->Name == $_SESSION['OrderCol']) 160 160 { 161 $Found = true; 161 $Found = true; 162 162 break; 163 163 } … … 169 169 } 170 170 // Check OrderDir 171 if(($_SESSION['OrderDir'] != 0) and ($_SESSION['OrderDir'] != 1)) 171 if(($_SESSION['OrderDir'] != 0) and ($_SESSION['OrderDir'] != 1)) 172 172 $_SESSION['OrderDir'] = 0; 173 173 174 174 $Result = ''; 175 175 $QueryItems = GetQueryStringArray($_SERVER['QUERY_STRING']); … … 178 178 $QueryItems['OrderCol'] = $Column->Name; 179 179 $QueryItems['OrderDir'] = 1 - $_SESSION['OrderDir']; 180 if($Column->Name == $_SESSION['OrderCol']) 180 if($Column->Name == $_SESSION['OrderCol']) 181 181 $ArrowImage = '<img style="vertical-align: middle; border: 0px;" src="'.$this->OrderArrowImage[$_SESSION['OrderDir']].'" alt="order arrow">'; 182 182 else $ArrowImage = ''; … … 187 187 $this->OrderColumn = $_SESSION['OrderCol']; 188 188 $this->OrderDirection = $_SESSION['OrderDir']; 189 189 190 190 return($Result); 191 191 } -
trunk/Common/UTF8.php
r635 r738 21 21 ISO8859-1: iso1 22 22 Windows1257: win1257 23 23 24 24 example: $new_string=to_utf8($some_string,"win1250"); 25 25 */ … … 28 28 /* 29 29 translation table - actually, it's array where key is hexadecimal number of 30 character in ISO8859-2/Windows1250 and value is its two byte representation in UTF-8 30 character in ISO8859-2/Windows1250 and value is its two byte representation in UTF-8 31 31 */ 32 32 33 class Encoding 33 class Encoding 34 34 { 35 35 function __construct() 36 36 { 37 $this->CharTable = array(37 $this->CharTable = array( 38 38 'iso2' => array( 39 0x80=>"\xc2\x80",40 0x81=>"\xc2\x81",41 0x82=>"\xc2\x82",42 0x83=>"\xc2\x83",43 0x84=>"\xc2\x84",44 0x85=>"\xc2\x85",45 0x86=>"\xc2\x86",46 0x87=>"\xc2\x87",47 0x88=>"\xc2\x88",48 0x89=>"\xc2\x89",49 0x8A=>"\xc2\x8a",50 0x8B=>"\xc2\x8b",51 0x8C=>"\xc2\x8c",52 0x8D=>"\xc2\x8d",53 0x8E=>"\xc2\x8e",54 0x8F=>"\xc2\x8f",55 0x90=>"\xc2\x90",56 0x91=>"\xc2\x91",57 0x92=>"\xc2\x92",58 0x93=>"\xc2\x93",59 0x94=>"\xc2\x94",60 0x95=>"\xc2\x95",61 0x96=>"\xc2\x96",62 0x97=>"\xc2\x97",63 0x98=>"\xc2\x98",64 0x99=>"\xc2\x99",65 0x9A=>"\xc2\x9a",66 0x9B=>"\xc2\x9b",67 0x9C=>"\xc2\x9c",68 0x9D=>"\xc2\x9d",69 0x9E=>"\xc2\x9e",70 0x9F=>"\xc2\x9f",71 0xA0=>"\xc2\xa0",72 0xA1=>"\xc4\x84",73 0xA2=>"\xcb\x98",74 0xA3=>"\xc5\x81",75 0xA4=>"\xc2\xa4",76 0xA5=>"\xc4\xbd",77 0xA6=>"\xc5\x9a",78 0xA7=>"\xc2\xa7",79 0xA8=>"\xc2\xa8",80 0xA9=>"\xc5\xa0",81 0xAA=>"\xc5\x9e",82 0xAB=>"\xc5\xa4",83 0xAC=>"\xc5\xb9",84 0xAD=>"\xc2\xad",85 0xAE=>"\xc5\xbd",86 0xAF=>"\xc5\xbb",87 0xB0=>"\xc2\xb0",88 0xB1=>"\xc4\x85",89 0xB2=>"\xcb\x9b",90 0xB3=>"\xc5\x82",91 0xB4=>"\xc2\xb4",92 0xB5=>"\xc4\xbe",93 0xB6=>"\xc5\x9b",94 0xB7=>"\xcb\x87",95 0xB8=>"\xc2\xb8",96 0xB9=>"\xc5\xa1",97 0xBA=>"\xc5\x9f",98 0xBB=>"\xc5\xa5",99 0xBC=>"\xc5\xba",100 0xBD=>"\xcb\x9d",101 0xBE=>"\xc5\xbe",102 0xBF=>"\xc5\xbc",103 0xC0=>"\xc5\x94",104 0xC1=>"\xc3\x81",105 0xC2=>"\xc3\x82",106 0xC3=>"\xc4\x82",107 0xC4=>"\xc3\x84",108 0xC5=>"\xc4\xb9",109 0xC6=>"\xc4\x86",110 0xC7=>"\xc3\x87",111 0xC8=>"\xc4\x8c",112 0xC9=>"\xc3\x89",113 0xCA=>"\xc4\x98",114 0xCB=>"\xc3\x8b",115 0xCC=>"\xc4\x9a",116 0xCD=>"\xc3\x8d",117 0xCE=>"\xc3\x8e",118 0xCF=>"\xc4\x8e",119 0xD0=>"\xc4\x90",120 0xD1=>"\xc5\x83",121 0xD2=>"\xc5\x87",122 0xD3=>"\xc3\x93",123 0xD4=>"\xc3\x94",124 0xD5=>"\xc5\x90",125 0xD6=>"\xc3\x96",126 0xD7=>"\xc3\x97",127 0xD8=>"\xc5\x98",128 0xD9=>"\xc5\xae",129 0xDA=>"\xc3\x9a",130 0xDB=>"\xc5\xb0",131 0xDC=>"\xc3\x9c",132 0xDD=>"\xc3\x9d",133 0xDE=>"\xc5\xa2",134 0xDF=>"\xc3\x9f",135 0xE0=>"\xc5\x95",136 0xE1=>"\xc3\xa1",137 0xE2=>"\xc3\xa2",138 0xE3=>"\xc4\x83",139 0xE4=>"\xc3\xa4",140 0xE5=>"\xc4\xba",141 0xE6=>"\xc4\x87",142 0xE7=>"\xc3\xa7",143 0xE8=>"\xc4\x8d",144 0xE9=>"\xc3\xa9",145 0xEA=>"\xc4\x99",146 0xEB=>"\xc3\xab",147 0xEC=>"\xc4\x9b",148 0xED=>"\xc3\xad",149 0xEE=>"\xc3\xae",150 0xEF=>"\xc4\x8f",151 0xF0=>"\xc4\x91",152 0xF1=>"\xc5\x84",153 0xF2=>"\xc5\x88",154 0xF3=>"\xc3\xb3",155 0xF4=>"\xc3\xb4",156 0xF5=>"\xc5\x91",157 0xF6=>"\xc3\xb6",158 0xF7=>"\xc3\xb7",159 0xF8=>"\xc5\x99",160 0xF9=>"\xc5\xaf",161 0xFA=>"\xc3\xba",162 0xFB=>"\xc5\xb1",163 0xFC=>"\xc3\xbc",164 0xFD=>"\xc3\xbd",165 0xFE=>"\xc5\xa3",166 0xFF=>"\xcb\x99"39 0x80=>"\xc2\x80", 40 0x81=>"\xc2\x81", 41 0x82=>"\xc2\x82", 42 0x83=>"\xc2\x83", 43 0x84=>"\xc2\x84", 44 0x85=>"\xc2\x85", 45 0x86=>"\xc2\x86", 46 0x87=>"\xc2\x87", 47 0x88=>"\xc2\x88", 48 0x89=>"\xc2\x89", 49 0x8A=>"\xc2\x8a", 50 0x8B=>"\xc2\x8b", 51 0x8C=>"\xc2\x8c", 52 0x8D=>"\xc2\x8d", 53 0x8E=>"\xc2\x8e", 54 0x8F=>"\xc2\x8f", 55 0x90=>"\xc2\x90", 56 0x91=>"\xc2\x91", 57 0x92=>"\xc2\x92", 58 0x93=>"\xc2\x93", 59 0x94=>"\xc2\x94", 60 0x95=>"\xc2\x95", 61 0x96=>"\xc2\x96", 62 0x97=>"\xc2\x97", 63 0x98=>"\xc2\x98", 64 0x99=>"\xc2\x99", 65 0x9A=>"\xc2\x9a", 66 0x9B=>"\xc2\x9b", 67 0x9C=>"\xc2\x9c", 68 0x9D=>"\xc2\x9d", 69 0x9E=>"\xc2\x9e", 70 0x9F=>"\xc2\x9f", 71 0xA0=>"\xc2\xa0", 72 0xA1=>"\xc4\x84", 73 0xA2=>"\xcb\x98", 74 0xA3=>"\xc5\x81", 75 0xA4=>"\xc2\xa4", 76 0xA5=>"\xc4\xbd", 77 0xA6=>"\xc5\x9a", 78 0xA7=>"\xc2\xa7", 79 0xA8=>"\xc2\xa8", 80 0xA9=>"\xc5\xa0", 81 0xAA=>"\xc5\x9e", 82 0xAB=>"\xc5\xa4", 83 0xAC=>"\xc5\xb9", 84 0xAD=>"\xc2\xad", 85 0xAE=>"\xc5\xbd", 86 0xAF=>"\xc5\xbb", 87 0xB0=>"\xc2\xb0", 88 0xB1=>"\xc4\x85", 89 0xB2=>"\xcb\x9b", 90 0xB3=>"\xc5\x82", 91 0xB4=>"\xc2\xb4", 92 0xB5=>"\xc4\xbe", 93 0xB6=>"\xc5\x9b", 94 0xB7=>"\xcb\x87", 95 0xB8=>"\xc2\xb8", 96 0xB9=>"\xc5\xa1", 97 0xBA=>"\xc5\x9f", 98 0xBB=>"\xc5\xa5", 99 0xBC=>"\xc5\xba", 100 0xBD=>"\xcb\x9d", 101 0xBE=>"\xc5\xbe", 102 0xBF=>"\xc5\xbc", 103 0xC0=>"\xc5\x94", 104 0xC1=>"\xc3\x81", 105 0xC2=>"\xc3\x82", 106 0xC3=>"\xc4\x82", 107 0xC4=>"\xc3\x84", 108 0xC5=>"\xc4\xb9", 109 0xC6=>"\xc4\x86", 110 0xC7=>"\xc3\x87", 111 0xC8=>"\xc4\x8c", 112 0xC9=>"\xc3\x89", 113 0xCA=>"\xc4\x98", 114 0xCB=>"\xc3\x8b", 115 0xCC=>"\xc4\x9a", 116 0xCD=>"\xc3\x8d", 117 0xCE=>"\xc3\x8e", 118 0xCF=>"\xc4\x8e", 119 0xD0=>"\xc4\x90", 120 0xD1=>"\xc5\x83", 121 0xD2=>"\xc5\x87", 122 0xD3=>"\xc3\x93", 123 0xD4=>"\xc3\x94", 124 0xD5=>"\xc5\x90", 125 0xD6=>"\xc3\x96", 126 0xD7=>"\xc3\x97", 127 0xD8=>"\xc5\x98", 128 0xD9=>"\xc5\xae", 129 0xDA=>"\xc3\x9a", 130 0xDB=>"\xc5\xb0", 131 0xDC=>"\xc3\x9c", 132 0xDD=>"\xc3\x9d", 133 0xDE=>"\xc5\xa2", 134 0xDF=>"\xc3\x9f", 135 0xE0=>"\xc5\x95", 136 0xE1=>"\xc3\xa1", 137 0xE2=>"\xc3\xa2", 138 0xE3=>"\xc4\x83", 139 0xE4=>"\xc3\xa4", 140 0xE5=>"\xc4\xba", 141 0xE6=>"\xc4\x87", 142 0xE7=>"\xc3\xa7", 143 0xE8=>"\xc4\x8d", 144 0xE9=>"\xc3\xa9", 145 0xEA=>"\xc4\x99", 146 0xEB=>"\xc3\xab", 147 0xEC=>"\xc4\x9b", 148 0xED=>"\xc3\xad", 149 0xEE=>"\xc3\xae", 150 0xEF=>"\xc4\x8f", 151 0xF0=>"\xc4\x91", 152 0xF1=>"\xc5\x84", 153 0xF2=>"\xc5\x88", 154 0xF3=>"\xc3\xb3", 155 0xF4=>"\xc3\xb4", 156 0xF5=>"\xc5\x91", 157 0xF6=>"\xc3\xb6", 158 0xF7=>"\xc3\xb7", 159 0xF8=>"\xc5\x99", 160 0xF9=>"\xc5\xaf", 161 0xFA=>"\xc3\xba", 162 0xFB=>"\xc5\xb1", 163 0xFC=>"\xc3\xbc", 164 0xFD=>"\xc3\xbd", 165 0xFE=>"\xc5\xa3", 166 0xFF=>"\xcb\x99" 167 167 ), 168 168 'win1250' => array( 169 0x80=>"\xc2\x80",170 0x81=>"\xc2\x81",171 0x82=>"\xe2\x80\x9a",172 0x83=>"\xc2\x83",173 0x84=>"\xe2\x80\x9e",174 0x85=>"\xe2\x80\xa6",175 0x86=>"\xe2\x80\xa0",176 0x87=>"\xe2\x80\xa1",177 0x88=>"\xc2\x88",178 0x89=>"\xe2\x80\xb0",179 0x8a=>"\xc5\xa0",180 0x8b=>"\xe2\x80\xb9",181 0x8c=>"\xc5\x9a",182 0x8d=>"\xc5\xa4",183 0x8e=>"\xc5\xbd",184 0x8f=>"\xc5\xb9",185 0x90=>"\xc2\x90",186 0x91=>"\xe2\x80\x98",187 0x92=>"\xe2\x80\x99",188 0x93=>"\xe2\x80\x9c",189 0x94=>"\xe2\x80\x9d",190 0x95=>"\xe2\x80\xa2",191 0x96=>"\xe2\x80\x93",192 0x97=>"\xe2\x80\x94",193 0x98=>"\xe2\x80\x98",194 0x99=>"\xe2\x84\xa2",195 0x9a=>"\xc5\xa1",196 0x9b=>"\xe2\x80\xba",197 0x9c=>"\xc5\x9b",198 0x9d=>"\xc5\xa5",199 0x9e=>"\xc5\xbe",200 0x9f=>"\xc5\xba",201 0xa0=>"\xc2\xa0",202 0xa1=>"\xcb\x87",203 0xa2=>"\xcb\x98",204 0xa3=>"\xc5\x81",205 0xa4=>"\xc2\xa4",206 0xa5=>"\xc4\x84",207 0xa6=>"\xc2\xa6",208 0xa7=>"\xc2\xa7",209 0xa8=>"\xc2\xa8",210 0xa9=>"\xc2\xa9",211 0xaa=>"\xc5\x9e",212 0xab=>"\xc2\xab",213 0xac=>"\xc2\xac",214 0xad=>"\xc2\xad",215 0xae=>"\xc2\xae",216 0xaf=>"\xc5\xbb",217 0xb0=>"\xc2\xb0",218 0xb1=>"\xc2\xb1",219 0xb2=>"\xcb\x9b",220 0xb3=>"\xc5\x82",221 0xb4=>"\xc2\xb4",222 0xb5=>"\xc2\xb5",223 0xb6=>"\xc2\xb6",224 0xb7=>"\xc2\xb7",225 0xb8=>"\xc2\xb8",226 0xb9=>"\xc4\x85",227 0xba=>"\xc5\x9f",228 0xbb=>"\xc2\xbb",229 0xbc=>"\xc4\xbd",230 0xbd=>"\xcb\x9d",231 0xbe=>"\xc4\xbe",232 0xbf=>"\xc5\xbc",233 0xc0=>"\xc5\x94",234 0xc1=>"\xc3\x81",235 0xc2=>"\xc3\x82",236 0xc3=>"\xc4\x82",237 0xc4=>"\xc3\x84",238 0xc5=>"\xc4\xb9",239 0xc6=>"\xc4\x86",240 0xc7=>"\xc3\x87",241 0xc8=>"\xc4\x8c",242 0xc9=>"\xc3\x89",243 0xca=>"\xc4\x98",244 0xcb=>"\xc3\x8b",245 0xcc=>"\xc4\x9a",246 0xcd=>"\xc3\x8d",247 0xce=>"\xc3\x8e",248 0xcf=>"\xc4\x8e",249 0xd0=>"\xc4\x90",250 0xd1=>"\xc5\x83",251 0xd2=>"\xc5\x87",252 0xd3=>"\xc3\x93",253 0xd4=>"\xc3\x94",254 0xd5=>"\xc5\x90",255 0xd6=>"\xc3\x96",256 0xd7=>"\xc3\x97",257 0xd8=>"\xc5\x98",258 0xd9=>"\xc5\xae",259 0xda=>"\xc3\x9a",260 0xdb=>"\xc5\xb0",261 0xdc=>"\xc3\x9c",262 0xdd=>"\xc3\x9d",263 0xde=>"\xc5\xa2",264 0xdf=>"\xc3\x9f",265 0xe0=>"\xc5\x95",266 0xe1=>"\xc3\xa1",267 0xe2=>"\xc3\xa2",268 0xe3=>"\xc4\x83",269 0xe4=>"\xc3\xa4",270 0xe5=>"\xc4\xba",271 0xe6=>"\xc4\x87",272 0xe7=>"\xc3\xa7",273 0xe8=>"\xc4\x8d",274 0xe9=>"\xc3\xa9",275 0xea=>"\xc4\x99",276 0xeb=>"\xc3\xab",277 0xec=>"\xc4\x9b",278 0xed=>"\xc3\xad",279 0xee=>"\xc3\xae",280 0xef=>"\xc4\x8f",281 0xf0=>"\xc4\x91",282 0xf1=>"\xc5\x84",283 0xf2=>"\xc5\x88",284 0xf3=>"\xc3\xb3",285 0xf4=>"\xc3\xb4",286 0xf5=>"\xc5\x91",287 0xf6=>"\xc3\xb6",288 0xf7=>"\xc3\xb7",289 0xf8=>"\xc5\x99",290 0xf9=>"\xc5\xaf",291 0xfa=>"\xc3\xba",292 0xfb=>"\xc5\xb1",293 0xfc=>"\xc3\xbc",294 0xfd=>"\xc3\xbd",295 0xfe=>"\xc5\xa3",296 0xff=>"\xcb\x99"169 0x80=>"\xc2\x80", 170 0x81=>"\xc2\x81", 171 0x82=>"\xe2\x80\x9a", 172 0x83=>"\xc2\x83", 173 0x84=>"\xe2\x80\x9e", 174 0x85=>"\xe2\x80\xa6", 175 0x86=>"\xe2\x80\xa0", 176 0x87=>"\xe2\x80\xa1", 177 0x88=>"\xc2\x88", 178 0x89=>"\xe2\x80\xb0", 179 0x8a=>"\xc5\xa0", 180 0x8b=>"\xe2\x80\xb9", 181 0x8c=>"\xc5\x9a", 182 0x8d=>"\xc5\xa4", 183 0x8e=>"\xc5\xbd", 184 0x8f=>"\xc5\xb9", 185 0x90=>"\xc2\x90", 186 0x91=>"\xe2\x80\x98", 187 0x92=>"\xe2\x80\x99", 188 0x93=>"\xe2\x80\x9c", 189 0x94=>"\xe2\x80\x9d", 190 0x95=>"\xe2\x80\xa2", 191 0x96=>"\xe2\x80\x93", 192 0x97=>"\xe2\x80\x94", 193 0x98=>"\xe2\x80\x98", 194 0x99=>"\xe2\x84\xa2", 195 0x9a=>"\xc5\xa1", 196 0x9b=>"\xe2\x80\xba", 197 0x9c=>"\xc5\x9b", 198 0x9d=>"\xc5\xa5", 199 0x9e=>"\xc5\xbe", 200 0x9f=>"\xc5\xba", 201 0xa0=>"\xc2\xa0", 202 0xa1=>"\xcb\x87", 203 0xa2=>"\xcb\x98", 204 0xa3=>"\xc5\x81", 205 0xa4=>"\xc2\xa4", 206 0xa5=>"\xc4\x84", 207 0xa6=>"\xc2\xa6", 208 0xa7=>"\xc2\xa7", 209 0xa8=>"\xc2\xa8", 210 0xa9=>"\xc2\xa9", 211 0xaa=>"\xc5\x9e", 212 0xab=>"\xc2\xab", 213 0xac=>"\xc2\xac", 214 0xad=>"\xc2\xad", 215 0xae=>"\xc2\xae", 216 0xaf=>"\xc5\xbb", 217 0xb0=>"\xc2\xb0", 218 0xb1=>"\xc2\xb1", 219 0xb2=>"\xcb\x9b", 220 0xb3=>"\xc5\x82", 221 0xb4=>"\xc2\xb4", 222 0xb5=>"\xc2\xb5", 223 0xb6=>"\xc2\xb6", 224 0xb7=>"\xc2\xb7", 225 0xb8=>"\xc2\xb8", 226 0xb9=>"\xc4\x85", 227 0xba=>"\xc5\x9f", 228 0xbb=>"\xc2\xbb", 229 0xbc=>"\xc4\xbd", 230 0xbd=>"\xcb\x9d", 231 0xbe=>"\xc4\xbe", 232 0xbf=>"\xc5\xbc", 233 0xc0=>"\xc5\x94", 234 0xc1=>"\xc3\x81", 235 0xc2=>"\xc3\x82", 236 0xc3=>"\xc4\x82", 237 0xc4=>"\xc3\x84", 238 0xc5=>"\xc4\xb9", 239 0xc6=>"\xc4\x86", 240 0xc7=>"\xc3\x87", 241 0xc8=>"\xc4\x8c", 242 0xc9=>"\xc3\x89", 243 0xca=>"\xc4\x98", 244 0xcb=>"\xc3\x8b", 245 0xcc=>"\xc4\x9a", 246 0xcd=>"\xc3\x8d", 247 0xce=>"\xc3\x8e", 248 0xcf=>"\xc4\x8e", 249 0xd0=>"\xc4\x90", 250 0xd1=>"\xc5\x83", 251 0xd2=>"\xc5\x87", 252 0xd3=>"\xc3\x93", 253 0xd4=>"\xc3\x94", 254 0xd5=>"\xc5\x90", 255 0xd6=>"\xc3\x96", 256 0xd7=>"\xc3\x97", 257 0xd8=>"\xc5\x98", 258 0xd9=>"\xc5\xae", 259 0xda=>"\xc3\x9a", 260 0xdb=>"\xc5\xb0", 261 0xdc=>"\xc3\x9c", 262 0xdd=>"\xc3\x9d", 263 0xde=>"\xc5\xa2", 264 0xdf=>"\xc3\x9f", 265 0xe0=>"\xc5\x95", 266 0xe1=>"\xc3\xa1", 267 0xe2=>"\xc3\xa2", 268 0xe3=>"\xc4\x83", 269 0xe4=>"\xc3\xa4", 270 0xe5=>"\xc4\xba", 271 0xe6=>"\xc4\x87", 272 0xe7=>"\xc3\xa7", 273 0xe8=>"\xc4\x8d", 274 0xe9=>"\xc3\xa9", 275 0xea=>"\xc4\x99", 276 0xeb=>"\xc3\xab", 277 0xec=>"\xc4\x9b", 278 0xed=>"\xc3\xad", 279 0xee=>"\xc3\xae", 280 0xef=>"\xc4\x8f", 281 0xf0=>"\xc4\x91", 282 0xf1=>"\xc5\x84", 283 0xf2=>"\xc5\x88", 284 0xf3=>"\xc3\xb3", 285 0xf4=>"\xc3\xb4", 286 0xf5=>"\xc5\x91", 287 0xf6=>"\xc3\xb6", 288 0xf7=>"\xc3\xb7", 289 0xf8=>"\xc5\x99", 290 0xf9=>"\xc5\xaf", 291 0xfa=>"\xc3\xba", 292 0xfb=>"\xc5\xb1", 293 0xfc=>"\xc3\xbc", 294 0xfd=>"\xc3\xbd", 295 0xfe=>"\xc5\xa3", 296 0xff=>"\xcb\x99" 297 297 ), 298 298 'iso1' => array( 299 0xA0=>"\xc2\xa0",300 0xA1=>"\xc2\xa1",301 0xA2=>"\xc2\xa2",302 0xA3=>"\xc2\xa3",303 0xA4=>"\xc2\xa4",304 0xA5=>"\xc2\xa5",305 0xA6=>"\xc2\xa6",306 0xA7=>"\xc2\xa7",307 0xA8=>"\xc2\xa8",308 0xA9=>"\xc2\xa9",309 0xAA=>"\xc2\xaa",310 0xAB=>"\xc2\xab",311 0xAC=>"\xc2\xac",312 0xAD=>"\xc2\xad",313 0xAE=>"\xc2\xae",314 0xAF=>"\xc2\xaf",315 0xB0=>"\xc2\xb0",316 0xB1=>"\xc2\xb1",317 0xB2=>"\xc2\xb2",318 0xB3=>"\xc2\xb3",319 0xB4=>"\xc2\xb4",320 0xB5=>"\xc2\xb5",321 0xB6=>"\xc2\xb6",322 0xB7=>"\xc2\xb7",323 0xB8=>"\xc2\xb8",324 0xB9=>"\xc2\xb9",325 0xBA=>"\xc2\xba",326 0xBB=>"\xc2\xbb",327 0xBC=>"\xc2\xbc",328 0xBD=>"\xc2\xbd",329 0xBE=>"\xc2\xbe",330 0xBF=>"\xc2\xbf",331 0xC0=>"\xc3\x80",332 0xC1=>"\xc3\x81",333 0xC2=>"\xc3\x82",334 0xC3=>"\xc3\x83",335 0xC4=>"\xc3\x84",336 0xC5=>"\xc3\x85",337 0xC6=>"\xc3\x86",338 0xC7=>"\xc3\x87",339 0xC8=>"\xc3\x88",340 0xC9=>"\xc3\x89",341 0xCA=>"\xc3\x8a",342 0xCB=>"\xc3\x8b",343 0xCC=>"\xc3\x8c",344 0xCD=>"\xc3\x8d",345 0xCE=>"\xc3\x8e",346 0xCF=>"\xc3\x8f",347 0xD0=>"\xc3\x90",348 0xD1=>"\xc3\x91",349 0xD2=>"\xc3\x92",350 0xD3=>"\xc3\x93",351 0xD4=>"\xc3\x94",352 0xD5=>"\xc3\x95",353 0xD6=>"\xc3\x96",354 0xD7=>"\xc3\x97",355 0xD8=>"\xc3\x98",356 0xD9=>"\xc3\x99",357 0xDA=>"\xc3\x9a",358 0xDB=>"\xc3\x9b",359 0xDC=>"\xc3\x9c",360 0xDD=>"\xc3\x9d",361 0xDE=>"\xc3\x9e",362 0xDF=>"\xc3\x9f",363 0xE0=>"\xc3\xa0",364 0xE1=>"\xc3\xa1",365 0xE2=>"\xc3\xa2",366 0xE3=>"\xc3\xa3",367 0xE4=>"\xc3\xa4",368 0xE5=>"\xc3\xa5",369 0xE6=>"\xc3\xa6",370 0xE7=>"\xc3\xa7",371 0xE8=>"\xc3\xa8",372 0xE9=>"\xc3\xa9",373 0xEA=>"\xc3\xaa",374 0xEB=>"\xc3\xab",375 0xEC=>"\xc3\xac",376 0xED=>"\xc3\xad",377 0xEE=>"\xc3\xae",378 0xEF=>"\xc3\xaf",379 0xF0=>"\xc3\xb0",380 0xF1=>"\xc3\xb1",381 0xF2=>"\xc3\xb2",382 0xF3=>"\xc3\xb3",383 0xF4=>"\xc3\xb4",384 0xF5=>"\xc3\xb5",385 0xF6=>"\xc3\xb6",386 0xF7=>"\xc3\xb7",387 0xF8=>"\xc3\xb8",388 0xF9=>"\xc3\xb9",389 0xFA=>"\xc3\xba",390 0xFB=>"\xc3\xbb",391 0xFC=>"\xc3\xbc",392 0xFD=>"\xc3\xbd",393 0xFE=>"\xc3\xbe"299 0xA0=>"\xc2\xa0", 300 0xA1=>"\xc2\xa1", 301 0xA2=>"\xc2\xa2", 302 0xA3=>"\xc2\xa3", 303 0xA4=>"\xc2\xa4", 304 0xA5=>"\xc2\xa5", 305 0xA6=>"\xc2\xa6", 306 0xA7=>"\xc2\xa7", 307 0xA8=>"\xc2\xa8", 308 0xA9=>"\xc2\xa9", 309 0xAA=>"\xc2\xaa", 310 0xAB=>"\xc2\xab", 311 0xAC=>"\xc2\xac", 312 0xAD=>"\xc2\xad", 313 0xAE=>"\xc2\xae", 314 0xAF=>"\xc2\xaf", 315 0xB0=>"\xc2\xb0", 316 0xB1=>"\xc2\xb1", 317 0xB2=>"\xc2\xb2", 318 0xB3=>"\xc2\xb3", 319 0xB4=>"\xc2\xb4", 320 0xB5=>"\xc2\xb5", 321 0xB6=>"\xc2\xb6", 322 0xB7=>"\xc2\xb7", 323 0xB8=>"\xc2\xb8", 324 0xB9=>"\xc2\xb9", 325 0xBA=>"\xc2\xba", 326 0xBB=>"\xc2\xbb", 327 0xBC=>"\xc2\xbc", 328 0xBD=>"\xc2\xbd", 329 0xBE=>"\xc2\xbe", 330 0xBF=>"\xc2\xbf", 331 0xC0=>"\xc3\x80", 332 0xC1=>"\xc3\x81", 333 0xC2=>"\xc3\x82", 334 0xC3=>"\xc3\x83", 335 0xC4=>"\xc3\x84", 336 0xC5=>"\xc3\x85", 337 0xC6=>"\xc3\x86", 338 0xC7=>"\xc3\x87", 339 0xC8=>"\xc3\x88", 340 0xC9=>"\xc3\x89", 341 0xCA=>"\xc3\x8a", 342 0xCB=>"\xc3\x8b", 343 0xCC=>"\xc3\x8c", 344 0xCD=>"\xc3\x8d", 345 0xCE=>"\xc3\x8e", 346 0xCF=>"\xc3\x8f", 347 0xD0=>"\xc3\x90", 348 0xD1=>"\xc3\x91", 349 0xD2=>"\xc3\x92", 350 0xD3=>"\xc3\x93", 351 0xD4=>"\xc3\x94", 352 0xD5=>"\xc3\x95", 353 0xD6=>"\xc3\x96", 354 0xD7=>"\xc3\x97", 355 0xD8=>"\xc3\x98", 356 0xD9=>"\xc3\x99", 357 0xDA=>"\xc3\x9a", 358 0xDB=>"\xc3\x9b", 359 0xDC=>"\xc3\x9c", 360 0xDD=>"\xc3\x9d", 361 0xDE=>"\xc3\x9e", 362 0xDF=>"\xc3\x9f", 363 0xE0=>"\xc3\xa0", 364 0xE1=>"\xc3\xa1", 365 0xE2=>"\xc3\xa2", 366 0xE3=>"\xc3\xa3", 367 0xE4=>"\xc3\xa4", 368 0xE5=>"\xc3\xa5", 369 0xE6=>"\xc3\xa6", 370 0xE7=>"\xc3\xa7", 371 0xE8=>"\xc3\xa8", 372 0xE9=>"\xc3\xa9", 373 0xEA=>"\xc3\xaa", 374 0xEB=>"\xc3\xab", 375 0xEC=>"\xc3\xac", 376 0xED=>"\xc3\xad", 377 0xEE=>"\xc3\xae", 378 0xEF=>"\xc3\xaf", 379 0xF0=>"\xc3\xb0", 380 0xF1=>"\xc3\xb1", 381 0xF2=>"\xc3\xb2", 382 0xF3=>"\xc3\xb3", 383 0xF4=>"\xc3\xb4", 384 0xF5=>"\xc3\xb5", 385 0xF6=>"\xc3\xb6", 386 0xF7=>"\xc3\xb7", 387 0xF8=>"\xc3\xb8", 388 0xF9=>"\xc3\xb9", 389 0xFA=>"\xc3\xba", 390 0xFB=>"\xc3\xbb", 391 0xFC=>"\xc3\xbc", 392 0xFD=>"\xc3\xbd", 393 0xFE=>"\xc3\xbe" 394 394 ), 395 395 'win1257' => array( 396 0x80=>"\xe2\x82\xac",397 0x81=>"\xc0\x4",398 0x82=>"\xe2\x80\x9a",399 0x83=>"\xc0\x4",400 0x84=>"\xe2\x80\x9e",401 0x85=>"\xe2\x80\xa6",402 0x86=>"\xe2\x80\xa0",403 0x87=>"\xe2\x80\xa1",404 0x88=>"\xc0\x4",405 0x89=>"\xe2\x80\xb0",406 0x8A=>"\xc0\x4",407 0x8B=>"\xe2\x80\xb9",408 0x8C=>"\xc0\x4",409 0x8D=>"\xc2\xa8",410 0x8E=>"\xcb\x87",411 0x8F=>"\xc2\xb8",412 0x90=>"\xc0\x4",413 0x91=>"\xe2\x80\x98",414 0x92=>"\xe2\x80\x99",415 0x93=>"\xe2\x80\x9c",416 0x94=>"\xe2\x80\x9d",417 0x95=>"\xe2\x80\xa2",418 0x96=>"\xe2\x80\x93",419 0x97=>"\xe2\x80\x94",420 0x98=>"\xc0\x4",421 0x99=>"\xe2\x84\xa2",422 0x9A=>"\xc0\x4",423 0x9B=>"\xe2\x80\xba",424 0x9C=>"\xc0\x4",425 0x9D=>"\xc2\xaf",426 0x9E=>"\xcb\x9b",427 0x9F=>"\xc0\x4",428 0xA0=>"\xc2\xa0",429 0xA1=>"\xc0\x4",430 0xA2=>"\xc2\xa2",431 0xA3=>"\xc2\xa3",432 0xA4=>"\xc2\xa4",433 0xA5=>"\xc0\x4",434 0xA6=>"\xc2\xa6",435 0xA7=>"\xc2\xa7",436 0xA8=>"\xc3\x98",437 0xA9=>"\xc2\xa9",438 0xAA=>"\xc5\x96",439 0xAB=>"\xc2\xab",440 0xAC=>"\xc2\xac",441 0xAD=>"\xc2\xad",442 0xAE=>"\xc2\xae",443 0xAF=>"\xc3\x86",444 0xB0=>"\xc2\xb0",445 0xB1=>"\xc2\xb1",446 0xB2=>"\xc2\xb2",447 0xB3=>"\xc2\xb3",448 0xB4=>"\xc2\xb4",449 0xB5=>"\xc2\xb5",450 0xB6=>"\xc2\xb6",451 0xB7=>"\xc2\xb7",452 0xB8=>"\xc3\xb8",453 0xB9=>"\xc2\xb9",454 0xBA=>"\xc5\x97",455 0xBB=>"\xc2\xbb",456 0xBC=>"\xc2\xbc",457 0xBD=>"\xc2\xbd",458 0xBE=>"\xc2\xbe",459 0xBF=>"\xc3\xa6",460 0xC0=>"\xc4\x84",461 0xC1=>"\xc4\xae",462 0xC2=>"\xc4\x80",463 0xC3=>"\xc4\x86",464 0xC4=>"\xc3\x84",465 0xC5=>"\xc3\x85",466 0xC6=>"\xc4\x98",467 0xC7=>"\xc4\x92",468 0xC8=>"\xc4\x8c",469 0xC9=>"\xc3\x89",470 0xCA=>"\xc5\xb9",471 0xCB=>"\xc4\x96",472 0xCC=>"\xc4\xa2",473 0xCD=>"\xc4\xb6",474 0xCE=>"\xc4\xaa",475 0xCF=>"\xc4\xbb",476 0xD0=>"\xc5\xa0",477 0xD1=>"\xc5\x83",478 0xD2=>"\xc5\x85",479 0xD3=>"\xc3\x93",480 0xD4=>"\xc5\x8c",481 0xD5=>"\xc3\x95",482 0xD6=>"\xc3\x96",483 0xD7=>"\xc3\x97",484 0xD8=>"\xc5\xb2",485 0xD9=>"\xc5\x81",486 0xDA=>"\xc5\x9a",487 0xDB=>"\xc5\xaa",488 0xDC=>"\xc3\x9c",489 0xDD=>"\xc5\xbb",490 0xDE=>"\xc5\xbd",491 0xDF=>"\xc3\x9f",492 0xE0=>"\xc4\x85",493 0xE1=>"\xc4\xaf",494 0xE2=>"\xc4\x81",495 0xE3=>"\xc4\x87",496 0xE4=>"\xc3\xa4",497 0xE5=>"\xc3\xa5",498 0xE6=>"\xc4\x99",499 0xE7=>"\xc4\x93",500 0xE8=>"\xc4\x8d",501 0xE9=>"\xc3\xa9",502 0xEA=>"\xc5\xba",503 0xEB=>"\xc4\x97",504 0xEC=>"\xc4\xa3",505 0xED=>"\xc4\xb7",506 0xEE=>"\xc4\xab",507 0xEF=>"\xc4\xbc",508 0xF0=>"\xc5\xa1",509 0xF1=>"\xc5\x84",510 0xF2=>"\xc5\x86",511 0xF3=>"\xc3\xb3",512 0xF4=>"\xc5\x8d",513 0xF5=>"\xc3\xb5",514 0xF6=>"\xc3\xb6",515 0xF7=>"\xc3\xb7",516 0xF8=>"\xc5\xb3",517 0xF9=>"\xc5\x82",518 0xFA=>"\xc5\x9b",519 0xFB=>"\xc5\xab",520 0xFC=>"\xc3\xbc",521 0xFD=>"\xc5\xbc",522 0xFE=>"\xc5\xbe",523 0xFF=>"\xcb\x99"396 0x80=>"\xe2\x82\xac", 397 0x81=>"\xc0\x4", 398 0x82=>"\xe2\x80\x9a", 399 0x83=>"\xc0\x4", 400 0x84=>"\xe2\x80\x9e", 401 0x85=>"\xe2\x80\xa6", 402 0x86=>"\xe2\x80\xa0", 403 0x87=>"\xe2\x80\xa1", 404 0x88=>"\xc0\x4", 405 0x89=>"\xe2\x80\xb0", 406 0x8A=>"\xc0\x4", 407 0x8B=>"\xe2\x80\xb9", 408 0x8C=>"\xc0\x4", 409 0x8D=>"\xc2\xa8", 410 0x8E=>"\xcb\x87", 411 0x8F=>"\xc2\xb8", 412 0x90=>"\xc0\x4", 413 0x91=>"\xe2\x80\x98", 414 0x92=>"\xe2\x80\x99", 415 0x93=>"\xe2\x80\x9c", 416 0x94=>"\xe2\x80\x9d", 417 0x95=>"\xe2\x80\xa2", 418 0x96=>"\xe2\x80\x93", 419 0x97=>"\xe2\x80\x94", 420 0x98=>"\xc0\x4", 421 0x99=>"\xe2\x84\xa2", 422 0x9A=>"\xc0\x4", 423 0x9B=>"\xe2\x80\xba", 424 0x9C=>"\xc0\x4", 425 0x9D=>"\xc2\xaf", 426 0x9E=>"\xcb\x9b", 427 0x9F=>"\xc0\x4", 428 0xA0=>"\xc2\xa0", 429 0xA1=>"\xc0\x4", 430 0xA2=>"\xc2\xa2", 431 0xA3=>"\xc2\xa3", 432 0xA4=>"\xc2\xa4", 433 0xA5=>"\xc0\x4", 434 0xA6=>"\xc2\xa6", 435 0xA7=>"\xc2\xa7", 436 0xA8=>"\xc3\x98", 437 0xA9=>"\xc2\xa9", 438 0xAA=>"\xc5\x96", 439 0xAB=>"\xc2\xab", 440 0xAC=>"\xc2\xac", 441 0xAD=>"\xc2\xad", 442 0xAE=>"\xc2\xae", 443 0xAF=>"\xc3\x86", 444 0xB0=>"\xc2\xb0", 445 0xB1=>"\xc2\xb1", 446 0xB2=>"\xc2\xb2", 447 0xB3=>"\xc2\xb3", 448 0xB4=>"\xc2\xb4", 449 0xB5=>"\xc2\xb5", 450 0xB6=>"\xc2\xb6", 451 0xB7=>"\xc2\xb7", 452 0xB8=>"\xc3\xb8", 453 0xB9=>"\xc2\xb9", 454 0xBA=>"\xc5\x97", 455 0xBB=>"\xc2\xbb", 456 0xBC=>"\xc2\xbc", 457 0xBD=>"\xc2\xbd", 458 0xBE=>"\xc2\xbe", 459 0xBF=>"\xc3\xa6", 460 0xC0=>"\xc4\x84", 461 0xC1=>"\xc4\xae", 462 0xC2=>"\xc4\x80", 463 0xC3=>"\xc4\x86", 464 0xC4=>"\xc3\x84", 465 0xC5=>"\xc3\x85", 466 0xC6=>"\xc4\x98", 467 0xC7=>"\xc4\x92", 468 0xC8=>"\xc4\x8c", 469 0xC9=>"\xc3\x89", 470 0xCA=>"\xc5\xb9", 471 0xCB=>"\xc4\x96", 472 0xCC=>"\xc4\xa2", 473 0xCD=>"\xc4\xb6", 474 0xCE=>"\xc4\xaa", 475 0xCF=>"\xc4\xbb", 476 0xD0=>"\xc5\xa0", 477 0xD1=>"\xc5\x83", 478 0xD2=>"\xc5\x85", 479 0xD3=>"\xc3\x93", 480 0xD4=>"\xc5\x8c", 481 0xD5=>"\xc3\x95", 482 0xD6=>"\xc3\x96", 483 0xD7=>"\xc3\x97", 484 0xD8=>"\xc5\xb2", 485 0xD9=>"\xc5\x81", 486 0xDA=>"\xc5\x9a", 487 0xDB=>"\xc5\xaa", 488 0xDC=>"\xc3\x9c", 489 0xDD=>"\xc5\xbb", 490 0xDE=>"\xc5\xbd", 491 0xDF=>"\xc3\x9f", 492 0xE0=>"\xc4\x85", 493 0xE1=>"\xc4\xaf", 494 0xE2=>"\xc4\x81", 495 0xE3=>"\xc4\x87", 496 0xE4=>"\xc3\xa4", 497 0xE5=>"\xc3\xa5", 498 0xE6=>"\xc4\x99", 499 0xE7=>"\xc4\x93", 500 0xE8=>"\xc4\x8d", 501 0xE9=>"\xc3\xa9", 502 0xEA=>"\xc5\xba", 503 0xEB=>"\xc4\x97", 504 0xEC=>"\xc4\xa3", 505 0xED=>"\xc4\xb7", 506 0xEE=>"\xc4\xab", 507 0xEF=>"\xc4\xbc", 508 0xF0=>"\xc5\xa1", 509 0xF1=>"\xc5\x84", 510 0xF2=>"\xc5\x86", 511 0xF3=>"\xc3\xb3", 512 0xF4=>"\xc5\x8d", 513 0xF5=>"\xc3\xb5", 514 0xF6=>"\xc3\xb6", 515 0xF7=>"\xc3\xb7", 516 0xF8=>"\xc5\xb3", 517 0xF9=>"\xc5\x82", 518 0xFA=>"\xc5\x9b", 519 0xFB=>"\xc5\xab", 520 0xFC=>"\xc3\xbc", 521 0xFD=>"\xc5\xbc", 522 0xFE=>"\xc5\xbe", 523 0xFF=>"\xcb\x99" 524 524 ), 525 525 ); … … 529 529 { 530 530 $Result = ''; 531 for($I = 0; $I < strlen($String); $I++) 531 for($I = 0; $I < strlen($String); $I++) 532 532 { 533 533 if(ord($String[$I]) < 128) $Result .= $String[$I]; -
trunk/Common/VCL/Database.php
r666 r738 58 58 if(method_exists($this->OnRowDraw[0], $this->OnRowDraw[1])) 59 59 $DbRow = call_user_func($this->OnRowDraw, $DbRow); 60 $this->Rows[] = $DbRow;60 $this->Rows[] = $DbRow; 61 61 $VisibleItemCount = $VisibleItemCount + 1; 62 62 } -
trunk/Modules/Chat/Chat.php
r586 r738 10 10 $this->ParentClass = 'PagePortal'; 11 11 } 12 12 13 13 function dechexr($Num) 14 14 { … … 20 20 { 21 21 global $MonthNames; 22 22 23 23 if(!$this->System->User->CheckPermission('Chat', 'Display')) return('Nemáte oprávnění'); 24 24 25 if(array_key_exists('date', $_GET)) $Date = $_GET['date']; 25 if(array_key_exists('date', $_GET)) $Date = $_GET['date']; 26 26 else $Date = date('Y-m-d'); 27 27 $DateParts = explode('-', $Date); … … 56 56 if(($Year == $StartDateParts[0]) and ($Month == $StartDateParts[1])) $StartDay = ($StartDateParts[2]+0); else $StartDay = 1; 57 57 if(($Year == $EndDateParts[0]) and ($Month == $EndDateParts[1])) $EndDay = ($EndDateParts[2]+0); else $EndDay = date('t',mktime(0,0,0,$Month,0,$Year)); 58 for($Day = $StartDay; $Day <= $EndDay; $Day++) 59 { 58 for($Day = $StartDay; $Day <= $EndDay; $Day++) 59 { 60 60 $Text = '<a href="?date='.$Year.'-'.$Month.'-'.$Day.'">'.$Day.'</a> '; 61 61 if(($DateParts[0] == $Year) and ($DateParts[1] == $Month) and ($DateParts[2] == $Day)) $Text = '<strong>'.$Text.'</strong>'; … … 76 76 { 77 77 $Text = $Row['Text'];; 78 // StrTr($Row['text'], "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); 78 // StrTr($Row['text'], "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); 79 79 $Output .= '['.date('d.m.Y H:i:s',$Row['UNIX_TIMESTAMP(Time)']).'] <span style="color: #'.$this->dechexr($Row['Color']).'"><strong><'.$Row['Nick'].'></strong> '.(htmlspecialchars($Text)).'</span><br>'; 80 80 } … … 97 97 $this->Dependencies = array(); 98 98 } 99 99 100 100 function DoStart() 101 101 { 102 102 $this->System->Pages['chat'] = 'PageChatHistory'; 103 } 103 } 104 104 } -
trunk/Modules/Chat/irc_bot.php
r577 r738 13 13 var $File; 14 14 15 function __construct() 15 function __construct() 16 16 { 17 17 $this->Jokes = file($this->JokeFileName); … … 74 74 $Line = substr($Line, strlen($Commands[0])); 75 75 $Commands[1] = substr($Line, 0, strpos($Line, ':') + 1); 76 $Commands[2] = substr($Line, strlen($Commands[1])); 76 $Commands[2] = substr($Line, strlen($Commands[1])); 77 77 //print_r($Commands); 78 78 … … 89 89 } 90 90 91 91 92 92 explode(':', $Line); 93 93 foreach($Commands as $Index => $Item) … … 185 185 186 186 // hjoke - Posle nahodny vtip 187 if($Command == 'hjoke') 187 if($Command == 'hjoke') 188 188 { 189 189 $Joke = ($this->Jokes[rand(0, (sizeof($this->Jokes) - 1))]); -
trunk/Modules/Customer/Customer.php
r727 r738 13 13 $this->Dependencies = array('User'); 14 14 } 15 15 16 16 function DoStart() 17 17 { … … 36 36 'Consumption' => array('Type' => 'TCustomerStockSerialNumber', 'Caption' => 'Spotřeba zařízení', 'Default' => ''), 37 37 ), 38 'ItemActions' => array(39 array('Caption' => 'Klientská sekce', 'URL' => '/finance/platby/?i=#RowId'),38 'ItemActions' => array( 39 array('Caption' => 'Klientská sekce', 'URL' => '/finance/platby/?i=#RowId'), 40 40 ), 41 )); 41 )); 42 42 $this->System->FormManager->RegisterClass('MemberPayment', array( 43 43 'Title' => 'Placení zákazníků', … … 56 56 )); 57 57 $this->System->FormManager->RegisterFormType('TMember', array( 58 'Type' => 'Reference',59 'Table' => 'Member',60 'Id' => 'Id',61 'Name' => 'Name',62 'Filter' => '1',58 'Type' => 'Reference', 59 'Table' => 'Member', 60 'Id' => 'Id', 61 'Name' => 'Name', 62 'Filter' => '1', 63 63 )); 64 64 $this->System->FormManager->RegisterClass('Service', array( 65 'Title' => 'Služby',66 'Table' => 'Service',67 'DefaultSortColumn' => 'Name',68 'Items' => array(69 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),70 'Category' => array('Type' => 'TServiceCategory', 'Caption' => 'Skupina', 'Default' => '', 'Null' => true),71 'Price' => array('Type' => 'Integer', 'Caption' => 'Cena', 'Default' => '0', 'Suffix' => 'Kč'),72 'VAT' => array('Type' => 'TFinanceVATType', 'Caption' => 'Sazba DPH', 'Default' => '0', 'Suffix' => ''),73 'CustomerCount' => array('Type' => 'Integer', 'Caption' => 'Počet zákazníků', 'Default' => '', 'ReadOnly' => true,74 'SQL' => '(SELECT COUNT(*) FROM `ServiceCustomerRel` LEFT JOIN `Member` ON `Member`.`Id`=`ServiceCustomerRel`.`Customer` WHERE (`ServiceCustomerRel`.`Service`=#Id) AND (`Member`.`Blocked`=0))'),75 'Public' => array('Type' => 'Boolean', 'Caption' => 'Veřejné', 'Default' => ''),76 'InternetSpeedMin' => array('Type' => 'Integer', 'Caption' => 'Min. rychlost internetu', 'Default' => '0', 'Suffix' => 'kbit/s'),77 'InternetSpeedMax' => array('Type' => 'Integer', 'Caption' => 'Max. rychlost internetu', 'Default' => '0', 'Suffix' => 'kbit/s'),78 'UploadAsymmetry' => array('Type' => 'Integer', 'Caption' => 'Asymetrie odesílání', 'Default' => '1'),79 'Memory' => array('Type' => 'Integer', 'Caption' => 'Paměť', 'Default' => '0', 'Suffix' => 'GB'),80 'MemorySwap' => array('Type' => 'Integer', 'Caption' => 'Odkládací oddíl', 'Default' => '0', 'Suffix' => 'GB'),81 'Storage' => array('Type' => 'Integer', 'Caption' => 'Úložiště', 'Default' => '0', 'Suffix' => 'GB'),82 'CPUCount' => array('Type' => 'Integer', 'Caption' => 'Počet jader', 'Default' => '0', 'Suffix' => ''),83 'ChangeAction' => array('Type' => 'TActionEnum', 'Caption' => 'Změna - akce', 'Default' => '', 'Null' => true),84 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true),85 'ChangeReplaceId' => array('Type' => 'TService', 'Caption' => 'Změna - položka', 'Default' => '', 'Null' => true),86 'CustomerRel' => array('Type' => 'TServiceCustomerRelListService', 'Caption' => 'Placení zákazníky', 'Default' => ''),87 ),65 'Title' => 'Služby', 66 'Table' => 'Service', 67 'DefaultSortColumn' => 'Name', 68 'Items' => array( 69 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''), 70 'Category' => array('Type' => 'TServiceCategory', 'Caption' => 'Skupina', 'Default' => '', 'Null' => true), 71 'Price' => array('Type' => 'Integer', 'Caption' => 'Cena', 'Default' => '0', 'Suffix' => 'Kč'), 72 'VAT' => array('Type' => 'TFinanceVATType', 'Caption' => 'Sazba DPH', 'Default' => '0', 'Suffix' => ''), 73 'CustomerCount' => array('Type' => 'Integer', 'Caption' => 'Počet zákazníků', 'Default' => '', 'ReadOnly' => true, 74 'SQL' => '(SELECT COUNT(*) FROM `ServiceCustomerRel` LEFT JOIN `Member` ON `Member`.`Id`=`ServiceCustomerRel`.`Customer` WHERE (`ServiceCustomerRel`.`Service`=#Id) AND (`Member`.`Blocked`=0))'), 75 'Public' => array('Type' => 'Boolean', 'Caption' => 'Veřejné', 'Default' => ''), 76 'InternetSpeedMin' => array('Type' => 'Integer', 'Caption' => 'Min. rychlost internetu', 'Default' => '0', 'Suffix' => 'kbit/s'), 77 'InternetSpeedMax' => array('Type' => 'Integer', 'Caption' => 'Max. rychlost internetu', 'Default' => '0', 'Suffix' => 'kbit/s'), 78 'UploadAsymmetry' => array('Type' => 'Integer', 'Caption' => 'Asymetrie odesílání', 'Default' => '1'), 79 'Memory' => array('Type' => 'Integer', 'Caption' => 'Paměť', 'Default' => '0', 'Suffix' => 'GB'), 80 'MemorySwap' => array('Type' => 'Integer', 'Caption' => 'Odkládací oddíl', 'Default' => '0', 'Suffix' => 'GB'), 81 'Storage' => array('Type' => 'Integer', 'Caption' => 'Úložiště', 'Default' => '0', 'Suffix' => 'GB'), 82 'CPUCount' => array('Type' => 'Integer', 'Caption' => 'Počet jader', 'Default' => '0', 'Suffix' => ''), 83 'ChangeAction' => array('Type' => 'TActionEnum', 'Caption' => 'Změna - akce', 'Default' => '', 'Null' => true), 84 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true), 85 'ChangeReplaceId' => array('Type' => 'TService', 'Caption' => 'Změna - položka', 'Default' => '', 'Null' => true), 86 'CustomerRel' => array('Type' => 'TServiceCustomerRelListService', 'Caption' => 'Placení zákazníky', 'Default' => ''), 87 ), 88 88 )); 89 89 $this->System->FormManager->RegisterClass('ServiceCategory', array( 90 'Title' => 'Kategorie služeb',91 'Table' => 'ServiceCategory',92 'Items' => array(93 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),94 'Items' => array('Type' => 'TServiceListServiceCategory', 'Caption' => 'Služby', 'Default' => ''),95 ),90 'Title' => 'Kategorie služeb', 91 'Table' => 'ServiceCategory', 92 'Items' => array( 93 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''), 94 'Items' => array('Type' => 'TServiceListServiceCategory', 'Caption' => 'Služby', 'Default' => ''), 95 ), 96 96 )); 97 97 $this->System->FormManager->RegisterClass('ServiceCustomerRel', array( … … 102 102 'Customer' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => ''), 103 103 'ChangeAction' => array('Type' => 'TActionEnum', 'Caption' => 'Změna - akce', 'Default' => '', 'Null' => true), 104 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true),105 'ChangeReplaceId' => array('Type' => 'TServiceCustomerRel', 'Caption' => 'Změna - položka', 'Default' => '', 'Null' => true),104 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true), 105 'ChangeReplaceId' => array('Type' => 'TServiceCustomerRel', 'Caption' => 'Změna - položka', 'Default' => '', 'Null' => true), 106 106 ), 107 107 )); 108 108 $this->System->FormManager->RegisterFormType('TServiceCategory', array( 109 'Type' => 'Reference',110 'Table' => 'ServiceCategory',111 'Id' => 'Id',112 'Name' => 'Name',113 'Filter' => '1',109 'Type' => 'Reference', 110 'Table' => 'ServiceCategory', 111 'Id' => 'Id', 112 'Name' => 'Name', 113 'Filter' => '1', 114 114 )); 115 115 $this->System->FormManager->RegisterFormType('TService', array( 116 'Type' => 'Reference',117 'Table' => 'Service',118 'Id' => 'Id',119 'Name' => 'Name',120 'Filter' => '1',116 'Type' => 'Reference', 117 'Table' => 'Service', 118 'Id' => 'Id', 119 'Name' => 'Name', 120 'Filter' => '1', 121 121 )); 122 122 $this->System->FormManager->RegisterFormType('TServiceCustomerRel', array( 123 'Type' => 'Reference',124 'Table' => 'ServiceCustomerRel',125 'Id' => 'Id',126 'Name' => 'Id',127 'Filter' => '1',128 )); 123 'Type' => 'Reference', 124 'Table' => 'ServiceCustomerRel', 125 'Id' => 'Id', 126 'Name' => 'Id', 127 'Filter' => '1', 128 )); 129 129 $this->System->FormManager->RegisterFormType('TServiceCustomerRelListCustomer', array( 130 130 'Type' => 'ManyToOne', … … 148 148 'Filter' => '1', 149 149 )); 150 } 150 } 151 151 } -
trunk/Modules/EmailQueue/EmailQueue.php
r689 r738 52 52 'Title' => 'Fronta e-mailů', 53 53 'Table' => 'EmailQueue', 54 'DefaultSortColumn' => 'Time',55 'DefaultSortOrder' => 1,54 'DefaultSortColumn' => 'Time', 55 'DefaultSortOrder' => 1, 56 56 'Items' => array( 57 57 'Time' => array('Type' => 'DateTime', 'Caption' => 'Vytvořeno'), -
trunk/Modules/Employee/Employee.php
r736 r738 37 37 'Contract' => array('Type' => 'TContract', 'Caption' => 'Smlouva', 'Default' => ''), 38 38 ), 39 )); 40 $this->System->FormManager->RegisterFormType('TEmployee', array(39 )); 40 $this->System->FormManager->RegisterFormType('TEmployee', array( 41 41 'Type' => 'Reference', 42 'Table' => 'Employee',43 'Id' => 'Id',44 'Name' => 'CONCAT_WS(" ", NULLIF(`FirstName`, ""), NULLIF(`SecondName`, ""))',45 'Filter' => '1',46 )); 42 'Table' => 'Employee', 43 'Id' => 'Id', 44 'Name' => 'CONCAT_WS(" ", NULLIF(`FirstName`, ""), NULLIF(`SecondName`, ""))', 45 'Filter' => '1', 46 )); 47 47 $this->System->FormManager->RegisterFormType('TEmployeeSalaryList', array( 48 'Type' => 'ManyToOne',49 'Table' => 'EmployeeSalary',50 'Id' => 'Id',51 'Ref' => 'Employee',52 'Filter' => '1',48 'Type' => 'ManyToOne', 49 'Table' => 'EmployeeSalary', 50 'Id' => 'Id', 51 'Ref' => 'Employee', 52 'Filter' => '1', 53 53 )); 54 54 } -
trunk/Modules/Error/Error.php
r682 r738 32 32 function DoStart() 33 33 { 34 $this->ShowError = $this->System->Config['Web']['ShowPHPError'];34 $this->ShowError = $this->System->Config['Web']['ShowPHPError']; 35 35 set_error_handler(array($this, 'ErrorHandler')); 36 36 set_exception_handler(array($this, 'ExceptionHandler')); … … 39 39 function Stop() 40 40 { 41 restore_error_handler();42 restore_exception_handler();43 parent::Stop();41 restore_error_handler(); 42 restore_exception_handler(); 43 parent::Stop(); 44 44 } 45 45 … … 128 128 '<meta http-equiv="Content-Type" content="text/html; charset='.$this->Encoding.'"></head><body>'."\n". 129 129 'Došlo k vnitřní chybě!<br/> O chybě byl uvědoměn správce webu a chybu brzy odstraní.<br/><br/>'); 130 echo('<pre>'.$Error.'</pre><br/>'); // V případě ladění chybu i zobraz130 echo('<pre>'.$Error.'</pre><br/>'); // V případě ladění chybu i zobraz 131 131 echo('</body></html>'); 132 132 } else 133 133 { 134 echo($Error);134 echo($Error); 135 135 } 136 136 } -
trunk/Modules/File/File.php
r737 r738 43 43 function DetectMimeType($FileName) 44 44 { 45 global $MimeTypes;45 global $MimeTypes; 46 46 47 47 $Result = $MimeTypes[pathinfo($FileName, PATHINFO_EXTENSION)][0]; … … 140 140 'Parent' => array('Type' => 'TDirectory', 'Caption' => 'Nadřazený adresář', 'Default' => '', 'Null' => true), 141 141 'Subdirectories' => array('Type' => 'TDirectoryList', 'Caption' => 'Podadresáře', 'Default' => ''), 142 'Files' => array('Type' => 'TFileList', 'Caption' => 'Soubory', 'Default' => ''),142 'Files' => array('Type' => 'TFileList', 'Caption' => 'Soubory', 'Default' => ''), 143 143 ), 144 144 )); … … 151 151 )); 152 152 $this->System->FormManager->RegisterFormType('TFile', array( 153 'Type' => 'Reference',154 'Table' => 'File',155 'Id' => 'Id',156 'Name' => 'Name',157 'Filter' => '1',153 'Type' => 'Reference', 154 'Table' => 'File', 155 'Id' => 'Id', 156 'Name' => 'Name', 157 'Filter' => '1', 158 158 )); 159 159 $this->System->FormManager->RegisterFormType('TFileList', array( 160 'Type' => 'ManyToOne',161 'Table' => 'File',162 'Id' => 'Id',163 'Ref' => 'Directory',164 'Filter' => '1',160 'Type' => 'ManyToOne', 161 'Table' => 'File', 162 'Id' => 'Id', 163 'Ref' => 'Directory', 164 'Filter' => '1', 165 165 )); 166 166 $this->System->FormManager->RegisterFormType('TDirectoryList', array( 167 'Type' => 'ManyToOne',168 'Table' => 'FileDirectory',169 'Id' => 'Id',170 'Ref' => 'Parent',171 'Filter' => '1',167 'Type' => 'ManyToOne', 168 'Table' => 'FileDirectory', 169 'Id' => 'Id', 170 'Ref' => 'Parent', 171 'Filter' => '1', 172 172 )); 173 173 } -
trunk/Modules/File/MimeTypes.php
r548 r738 43 43 'jpe' => array('image/jpeg', 'image/pjpeg'), 44 44 'js' => array('application/x-javascript'), 45 'json' => array('application/json'), 45 'json' => array('application/json'), 46 46 'lha' => array('application/octet-stream'), 47 47 'log' => array('text/plain', 'text/x-log'), -
trunk/Modules/Finance/Bill.php
r727 r738 4 4 { 5 5 var $SpecificSymbol = 1; // počítačová sít 6 var $Checked; 7 6 var $Checked; 7 8 8 function GenerateHTML() 9 9 { … … 21 21 function HtmlToPdf($HtmlCode) 22 22 { 23 $Encoding = new Encoding();24 if($this->Checked == false) {25 if(CommandExist('htmldoc')) {26 $this->Checked = true;27 } else throw new Exception('htmldoc is not installed.');28 }23 $Encoding = new Encoding(); 24 if($this->Checked == false) { 25 if(CommandExist('htmldoc')) { 26 $this->Checked = true; 27 } else throw new Exception('htmldoc is not installed.'); 28 } 29 29 $Output = shell_exec('echo "'.addslashes($Encoding->FromUTF8($HtmlCode)). 30 30 '"|htmldoc --no-numbered --webpage --no-embedfonts --charset 8859-2 -t pdf -'); … … 39 39 function ShowSubjectInfo($Subject) 40 40 { 41 $BooleanText = array('Ne', 'Ano');42 $Output = $Subject['Name'].'<br>'.41 $BooleanText = array('Ne', 'Ano'); 42 $Output = $Subject['Name'].'<br>'. 43 43 $Subject['AddressStreet'].'<br>'. 44 44 $Subject['AddressPSC'].' '.$Subject['AddressTown'].'<br>'; … … 47 47 if($Subject['Account'] != '') $Output .= 'Účet: '.$Subject['Account'].'<br>'; 48 48 if($Subject['PayVAT'] != '') $Output .= 'Plátce DPH: '.$BooleanText[$Subject['PayVAT']].'<br>'; 49 return($Output);49 return($Output); 50 50 } 51 51 … … 81 81 if($Invoice['Direction'] == -1) 82 82 { 83 $Subject = $SubjectTo;84 $SubjectTo = $SubjectFrom;85 $SubjectFrom = $Subject;83 $Subject = $SubjectTo; 84 $SubjectTo = $SubjectFrom; 85 $SubjectFrom = $Subject; 86 86 } 87 87 -
trunk/Modules/Finance/Finance.php
r737 r738 159 159 function GetVATByType($TypeId) 160 160 { 161 $Time = time();162 $DbResult = $this->Database->select('FinanceVAT', 'Value', '(Type='.$TypeId.161 $Time = time(); 162 $DbResult = $this->Database->select('FinanceVAT', 'Value', '(Type='.$TypeId. 163 163 ') AND (ValidFrom <= "'.TimeToMysqlDate($Time).'") AND ((ValidTo >= "'. 164 164 TimeToMysqlDate($Time).'") OR (ValidTo IS NULL)) LIMIT 1'); … … 204 204 'DefaultSortOrder' => 1, 205 205 'Items' => array( 206 'Direction' => array('Type' => 'TFinanceOperationDirection', 'Caption' => 'Směr', 'Default' => '1'),207 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''),206 'Direction' => array('Type' => 'TFinanceOperationDirection', 'Caption' => 'Směr', 'Default' => '1'), 207 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''), 208 208 'BillCode' => array('Type' => 'String', 'Caption' => 'Označení', 'Default' => ''), 209 209 'Subject' => array('Type' => 'TSubject', 'Caption' => 'Subjekt', 'Default' => ''), … … 274 274 'DefaultSortOrder' => 1, 275 275 'Items' => array( 276 'Direction' => array('Type' => 'TFinanceInvoiceDirection', 'Caption' => 'Směr', 'Default' => '1'),277 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''),276 'Direction' => array('Type' => 'TFinanceInvoiceDirection', 'Caption' => 'Směr', 'Default' => '1'), 277 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''), 278 278 'BillCode' => array('Type' => 'String', 'Caption' => 'Označení', 'Default' => ''), 279 279 'Subject' => array('Type' => 'TSubject', 'Caption' => 'Subjekt', 'Default' => ''), … … 286 286 'PeriodFrom' => array('Type' => 'Date', 'Caption' => 'Období od', 'Default' => '', 'Null' => true), 287 287 'PeriodTo' => array('Type' => 'Date', 'Caption' => 'Období do', 'Default' => '', 'Null' => true), 288 'Cash' => array('Type' => 'Boolean', 'Caption' => 'Platit hotově', 'Default' => ''),288 'Cash' => array('Type' => 'Boolean', 'Caption' => 'Platit hotově', 'Default' => ''), 289 289 'Items' => array('Type' => 'TFinanceInvoiceItemListInvoice', 'Caption' => 'Položky', 'Default' => ''), 290 290 'OperationRel' => array('Type' => 'TFinanceInvoiceOperationRelListInvoice', 'Caption' => 'Platba', 'Default' => ''), … … 314 314 315 315 $this->System->FormManager->RegisterFormType('TFinanceInvoiceDirection', array( 316 'Type' => 'Enumeration',317 'States' => array(-1 => 'Příjem', 1 => 'Výdej'),316 'Type' => 'Enumeration', 317 'States' => array(-1 => 'Příjem', 1 => 'Výdej'), 318 318 )); 319 319 … … 323 323 'Items' => array( 324 324 'Name' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => '0'), 325 'Subject' => array('Type' => 'TSubject', 'Caption' => 'Subjekt', 'Default' => '0'),325 'Subject' => array('Type' => 'TSubject', 'Caption' => 'Subjekt', 'Default' => '0'), 326 326 ), 327 327 )); … … 353 353 )); 354 354 $this->System->FormManager->RegisterFormType('TFinanceTreasury', array( 355 'Type' => 'Reference',356 'Table' => 'FinanceTreasury',357 'Id' => 'Id',358 'Name' => 'Name',359 'Filter' => '1',355 'Type' => 'Reference', 356 'Table' => 'FinanceTreasury', 357 'Id' => 'Id', 358 'Name' => 'Name', 359 'Filter' => '1', 360 360 )); 361 361 $this->System->FormManager->RegisterClass('FinanceBankAccount', array( … … 374 374 'LoginPassword' => array('Type' => 'String', 'Caption' => 'Přihlašovací heslo', 'Default' => ''), 375 375 'Operations' => array('Type' => 'TFinanceOperationListAccount', 'Caption' => 'Operace', 'Default' => ''), 376 'Use' => array('Type' => 'Boolean', 'Caption' => 'Používat', 'Default' => '0'),376 'Use' => array('Type' => 'Boolean', 'Caption' => 'Používat', 'Default' => '0'), 377 377 'LastImportDate' => array('Type' => 'Date', 'Caption' => 'Datum posledního importu', 'Default' => ''), 378 378 'LastImportId' => array('Type' => 'String', 'Caption' => 'Id posledního importu', 'Default' => ''), … … 380 380 'ReadOnly' => true, 'Suffix' => 'Kč', 'SQL' => '(SELECT SUM(`FinanceOperation`.`Value` * `FinanceOperation`.`Direction`) FROM `FinanceOperation` '. 381 381 'WHERE `FinanceOperation`.`BankAccount`=#Id)'), 382 'AutoImport' => array('Type' => 'Boolean', 'Caption' => 'Automaticky stahovat z banky', 'Default' => ''),382 'AutoImport' => array('Type' => 'Boolean', 'Caption' => 'Automaticky stahovat z banky', 'Default' => ''), 383 383 ), 384 384 'ItemActions' => array( … … 388 388 )); 389 389 $this->System->FormManager->RegisterFormType('TFinanceBankAccount', array( 390 'Type' => 'Reference',391 'Table' => 'FinanceBankAccount',392 'Id' => 'Id',393 'Name' => 'Comment',394 'Filter' => '1',390 'Type' => 'Reference', 391 'Table' => 'FinanceBankAccount', 392 'Id' => 'Id', 393 'Name' => 'Comment', 394 'Filter' => '1', 395 395 )); 396 396 $this->System->FormManager->RegisterClass('FinanceBank', array( … … 433 433 'TopTariffPrice' => array('Type' => 'Integer', 'Caption' => 'Nejvyšší cena tarifu', 'Default' => '0', 'Suffix' => 'Kč'), 434 434 'ChangeAction' => array('Type' => 'TActionEnum', 'Caption' => 'Změna - akce', 'Default' => '', 'Null' => true), 435 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true),436 'ChangeReplaceId' => array('Type' => 'TFinanceCharge', 'Caption' => 'Změna - položka', 'Default' => '0', 'Null' => true),435 'ChangeTime' => array('Type' => 'DateTime', 'Caption' => 'Změna - čas', 'Default' => '', 'Null' => true), 436 'ChangeReplaceId' => array('Type' => 'TFinanceCharge', 'Caption' => 'Změna - položka', 'Default' => '0', 'Null' => true), 437 437 ), 438 438 )); … … 475 475 )); 476 476 $this->System->FormManager->RegisterFormType('TFinanceVAT', array( 477 'Type' => 'Reference',478 'Table' => 'FinanceVAT',479 'Id' => 'Id',480 'Name' => 'Name',481 'Filter' => '1',477 'Type' => 'Reference', 478 'Table' => 'FinanceVAT', 479 'Id' => 'Id', 480 'Name' => 'Name', 481 'Filter' => '1', 482 482 )); 483 483 $this->System->FormManager->RegisterFormType('TFinanceVATType', array( 484 'Type' => 'Reference',485 'Table' => 'FinanceVATType',486 'Id' => 'Id',487 'Name' => 'Name',488 'Filter' => '1',484 'Type' => 'Reference', 485 'Table' => 'FinanceVATType', 486 'Id' => 'Id', 487 'Name' => 'Name', 488 'Filter' => '1', 489 489 )); 490 490 $this->System->FormManager->RegisterFormType('TBankAccount', array( 491 'Type' => 'Reference',492 'Table' => 'FinanceBankAccount',493 'Id' => 'Id',494 'Name' => 'CONCAT(`Comment`, " (", `Number`, "/", '.495 '(SELECT `FinanceBank`.`Code` FROM `FinanceBank` WHERE `FinanceBank`.`Id`=`FinanceBankAccount`.`Bank`), ")")',496 'Filter' => '1',491 'Type' => 'Reference', 492 'Table' => 'FinanceBankAccount', 493 'Id' => 'Id', 494 'Name' => 'CONCAT(`Comment`, " (", `Number`, "/", '. 495 '(SELECT `FinanceBank`.`Code` FROM `FinanceBank` WHERE `FinanceBank`.`Id`=`FinanceBankAccount`.`Bank`), ")")', 496 'Filter' => '1', 497 497 )); 498 498 … … 509 509 function BeforeInsertFinanceOperation($Form) 510 510 { 511 if(array_key_exists('Time', $Form->Values)) $Year = date("Y", $Form->Values['Time']);512 else $Year = date("Y", $Form->Values['ValidFrom']);511 if(array_key_exists('Time', $Form->Values)) $Year = date("Y", $Form->Values['Time']); 512 else $Year = date("Y", $Form->Values['ValidFrom']); 513 513 $DocumentLine = $Form->Values['DocumentLine']; 514 514 $Form->Values['BillCode'] = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year); -
trunk/Modules/Finance/Import.php
r719 r738 25 25 } 26 26 } 27 27 28 28 function Prepare() 29 { 29 { 30 30 $Finance = $this->System->Modules['Finance']; 31 31 $Finance->LoadMonthParameters(0); … … 39 39 { 40 40 if(substr($Data[$Key][$Key2], 0, 2) == '\"') 41 $Data[$Key][$Key2] = substr($Data[$Key][$Key2], 2, -2); 41 $Data[$Key][$Key2] = substr($Data[$Key][$Key2], 2, -2); 42 42 } 43 43 } 44 44 $Header = array( 45 0 => 'datum zaúčtování', 45 0 => 'datum zaúčtování', 46 46 1 => 'částka', 47 47 2 => 'měna', … … 60 60 //print_r($_POST['Source']); 61 61 //print_r($Data); 62 62 63 63 if($Header != $Data[0]) $Output = 'Nekompatibilní struktura CSV'; 64 else 64 else 65 65 { 66 66 array_shift($Data); … … 85 85 $Subject = '? ('.$Value[5].')'; 86 86 } 87 if(!is_numeric($Subject)) 87 if(!is_numeric($Subject)) 88 88 { 89 89 $Mode = 'Ručně'; 90 90 $Style = 'style="background-color: LightPink;" '; 91 } else 91 } else 92 92 { 93 93 $Mode = 'Automaticky'; 94 94 $Style = ''; 95 95 } 96 96 97 97 if($Money < 0) $Text = 'Platba převodem'; 98 98 else $Text = 'Přijatá platba'; … … 106 106 '<td><input type="text" name="Taxable'.$I.'" value="1"/></td>'. 107 107 '<td><input type="text" name="Network'.$I.'" value="1"/></td>'. 108 '</tr><tr><td colspan="7">'.implode(', ', $Value).'</td></tr>'; 108 '</tr><tr><td colspan="7">'.implode(', ', $Value).'</td></tr>'; 109 109 $I++; 110 110 } … … 114 114 '<th>Datum</th><th>Var. symbol</th><th>Protiúčet</th><th>Částka [Kč]</th><th>Text</th><th>Zdanitelné</th><th>Síť</th></tr>'; 115 115 $Output .= $Automatic.'</table>'; 116 $Output .= '<input type="hidden" name="ItemCount" value="'.$I.'"/>'; 117 $Output .= '<input type="submit" value="Zpracovat"/></form>'; 116 $Output .= '<input type="hidden" name="ItemCount" value="'.$I.'"/>'; 117 $Output .= '<input type="submit" value="Zpracovat"/></form>'; 118 118 } 119 119 return($Output); 120 120 } 121 121 122 122 function InsertMoney($Subject, $Value, $Direction, $Cash, $Taxable, $Time, $Text, $DocumentLine) 123 123 { … … 125 125 $BillCode = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year); 126 126 // TODO: Fixed BankAccount=1, allow to select bank account for import 127 $this->Database->insert('FinanceOperation', array('Text' => $Text, 128 'Subject' => $Subject, 'Cash' => $Cash, 'Value' => $Value, 'Direction' => $Direction, 127 $this->Database->insert('FinanceOperation', array('Text' => $Text, 128 'Subject' => $Subject, 'Cash' => $Cash, 'Value' => $Value, 'Direction' => $Direction, 129 129 'Time' => TimeToMysqlDateTime($Time), 'Taxable' => $Taxable, 'BillCode' => $BillCode, 130 130 'BankAccount' => 1)); … … 136 136 $Finance->LoadMonthParameters(0); 137 137 $Output = ''; 138 138 139 139 for($I = $_POST['ItemCount'] - 1; $I >= 0 ; $I--) 140 140 { 141 // TODO: Use links to database records instead of contants141 // TODO: Use links to database records instead of contants 142 142 if($_POST['Money'.$I] < 0) { 143 $DocumentLine = 4;144 $Direction = -1;143 $DocumentLine = 4; 144 $Direction = -1; 145 145 } else { 146 $DocumentLine = 3;147 $Direction = 1;146 $DocumentLine = 3; 147 $Direction = 1; 148 148 } 149 149 $Date = explode('-', $_POST['Date'.$I]); -
trunk/Modules/Finance/Manage.php
r727 r738 109 109 $SumValue = 0; 110 110 foreach($Items as $Item) 111 $SumValue = $SumValue + ceil($Item['Price'] * $Item['Quantity']); 111 $SumValue = $SumValue + ceil($Item['Price'] * $Item['Quantity']); 112 112 $this->Database->insert('FinanceInvoice', array( 113 113 'Subject' => $Subject, 'Time' => TimeToMysqlDateTime($TimeCreation), 114 'TimeDue' => TimeToMysqlDateTime($TimeDue), 'Value' => $SumValue, 115 'Direction' => $Direction, 'BillCode' => $BillCode,114 'TimeDue' => TimeToMysqlDateTime($TimeDue), 'Value' => $SumValue, 115 'Direction' => $Direction, 'BillCode' => $BillCode, 116 116 'PeriodFrom' => TimeToMysqlDate($PeriodFrom), 'PeriodTo' => TimeToMysqlDate($PeriodTo), 117 117 'Generate' => 1, 'DocumentLine' => $DocumentLine)); … … 163 163 $MonthlyTotal += $Service['Price']; 164 164 } 165 $PayPerPeriod = $MonthlyTotal * $Period['MonthCount']; 165 $PayPerPeriod = $MonthlyTotal * $Period['MonthCount']; 166 166 // We can't produce negative invoice except storno invoice. 167 // TODO: In case of negative invoice it is not sufficient to reverse invoicing direction 168 // Other subject should invoice only possitive items. Negative items should be somehow removed. 167 // TODO: In case of negative invoice it is not sufficient to reverse invoicing direction 168 // Other subject should invoice only possitive items. Negative items should be somehow removed. 169 169 if($MonthlyTotal >= 0) { 170 $DocumentLine = DOC_LINE_INVOICE_OUT;171 $Direction = 1; // Standard out invoice170 $DocumentLine = DOC_LINE_INVOICE_OUT; 171 $Direction = 1; // Standard out invoice 172 172 } else { 173 $DocumentLine = DOC_LINE_INVOICE_IN;173 $DocumentLine = DOC_LINE_INVOICE_IN; 174 174 $Direction = -1; // In case of negative total value generate reverse invoice for other subject 175 175 foreach($InvoiceItems as $Index => $Item) 176 $InvoiceItems[$Index]['Price'] = -$Item['Price'];177 } 178 176 $InvoiceItems[$Index]['Price'] = -$Item['Price']; 177 } 178 179 179 if($PayPerPeriod != 0) 180 180 { … … 195 195 function TableUpdateChanges($Table) 196 196 { 197 $Time = time();197 $Time = time(); 198 198 $DbResult = $this->Database->select($Table, '*', '(`ChangeAction` IS NOT NULL) AND '. 199 '(`ChangeTime` <= "'.TimeToMysqlDateTime($Time).'") ORDER BY `ChangeTime` ASC');199 '(`ChangeTime` <= "'.TimeToMysqlDateTime($Time).'") ORDER BY `ChangeTime` ASC'); 200 200 while($Service = $DbResult->fetch_array()) 201 201 { … … 225 225 function ProcessTableUpdates() 226 226 { 227 // Update finance charge228 $Output = 'Měním aktuální parametry sítě...<br>';229 $this->TableUpdateChanges('FinanceCharge');230 231 // Update services232 $Output .= 'Aktualizuji služby....<br>';233 $this->TableUpdateChanges('Service');234 235 // Update customer service selections236 $Output .= 'Aktualizuji výběr služeb zákazníků....<br>';237 $this->TableUpdateChanges('ServiceCustomerRel');238 239 return($Output);240 } 241 227 // Update finance charge 228 $Output = 'Měním aktuální parametry sítě...<br>'; 229 $this->TableUpdateChanges('FinanceCharge'); 230 231 // Update services 232 $Output .= 'Aktualizuji služby....<br>'; 233 $this->TableUpdateChanges('Service'); 234 235 // Update customer service selections 236 $Output .= 'Aktualizuji výběr služeb zákazníků....<br>'; 237 $this->TableUpdateChanges('ServiceCustomerRel'); 238 239 return($Output); 240 } 241 242 242 function ProcessMonthlyPayment() 243 243 { … … 246 246 247 247 $Output .= $this->ProcessTableUpdates(); 248 248 249 249 $Finance = &$this->System->Modules['Finance']; 250 250 $Finance->LoadMonthParameters(0); … … 282 282 $Output .= 'Odečítám měsíční poplatek...<br />'; 283 283 $Output .= $this->ProduceInvoices(); 284 284 285 285 $Output .= 'Přidávám měsíční přehled...<br />'; 286 286 $DbResult = $this->Database->query('SELECT * FROM `FinanceCharge` WHERE (`ChangeAction` IS NULL) LIMIT 1'); … … 327 327 328 328 $DbResult = $this->Database->query('SELECT `FinanceBankAccount`.*, '. 329 'CONCAT(`FinanceBankAccount`.`Number`, "/", `FinanceBank`.`Code`) AS `NumberFull` FROM `FinanceBankAccount` '.329 'CONCAT(`FinanceBankAccount`.`Number`, "/", `FinanceBank`.`Code`) AS `NumberFull` FROM `FinanceBankAccount` '. 330 330 'JOIN `FinanceBank` ON `FinanceBank`.`Id`=`FinanceBankAccount`.`Bank` '. 331 331 'WHERE (`FinanceBankAccount`.`Subject`='.$Config['Finance']['MainSubjectId'].') '. 332 'AND (`FinanceBankAccount`.`Use`=1)');332 'AND (`FinanceBankAccount`.`Use`=1)'); 333 333 $MainSubjectAccount = $DbResult->fetch_assoc(); 334 334 … … 356 356 $DbResult = $this->Database->query('SELECT T1.* FROM ((SELECT `Text`, `Time`, (`Value`*`Direction`) AS `Value`, `File` FROM `FinanceOperation` WHERE (`Subject`='.$Member['Subject'].')) UNION ALL '. 357 357 '(SELECT (SELECT GROUP_CONCAT(`Description` SEPARATOR ", ") FROM `FinanceInvoiceItem` '. 358 'WHERE `FinanceInvoiceItem`.`FinanceInvoice` = `FinanceInvoice`.`Id`) AS `Text`, '.359 '`Time`, -(`Value`*`Direction`) AS `Value`, `File` FROM `FinanceInvoice` WHERE (`Subject`='.358 'WHERE `FinanceInvoiceItem`.`FinanceInvoice` = `FinanceInvoice`.`Id`) AS `Text`, '. 359 '`Time`, -(`Value`*`Direction`) AS `Value`, `File` FROM `FinanceInvoice` WHERE (`Subject`='. 360 360 $Member['Subject'].')) ORDER BY `Time` DESC) AS `T1` WHERE (`T1`.`Time` > "'.$Member['BillingPeriodLastDate'].'")'); 361 361 while($DbRow = $DbResult->fetch_assoc()) -
trunk/Modules/Finance/UserState.php
r728 r738 9 9 function ShowFinanceOperation($Subject) 10 10 { 11 $UserOperationTableQuery = '((SELECT `Text`, `Time`, (`Value`*`Direction`) AS `Value`, `File`, `BillCode`, NULL AS `PeriodFrom`, NULL AS `PeriodTo` '.12 'FROM `FinanceOperation` WHERE (`Subject`='.$Subject['Id'].')) UNION ALL '.13 '(SELECT (SELECT GROUP_CONCAT(`Description` SEPARATOR ",") FROM `FinanceInvoiceItem` WHERE `FinanceInvoice`=`FinanceInvoice`.`Id`) AS `Text`, '.14 '`Time`, -(`Value`*`Direction`) AS `Value`, `File`, `BillCode`, `PeriodFrom`, `PeriodTo` FROM `FinanceInvoice` WHERE (`Subject`='.$Subject['Id'].')))';11 $UserOperationTableQuery = '((SELECT `Text`, `Time`, (`Value`*`Direction`) AS `Value`, `File`, `BillCode`, NULL AS `PeriodFrom`, NULL AS `PeriodTo` '. 12 'FROM `FinanceOperation` WHERE (`Subject`='.$Subject['Id'].')) UNION ALL '. 13 '(SELECT (SELECT GROUP_CONCAT(`Description` SEPARATOR ",") FROM `FinanceInvoiceItem` WHERE `FinanceInvoice`=`FinanceInvoice`.`Id`) AS `Text`, '. 14 '`Time`, -(`Value`*`Direction`) AS `Value`, `File`, `BillCode`, `PeriodFrom`, `PeriodTo` FROM `FinanceInvoice` WHERE (`Subject`='.$Subject['Id'].')))'; 15 15 16 16 $Output = '<div style="text-align:center">Výpis finančních operací</div>'; 17 $DbResult = $this->Database->query('SELECT COUNT(*) FROM '.$UserOperationTableQuery.' AS `T1`');18 $DbRow = $DbResult->fetch_row();19 $PageList = GetPageList($DbRow[0]);17 $DbResult = $this->Database->query('SELECT COUNT(*) FROM '.$UserOperationTableQuery.' AS `T1`'); 18 $DbRow = $DbResult->fetch_row(); 19 $PageList = GetPageList($DbRow[0]); 20 20 21 $Output .= $PageList['Output'];22 $Output .= '<table class="WideTable" style="font-size: small;">';21 $Output .= $PageList['Output']; 22 $Output .= '<table class="WideTable" style="font-size: small;">'; 23 23 24 $TableColumns = array(25 array('Name' => 'Time', 'Title' => 'Datum'),26 array('Name' => 'Text', 'Title' => 'Popis'),27 array('Name' => 'Value', 'Title' => 'Změna [Kč]'),28 array('Name' => 'State', 'Title' => 'Zůstatek [Kč]'),29 array('Name' => 'PeriodFrom', 'Title' => 'Období'),30 array('Name' => 'BillCode', 'Title' => 'Doklad'),31 );32 $Order = GetOrderTableHeader($TableColumns, 'Time', 1);33 $Output .= $Order['Output'];24 $TableColumns = array( 25 array('Name' => 'Time', 'Title' => 'Datum'), 26 array('Name' => 'Text', 'Title' => 'Popis'), 27 array('Name' => 'Value', 'Title' => 'Změna [Kč]'), 28 array('Name' => 'State', 'Title' => 'Zůstatek [Kč]'), 29 array('Name' => 'PeriodFrom', 'Title' => 'Období'), 30 array('Name' => 'BillCode', 'Title' => 'Doklad'), 31 ); 32 $Order = GetOrderTableHeader($TableColumns, 'Time', 1); 33 $Output .= $Order['Output']; 34 34 35 $StateQuery = 'SELECT SUM(`T2`.`Value`) FROM '.$UserOperationTableQuery.36 ' AS `T2` WHERE `T2`.`Time` <= `T1`.`Time` ';37 $Query = 'SELECT *, ('.$StateQuery.') AS `State` FROM '.$UserOperationTableQuery.' AS `T1` '.$Order['SQL'].$PageList['SQLLimit'];35 $StateQuery = 'SELECT SUM(`T2`.`Value`) FROM '.$UserOperationTableQuery. 36 ' AS `T2` WHERE `T2`.`Time` <= `T1`.`Time` '; 37 $Query = 'SELECT *, ('.$StateQuery.') AS `State` FROM '.$UserOperationTableQuery.' AS `T1` '.$Order['SQL'].$PageList['SQLLimit']; 38 38 39 $DbResult = $this->Database->query($Query);39 $DbResult = $this->Database->query($Query); 40 40 $SumValue = 0; 41 while($Row = $DbResult->fetch_assoc())42 {43 $Row['State'] = round($Row['State'], 2);44 if($Row['State'] > 0) $Row['State'] = '<span style="color:green;">'.$Row['State'].'</span>';45 if($Row['State'] < 0) $Row['State'] = '<span style="color:red;">'.$Row['State'].'</span>';46 if($Row['Value'] == -0) $Row['Value'] = 0;47 if($Row['Value'] > 0) $Row['Value'] = '+'.$Row['Value'];48 if($Row['BillCode'] == '') $Row['BillCode'] = 'PDF';49 if($Row['File'] > 0) $Invoice = '<a href="'.$this->System->Link('/file?id='.$Row['File']).'">'.$Row['BillCode'].'</a>';50 else $Invoice = NotBlank($Row['BillCode']);51 if($Row['PeriodFrom'] != '') $Period = HumanDate($Row['PeriodFrom']).' - '.HumanDate($Row['PeriodTo']);52 else $Period = ' ';53 $Output .= '<tr><td style="text-align: right;">'.HumanDate($Row['Time']).'</td>'.54 '<td style="text-align: left;">'.$Row['Text'].'</td>'.55 '<td style="text-align: right;">'.round($Row['Value'], 2).'</td>'.56 '<td style="text-align: right;">'.$Row['State'].'</td>'.57 '<td>'.$Period.'</td>'.58 '<td>'.$Invoice.'</td></tr>';59 $SumValue = $SumValue + $Row['Value'];60 }61 $Output .= '</table>';62 $Output .= $PageList['Output'];63 return($Output);41 while($Row = $DbResult->fetch_assoc()) 42 { 43 $Row['State'] = round($Row['State'], 2); 44 if($Row['State'] > 0) $Row['State'] = '<span style="color:green;">'.$Row['State'].'</span>'; 45 if($Row['State'] < 0) $Row['State'] = '<span style="color:red;">'.$Row['State'].'</span>'; 46 if($Row['Value'] == -0) $Row['Value'] = 0; 47 if($Row['Value'] > 0) $Row['Value'] = '+'.$Row['Value']; 48 if($Row['BillCode'] == '') $Row['BillCode'] = 'PDF'; 49 if($Row['File'] > 0) $Invoice = '<a href="'.$this->System->Link('/file?id='.$Row['File']).'">'.$Row['BillCode'].'</a>'; 50 else $Invoice = NotBlank($Row['BillCode']); 51 if($Row['PeriodFrom'] != '') $Period = HumanDate($Row['PeriodFrom']).' - '.HumanDate($Row['PeriodTo']); 52 else $Period = ' '; 53 $Output .= '<tr><td style="text-align: right;">'.HumanDate($Row['Time']).'</td>'. 54 '<td style="text-align: left;">'.$Row['Text'].'</td>'. 55 '<td style="text-align: right;">'.round($Row['Value'], 2).'</td>'. 56 '<td style="text-align: right;">'.$Row['State'].'</td>'. 57 '<td>'.$Period.'</td>'. 58 '<td>'.$Invoice.'</td></tr>'; 59 $SumValue = $SumValue + $Row['Value']; 60 } 61 $Output .= '</table>'; 62 $Output .= $PageList['Output']; 63 return($Output); 64 64 } 65 65 … … 85 85 } else return($this->SystemMessage('Chyba', 'Nejste zákazníkem')); 86 86 } 87 87 88 88 // Load customer info 89 89 $DbResult = $this->Database->query('SELECT * FROM `Member` WHERE `Id`='.$CustomerId); 90 90 if($DbResult->num_rows == 1) 91 91 { 92 $Customer = $DbResult->fetch_assoc();92 $Customer = $DbResult->fetch_assoc(); 93 93 } else return($this->SystemMessage('Položka nenalezena', 'Zákazník nenalezen')); 94 95 94 95 96 96 // Load subject info 97 97 $DbResult = $this->Database->query('SELECT * FROM `Subject` WHERE `Id`='.$Customer['Subject']); 98 98 if($DbResult->num_rows == 1) 99 { 100 $Subject = $DbResult->fetch_assoc(); 99 { 100 $Subject = $DbResult->fetch_assoc(); 101 101 } else return($this->SystemMessage('Položka nenalezena', 'Subjekt nenalezen')); 102 103 104 $Output = '<table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td valign="top">'; 102 103 104 $Output = '<table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td valign="top">'; 105 105 106 106 // Account state … … 120 120 121 121 $DbResult = $this->Database->query('SELECT FinanceBankAccount.*, CONCAT(FinanceBankAccount.Number, "/", FinanceBank.Code) AS NumberFull FROM FinanceBankAccount '. 122 'JOIN FinanceBank ON FinanceBank.Id=FinanceBankAccount.Bank '.123 'WHERE (FinanceBankAccount.`Subject`='.$this->System->Config['Finance']['MainSubjectId'].') AND (FinanceBankAccount.`Use`=1)');122 'JOIN FinanceBank ON FinanceBank.Id=FinanceBankAccount.Bank '. 123 'WHERE (FinanceBankAccount.`Subject`='.$this->System->Config['Finance']['MainSubjectId'].') AND (FinanceBankAccount.`Use`=1)'); 124 124 $SubjectFromAccount = $DbResult->fetch_assoc(); 125 125 $Account = $SubjectFromAccount['NumberFull']; … … 138 138 while($DbRow = $DbResult->fetch_assoc()) 139 139 { 140 $Output .= '<tr><td>'.$DbRow['Name'].'</td><td>'.$DbRow['Price'].'</td></tr>';140 $Output .= '<tr><td>'.$DbRow['Name'].'</td><td>'.$DbRow['Price'].'</td></tr>'; 141 141 $Total += $DbRow['Price']; 142 142 } -
trunk/Modules/Finance/Zivnost.php
r724 r738 50 50 $Balance['SmallAssets']['End'] = $Row[0] + 0; 51 51 return($Balance); 52 } 52 } 53 53 54 54 function Show() … … 142 142 $Output .= '<strong>Příjmy za rok '.$Year['Year'].'</strong>'; 143 143 $Output .= '<table style="font-size: smaller;" class="WideTable">'; 144 $Output .= '<tr><th>Čas</th><th>Kód</th><th>Subjekt</th><th>Text</th><th>Hodnota [Kč]</th><th>Daňový</th><th>Hotovost</th></tr>'; 144 $Output .= '<tr><th>Čas</th><th>Kód</th><th>Subjekt</th><th>Text</th><th>Hodnota [Kč]</th><th>Daňový</th><th>Hotovost</th></tr>'; 145 145 $DbResult = $this->Database->query('SELECT * FROM FinanceOperation LEFT JOIN Subject ON Subject.Id = FinanceOperation.Subject '. 146 146 'WHERE (Direction = 1) AND (FinanceOperation.Time >= "'.$Year['DateStart'].'") AND (FinanceOperation.Time <= "'.$Year['DateEnd'].'") ORDER BY Time'); … … 172 172 $Output .= '<strong>Výdaje za rok '.$Year['Year'].'</strong>'; 173 173 $Output .= '<table style="font-size: smaller;" class="WideTable">'; 174 $Output .= '<tr><th>Čas</th><th>Kód</th><th>Subjekt</th><th>Text</th><th>Hodnota [Kč]</th><th>Daňový</th><th>Hotovost</th></tr>'; 174 $Output .= '<tr><th>Čas</th><th>Kód</th><th>Subjekt</th><th>Text</th><th>Hodnota [Kč]</th><th>Daňový</th><th>Hotovost</th></tr>'; 175 175 $DbResult = $this->Database->query('SELECT * FROM FinanceOperation LEFT JOIN Subject ON Subject.Id = FinanceOperation.Subject '. 176 176 'WHERE (Direction = -1) AND (FinanceOperation.Time >= "'.$Year['DateStart'].'") AND (FinanceOperation.Time <= "'.$Year['DateEnd'].'") ORDER BY Time'); … … 197 197 $DbResult = $this->Database->select('FinanceYear', '*', 'Id='.$_GET['year']); 198 198 $Year = $DbResult->fetch_assoc(); 199 199 200 200 $Total = 0; 201 201 $Output .= '<strong>Pohledávky za rok '.$Year['Year'].'</strong>'; … … 234 234 $Row['Value'] = $Row['Value'] * -1; 235 235 $Output .= '<tr><td>'.HumanDate($Row['Time']).'</td><td>'.$Row['BillCode']. 236 '</td><td>'.$Row['Name'].'</td><td>'.$Row['Text'].'</td><td>'.($Row['Value'] * $Row['Direction']).'</td></tr>'; 236 '</td><td>'.$Row['Name'].'</td><td>'.$Row['Text'].'</td><td>'.($Row['Value'] * $Row['Direction']).'</td></tr>'; 237 237 $Total += $Row['Value']; 238 238 } … … 288 288 $Output .= '<tr><th>Datum vytvoření</th><th>Datum zaplacení</th><th>Název</th><th>Hodnota [Kč]</th><th>Doklad</th></tr>'; 289 289 $DbResult = $this->Database->select('FinanceInvoice', '*, (SELECT GROUP_CONCAT(Description SEPARATOR ",") '. 290 'FROM FinanceInvoiceItem WHERE FinanceInvoiceItem.FinanceInvoice = FinanceInvoice.Id) AS Text',291 'Subject='.$_GET['Id'].' ORDER BY Time');290 'FROM FinanceInvoiceItem WHERE FinanceInvoiceItem.FinanceInvoice = FinanceInvoice.Id) AS Text', 291 'Subject='.$_GET['Id'].' ORDER BY Time'); 292 292 while($Row = $DbResult->fetch_array()) 293 293 { … … 317 317 'WHERE (FinanceInvoice.Subject = Subject.Id) AND (FinanceInvoice.Direction = -1) '. 318 318 'AND (TimePayment IS NULL)) AS OpenedLiabilities, '. 319 '(SELECT SUM(FinanceOperation.Value*FinanceOperation.Direction) '.319 '(SELECT SUM(FinanceOperation.Value*FinanceOperation.Direction) '. 320 320 'FROM FinanceOperation WHERE FinanceOperation.Subject = Subject.Id AND FinanceOperation.Direction = 1) '. 321 321 'AS Gains, (SELECT SUM(FinanceOperation.Value*FinanceOperation.Direction) FROM FinanceOperation WHERE '. … … 341 341 $Output .= '<strong>Roční přehledy</strong><br/>'; 342 342 $Output .= $this->ShowFinanceYears(); 343 if(array_key_exists('year', $_GET)) 343 if(array_key_exists('year', $_GET)) 344 344 { 345 345 $Year = $_GET['year'] * 1; … … 353 353 return($Output); 354 354 } 355 355 356 356 function ShowFinanceYears() 357 357 { -
trunk/Modules/FinanceBankAPI/FileImport.php
r719 r738 8 8 var $Database; 9 9 var $BankAccount; 10 10 11 11 function __construct($System) 12 12 { … … 14 14 $this->System = &$System; 15 15 } 16 16 17 17 function Import() 18 18 { 19 19 } 20 20 21 21 function ImportFile($Content, $Ext) 22 { 22 { 23 23 } 24 24 25 25 function PairOperations() 26 26 { … … 32 32 $DbResult2 = $this->Database->select('Subject', 'Id', 'Id='.$DbRow['VariableSymbol']); 33 33 if($DbResult2->num_rows == 1) 34 { 34 { 35 35 $DbRow2 = $DbResult2->fetch_assoc(); 36 // TODO: Replace constants by links to real database numbers 36 // TODO: Replace constants by links to real database numbers 37 37 if($DbRow['Value'] >= 0) { 38 $DocumentLine = 3; // Receive money39 $Direction = 1;38 $DocumentLine = 3; // Receive money 39 $Direction = 1; 40 40 } else { 41 $DocumentLine = 4; // Send money42 $Direction = -1;41 $DocumentLine = 4; // Send money 42 $Direction = -1; 43 43 } 44 44 $Year = date('Y', MysqlDateToTime($DbRow['Time'])); 45 45 $BillCode = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year); 46 $DbResult3 = $this->Database->insert('FinanceOperation', array('Subject' => $DbRow2['Id'], 'Cash' => 0, 46 $DbResult3 = $this->Database->insert('FinanceOperation', array('Subject' => $DbRow2['Id'], 'Cash' => 0, 47 47 'Value' => Abs($DbRow['Value']), 'Direction' => $Direction, 'Taxable' => 1, 'BankAccount' => $DbRow['BankAccount'], 'Network' => 1, 48 48 'Time' => $DbRow['Time'], 'Text' => $DbRow['Description'], 'BillCode' => $BillCode, 'DocumentLine' => $DocumentLine)); … … 61 61 62 62 function Show() 63 { 63 { 64 64 $Output = ''; 65 65 if(!$this->System->User->CheckPermission('Finance', 'SubjectList')) return('Nemáte oprávnění'); 66 66 67 67 $DbResult = $this->Database->select('FinanceBankAccount', '*', 'Id='.$_GET['i']); 68 68 $BankAccount = $DbResult->fetch_assoc(); 69 69 70 70 $DbResult = $this->Database->select('FinanceBank', '*', 'Id='.$BankAccount['Bank']); 71 71 $Bank = $DbResult->fetch_assoc(); 72 72 $Output .= 'Účet: '.$BankAccount['Number'].'/'.$Bank['Code'].' ('.$Bank['Name'].')'; 73 73 74 74 if($Bank['Code'] == '2010') $Import = new ImportFio($this->System); 75 75 else if($Bank['Code'] == '0300') $Import = new ImportPS($this->System); … … 80 80 $Output .= $Import->Import(); 81 81 $Import->PairOperations(); 82 } 82 } 83 83 return($Output); 84 84 } 85 85 } 86 86 87 87 class PageImportFile extends Page 88 88 { … … 90 90 var $ShortTitle = 'Import plateb ze souboru'; 91 91 var $ParentClass = 'PageFinance'; 92 92 93 93 function Show() 94 94 { … … 103 103 return($Output); 104 104 } 105 105 106 106 function ShowForm() 107 107 { … … 113 113 return($Output); 114 114 } 115 115 116 116 function Prepare() 117 { 117 { 118 118 $Form = new Form($this->System->FormManager); 119 119 $Form->SetClass('ImportBankFile'); … … 125 125 $DbResult = $this->Database->select('FinanceBankAccount', '*', 'Id='.$Form->Values['BankAccount']); 126 126 $BankAccount = $DbResult->fetch_assoc(); 127 127 128 128 $DbResult = $this->Database->select('FinanceBank', '*', 'Id='.$BankAccount['Bank']); 129 129 $Bank = $DbResult->fetch_assoc(); 130 130 $Output .= 'Účet: '.$BankAccount['Number'].'/'.$Bank['Code'].' ('.$Bank['Name'].')'; 131 131 132 132 if($Bank['Code'] == '2010') $Import = new ImportFio($this->System); 133 133 else if($Bank['Code'] == '0300') $Import = new ImportPS($this->System); … … 135 135 $Import->BankAccount = $BankAccount; 136 136 $Output .= $Import->ImportFile($File->GetContent(), $File->GetExt()); 137 137 138 138 return($Output); 139 139 } 140 140 141 141 function InsertMoney($Subject, $Value, $Direction, $Cash, $Taxable, $Time, $Text, $DocumentLine) 142 142 { 143 $Year = date('Y', $Time); 143 $Year = date('Y', $Time); 144 144 $BillCode = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year); 145 $this->Database->insert('FinanceOperation', array('Text' => $Text, 146 'Subject' => $Subject, 'Cash' => $Cash, 'Value' => $Value, 'Direction' => $Direction,147 'Time' => TimeToMysqlDateTime($Time), 'Taxable' => $Taxable, 'BillCode' => $BillCode));145 $this->Database->insert('FinanceOperation', array('Text' => $Text, 146 'Subject' => $Subject, 'Cash' => $Cash, 'Value' => $Value, 'Direction' => $Direction, 147 'Time' => TimeToMysqlDateTime($Time), 'Taxable' => $Taxable, 'BillCode' => $BillCode)); 148 148 } 149 149 … … 152 152 $Finance = $this->System->Modules['Finance']; 153 153 $Output = ''; 154 154 155 155 for($I = $_POST['ItemCount'] - 1; $I >= 0 ; $I--) 156 156 { 157 157 // TODO: Use links to database records instead of contants 158 158 if($_POST['Money'.$I] < 0) { 159 $DocumentLine = 4;160 $Direction = -1;159 $DocumentLine = 4; 160 $Direction = -1; 161 161 } else { 162 $DocumentLine = 3;163 $Direction = 1;162 $DocumentLine = 3; 163 $Direction = 1; 164 164 } 165 $Date = explode('-', $_POST['Date'.$I]);165 $Date = explode('-', $_POST['Date'.$I]); 166 166 $Date = mktime(0, 0, 0, $Date[1], $Date[2], $Date[0]); 167 167 $this->InsertMoney($_POST['Subject'.$I], Abs($_POST['Money'.$I]), $Direction, 0, $_POST['Taxable'.$I], $Date, $_POST['Text'.$I], $DocumentLine); -
trunk/Modules/FinanceBankAPI/FinanceBankAPI.php
r735 r738 59 59 60 60 $this->System->RegisterPage(array('finance', 'import-api'), 'PageImportAPI'); 61 $this->System->RegisterPage(array('finance', 'import-soubor'), 'PageImportFile'); 61 $this->System->RegisterPage(array('finance', 'import-soubor'), 'PageImportFile'); 62 62 } 63 63 … … 79 79 'presetBankAccount' => $Item['BankAccount'], 80 80 'presetDocumentLine' => $DocumentLine); 81 return($Preset);81 return($Preset); 82 82 } 83 83 } … … 85 85 class ScheduleBankImport extends SchedulerTask 86 86 { 87 function Execute()88 {89 $Output = '';90 $DbResult = $this->Database->select('FinanceBankAccount', 'Id, Comment', 91 '(`AutoImport`=1) AND ((`TimeEnd` IS NULL) OR (`TimeEnd` > NOW()))');92 while($DbRow = $DbResult->fetch_assoc())93 { 94 echo($DbRow['Comment']."\n");95 $Page = new PageImportAPI($this->System);96 $Output .= $Page->Show();97 }98 return($Output);99 }87 function Execute() 88 { 89 $Output = ''; 90 $DbResult = $this->Database->select('FinanceBankAccount', 'Id, Comment', 91 '(`AutoImport`=1) AND ((`TimeEnd` IS NULL) OR (`TimeEnd` > NOW()))'); 92 while($DbRow = $DbResult->fetch_assoc()) 93 { 94 echo($DbRow['Comment']."\n"); 95 $Page = new PageImportAPI($this->System); 96 $Output .= $Page->Show(); 97 } 98 return($Output); 99 } 100 100 } -
trunk/Modules/FinanceBankAPI/Fio.php
r550 r738 1 1 <?php 2 2 3 3 include('GPC.php'); 4 5 class Fio 4 5 class Fio 6 6 { 7 7 var $UserName; 8 8 var $Password; 9 var $Account; 10 9 var $Account; 10 11 11 function Import($TimeFrom, $TimeTo) 12 12 { … … 14 14 if($this->Password == '') throw new Exception('Missing value for Password property.'); 15 15 if(!is_numeric($this->Account)) throw new Exception('Missing or not numeric value for Account property.'); 16 16 17 17 $fp = fsockopen('ssl://www.fio.cz', 443, $errno, $errstr, 30); 18 if(!$fp) 18 if(!$fp) 19 19 { 20 20 throw new Exception('Connection error: '.$errstr); 21 } else 21 } else 22 22 { 23 23 // Send request … … 32 32 $Request .= "Connection: Close\r\n\r\n"; 33 33 fwrite($fp, $Request); 34 34 35 35 // Read response 36 36 $Response = array(); 37 while(!feof($fp)) 37 while(!feof($fp)) 38 38 { 39 39 $Response[] = trim(fgets($fp, 1024)); 40 40 } 41 41 fclose($fp); 42 42 43 43 // Strip HTTP header 44 44 while($Response[0] != '') array_shift($Response); 45 45 array_shift($Response); // Remove empty line 46 46 //echo(implode("\n", $Response)); 47 47 48 48 // Parse all GPC lines 49 49 $GPC = new GPC(); … … 58 58 } 59 59 } 60 60 61 61 function NoValidDataError($Response) 62 62 { 63 63 // Try to get error message 64 64 // If something go wrong fio show HTML login page and display error message 65 $Response = implode('', $Response);65 $Response = implode('', $Response); 66 66 $ErrorMessageStart = '<div id="oldform_warning">'; 67 if(strpos($Response, $ErrorMessageStart) !== false) 68 {69 $Response = substr($Response, strpos($Response, $ErrorMessageStart) + strlen($ErrorMessageStart));70 $ErrorMessage = trim(substr($Response, 0, strpos($Response, '</div>')));71 } else $ErrorMessage = '';72 throw new Exception('No valid GPC data: '.$ErrorMessage);67 if(strpos($Response, $ErrorMessageStart) !== false) 68 { 69 $Response = substr($Response, strpos($Response, $ErrorMessageStart) + strlen($ErrorMessageStart)); 70 $ErrorMessage = trim(substr($Response, 0, strpos($Response, '</div>'))); 71 } else $ErrorMessage = ''; 72 throw new Exception('No valid GPC data: '.$ErrorMessage); 73 73 } 74 74 } -
trunk/Modules/FinanceBankAPI/FioAPI.php
r628 r738 1 1 <?php 2 2 3 3 // Specifikace API: http://www.fio.cz/docs/cz/API_Bankovnictvi.pdf 4 4 … … 10 10 else return($Text); 11 11 } 12 12 13 13 class FioAPI 14 14 { … … 16 16 var $Encoding; 17 17 var $Format; 18 18 19 19 function __construct() 20 20 { … … 22 22 $this->Format = 'csv'; 23 23 } 24 24 25 25 function Import($TimeFrom, $TimeTo) 26 26 { 27 27 if($this->Token == '') throw new Exception('Missing value for Token property.'); 28 28 29 29 // URL format: https://www.fio.cz/ib_api/rest/periods/{token}/{datum od}/{datum do}/transactions.{format} 30 30 // Send request … … 32 32 date('Y-m-d', $TimeFrom).'/'.date('Y-m-d', $TimeTo).'/transactions.'.$this->Format; 33 33 $Response = file_get_contents('https://www.fio.cz'.$RequestURL); 34 if($Response == FALSE) 34 if($Response == FALSE) 35 35 { 36 36 throw new Exception('Connection error'); 37 } else 37 } else 38 38 { 39 39 if($this->Format == 'gpc') $Response = iconv('windows-1250', $this->Encoding, $Response); 40 40 $Response = explode("\n", $Response); 41 41 42 42 if($this->Format == 'gpc') 43 { 43 { 44 44 // Parse all GPC lines 45 45 $GPC = new GPC(); … … 57 57 'Items' => array(), 58 58 ); 59 59 60 60 // CVS header 61 while($Response[0] != '') 61 while($Response[0] != '') 62 62 { 63 63 $Line = explode(';', $Response[0]); 64 64 if($Line[0] == 'accountId') $Result['AccountNumber'] = $Line[0]; 65 else if($Line[0] == 'bankId') $Result['BankId'] = $Line[0]; 65 else if($Line[0] == 'bankId') $Result['BankId'] = $Line[0]; 66 66 else if($Line[0] == 'currency') $Result['Currency'] = $Line[0]; 67 67 else if($Line[0] == 'iban') $Result['IBAN'] = $Line[0]; … … 72 72 else if($Line[0] == 'dateEnd') $Result['DateEnd'] = $Line[0]; 73 73 else if($Line[0] == 'idFrom') $Result['IdFrom'] = $Line[0]; 74 else if($Line[0] == 'idTo') $Result['IdTo'] = $Line[0]; 74 else if($Line[0] == 'idTo') $Result['IdTo'] = $Line[0]; 75 75 array_shift($Response); 76 76 } … … 86 86 $Date = explode('.', $Line[1]); 87 87 $Date = mktime(0, 0, 0, $Date[1], $Date[0], $Date[2]); 88 $NewRecord = array('ID' => $Line[0], 'Date' => $Date, 'Value' => $Line[2], 'CurrencyCode' => $Line[3], 88 $NewRecord = array('ID' => $Line[0], 'Date' => $Date, 'Value' => $Line[2], 'CurrencyCode' => $Line[3], 89 89 'OffsetAccount' => $Line[4], 'OffsetAccountName' => $Line[5], 'BankCode' => $Line[6], 'BankName' => RemoveComma($Line[7]), 90 90 'ConstantSymbol' => $Line[8], 'VariableSymbol' => $Line[9], 'SpecificSymbol' => $Line[10], 91 'UserIdent' => RemoveComma($Line[11]), 'Message' => RemoveComma($Line[12]), 'Type' => RemoveComma($Line[13]), 92 'User' => RemoveComma($Line[14]), 'Details' => RemoveComma($Line[15]), 'Comment' => RemoveComma($Line[16]), 91 'UserIdent' => RemoveComma($Line[11]), 'Message' => RemoveComma($Line[12]), 'Type' => RemoveComma($Line[13]), 92 'User' => RemoveComma($Line[14]), 'Details' => RemoveComma($Line[15]), 'Comment' => RemoveComma($Line[16]), 93 93 'BIC' => $Line[17], 'OrderID' => $Line[18]); 94 $Result['Items'][] = $NewRecord; 94 $Result['Items'][] = $NewRecord; 95 95 } 96 96 } … … 98 98 } 99 99 } 100 100 101 101 function NoValidDataError($Response) 102 102 { … … 105 105 $Response = implode('', $Response); 106 106 $ErrorMessageStart = '<div id="oldform_warning">'; 107 if(strpos($Response, $ErrorMessageStart) !== false) 107 if(strpos($Response, $ErrorMessageStart) !== false) 108 108 { 109 109 $Response = substr($Response, strpos($Response, $ErrorMessageStart) + strlen($ErrorMessageStart)); -
trunk/Modules/FinanceBankAPI/FioDemo.php
r548 r738 1 1 <?php 2 2 3 3 include('FioAPI.php'); 4 4 5 5 $Fio = new FioAPI(); 6 6 $Fio->Token = ''; … … 14 14 { 15 15 echo('<tr>'); 16 if($Record['Type'] == GPC_TYPE_REPORT) 16 if($Record['Type'] == GPC_TYPE_REPORT) 17 17 { 18 18 echo('<td>Jméno účtu: '.$Record['AccountName'].'</td>'); … … 22 22 echo('<td>Suma příjmů: '.$Record['CreditValue'].' Kč</td>'); 23 23 echo('<td>Suma výdajů: '.$Record['DebitValue'].' Kč</td>'); 24 24 25 25 echo('</tr></table><br><br>'); 26 26 echo('<table border="1"><tr>'); 27 27 28 28 echo('<th>Datum</th>'); 29 29 echo('<th>Částka</th>'); … … 35 35 echo('<th>Uživatelská identifikace</th>'); 36 36 } else 37 if($Record['Type'] == GPC_TYPE_ITEM) 37 if($Record['Type'] == GPC_TYPE_ITEM) 38 38 { 39 39 echo('<td>'.date('j.n.Y', $Record['DueDate']).'</td>'); … … 45 45 echo('<td>'.$Record['SpecificSymbol'].'</td>'); 46 46 echo('<td>'.$Record['ClientName'].'</td>'); 47 } 47 } 48 48 echo('</tr>'); 49 49 50 50 } 51 51 echo('</table>'); -
trunk/Modules/FinanceBankAPI/GPC.php
r550 r738 1 1 <?php 2 2 3 3 define('GPC_TYPE_REPORT', '074'); 4 4 define('GPC_TYPE_ITEM', '075'); 5 5 6 6 class GPC 7 7 { 8 8 function ParseLine($Line) 9 { 9 { 10 10 $Line = ' '.$Line; 11 $Type = mb_substr($Line, 1, 3); 12 11 $Type = mb_substr($Line, 1, 3); 12 13 13 if($Type == GPC_TYPE_REPORT) 14 14 { … … 19 19 'AccountName' => trim(mb_substr($Line, 20, 20)), 20 20 'OldBalanceDate' => mktime(0, 0, 0, mb_substr($Line, 42, 2), mb_substr($Line, 40, 2), '20'.mb_substr($Line, 44, 2)), 21 'OldBalanceValue' => (mb_substr($Line, 60, 1).mb_substr($Line, 46, 14)) / 100, 21 'OldBalanceValue' => (mb_substr($Line, 60, 1).mb_substr($Line, 46, 14)) / 100, 22 22 'NewBalanceValue' => (mb_substr($Line, 75, 1).mb_substr($Line, 61, 14)) / 100, 23 'DebitValue' => (mb_substr($Line, 90, 1).mb_substr($Line, 76, 14)) / 100, 24 'CreditValue' => (mb_substr($Line, 105, 1).mb_substr($Line, 91, 14)) / 100, 23 'DebitValue' => (mb_substr($Line, 90, 1).mb_substr($Line, 76, 14)) / 100, 24 'CreditValue' => (mb_substr($Line, 105, 1).mb_substr($Line, 91, 14)) / 100, 25 25 'SequenceNumber' => intval(mb_substr($Line, 106, 3)), 26 26 'Date' => mktime(0, 0, 0, mb_substr($Line, 111, 2), mb_substr($Line, 109, 2), '20'.mb_substr($Line, 113, 2)), … … 28 28 'CheckSum' => sha1(md5($Line).$Line), 29 29 ); 30 } else 30 } else 31 31 if($Type == GPC_TYPE_ITEM) 32 { 32 { 33 33 $GPCLine = array 34 34 ( 35 35 'Type' => GPC_TYPE_ITEM, 36 36 'AccountNumber' => mb_substr($Line, 4, 16), 37 'OffsetAccount' => mb_substr($Line, 20, 16), 38 'RecordNumber' => mb_substr($Line, 36, 13), 37 'OffsetAccount' => mb_substr($Line, 20, 16), 38 'RecordNumber' => mb_substr($Line, 36, 13), 39 39 'Value' => mb_substr($Line, 49, 12) / 100, 40 'Code' => mb_substr($Line, 61, 1), 40 'Code' => mb_substr($Line, 61, 1), 41 41 'VariableSymbol' => intval(mb_substr($Line, 62, 10)), 42 42 'BankCode' => mb_substr($Line, 74, 4), 43 43 'ConstantSymbol' => intval(mb_substr($Line, 78, 4)), 44 'SpecificSymbol' => intval(mb_substr($Line, 82, 10)), 44 'SpecificSymbol' => intval(mb_substr($Line, 82, 10)), 45 45 'Valut' => mb_substr($Line, 92, 6), 46 'ClientName' => mb_substr($Line, 98, 20), 46 'ClientName' => mb_substr($Line, 98, 20), 47 47 //'Zero' => substr($Line, 118, 1), 48 48 'CurrencyCode' => mb_substr($Line, 119, 4), … … 50 50 'CheckSum' => sha1(md5($Line).$Line), 51 51 ); 52 } else 52 } else 53 53 $GPCLine = NULL; 54 54 55 55 return($GPCLine); 56 56 } -
trunk/Modules/FinanceBankAPI/ImportFio.php
r715 r738 1 1 <?php 2 2 3 3 include('FioAPI.php'); 4 4 5 5 class ImportFio extends BankImport 6 6 { 7 7 function Import() 8 { 8 { 9 9 $Fio = new FioAPI(); 10 10 $Fio->Token = $this->BankAccount['LoginName']; … … 20 20 //$Output .= '<td>Ke dni '.date('j.n.Y', $Records['DateEnd']).' je stav účtu '.$Records['ClosingBalance'].' Kč</td>'; 21 21 //$Output .= '<td>Suma příjmů: '.$Records['CreditValue'].' Kč</td>'; 22 //$Output .= '<td>Suma výdajů: '.$Records['DebitValue'].' Kč</td>'; 22 //$Output .= '<td>Suma výdajů: '.$Records['DebitValue'].' Kč</td>'; 23 23 //$Output .= '</tr>'; 24 24 foreach($Records['Items'] as $Record) … … 26 26 $DbResult = $this->Database->select('FinanceBankImport', 'ID', 'Identification='.$Record['ID']); 27 27 if($DbResult->num_rows == 0) 28 { 28 { 29 29 $Output .= '<tr>'; 30 30 $this->Database->insert('FinanceBankImport', array('Time' => TimeToMysqlDate($Record['Date']), 31 'BankAccount' => $this->BankAccount['Id'], 'Value' => $Record['Value'], 31 'BankAccount' => $this->BankAccount['Id'], 'Value' => $Record['Value'], 32 32 'SpecificSymbol' => $Record['SpecificSymbol'], 'VariableSymbol' => $Record['VariableSymbol'], 33 33 'ConstantSymbol' => $Record['ConstantSymbol'], 'Currency' => $this->BankAccount['Currency'], … … 41 41 } 42 42 } 43 $Output .= '</table>'; 44 $this->Database->update('FinanceBankAccount', 'Id='.$this->BankAccount['Id'], 45 array('LastImportDate' => TimeToMysqlDate($PeriodEnd)));43 $Output .= '</table>'; 44 $this->Database->update('FinanceBankAccount', 'Id='.$this->BankAccount['Id'], 45 array('LastImportDate' => TimeToMysqlDate($PeriodEnd))); 46 46 return($Output); 47 47 } -
trunk/Modules/FinanceBankAPI/ImportPS.php
r550 r738 14 14 $Data = explode("\n", $Content); 15 15 } 16 16 17 17 function ImportCVS($Content) 18 18 { 19 19 $Finance = &$this->System->Modules['Finance']; 20 20 21 21 $Data = explode("\n", $Content); 22 22 foreach($Data as $Key => $Value) … … 45 45 11 => '', 46 46 ); 47 47 48 48 if($Header != $Data[0]) $Output = 'Nekompatibilní struktura CSV'; 49 49 else … … 79 79 $Style = ''; 80 80 } 81 81 82 82 if($Money < 0) $Text = 'Platba převodem'; 83 83 else $Text = 'Přijatá platba'; … … 102 102 $Output .= '<input type="submit" value="Zpracovat"/></form>'; 103 103 } 104 } 104 } 105 105 } -
trunk/Modules/IS/IS.php
r736 r738 32 32 if(array_key_exists('t', $_GET)) $Table = $_GET['t']; 33 33 else $Table = ''; 34 // i - index of item 34 // i - index of item 35 35 if(array_key_exists('i', $_GET)) $ItemId = $_GET['i']; 36 36 else $ItemId = 0; 37 // fc - preset colum 37 // fc - preset colum 38 38 if(array_key_exists('fn', $_GET)) $FilterName = $_GET['fn']; 39 39 else $FilterName = ''; … … 46 46 47 47 if($Action == 'list') { 48 if($FilterName == '') $Content = $this->ShowList($Table);49 else $Content = $this->ShowList($Table, '', '', $FilterName, $FilterValue);48 if($FilterName == '') $Content = $this->ShowList($Table); 49 else $Content = $this->ShowList($Table, '', '', $FilterName, $FilterValue); 50 50 } 51 51 else if($Action == 'select') $Content = $this->ShowSelect($Table); … … 84 84 $DbRow = $DbResult->fetch_row(); 85 85 $Output .= 'Nedokončených úkolů: '.$DbRow['0'].'<br/>'; 86 86 87 87 $DbResult = $this->Database->select('Member', 'COUNT(*)', '1'); 88 88 $DbRow = $DbResult->fetch_row(); 89 89 $Output .= 'Zákazníků: '.$DbRow['0'].'<br/>'; 90 90 91 91 $DbResult = $this->Database->select('Subject', 'COUNT(*)', '1'); 92 92 $DbRow = $DbResult->fetch_row(); 93 93 $Output .= 'Subjektů: '.$DbRow['0'].'<br/>'; 94 94 95 95 $DbResult = $this->Database->select('User', 'COUNT(*)', '1'); 96 96 $DbRow = $DbResult->fetch_row(); 97 97 $Output .= 'Uživatelů: '.$DbRow['0'].'<br/>'; 98 98 99 99 $DbResult = $this->Database->select('NetworkDevice', 'COUNT(*)', '1'); 100 100 $DbRow = $DbResult->fetch_row(); 101 101 $Output .= 'Registrovaných zařízení: '.$DbRow['0'].'<br/>'; 102 102 103 103 $DbResult = $this->Database->select('FinanceOperation', 'SUM(`Value` * `Direction`)', '1'); 104 104 $DbRow = $DbResult->fetch_row(); 105 105 $Output .= 'Stav placení: '.$DbRow['0'].'<br/>'; 106 106 107 107 $DbResult = $this->Database->select('FinanceBankImport', 'COUNT(*)', '`FinanceOperation` IS NULL'); 108 108 $DbRow = $DbResult->fetch_row(); … … 142 142 function LogChange($Form, $Action, $NewId, $OldId) 143 143 { 144 $Values = $Form->Definition['Table'].' (Id: '.$OldId.' => '.$NewId.'):'."\n";145 // Compare old values loaded from database with new values in Form variable146 $NewValues = $Form->Values;147 if($OldId != 0)148 {149 $FormOld = new Form($this->System->FormManager);150 $FormOld->SetClass($Form->Definition['Table']);151 $FormOld->LoadValuesFromDatabase($OldId);152 $OldValues = $FormOld->Values;153 // Keep only changes values154 foreach($NewValues as $Index => $Value)155 {156 if($OldValues[$Index] != $NewValues[$Index])157 {158 $Values .= $Index.': '.$FormOld->GetValue($Index);159 if($NewId != 0) $Values .= ' => '.$Form->GetValue($Index);160 $Values .= "\n";161 }162 }163 } else {164 foreach($NewValues as $Index => $Value)165 {166 $Values .= $Index.': '.$Form->GetValue($Index)."\n";167 }168 }169 $this->System->ModuleManager->Modules['Log']->NewRecord('IS', $Action, $Values);144 $Values = $Form->Definition['Table'].' (Id: '.$OldId.' => '.$NewId.'):'."\n"; 145 // Compare old values loaded from database with new values in Form variable 146 $NewValues = $Form->Values; 147 if($OldId != 0) 148 { 149 $FormOld = new Form($this->System->FormManager); 150 $FormOld->SetClass($Form->Definition['Table']); 151 $FormOld->LoadValuesFromDatabase($OldId); 152 $OldValues = $FormOld->Values; 153 // Keep only changes values 154 foreach($NewValues as $Index => $Value) 155 { 156 if($OldValues[$Index] != $NewValues[$Index]) 157 { 158 $Values .= $Index.': '.$FormOld->GetValue($Index); 159 if($NewId != 0) $Values .= ' => '.$Form->GetValue($Index); 160 $Values .= "\n"; 161 } 162 } 163 } else { 164 foreach($NewValues as $Index => $Value) 165 { 166 $Values .= $Index.': '.$Form->GetValue($Index)."\n"; 167 } 168 } 169 $this->System->ModuleManager->Modules['Log']->NewRecord('IS', $Action, $Values); 170 170 } 171 171 … … 179 179 if($_GET['o'] == 'save') 180 180 { 181 if(!array_key_exists('submit', $_POST))182 return($this->SystemMessage('Formulář', 'Formulář nebyl řádně odeslán. Vraťte se zpět a odešlete formulář znovu.'));181 if(!array_key_exists('submit', $_POST)) 182 return($this->SystemMessage('Formulář', 'Formulář nebyl řádně odeslán. Vraťte se zpět a odešlete formulář znovu.')); 183 183 $Form = new Form($this->System->FormManager); 184 184 $Form->SetClass($Table); … … 193 193 } catch (Exception $E) 194 194 { 195 $Output .= $this->SystemMessage('Úprava položky', 'Položku se nepodařilo uložit. Opravte problém a opakujte akci.<br/>'.$E->getMessage());195 $Output .= $this->SystemMessage('Úprava položky', 'Položku se nepodařilo uložit. Opravte problém a opakujte akci.<br/>'.$E->getMessage()); 196 196 $Form->OnSubmit = '?a=edit&t='.$Table.'&i='.$_GET['i'].'&o=save'; 197 197 $Output .= $Form->ShowEditForm(); … … 230 230 $Output = ''; 231 231 if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Write')) 232 return('Nemáte oprávnění'); 232 return('Nemáte oprávnění'); 233 233 $DbResult = $this->Database->select($Table, '*', '`Id`='.$Id); 234 234 if($DbResult->num_rows > 0) 235 235 { 236 $DbRow = $DbResult->fetch_assoc();237 try {236 $DbRow = $DbResult->fetch_assoc(); 237 try { 238 238 $Form = new Form($this->System->FormManager); 239 239 $this->ShortTitle .= ' - '.$Form->Definition['Title'].' odstranění'; … … 244 244 } catch (Exception $E) 245 245 { 246 $Output .= $this->SystemMessage('Smazání položky', 'Položku se nepodařilo smazat. Pravděpodobně na ni závisejí další položky.');246 $Output .= $this->SystemMessage('Smazání položky', 'Položku se nepodařilo smazat. Pravděpodobně na ni závisejí další položky.'); 247 247 } 248 248 } else $Output .= $this->SystemMessage('Smazání položky', 'Položka nenalezena'); … … 301 301 } catch (Exception $E) 302 302 { 303 $Output .= $this->SystemMessage('Přidání položky', 'Položku se nepodařilo přidat. Opravte problém a opakujte akci.<br/>'.$E->getMessage());304 $Form->OnSubmit = '?a=add&t='.$Table.'&o=save';303 $Output .= $this->SystemMessage('Přidání položky', 'Položku se nepodařilo přidat. Opravte problém a opakujte akci.<br/>'.$E->getMessage()); 304 $Form->OnSubmit = '?a=add&t='.$Table.'&o=save'; 305 305 $Output .= $Form->ShowEditForm(); 306 306 $Actions[] = '<a href="?a=list&t='.$Table.'"><img alt="Seznam" title="Seznam" src="'. … … 353 353 if(defined('NEW_PERMISSION') and !$this->System->User->CheckPermission($this->TableToModule($Table), 'Read')) 354 354 return('Nemáte oprávnění'); 355 355 356 356 $FormClass = $this->System->FormManager->Classes[$Table]; 357 357 if(array_key_exists('BaseTable', $FormClass)) $TableModify = $FormClass['BaseTable']; 358 358 else $TableModify = $Table; 359 359 360 360 $Form = new Form($this->System->FormManager); 361 361 $Form->SetClass($Table); … … 407 407 function ShowTable($Table, $Filter = '', $Title = '', $RowActions = array(), $ExcludeColumn = '') 408 408 { 409 if($Table != '') $FormClass = $this->System->FormManager->Classes[$Table];409 if($Table != '') $FormClass = $this->System->FormManager->Classes[$Table]; 410 410 else return($this->SystemMessage('Chyba', 'Tabulka nenalezena')); 411 411 … … 416 416 // Build form type filter 417 417 $TypeFilter = ''; 418 foreach($FormClass['Items'] as $ItemIndex => $FormItem) 418 foreach($FormClass['Items'] as $ItemIndex => $FormItem) 419 419 if(!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or 420 420 (array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) and … … 422 422 if(array_key_exists('Filter', $FormItem) and ($FormItem['Filter'] == true)) 423 423 { 424 if($TypeFilter != '') $TypeFilter .= ' AND ';425 $TypeFilter .= '('.$ItemIndex.' = "'.$FormItem['Default'].'")';426 } 424 if($TypeFilter != '') $TypeFilter .= ' AND '; 425 $TypeFilter .= '('.$ItemIndex.' = "'.$FormItem['Default'].'")'; 426 } 427 427 if($TypeFilter != '') 428 428 { 429 if($Filter != '') $Filter = ' AND';430 $Filter .= ' '.$TypeFilter;431 } 432 429 if($Filter != '') $Filter = ' AND'; 430 $Filter .= ' '.$TypeFilter; 431 } 432 433 433 // Build user filter 434 434 $UserFilter = ''; … … 470 470 if($Filter != '') $Filter = ' HAVING '.$Filter; 471 471 472 foreach($FormClass['Items'] as $ItemIndex => $FormItem) 472 foreach($FormClass['Items'] as $ItemIndex => $FormItem) 473 473 if(!array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) or 474 474 (array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes) and 475 475 ($this->System->FormManager->FormTypes[$FormItem['Type']]['Type'] != 'ManyToOne'))) 476 476 { 477 if($ExcludeColumn != $ItemIndex)478 if(!array_key_exists('Hidden', $FormItem) or ($FormItem['Hidden'] == false))477 if($ExcludeColumn != $ItemIndex) 478 if(!array_key_exists('Hidden', $FormItem) or ($FormItem['Hidden'] == false)) 479 479 $TableColumns[] = array('Name' => $ItemIndex, 'Title' => $FormItem['Caption']); 480 480 $UseType = $UseType = $FormItem['Type']; … … 563 563 ($ExcludeColumn != $ItemIndex)) 564 564 { 565 //$Output .= '<td>'.$Row[$ItemIndex].'</td>';565 //$Output .= '<td>'.$Row[$ItemIndex].'</td>'; 566 566 $UseType = $UseType = $FormItem['Type']; 567 567 if(array_key_exists($FormItem['Type'], $this->System->FormManager->FormTypes)) … … 632 632 if(array_key_exists('BaseTable', $FormClass)) $TableModify = $FormClass['BaseTable']; 633 633 else $TableModify = $Table; 634 634 635 635 $RowActions = '<a href="?a=view&t='.$Table.'&i=#RowId"><img alt="Ukázat" title="Ukázat" src="'. 636 636 $this->System->Link('/images/view.png').'"/></a>'. … … 755 755 $Confirm = ' onclick="return confirmAction(\''.$Confirm.'\');"'; 756 756 $Output = '<a href="'.$Target.'"'.$Confirm.'>'.$Output.'</a>'; 757 return($Output);757 return($Output); 758 758 } 759 759 } -
trunk/Modules/Map/Map.php
r721 r738 15 15 if(count($this->System->PathItems) > 1) 16 16 { 17 if($this->System->PathItems[1] == 'show-position') return($this->ShowPosition()); 17 if($this->System->PathItems[1] == 'show-position') return($this->ShowPosition()); 18 18 else return(PAGE_NOT_FOUND); 19 19 } else return($this->ShowMain()); 20 20 } 21 21 22 22 function ShowPosition() 23 23 { … … 37 37 } else return('Položka nenalezena'); 38 38 } 39 39 40 40 function ShowMain() 41 41 { … … 49 49 var tinyIcon; 50 50 51 function initialize() 52 { 53 if (GBrowserIsCompatible()) 51 function initialize() 52 { 53 if (GBrowserIsCompatible()) 54 54 { 55 55 map = new GMap2(document.getElementById("map_canvas")); … … 58 58 map.setUIToDefault(); 59 59 map.addControl(new GOverviewMapControl(new GSize(128, 96))); 60 60 61 61 62 62 // Create our "tiny" marker icon … … 68 68 tinyIcon.iconAnchor = new GPoint(5, 5); 69 69 tinyIcon.infoWindowAnchor = new GPoint(5, 1); 70 71 toggleLabel(\'NetworkLinks\');72 toggleLabel(\'NetworkDevices\');';73 74 $Output .= ' 75 } 76 } 77 78 function toggleLabel(id) 79 { 80 var ele = document.getElementById(id);81 ele.checked = !ele.checked;82 ele.onclick( );83 } 84 85 function UpdateNetworkLinks() 86 { 87 if ((document.getElementById("NetworkLinks")).checked == true) 88 { 89 NetworkLinks = [';70 71 toggleLabel(\'NetworkLinks\'); 72 toggleLabel(\'NetworkDevices\');'; 73 74 $Output .= ' 75 } 76 } 77 78 function toggleLabel(id) 79 { 80 var ele = document.getElementById(id); 81 ele.checked = !ele.checked; 82 ele.onclick( ); 83 } 84 85 function UpdateNetworkLinks() 86 { 87 if ((document.getElementById("NetworkLinks")).checked == true) 88 { 89 NetworkLinks = ['; 90 90 $DbResult = $this->Database->query('SELECT * FROM NetworkLink WHERE Interface1 <> 0 AND Interface2 <> 0'); 91 91 while($Link = $DbResult->fetch_assoc()) … … 114 114 } 115 115 116 } else { //checkbox turned off117 for (var i in NetworkLinks)118 { 119 map.removeOverlay(NetworkLinks[i]);120 NetworkLinks[i] = null;121 }122 }123 } 124 125 function toggleLabel(id) 126 { 127 var ele = document.getElementById(id);128 ele.checked = !ele.checked;129 ele.onclick( );130 } 131 132 function UpdateNetworkDevices() 133 { 134 if ((document.getElementById("NetworkDevices")).checked == true) 135 { 136 NetworkDevices = [';116 } else { //checkbox turned off 117 for (var i in NetworkLinks) 118 { 119 map.removeOverlay(NetworkLinks[i]); 120 NetworkLinks[i] = null; 121 } 122 } 123 } 124 125 function toggleLabel(id) 126 { 127 var ele = document.getElementById(id); 128 ele.checked = !ele.checked; 129 ele.onclick( ); 130 } 131 132 function UpdateNetworkDevices() 133 { 134 if ((document.getElementById("NetworkDevices")).checked == true) 135 { 136 NetworkDevices = ['; 137 137 138 138 $DbResult = $this->Database->query('SELECT GROUP_CONCAT(NetworkDevice.Name SEPARATOR ",") AS Name, '. … … 153 153 } 154 154 155 } else { //checkbox turned off156 for (var i in NetworkDevices)157 { 158 map.removeOverlay(NetworkDevices[i]);159 NetworkDevices[i] = null;160 }161 } 155 } else { //checkbox turned off 156 for (var i in NetworkDevices) 157 { 158 map.removeOverlay(NetworkDevices[i]); 159 NetworkDevices[i] = null; 160 } 161 } 162 162 } 163 163 … … 165 165 $Output .= '<table style="margin-left: auto; margin-right: auto; width: 100%; height: 80%;"> 166 166 <tr> 167 <td style="width: 80%; height: 100%;"> 167 <td style="width: 80%; height: 100%;"> 168 168 <div id="map_canvas" style="width: 100%; height: 100%;"></div></td> 169 169 <td style="width: 20%"> … … 208 208 $this->SupportedModels = array(); 209 209 } 210 210 211 211 function DoStart() 212 212 { … … 225 225 )); 226 226 $this->System->FormManager->RegisterFormType('TMapPosition', array( 227 'Type' => 'Reference',228 'Table' => 'MapPosition',229 'Id' => 'Id',230 'Name' => 'Name',231 'Filter' => '1',227 'Type' => 'Reference', 228 'Table' => 'MapPosition', 229 'Id' => 'Id', 230 'Name' => 'Name', 231 'Filter' => '1', 232 232 )); 233 234 } 235 } 233 234 } 235 } -
trunk/Modules/Map/MapAPI.php
r574 r738 1 1 <?php 2 2 3 class MapApi extends Model 3 class MapApi extends Model 4 4 { 5 5 var $Position; … … 9 9 var $ShowMarker; 10 10 var $MarkerText; 11 11 12 12 function __construct($System) 13 13 { 14 14 parent::__construct($System); 15 $this->Zoom = 2; 15 $this->Zoom = 2; 16 16 $this->Position = array('Lat' => 40.178873, 'Lng' => 65.039062); 17 17 $this->Key = ''; 18 18 $this->ShowMarker = false; 19 $this->MarkerText = ''; 19 $this->MarkerText = ''; 20 20 } 21 21 22 22 function Show() 23 23 { … … 39 39 </script>'; 40 40 $Output .= '<script type="text/javascript"> 41 41 42 42 var map; 43 43 var tinyIcon; 44 44 45 45 function initialize() 46 46 { … … 52 52 map.setUIToDefault(); 53 53 map.addControl(new GOverviewMapControl(new GSize(128, 96))); 54 54 55 55 GEvent.addListener(map,"click",function(overlay, point) 56 56 { … … 61 61 }); 62 62 } 63 63 64 64 // Create our "tiny" marker icon 65 65 var tinyIcon = new GIcon(); … … 84 84 class MapApiSeznam extends MapApi 85 85 { 86 86 87 87 } -
trunk/Modules/Meals/Meals.php
r586 r738 4 4 { 5 5 var $FullTitle = 'Jídleníček jídelny Na kopečku'; 6 var $ShortTitle = 'Jídelníček'; 6 var $ShortTitle = 'Jídelníček'; 7 7 var $ParentClass = 'PagePortal'; 8 8 var $DayNames = array('Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'); … … 14 14 { 15 15 if(count($this->System->PathItems) > 1) 16 { 16 { 17 17 if($this->System->PathItems[1] == 'tisk') return($this->ShowPrint()); 18 18 else if($this->System->PathItems[1] == 'menuedit.php') return($this->ShowEdit()); … … 42 42 return($Output); 43 43 } 44 44 45 45 function ShowPrint() 46 46 { 47 47 $this->ClearPage = true; 48 48 49 49 $Output = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 50 50 <html> … … 79 79 { 80 80 $Output .= '<br>'.$this->Status[$Row['Status']].'<br> '; 81 } 81 } 82 82 $Output .= '</td></tr>'; 83 83 } … … 91 91 92 92 $Output .= '</body></html>'; 93 return($Output); 93 return($Output); 94 94 } 95 95 … … 109 109 '">Tisk</a></td>'; 110 110 else $WeekRowSpan = ''; 111 if($Week == 0) $Color = ' style="color: #ff0000;" '; else $Color = ''; 111 if($Week == 0) $Color = ' style="color: #ff0000;" '; else $Color = ''; 112 112 $Output = '<tr><td'.$Color.'>'.$this->DayNames[$Week].'</td><td>'.HumanDate($Row['Date']).'</td>'.$WeekRowSpan.' 113 113 <td><input name="soup_'.$Row['Date'].'" size="30" value="'.$Row['Soup'].'"></td> … … 190 190 $this->SupportedModels = array('Meals', 'MealsInfo'); 191 191 } 192 192 193 193 function DoInstall() 194 194 { 195 195 } 196 196 197 197 function DoUnInstall() 198 198 { -
trunk/Modules/Meteostation/Meteostation.php
r586 r738 9 9 var $ShortTitle = 'Meteostanice'; 10 10 var $ParentClass = 'PagePortal'; 11 11 12 12 function Show() 13 13 { … … 24 24 var $Period; 25 25 var $URL; 26 26 27 27 function DownloadData() 28 28 { 29 29 $XmlData = simplexml_load_file($this->URL); 30 30 31 $Data = array('MeteoStation' => $this->Id, 31 $Data = array('MeteoStation' => $this->Id, 32 32 'WindSpeed' => trim($XmlData->windspeed), 33 33 'WindDir' => trim($XmlData->winddir), … … 43 43 ); 44 44 $this->Database->insert('MeteoStationMeasure', array( 45 'Time' => TimeToMysqlDateTime(time()), 'MeteoStation' => $Data['MeteoStation'], 46 'WindSpeed' => $Data['WindSpeed'], 'WindDir' => $Data['WindDir'], 47 'WindGust' => $Data['WindGust'], 'Pressure' => $Data['Pressure'], 45 'Time' => TimeToMysqlDateTime(time()), 'MeteoStation' => $Data['MeteoStation'], 46 'WindSpeed' => $Data['WindSpeed'], 'WindDir' => $Data['WindDir'], 47 'WindGust' => $Data['WindGust'], 'Pressure' => $Data['Pressure'], 48 48 'SysTemp' => $Data['SysTemp'], 'Temperature' => $Data['Temperature'], 49 49 'BarAltitude' => $Data['BarAltitude'], 'WindChill' => $Data['WindChill'], … … 52 52 $this->Data = $Data; 53 53 } 54 54 55 55 function CreateImage($FileName) 56 56 { … … 65 65 $Image->SaveToFile($FileName); 66 66 } 67 67 68 68 function LoadFromDb() 69 69 { … … 79 79 { 80 80 var $Data; 81 81 82 82 function __construct($System) 83 83 { … … 90 90 $this->Dependencies = array(); 91 91 } 92 92 93 93 function DownloadAll() 94 94 { … … 98 98 $MeteoStation = new MeteoStation(); 99 99 $MeteoStation->Id = $DbRow['Id']; 100 $MeteoStation->LoadFromDb(); 100 $MeteoStation->LoadFromDb(); 101 101 $MeteoStation->DownloadData(); 102 102 $MeteoStation->CreateImage('cache/'.$DbRow['Id'].'.png'); 103 103 } 104 104 } 105 106 105 106 107 107 function DoInstall() 108 108 { 109 109 } 110 110 111 111 function DoUninstall() 112 { 112 { 113 113 } 114 114 115 115 function DoStart() 116 116 { 117 117 $this->System->RegisterPage('meteo', 'PageMeteo'); 118 } 119 118 } 119 120 120 function DoStop() 121 { 121 { 122 122 } 123 123 } -
trunk/Modules/Network/HostList.php
r717 r738 8 8 var $ShortTitle = 'Seznam počítačů'; 9 9 var $ParentClass = 'PageNetwork'; 10 10 11 11 function Show() 12 12 { … … 45 45 if($Interface['Name'] != '') $InterfaceName .= '-'.$Interface['Name']; 46 46 $Output .= '<tr><td style="text-align: left; '.$Style.'"> '.$InterfaceName.'</td><td>'.$Interface['LocalIP'].'</td><td> </td><td> </td><td> </td><td> </td></tr>'; 47 } 47 } 48 48 } 49 } 49 } 50 50 $Output .= '</table></div>'; 51 51 return($Output); -
trunk/Modules/Network/Network.php
r736 r738 65 65 $Output .= '<td style="background-color: '.$Color.';"> </td>'; 66 66 } 67 68 $Output .= '</tr>'; 67 68 $Output .= '</tr>'; 69 69 } 70 70 } … … 186 186 'Online' => array('Type' => 'TOnlineState', 'Caption' => 'Běží', 'Default' => '0', 'ReadOnly' => true), 187 187 'LastOnline' => array('Type' => 'DateTime', 'Caption' => 'Naposledy běželo', 'Default' => '', 'ReadOnly' => true), 188 'Links' => array('Type' => 'TNetworkLinkListInterface', 'Caption' => 'Propojení', 'Default' => ''),188 'Links' => array('Type' => 'TNetworkLinkListInterface', 'Caption' => 'Propojení', 'Default' => ''), 189 189 'UpDown' => array('Type' => 'TNetworkInterfaceUpDown', 'Caption' => 'Změny stavu', 'Default' => ''), 190 190 'Signal' => array('Type' => 'TNetworkSignalListInterface', 'Caption' => 'Signál', 'Default' => ''), … … 192 192 193 193 ), 194 )); 194 )); 195 195 $this->System->FormManager->RegisterClass('NetworkInterfaceType', array( 196 196 'Title' => 'Typ síťového rozhraní', … … 235 235 $this->System->FormManager->RegisterClass('NetworkLinkUnion', array( 236 236 'Title' => 'Síťové propojení', 237 'BaseTable' => 'NetworkLink',237 'BaseTable' => 'NetworkLink', 238 238 'SQL' => '(SELECT `Id`, `Type`, `Interface1` AS `Interface`, `Interface2` AS `InterfaceOther` FROM `NetworkLink`) '. 239 'UNION (SELECT `Id`, `Type`, `Interface2` AS `Interface`, `Interface1` AS `InterfaceOther` FROM `NetworkLink`)',239 'UNION (SELECT `Id`, `Type`, `Interface2` AS `Interface`, `Interface1` AS `InterfaceOther` FROM `NetworkLink`)', 240 240 'Items' => array( 241 241 'Type' => array('Type' => 'TNetworkLinkType', 'Caption' => 'Typ', 'Default' => '1', 'ReadOnly' => true), 242 242 'Interface' => array('Type' => 'TNetworkInterface', 'Caption' => 'Rozhraní 1', 'Default' => '', 'ReadOnly' => true), 243 'InterfaceOther' => array('Type' => 'TNetworkInterface', 'Caption' => 'Rozhraní 2', 'Default' => '', 'ReadOnly' => true),244 ), 245 )); 246 243 'InterfaceOther' => array('Type' => 'TNetworkInterface', 'Caption' => 'Rozhraní 2', 'Default' => '', 'ReadOnly' => true), 244 ), 245 )); 246 247 247 $this->System->FormManager->RegisterClass('NetworkLinkType', array( 248 248 'Title' => 'Typ síťového propojení', … … 371 371 )); 372 372 $this->System->FormManager->RegisterFormType('TNetworkDevice', array( 373 'Type' => 'Reference',374 'Table' => 'NetworkDevice',375 'Id' => 'Id',376 'Name' => 'Name',377 'Filter' => '1',373 'Type' => 'Reference', 374 'Table' => 'NetworkDevice', 375 'Id' => 'Id', 376 'Name' => 'Name', 377 'Filter' => '1', 378 378 )); 379 379 $this->System->FormManager->RegisterFormType('TNetworkDeviceType', array( 380 'Type' => 'Reference',381 'Table' => 'NetworkDeviceType',382 'Id' => 'Id',383 'Name' => 'Name',384 'Filter' => '1',380 'Type' => 'Reference', 381 'Table' => 'NetworkDeviceType', 382 'Id' => 'Id', 383 'Name' => 'Name', 384 'Filter' => '1', 385 385 )); 386 386 $this->System->FormManager->RegisterFormType('TNetworkInterface', array( 387 'Type' => 'Reference',388 'Table' => 'NetworkInterface',389 'View' => '(SELECT NetworkInterface.*, CONCAT_WS("-", NetworkDevice.Name, NULLIF(NetworkInterface.Name, "")) AS DeviceName FROM NetworkInterface '.390 'LEFT JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device) AS T',391 'Id' => 'Id',392 'Name' => 'DeviceName',393 'Filter' => '1',387 'Type' => 'Reference', 388 'Table' => 'NetworkInterface', 389 'View' => '(SELECT NetworkInterface.*, CONCAT_WS("-", NetworkDevice.Name, NULLIF(NetworkInterface.Name, "")) AS DeviceName FROM NetworkInterface '. 390 'LEFT JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device) AS T', 391 'Id' => 'Id', 392 'Name' => 'DeviceName', 393 'Filter' => '1', 394 394 )); 395 395 $this->System->FormManager->RegisterFormType('TNetworkInterfaceType', array( 396 'Type' => 'Reference',397 'Table' => 'NetworkInterfaceType',398 'Id' => 'Id',399 'Name' => 'Name',400 'Filter' => '1',396 'Type' => 'Reference', 397 'Table' => 'NetworkInterfaceType', 398 'Id' => 'Id', 399 'Name' => 'Name', 400 'Filter' => '1', 401 401 )); 402 402 $this->System->FormManager->RegisterFormType('TDeviceList', array( … … 416 416 $this->System->FormManager->RegisterFormType('TNetworkLinkType', array( 417 417 'Type' => 'Reference', 418 'Table' => 'NetworkLinkType',419 'Id' => 'Id',420 'Name' => 'Name',421 'Filter' => '1',422 )); 418 'Table' => 'NetworkLinkType', 419 'Id' => 'Id', 420 'Name' => 'Name', 421 'Filter' => '1', 422 )); 423 423 $this->System->FormManager->RegisterFormType('TDeviceAPIType', array( 424 424 'Type' => 'Reference', 425 'Table' => 'DeviceAPIType',426 'Id' => 'Id',427 'Name' => 'Name',428 'Filter' => '1',429 )); 425 'Table' => 'DeviceAPIType', 426 'Id' => 'Id', 427 'Name' => 'Name', 428 'Filter' => '1', 429 )); 430 430 $this->System->FormManager->RegisterFormType('TNetworkInterfaceWirelessListInterface', array( 431 431 'Type' => 'ManyToOne', … … 445 445 'Type' => 'ManyToOne', 446 446 'Table' => 'NetworkLinkUnion', 447 'Id' => 'Id',448 'Ref' => 'Interface',449 'Filter' => '1',447 'Id' => 'Id', 448 'Ref' => 'Interface', 449 'Filter' => '1', 450 450 )); 451 451 $this->System->FormManager->RegisterFormType('TNetworkLinkListInterface1', array( 452 'Type' => 'ManyToOne',453 'Table' => 'NetworkLink',454 'Id' => 'Id',455 'Ref' => 'Interface1',456 'Filter' => '1',452 'Type' => 'ManyToOne', 453 'Table' => 'NetworkLink', 454 'Id' => 'Id', 455 'Ref' => 'Interface1', 456 'Filter' => '1', 457 457 )); 458 458 $this->System->FormManager->RegisterFormType('TNetworkLinkListInterface2', array( 459 'Type' => 'ManyToOne',460 'Table' => 'NetworkLink',461 'Id' => 'Id',462 'Ref' => 'Interface2',463 'Filter' => '1',459 'Type' => 'ManyToOne', 460 'Table' => 'NetworkLink', 461 'Id' => 'Id', 462 'Ref' => 'Interface2', 463 'Filter' => '1', 464 464 )); 465 465 $this->System->FormManager->RegisterFormType('TNetworkInterfaceUpDown', array( 466 'Type' => 'ManyToOne',467 'Table' => 'NetworkInterfaceUpDown',468 'Id' => 'Id',469 'Ref' => 'Interface',470 'Filter' => '1',471 )); 472 466 'Type' => 'ManyToOne', 467 'Table' => 'NetworkInterfaceUpDown', 468 'Id' => 'Id', 469 'Ref' => 'Interface', 470 'Filter' => '1', 471 )); 472 473 473 } 474 474 -
trunk/Modules/Network/Subnet.php
r548 r738 15 15 $DbResult = $this->Database->query('SELECT COUNT(*) FROM `NetworkSubnet`'); 16 16 $DbRow = $DbResult->fetch_row(); 17 $PageList = GetPageList($DbRow[0]); 17 $PageList = GetPageList($DbRow[0]); 18 18 19 19 $Output = $PageList['Output']; 20 20 $Output .= '<table class="WideTable" style="font-size: small;">'; 21 21 22 22 $TableColumns = array( 23 array('Name' => 'Name', 'Title' => 'Název'), 24 array('Name' => 'AddressRange', 'Title' => 'IP rozsah'), 25 array('Name' => 'DHCP', 'Title' => 'Adresa DHCP'), 26 array('Name' => 'Gateway', 'Title' => 'Výchozí brána'), 27 array('Name' => '', 'Title' => 'Max. adres'), 28 array('Name' => '', 'Title' => 'Registrovaných adres'), 29 array('Name' => '', 'Title' => 'Využití'), 30 array('Name' => 'SubjectName', 'Title' => 'Účastník'), 23 array('Name' => 'Name', 'Title' => 'Název'), 24 array('Name' => 'AddressRange', 'Title' => 'IP rozsah'), 25 array('Name' => 'DHCP', 'Title' => 'Adresa DHCP'), 26 array('Name' => 'Gateway', 'Title' => 'Výchozí brána'), 27 array('Name' => '', 'Title' => 'Max. adres'), 28 array('Name' => '', 'Title' => 'Registrovaných adres'), 29 array('Name' => '', 'Title' => 'Využití'), 30 array('Name' => 'SubjectName', 'Title' => 'Účastník'), 31 31 ); 32 32 $Order = GetOrderTableHeader($TableColumns, 'AddressRange', 0); … … 34 34 35 35 $Query = 'SELECT NetworkSubnet.*, Subject.Name AS SubjectName FROM NetworkSubnet LEFT JOIN Member ON Member.Id = NetworkSubnet.Member LEFT JOIN Subject ON Subject.Id = Member.Subject '.$Order['SQL'].$PageList['SQLLimit']; 36 36 37 37 $DbResult = $this->Database->query($Query); 38 while($Subnet = $DbResult->fetch_assoc()) 39 { 38 while($Subnet = $DbResult->fetch_assoc()) 39 { 40 40 $DbResult2 = $this->Database->query('SELECT COUNT(*) FROM NetworkInterface WHERE CompareNetworkPrefix(INET_ATON("'.$Subnet['AddressRange'].'"), INET_ATON(LocalIP), '.$Subnet['Mask'].')'); 41 41 $DbRow = $DbResult2->fetch_row(); -
trunk/Modules/Network/UserHosts.php
r558 r738 14 14 { 15 15 global $Config; 16 16 17 17 if($this->System->User->User['Id'] == '') return($this->SystemMessage('Nepovolený přístup', 'Nemáte oprávnění pro tuto operaci')); 18 18 $Output = '<div align="center" style="font-size: small;"><table class="WideTable">'; … … 36 36 NotBlank($Interface['ExternalIP']).'</td><td>'. 37 37 NotBlank($Interface['MAC']).'</td><td> </td><td> </td></tr>'; 38 } 38 } 39 39 } 40 40 $Output .= '</table></div>'; -
trunk/Modules/NetworkConfig/Generate.php
r621 r738 19 19 $Output = array(); 20 20 foreach($ExecuteParts as $Command) 21 if($Command != '') 21 if($Command != '') 22 22 { 23 exec($Command, $Output); 23 exec($Command, $Output); 24 24 //echo($Command."\n"); 25 25 //sleep(5); -
trunk/Modules/NetworkConfig/NetworkConfig.php
r721 r738 13 13 $this->Dependencies = array('Network'); 14 14 } 15 15 16 16 function DoInstall() 17 17 { 18 18 } 19 19 20 20 function DoUnInstall() 21 21 { … … 48 48 ), 49 49 )); 50 50 51 51 } 52 52 } -
trunk/Modules/NetworkConfigLinux/Generators/DHCP.php
r548 r738 36 36 fputs($File, " host ".$Data."\t{ fixed-address ".$Row['IP'].";\thardware ethernet ".$Row['MAC']."; }\n"); 37 37 } 38 38 39 39 fputs($File, "}\n\n"); 40 40 } -
trunk/Modules/NetworkConfigLinux/Generators/DNS.php
r699 r738 137 137 if(array_key_exists('IPv6', $Host) and ($Host['IPv6'] != '')) 138 138 { 139 $Addr = new NetworkAddressIPv6();140 $Addr->AddressFromString($Host['IPv6']);141 $Octets = $Addr->GetOctets();142 $Octets = array_slice($Octets, 0, (128 - $Prefix) / 4);143 $Octets = implode('.', $Octets);139 $Addr = new NetworkAddressIPv6(); 140 $Addr->AddressFromString($Host['IPv6']); 141 $Octets = $Addr->GetOctets(); 142 $Octets = array_slice($Octets, 0, (128 - $Prefix) / 4); 143 $Octets = implode('.', $Octets); 144 144 145 145 $Host['Name'] = strtolower($Host['Name']); … … 175 175 'Alias' => array(), 176 176 'Network' => array('10.145.64', '10.145.65', '10.145.66', '10.145.67', '10.145.68', 177 '10.145.69', '10.145.70', '10.145.71', '77.92.221', '172.16.0', '172.16.1'),178 'IPv6Network' => array('2a00:e580:244::/48'),177 '10.145.69', '10.145.70', '10.145.71', '77.92.221', '172.16.0', '172.16.1'), 178 'IPv6Network' => array('2a00:e580:244::/48'), 179 179 ); 180 180 … … 237 237 'Alias' => array(), 238 238 'Network' => array('81.2.194', '193.86.238', '212.111.4', '77.92.221'), 239 'IPv6Network' => array('2a00:e580:244::/48'),239 'IPv6Network' => array('2a00:e580:244::/48'), 240 240 ); 241 241 … … 278 278 'Network' => array('10.145.64', '10.145.65', '10.145.66', '10.145.67', 279 279 '10.145.68', '10.145.69', '10.145.70', '10.145.71'), 280 'IPv6Network' => array(),280 'IPv6Network' => array(), 281 281 ); 282 282 … … 317 317 'Alias' => array(), 318 318 'Network' => array('10.145.64', '10.145.65', '10.145.66', '10.145.67', 319 '10.145.68', '10.145.69', '10.145.70', '10.145.71'),320 'IPv6Network' => array(),319 '10.145.68', '10.145.69', '10.145.70', '10.145.71'), 320 'IPv6Network' => array(), 321 321 ); 322 322 -
trunk/Modules/NetworkConfigLinux/Generators/IPTables.php
r548 r738 13 13 /* 14 14 // Blocking according IP address 15 $DbResult = $Database->select('users', '*', 'inet = 0'); 15 $DbResult = $Database->select('users', '*', 'inet = 0'); 16 16 while($User = $DbResult->fetch_array()) 17 17 { … … 48 48 // else exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local"); 49 49 } else { 50 if($Row['vpn'] == 0) 50 if($Row['vpn'] == 0) 51 51 { 52 $CZFreeLocalIP = $Row['IP'];52 $CZFreeLocalIP = $Row['IP']; 53 53 //echo($Row['external_ip']."\n"); 54 //if($Row['name'] == 'TBC')55 //{54 //if($Row['name'] == 'TBC') 55 //{ 56 56 // exec('/sbin/iptables -t nat -A PreroutingDNAT -m tcp -p tcp --dport 3724 -d '.$Row['external_ip'].' -j DNAT --to-destination '.$Row['IP'].':3725'); 57 57 // exec('/sbin/iptables -t nat -A POSTROUTING -m tcp -p tcp -s '.$Row['IP'].' --sport 3725 -o '.$InetInterface.' -j SNAT --to-source '.$Row['external_ip'].':3724'); 58 //}58 //} 59 59 if(strtolower($Row['name']) != 'gate') 60 {61 if($Row['external_ip'] != '')60 { 61 if($Row['external_ip'] != '') 62 62 { 63 63 echo($Row['name'].'='.$Row['external_ip']."\n"); 64 64 65 65 exec('/sbin/iptables -t nat -A PreroutingDNAT -i '.$InetInterface.' -d '.$Row['external_ip'].' -j DNAT --to-destination '.$Row['IP']); 66 66 exec('/sbin/iptables -t nat -A PreroutingDNAT -i '.$InetInterface.' -d '.$Row['external_ip'].' -j ACCEPT'); 67 67 exec('/sbin/iptables -t nat -A POSTROUTING -s '.$Row['IP'].' -o '.$InetInterface.' -j SNAT --to-source '.$Row['external_ip']); 68 }68 } 69 69 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Proxy"); 70 }70 } 71 71 } 72 72 else 73 73 { 74 $CZFreeLocalIP = $Row['external_ip'];74 $CZFreeLocalIP = $Row['external_ip']; 75 75 //echo('vpn'); 76 76 //exec('/sbin/iptables -t nat -A PreroutingDNAT -s '.$Row['IP'].' -p udp -m udp --dport 55556 -j DROP'); … … 79 79 80 80 //if($Row['vpn'] == 1) 81 //{82 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local");81 //{ 82 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local"); 83 83 //} else if($Row['vpn'] == 2) exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Proxy"); 84 84 } -
trunk/Modules/NetworkConfigLinux/Generators/NAT.php
r548 r738 13 13 /* 14 14 // Blocking according IP address 15 $DbResult = $Database->select('users', '*', 'inet = 0'); 15 $DbResult = $Database->select('users', '*', 'inet = 0'); 16 16 while($User = $DbResult->fetch_array()) 17 17 { … … 48 48 // else exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local"); 49 49 } else { 50 if($Row['vpn'] == 0) 50 if($Row['vpn'] == 0) 51 51 { 52 $CZFreeLocalIP = $Row['IP'];52 $CZFreeLocalIP = $Row['IP']; 53 53 //echo($Row['external_ip']."\n"); 54 //if($Row['name'] == 'TBC')55 //{54 //if($Row['name'] == 'TBC') 55 //{ 56 56 // exec('/sbin/iptables -t nat -A PreroutingDNAT -m tcp -p tcp --dport 3724 -d '.$Row['external_ip'].' -j DNAT --to-destination '.$Row['IP'].':3725'); 57 57 // exec('/sbin/iptables -t nat -A POSTROUTING -m tcp -p tcp -s '.$Row['IP'].' --sport 3725 -o eth1 -j SNAT --to-source '.$Row['external_ip'].':3724'); 58 //}58 //} 59 59 if(strtolower($Row['name']) != 'centrala') 60 {61 if($Row['external_ip'] != '')60 { 61 if($Row['external_ip'] != '') 62 62 { 63 63 echo($Row['name'].'='.$Row['external_ip']."\n"); 64 64 65 65 exec('/sbin/iptables -t nat -A PreroutingDNAT -i eth1 -d '.$Row['external_ip'].' -j DNAT --to-destination '.$Row['IP']); 66 66 exec('/sbin/iptables -t nat -A PreroutingDNAT -i eth1 -d '.$Row['external_ip'].' -j ACCEPT'); 67 67 exec('/sbin/iptables -t nat -A POSTROUTING -s '.$Row['IP'].' -o eth1 -j SNAT --to-source '.$Row['external_ip']); 68 }68 } 69 69 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Proxy"); 70 }70 } 71 71 } 72 72 else 73 73 { 74 $CZFreeLocalIP = $Row['external_ip'];74 $CZFreeLocalIP = $Row['external_ip']; 75 75 //echo('vpn'); 76 76 //exec('/sbin/iptables -t nat -A PreroutingDNAT -s '.$Row['IP'].' -p udp -m udp --dport 55556 -j DROP'); … … 79 79 80 80 //if($Row['vpn'] == 1) 81 //{82 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local");81 //{ 82 //exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Local"); 83 83 //} else if($Row['vpn'] == 2) exec('/sbin/iptables -t nat -A Block -m mac --mac-source '.$Row['MAC']." -j Proxy"); 84 84 } -
trunk/Modules/NetworkConfigLinux/Generators/TrafficShaping.php
r548 r738 10 10 // Generate traffic shaping rules 11 11 //$TotalMaxSpeedIn = 4048; //$RealMaxSpeed; //1536; 12 //TotalMaxSpeedOut = 3048; //$RealMaxSpeed; //1536; 12 //TotalMaxSpeedOut = 3048; //$RealMaxSpeed; //1536; 13 13 //$UsersMaxSpeedIn = 1900; //$MaxSpeed; 14 14 //$UsersMaxSpeedOut = 1900; //$MaxSpeed; … … 45 45 46 46 $FreeInetClass = 2; 47 47 48 48 // In going traffic 49 49 fputs($File, "/sbin/tc qdisc del dev ".$InInterface." root\n"); 50 50 if($Enabled) 51 { 51 { 52 52 fputs($File, "/sbin/tc qdisc add dev ".$InInterface." root handle 1:0 htb default 2\n"); 53 53 fputs($FileClassInfo, "1:1 Základní\n"); … … 68 68 fputs($File, "/sbin/tc qdisc add dev ".$OutInterface." parent 1:".$FreeInetClass." handle ".$FreeInetClass.": sfq perturb 10\n"); 69 69 } 70 70 71 71 if(!$Enabled) die("Traffic shaping disabled\n"); 72 72 73 if($ClassesEnabled) 73 if($ClassesEnabled) 74 74 { 75 75 $ClassId = 3; … … 98 98 //$SpeedOut = round($UsersMaxSpeedOut / $InetUserCount); 99 99 $Prio = 1; 100 101 100 101 102 102 $AllUsersClassId = $ClassId; 103 103 $ClassId = $ClassId + 1; … … 123 123 fputs($FileClassInfo, '1:'.$TorrentClassId." Torrent\n"); 124 124 125 $DbResult = $Database->select('users', '*, CONCAT(second_name, " ", first_name) as fullname', '(inet=1)'); 125 $DbResult = $Database->select('users', '*, CONCAT(second_name, " ", first_name) as fullname', '(inet=1)'); 126 126 while($User = $DbResult->fetch_array()) 127 127 { … … 144 144 145 145 //echo('User class id: '.$UserClassId."\n"); 146 146 147 147 $DbResult2 = $Database->select('hosts', 'COUNT(*)', "block=0 AND MAC!='' AND user=".$User['id']); 148 148 $Row = $DbResult2->fetch_array(); … … 150 150 $HostSpeedIn = round($SpeedIn / $HostCount); 151 151 $HostSpeedOut = round($SpeedOut / $HostCount); 152 152 153 153 $DbResult2 = $Database->select('hosts','*',"block=0 AND MAC!='' AND user=".$User['id']); 154 154 while($Host = $DbResult2->fetch_array()) … … 164 164 $Prio = 1; 165 165 if($Host['vpn'] == 1) 166 {167 if($Host['external_ip'] != '') $Host['IP'] = $Host['external_ip'];168 else $Host['IP'] = ToVpnIp($Host);169 }170 171 //if($Host['name'] == 'TERMINAL') $SpeedDivider = 0.5;172 //else 166 { 167 if($Host['external_ip'] != '') $Host['IP'] = $Host['external_ip']; 168 else $Host['IP'] = ToVpnIp($Host); 169 } 170 171 //if($Host['name'] == 'TERMINAL') $SpeedDivider = 0.5; 172 //else 173 173 $SpeedDivider = 1; 174 174 175 if($Host['name'] == 'centrala')176 {177 $Host['IP'] = $Host['external_ip'];178 $TableOut = 'OUTPUT';179 $TableIn = 'INPUT';180 } else175 if($Host['name'] == 'centrala') 176 { 177 $Host['IP'] = $Host['external_ip']; 178 $TableOut = 'OUTPUT'; 179 $TableIn = 'INPUT'; 180 } else 181 181 { 182 $TableOut = 'FORWARD';183 $TableIn = 'FORWARD';184 }185 //if($Row['name'] == 'TERMINAL2') $Prio = 0; 186 // if($Row['name'] = 'TERMINAL2') $Prio = 0;187 if($Host['name'] == 'voip-hajda') $Protocol = ' -p tcp'; 188 else $Protocol = '';189 // if($Host['name'] == 'KARLOS') $UserMaxSpeedIn = 128000;182 $TableOut = 'FORWARD'; 183 $TableIn = 'FORWARD'; 184 } 185 //if($Row['name'] == 'TERMINAL2') $Prio = 0; 186 // if($Row['name'] = 'TERMINAL2') $Prio = 0; 187 if($Host['name'] == 'voip-hajda') $Protocol = ' -p tcp'; 188 else $Protocol = ''; 189 // if($Host['name'] == 'KARLOS') $UserMaxSpeedIn = 128000; 190 190 /* 191 if($Host['name'] == 'GAME') 192 {193 exec('/sbin/iptables -t mangle -F game-server'); 194 $TableOut = 'game-server';195 $TableIn = 'game-server';196 }*/191 if($Host['name'] == 'GAME') 192 { 193 exec('/sbin/iptables -t mangle -F game-server'); 194 $TableOut = 'game-server'; 195 $TableIn = 'game-server'; 196 }*/ 197 197 //if($Host['name'] == 'TBC') continue; 198 198 199 199 // In going traffic 200 //exec('/sbin/iptables -t mangle -A '.$TableIn.' -i eth1 -d '.$Host['IP'].$Protocol." -j MARK --set-mark ".$HostClassId); 201 fputs($File, "/sbin/tc class add dev ".$InInterface." parent 1:".$UserClassId." classid 1:".$HostClassId." htb rate ".$HostSpeedIn."bit ceil ".$UserMaxSpeedIn."bit prio ".$Prio." quantum ".$Quantum."\n");202 fputs($File, "/sbin/tc qdisc add dev ".$InInterface." parent 1:".$HostClassId." handle ".$HostClassId.":0 sfq perturb 10\n");203 //fputs($File, "/sbin/tc filter add dev ".$InInterface." parent 1:0 protocol ip handle ".$HostClassId." fw flowid 1:".$UserClassId."\n");204 fputs($File, "/sbin/tc filter add dev ".$InInterface." parent 1:0 protocol ip prio 1 u32 match ip dst ".$Host['external_ip']."/32 flowid 1:".$HostClassId."\n");205 200 //exec('/sbin/iptables -t mangle -A '.$TableIn.' -i eth1 -d '.$Host['IP'].$Protocol." -j MARK --set-mark ".$HostClassId); 201 fputs($File, "/sbin/tc class add dev ".$InInterface." parent 1:".$UserClassId." classid 1:".$HostClassId." htb rate ".$HostSpeedIn."bit ceil ".$UserMaxSpeedIn."bit prio ".$Prio." quantum ".$Quantum."\n"); 202 fputs($File, "/sbin/tc qdisc add dev ".$InInterface." parent 1:".$HostClassId." handle ".$HostClassId.":0 sfq perturb 10\n"); 203 //fputs($File, "/sbin/tc filter add dev ".$InInterface." parent 1:0 protocol ip handle ".$HostClassId." fw flowid 1:".$UserClassId."\n"); 204 fputs($File, "/sbin/tc filter add dev ".$InInterface." parent 1:0 protocol ip prio 1 u32 match ip dst ".$Host['external_ip']."/32 flowid 1:".$HostClassId."\n"); 205 206 206 // Out going traffic 207 207 //exec('/sbin/iptables -t mangle -A '.$TableOut.' -o eth1 -s '.$Host['IP'].$Protocol." -j MARK --set-mark ".$HostClassId); 208 fputs($File, "/sbin/tc class add dev ".$OutInterface." parent 1:".$UserClassId." classid 1:".$HostClassId." htb rate ".$HostSpeedOut."bit ceil ".$UserMaxSpeedOut."bit prio ".$Prio." quantum ".$Quantum."\n");209 fputs($File, "/sbin/tc qdisc add dev ".$OutInterface." parent 1:".$HostClassId." handle ".$HostClassId.":0 sfq perturb 10\n");210 //fputs($File, "/sbin/tc filter add dev ".$OutInterface." parent 1:0 protocol ip handle ".$HostClassId." fw flowid 1:".$UserClassId."\n");211 fputs($File, "/sbin/tc filter add dev ".$OutInterface." parent 1:0 protocol ip prio 1 u32 match ip src ".$Host['external_ip']."/32 flowid 1:".$HostClassId."\n");212 //echo($Row['id'].',');208 fputs($File, "/sbin/tc class add dev ".$OutInterface." parent 1:".$UserClassId." classid 1:".$HostClassId." htb rate ".$HostSpeedOut."bit ceil ".$UserMaxSpeedOut."bit prio ".$Prio." quantum ".$Quantum."\n"); 209 fputs($File, "/sbin/tc qdisc add dev ".$OutInterface." parent 1:".$HostClassId." handle ".$HostClassId.":0 sfq perturb 10\n"); 210 //fputs($File, "/sbin/tc filter add dev ".$OutInterface." parent 1:0 protocol ip handle ".$HostClassId." fw flowid 1:".$UserClassId."\n"); 211 fputs($File, "/sbin/tc filter add dev ".$OutInterface." parent 1:0 protocol ip prio 1 u32 match ip src ".$Host['external_ip']."/32 flowid 1:".$HostClassId."\n"); 212 //echo($Row['id'].','); 213 213 } 214 214 // Free inet 215 215 if($Tarify[$User['inet_tarif_now']]['group_id'] == 3) 216 216 { 217 //exec('/sbin/iptables -t mangle -A '.$TableIn.' -i eth1 -d '.$Host['IP'].$Protocol." -j MARK --set-mark ".$FreeInetClass); 217 //exec('/sbin/iptables -t mangle -A '.$TableIn.' -i eth1 -d '.$Host['IP'].$Protocol." -j MARK --set-mark ".$FreeInetClass); 218 218 //exec('/sbin/iptables -t mangle -A '.$TableOut.' -o eth1 -s '.$Host['IP'].$Protocol." -j MARK --set-mark ".$FreeInetClass); 219 219 } 220 220 // VoIP devices 221 221 /* 222 if(($Host['name'] == 'HAJDA-VOIP') || ($Host['name'] == 'NAVRATIL-VOIP')) 222 if(($Host['name'] == 'HAJDA-VOIP') || ($Host['name'] == 'NAVRATIL-VOIP')) 223 223 { 224 224 exec('/sbin/iptables -t mangle -A '.$TableIn." -i eth1 -d ".$Host['IP']." -p udp -j MARK --set-mark ".$VoipClassId); 225 225 exec('/sbin/iptables -t mangle -A '.$TableOut." -o eth1 -s ".$Host['IP']." -p udp -j MARK --set-mark ".$VoipClassId); 226 } else 226 } else 227 227 if($Host['name'] == 'GAME') 228 228 { 229 exec('/sbin/iptables -t mangle -A FORWARD -o eth1 -s '.$Host['IP']." -j game-server"); 230 exec('/sbin/iptables -t mangle -A FORWARD -i eth1 -d '.$Host['IP']." -j game-server"); 231 229 exec('/sbin/iptables -t mangle -A FORWARD -o eth1 -s '.$Host['IP']." -j game-server"); 230 exec('/sbin/iptables -t mangle -A FORWARD -i eth1 -d '.$Host['IP']." -j game-server"); 231 232 232 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -j MARK --set-mark ".$TorrentClassId); 233 233 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -j MARK --set-mark ".$TorrentClassId); … … 237 237 238 238 // Local services 239 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p icmp -j MARK --set-mark ".$HostClassId); // ICMP239 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p icmp -j MARK --set-mark ".$HostClassId); // ICMP 240 240 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p icmp -j MARK --set-mark ".$HostClassId); 241 241 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 6969 -j MARK --set-mark ".$HostClassId); // web torrent 242 242 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 6969 -j MARK --set-mark ".$HostClassId); 243 243 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 80 -j MARK --set-mark ".$HostClassId); // web 244 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 80 -j MARK --set-mark ".$HostClassId); 244 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 80 -j MARK --set-mark ".$HostClassId); 245 245 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 21 -j MARK --set-mark ".$HostClassId); // FTP 246 246 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 21 -j MARK --set-mark ".$HostClassId); … … 252 252 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 22 -j MARK --set-mark ".$HostClassId); 253 253 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 443 -j MARK --set-mark ".$HostClassId); // https 254 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 443 -j MARK --set-mark ".$HostClassId);254 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 443 -j MARK --set-mark ".$HostClassId); 255 255 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 27015 -j MARK --set-mark ".$HostClassId); // Counter Strike 256 256 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 27015 -j MARK --set-mark ".$HostClassId); … … 259 259 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --sport 5906 -j MARK --set-mark ".$HostClassId); // VNC 260 260 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --dport 5906 -j MARK --set-mark ".$HostClassId); 261 262 // Remote services261 262 // Remote services 263 263 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --dport 443 -j MARK --set-mark ".$HostClassId); // https 264 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --sport 443 -j MARK --set-mark ".$HostClassId);264 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --sport 443 -j MARK --set-mark ".$HostClassId); 265 265 exec('/sbin/iptables -t mangle -A game-server -o eth1 -s '.$Host['IP']." -p tcp --dport 80 -j MARK --set-mark ".$HostClassId); // http 266 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --sport 80 -j MARK --set-mark ".$HostClassId);267 266 exec('/sbin/iptables -t mangle -A game-server -i eth1 -d '.$Host['IP']." -p tcp --sport 80 -j MARK --set-mark ".$HostClassId); 267 268 268 } 269 269 */ -
trunk/Modules/NetworkConfigLinux/NetworkConfigLinux.php
r586 r738 13 13 $this->Dependencies = array('NetworkConfig'); 14 14 } 15 15 16 16 function DoInstall() 17 17 { 18 18 } 19 19 20 20 function DoUnInstall() 21 21 { -
trunk/Modules/NetworkConfigRouterOS/Generators/AddressPortability.php
r548 r738 6 6 $Path = array('ip', 'dhcp-server', 'lease'); 7 7 8 $Host = array(); 8 $Host = array(); 9 9 10 10 function ConvertExpireTime2($Time) -
trunk/Modules/NetworkConfigRouterOS/Generators/Common.php
r548 r738 6 6 { 7 7 global $Database; 8 8 9 9 $DbResult = $Database->query('SELECT `Id` FROM `NetworkMark` WHERE `Comment`="'.$Comment.'"'); 10 10 if($DbResult->num_rows > 0) … … 16 16 $DbResult = $Database->query('INSERT INTO `NetworkMark` (`Comment`) VALUES ("'.$Comment.'")'); 17 17 return($Database->insert_id); 18 } 18 } 19 19 } 20 20 … … 22 22 { 23 23 global $Database; 24 24 25 25 $DbResult = $Database->query('SELECT `Id` FROM `NetworkMangleSubgroup` WHERE `AddressRange`="'.$AddressRange.'"'); 26 26 if($DbResult->num_rows > 0) … … 32 32 $DbResult = $Database->query('INSERT INTO `NetworkMangleSubgroup` (`AddressRange`) VALUES ("'.$AddressRange.'")'); 33 33 return($Database->insert_id); 34 } 34 } 35 35 } 36 36 … … 38 38 { 39 39 global $Config; 40 40 41 41 $Found = false; 42 42 foreach($Tree['Items'] as $Index => $Node) … … 50 50 if($Found == false) 51 51 { 52 if($InterSubnets and ($Tree['Address']->Prefix < $Config['MainRouter']['MangleRuleSubgroupMinPrefix']) and 52 if($InterSubnets and ($Tree['Address']->Prefix < $Config['MainRouter']['MangleRuleSubgroupMinPrefix']) and 53 53 ($Address->Prefix > ($Tree['Address']->Prefix + 1))) 54 54 { … … 61 61 } else 62 62 { 63 63 64 64 $NewNode = array('Address' => $Address, 'Name' => $Name, 'Items' => array(), 'ForceMark' => $ForceMark); 65 65 66 66 // Should be existed items placed under new node? 67 67 $Found = false; 68 68 foreach($Tree['Items'] as $Index => $Node) 69 69 { 70 if(($Node['Address']->Address == $NewNode['Address']->Address) and 71 ($Node['Address']->Prefix == $NewNode['Address']->Prefix)) $Found = true; 72 70 if(($Node['Address']->Address == $NewNode['Address']->Address) and 71 ($Node['Address']->Prefix == $NewNode['Address']->Prefix)) $Found = true; 72 73 73 //echo($Index.','); 74 74 if($Address->Contain($Node['Address'])) … … 78 78 } 79 79 } 80 if($Found == false) $Tree['Items'][] = $NewNode; 80 if($Found == false) $Tree['Items'][] = $NewNode; 81 81 } 82 82 } … … 89 89 { 90 90 ShowSubnetNode($Item, $Indent + 1); 91 } 91 } 92 92 } 93 93 -
trunk/Modules/NetworkConfigRouterOS/Generators/DHCP.php
r617 r738 29 29 $Items[] = array('mac-address' => $Interface['MAC'], 'address' => $Interface['LocalIP'], 'server' => $Server, 'comment' => $Name); 30 30 } 31 32 print_r($Routerboard->ListUpdate($Path, array('mac-address', 'address', 'server', 'comment'), $Items, array('server' => $Server, 'dynamic' => 'no'))); 31 32 print_r($Routerboard->ListUpdate($Path, array('mac-address', 'address', 'server', 'comment'), $Items, array('server' => $Server, 'dynamic' => 'no'))); 33 33 echo("\n"); 34 34 } -
trunk/Modules/NetworkConfigRouterOS/Generators/FirewallFilter.php
r617 r738 24 24 25 25 // Inet traffic groups 26 //$Items[] = array('chain' => 'forward', 'out-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-out', 'comment' => 'inet-out'); 26 //$Items[] = array('chain' => 'forward', 'out-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-out', 'comment' => 'inet-out'); 27 27 //$Items[] = array('chain' => 'forward', 'in-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-in', 'comment' => 'inet-in'); 28 28 … … 63 63 $DbResult2 = $System->Database->select('NetworkSubnet', '*', 'Member='.$Member['Id']); 64 64 while($Subnet = $DbResult2->fetch_assoc()) 65 { 65 { 66 66 $Subnet['Name'] = RouterOSIdent('subnet-'.$Subnet['Name']); 67 67 echo($Subnet['Name'].'('.$Subnet['AddressRange'].'/'.$Subnet['Mask'].'), '); … … 75 75 else $Src = $Subnet['AddressRange'].'/'.$Subnet['Mask']; 76 76 $Items[] = array('chain' => 'forward', 'out-interface' => $InetInterface, 'src-address' => $Src, 'action' => 'drop','comment' => $Subnet['Name'].'-out-drop'); 77 77 78 78 $NewAddress = new NetworkAddressIPv4(); 79 79 $NewAddress->AddressFromString($Subnet['AddressRange']); -
trunk/Modules/NetworkConfigRouterOS/Generators/FirewallMangle.php
r735 r738 30 30 $NewAddress->AddressFromString($Subnet['AddressRange']); 31 31 $NewAddress->Prefix = $Subnet['Mask']; 32 InsertToAddressTree($AddressTree, $NewAddress, 'subnet-'.RouterOSIdent($Subnet['Name'])); 32 InsertToAddressTree($AddressTree, $NewAddress, 'subnet-'.RouterOSIdent($Subnet['Name'])); 33 33 } 34 34 … … 58 58 } 59 59 } 60 60 61 61 $DbResult2 = $System->Database->select('NetworkSubnet', '*', '`Member`='.$Member['Id']); 62 62 while($Subnet = $DbResult2->fetch_assoc()) … … 80 80 { 81 81 global $InetInterface, $ItemsFirewall; 82 82 83 83 foreach($Node['Items'] as $Index => $Item) 84 84 { … … 89 89 $Address = $Item['Address']->AddressToString(); 90 90 if($Item['Address']->Prefix != 32) $Address .= '/'.$Item['Address']->Prefix; 91 91 92 92 $PacketMark = GetMarkByComment($Item['Name'].'-out'); 93 93 $ItemsFirewall[] = array('chain' => 'inet-'.$ParentSubnetId.'-out', 'src-address' => $Address, 'out-interface' => $InetInterface, 'action' => 'mark-packet', 'new-packet-mark' => $PacketMark, 'passthrough' => 'no', 'comment' => $Item['Name'].'-out'); … … 100 100 $SubnetId = GetSubgroupByRange($Item['Address']->AddressToString().'/'.$Item['Address']->Prefix); 101 101 $PacketMark = GetMarkByComment($Item['Name'].'-out'); 102 102 103 103 $Address = $Item['Address']->AddressToString(); 104 104 if($Item['Address']->Prefix != 32) $Address .= '/'.$Item['Address']->Prefix; 105 106 $ItemsFirewall[] = array('chain' => 'inet-'.$ParentSubnetId.'-out', 'src-address' => $Address, 'out-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-'.$SubnetId.'-out', 'comment' => $Item['Name'].'-out'); 107 $ItemsFirewall[] = array('chain' => 'inet-'.$ParentSubnetId.'-in', 'dst-address' => $Address, 'in-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-'.$SubnetId.'-in', 'comment' => $Item['Name'].'-in'); 108 109 ProcessNode($Item); 110 } 105 106 $ItemsFirewall[] = array('chain' => 'inet-'.$ParentSubnetId.'-out', 'src-address' => $Address, 'out-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-'.$SubnetId.'-out', 'comment' => $Item['Name'].'-out'); 107 $ItemsFirewall[] = array('chain' => 'inet-'.$ParentSubnetId.'-in', 'dst-address' => $Address, 'in-interface' => $InetInterface, 'action' => 'jump', 'jump-target' => 'inet-'.$SubnetId.'-in', 'comment' => $Item['Name'].'-in'); 108 109 ProcessNode($Item); 110 } 111 111 } 112 112 if($Node['ForceMark'] == true) … … 133 133 // Slow free internet 134 134 $PacketMark = GetMarkByComment('free-out'); 135 $ItemsFirewall[] = array('chain' => 'inet-1-out', 'out-interface' => $InetInterface, 135 $ItemsFirewall[] = array('chain' => 'inet-1-out', 'out-interface' => $InetInterface, 136 136 'action' => 'mark-packet', 'new-packet-mark' => $PacketMark, 'comment' => 'free-out', 'passthrough' => 'yes'); 137 137 $PacketMark = GetMarkByComment('free-in'); 138 $ItemsFirewall[] = array('chain' => 'inet-1-in', 'in-interface' => $InetInterface, 139 'action' => 'mark-packet', 'new-packet-mark' => $PacketMark, 'comment' => 'free-in', 'passthrough' => 'no');138 $ItemsFirewall[] = array('chain' => 'inet-1-in', 'in-interface' => $InetInterface, 139 'action' => 'mark-packet', 'new-packet-mark' => $PacketMark, 'comment' => 'free-in', 'passthrough' => 'no'); 140 140 // Unregistred clients add to address list 141 $ItemsFirewall[] = array('chain' => 'inet-1-out', 'out-interface' => $InetInterface, 'src-address' => '10.145.0.0/16', 142 'action' => 'add-src-to-address-list', 'address-list' => 'unregistred', 'timeout' => '1d', 143 'comment' => 'unregistred-clients');141 $ItemsFirewall[] = array('chain' => 'inet-1-out', 'out-interface' => $InetInterface, 'src-address' => '10.145.0.0/16', 142 'action' => 'add-src-to-address-list', 'address-list' => 'unregistred', 'timeout' => '1d', 143 'comment' => 'unregistred-clients'); 144 144 145 145 //print_r($ItemsFirewall); -
trunk/Modules/NetworkConfigRouterOS/Generators/FirewallNAT.php
r735 r738 34 34 35 35 // Skip local subnet 36 //$Items[] = array('chain' => 'inet-out', 'dst-address' => '172.16.1.1/30', 'action' => 'accept', 'comment' => 'Local_subnet'); 36 //$Items[] = array('chain' => 'inet-out', 'dst-address' => '172.16.1.1/30', 'action' => 'accept', 'comment' => 'Local_subnet'); 37 37 //$Items[] = array('chain' => 'inet-in', 'dst-address' => '172.16.1.1/30', 'action' => 'accept', 'comment' => 'Local_subnet'); 38 38 … … 46 46 $DbResult2 = $System->Database->query('SELECT `NetworkInterface`.*, `NetworkDevice`.`Name` AS `DeviceName`, `NetworkDevice`.`InboundNATPriority` FROM `NetworkInterface`'. 47 47 ' LEFT JOIN `NetworkDevice` ON `NetworkDevice`.`Id` = `NetworkInterface`.`Device` WHERE (`NetworkInterface`.`ExternalIP` <> "")'. 48 ' AND (`NetworkInterface`.`LocalIP` <> "")'. 48 ' AND (`NetworkInterface`.`LocalIP` <> "")'. 49 49 ' AND (`NetworkDevice`.`Member` = '.$Member['Id'].') AND (`NetworkInterface`.`LocalIP` != `NetworkInterface`.`ExternalIP`) ORDER BY `id` DESC'); 50 50 while($Interface = $DbResult2->fetch_assoc()) … … 57 57 { 58 58 $Items[] = array('chain' => 'inet-out', 'src-address' => $Interface['LocalIP'], 'action' => 'src-nat', 'to-addresses' => $Interface['ExternalIP'], 'comment' => $Name.'-out'); 59 if($Interface['InboundNATPriority'] > 0) 59 if($Interface['InboundNATPriority'] > 0) 60 60 $Items[] = array('chain' => 'inet-in', 'dst-address' => $Interface['ExternalIP'], 'action' => 'dst-nat', 'to-addresses' => $Interface['LocalIP'], 'comment' => $Name.'-in'); 61 } else 61 } else 62 62 { 63 63 $Items[] = array('chain' => 'dstnat', 'src-address' => $Interface['LocalIP'], 'protocol' => 'tcp', 'dst-port' => 80, 'action' => 'dst-nat', 'to-addresses' => $IPCentrala, 'to-ports' => 81, 'comment' => $Name.'-out'); … … 68 68 $DbResult2 = $System->Database->select('NetworkSubnet', '*', '`Member`='.$Member['Id']); 69 69 while($Subnet = $DbResult2->fetch_assoc()) 70 { 70 { 71 71 $Subnet['Name'] = RouterOSIdent('subnet-'.$Subnet['Name']); 72 72 echo($Subnet['Name'].'('.$Subnet['AddressRange'].'/'.$Subnet['Mask'].'), '); … … 82 82 else $Src = $Subnet['AddressRange'].'/'.$Subnet['Mask']; 83 83 $Items[] = array('chain' => 'inet-out', 'src-address' => $Src, 'action' => 'src-nat', 'to-addresses' => $Range, 'comment' => $Subnet['Name'].'-out'); 84 84 85 85 $NewAddress = new NetworkAddressIPv4(); 86 86 $NewAddress->AddressFromString($Subnet['AddressRange']); … … 114 114 115 115 // Accept free-access clients 116 $Items[] = array('chain' => 'dstnat', 'dst-address' => '!10.145.0.0/16', 117 'src-address-list' => 'free-access', 'in-interface' => $LocalInterface, 118 'action' => 'accept', 'comment' => 'Free_access');116 $Items[] = array('chain' => 'dstnat', 'dst-address' => '!10.145.0.0/16', 117 'src-address-list' => 'free-access', 'in-interface' => $LocalInterface, 118 'action' => 'accept', 'comment' => 'Free_access'); 119 119 // Redirect unregistred clients to free access activation page 120 $Items[] = array('chain' => 'dstnat', 'dst-address' => '!10.145.0.0/16', 121 'src-address-list' => 'unregistred', 'in-interface' => $LocalInterface, 122 'action' => 'dst-nat', 'to-addresses' => '10.145.64.8', 'to-ports' => 82, 'comment' => 'Redirect_unregistred');120 $Items[] = array('chain' => 'dstnat', 'dst-address' => '!10.145.0.0/16', 121 'src-address-list' => 'unregistred', 'in-interface' => $LocalInterface, 122 'action' => 'dst-nat', 'to-addresses' => '10.145.64.8', 'to-ports' => 82, 'comment' => 'Redirect_unregistred'); 123 123 124 124 /* -
trunk/Modules/NetworkConfigRouterOS/Generators/Netwatch.php
r617 r738 35 35 } 36 36 } 37 $Routerboard->ListUpdate($Path, array('host', 'interval', 'comment'), $Items); 37 $Routerboard->ListUpdate($Path, array('host', 'interval', 'comment'), $Items); 38 38 echo("\n"); 39 39 } -
trunk/Modules/NetworkConfigRouterOS/Generators/NetwatchImport.php
r697 r738 21 21 // Load netwatch status from all DHCP routers 22 22 $DbResult3 = $System->Database->query('SELECT `DHCP`, `AddressRange`, `Mask` FROM `NetworkSubnet` '. 23 'WHERE (`Configure` = 1) AND (`Member` IS NULL) GROUP BY DHCP');23 'WHERE (`Configure` = 1) AND (`Member` IS NULL) GROUP BY DHCP'); 24 24 while($Subnet = $DbResult3->fetch_assoc()) 25 25 { … … 54 54 array('LastOnline' => TimeToMysqlDateTime($StartTime))); 55 55 56 if($Interface['Online'] != $Interface['NewOnline'])56 if($Interface['Online'] != $Interface['NewOnline']) 57 57 { 58 // Online state changed58 // Online state changed 59 59 $DbResult = $System->Database->query('INSERT INTO `NetworkInterfaceUpDown` (`Interface`, 60 `State`, `Time`, `Duration`) VALUES ('.$Interface['Id'].', '.$Interface['NewOnline'].', "'.60 `State`, `Time`, `Duration`) VALUES ('.$Interface['Id'].', '.$Interface['NewOnline'].', "'. 61 61 TimeToMysqlDateTime($StartTime).'", NULL)'); 62 62 // Update previous record duration in UpDown table … … 64 64 '`TM`.`Time`, (SELECT `Time` FROM (SELECT * FROM `NetworkInterfaceUpDown`) AS `TA` WHERE (`TA`.`Time` > `TM`.`Time`) '. 65 65 'AND (`TA`.`Interface`=`TM`.`Interface`) ORDER BY `TA`.`Time` ASC LIMIT 1)) '. 66 'WHERE (`TM`.`Duration` IS NULL) AND (`TM`.`Interface` ='.$Interface['Id'].')');66 'WHERE (`TM`.`Duration` IS NULL) AND (`TM`.`Interface` ='.$Interface['Id'].')'); 67 67 $System->Database->update('NetworkInterface', '`Id` = "'.$Interface['Id'].'"', 68 68 array('Online' => $Interface['NewOnline'])); … … 75 75 while($DbRow = $DbResult->fetch_assoc()) 76 76 { 77 echo('IP '.$DbRow['LocalIP'].' online but time not updated.'."\n");77 echo('IP '.$DbRow['LocalIP'].' online but time not updated.'."\n"); 78 78 } 79 79 $DbResult = $System->Database->select('NetworkInterface', '*', '(`Online` = 0) AND '. -
trunk/Modules/NetworkConfigRouterOS/Generators/Queue.php
r726 r738 22 22 { 23 23 global $UsedNames; 24 24 25 25 if(in_array($Name, $UsedNames)) die("\n".'Duplicate name: '.$Name); 26 26 else $UsedNames[] = $Name; … … 53 53 if($DbResult->num_rows == 1) 54 54 { 55 $Service = $DbResult->fetch_array();55 $Service = $DbResult->fetch_array(); 56 56 $FreeInetSpeed = $Service['InternetSpeedMax'] * 1000; 57 57 } else $FreeInetSpeed = 0; … … 128 128 } 129 129 } 130 130 131 131 $DbResult2 = $System->Database->select('NetworkSubnet', '*', '`Service`='.$Service['RelId']); 132 132 while($Subnet = $DbResult2->fetch_assoc()) -
trunk/Modules/NetworkConfigRouterOS/Generators/Signal.php
r682 r738 35 35 if($DbResult->num_rows > 0) 36 36 { 37 $DbRow = $DbResult->fetch_assoc();37 $DbRow = $DbResult->fetch_assoc(); 38 38 $Interface = $DbRow['Id']; 39 39 } else $Interface = null; -
trunk/Modules/NetworkConfigRouterOS/NetworkConfigRouterOS.php
r735 r738 28 28 function DoStart() 29 29 { 30 $this->System->Pages['zdarma'] = 'PageFreeAccess';30 $this->System->Pages['zdarma'] = 'PageFreeAccess'; 31 31 $this->System->FormManager->RegisterClass('NetworkInterfaceUpDown', array( 32 32 'Title' => 'Změny stavu rozhraní', … … 44 44 } 45 45 46 class PageFreeAccess extends Page 46 class PageFreeAccess extends Page 47 47 { 48 48 var $FullTitle = 'Přístup zdarma k Internetu'; … … 51 51 var $AddressList = 'free-access'; 52 52 var $Timeout; 53 53 54 54 function __construct($System) 55 55 { 56 parent::__construct($System);57 $this->Timeout = 24 * 60 * 60;56 parent::__construct($System); 57 $this->Timeout = 24 * 60 * 60; 58 58 } 59 60 function Show()61 {62 $IPAddress = GetRemoteAddress();63 if(IsInternetAddr($IPAddress)) 64 return('<p>Internet zdarma je dostupný pouze z vnitřní sítě.</p>'); 65 $Time = time();66 67 $DbResult = $this->Database->select('NetworkFreeAccess', '*', '(IPAddress="'.$IPAddress.68 '") ORDER BY Time DESC LIMIT 1');69 if($DbResult->num_rows > 0) 70 {71 $DbRow = $DbResult->fetch_assoc();72 $ActivationTime = MysqlDateTimeToTime($DbRow['Time']); 73 if(($ActivationTime + $this->Timeout) < $Time) 59 60 function Show() 61 { 62 $IPAddress = GetRemoteAddress(); 63 if(IsInternetAddr($IPAddress)) 64 return('<p>Internet zdarma je dostupný pouze z vnitřní sítě.</p>'); 65 $Time = time(); 66 67 $DbResult = $this->Database->select('NetworkFreeAccess', '*', '(IPAddress="'.$IPAddress. 68 '") ORDER BY Time DESC LIMIT 1'); 69 if($DbResult->num_rows > 0) 70 { 71 $DbRow = $DbResult->fetch_assoc(); 72 $ActivationTime = MysqlDateTimeToTime($DbRow['Time']); 73 if(($ActivationTime + $this->Timeout) < $Time) 74 74 { 75 $Activated = false;76 } else $Activated = true; 77 } else $Activated = false;78 79 if(array_key_exists('a', $_GET)) 80 {81 if($_GET['a'] == 'activate') 82 {83 if($Activated == false) 84 {85 $DbResult = $this->Database->insert('NetworkFreeAccess', 86 array('IPAddress' => $IPAddress, 'Time' => TimeToMysqlDateTime(time()), 87 'Configured' => 0));88 $ActivationTime = $Time;89 $Activated = true;90 }91 } 92 }93 $Output = '<div style="text-align:center;"><h3>Vítejte v síti ZděchovNET</h3></div>';94 //$Output .= 'Vaše adresa IP je: '.GetRemoteAddress().'<br/>'; 95 $Output .= '<p>Pro přístup k Internetu zdarma sdílenou rychlostí 128/128 kbit/s klikněte na odkaz níže. 96 Internet bude zpřístupněn po dobu 24 hodin. Po uplynutí této doby je potřeba provést novou aktivaci.</p>';97 $Output .= '<p>Pokud jste platícím zákazníkem a přesto se vám zobrazuje tato stránka, tak pravděpodobně nemáte registrovano v síti vaše klientské zařízení.</p>';98 99 $PrefixMultiplier = new PrefixMultiplier();100 if($Activated) $Output .= 'Aktivováno. Vyprší za '.$PrefixMultiplier->Add($ActivationTime + $this->Timeout - $Time, '', 4, 'Time');101 else $Output .= '<a href="?a=activate">Aktivovat</a>';102 103 return($Output);75 $Activated = false; 76 } else $Activated = true; 77 } else $Activated = false; 78 79 if(array_key_exists('a', $_GET)) 80 { 81 if($_GET['a'] == 'activate') 82 { 83 if($Activated == false) 84 { 85 $DbResult = $this->Database->insert('NetworkFreeAccess', 86 array('IPAddress' => $IPAddress, 'Time' => TimeToMysqlDateTime(time()), 87 'Configured' => 0)); 88 $ActivationTime = $Time; 89 $Activated = true; 90 } 91 } 92 } 93 $Output = '<div style="text-align:center;"><h3>Vítejte v síti ZděchovNET</h3></div>'; 94 //$Output .= 'Vaše adresa IP je: '.GetRemoteAddress().'<br/>'; 95 $Output .= '<p>Pro přístup k Internetu zdarma sdílenou rychlostí 128/128 kbit/s klikněte na odkaz níže. 96 Internet bude zpřístupněn po dobu 24 hodin. Po uplynutí této doby je potřeba provést novou aktivaci.</p>'; 97 $Output .= '<p>Pokud jste platícím zákazníkem a přesto se vám zobrazuje tato stránka, tak pravděpodobně nemáte registrovano v síti vaše klientské zařízení.</p>'; 98 99 $PrefixMultiplier = new PrefixMultiplier(); 100 if($Activated) $Output .= 'Aktivováno. Vyprší za '.$PrefixMultiplier->Add($ActivationTime + $this->Timeout - $Time, '', 4, 'Time'); 101 else $Output .= '<a href="?a=activate">Aktivovat</a>'; 102 103 return($Output); 104 104 } 105 105 } … … 107 107 class ScheduleConfigureFreeAccess extends SchedulerTask 108 108 { 109 function Execute()110 {111 $Output = '';112 $Commands = array();113 $DbResult = $this->Database->select('NetworkFreeAccess', '`Id`, `IPAddress`', '(`Configured`=0)');114 while($DbRow = $DbResult->fetch_assoc())115 {116 $Commands[] = '/ip firewall address-list add address='.$DbRow['IPAddress'].117 ' list=free-access timeout=1d';118 }119 $DbResult = $this->Database->update('NetworkFreeAccess', '`Configured`=0', array('Configured' => 1));120 121 $Routerboard = new Routerboard($this->System->Config['MainRouter']['HostName']);122 $Routerboard->UserName = $this->System->Config['MainRouter']['UserName'];123 $Routerboard->Timeout = $this->System->Config['MainRouter']['ConnectTimeout'];124 $Routerboard->Debug = true;125 $Routerboard->ExecuteBatch(implode(';', $Commands));126 127 return($Output);128 }109 function Execute() 110 { 111 $Output = ''; 112 $Commands = array(); 113 $DbResult = $this->Database->select('NetworkFreeAccess', '`Id`, `IPAddress`', '(`Configured`=0)'); 114 while($DbRow = $DbResult->fetch_assoc()) 115 { 116 $Commands[] = '/ip firewall address-list add address='.$DbRow['IPAddress']. 117 ' list=free-access timeout=1d'; 118 } 119 $DbResult = $this->Database->update('NetworkFreeAccess', '`Configured`=0', array('Configured' => 1)); 120 121 $Routerboard = new Routerboard($this->System->Config['MainRouter']['HostName']); 122 $Routerboard->UserName = $this->System->Config['MainRouter']['UserName']; 123 $Routerboard->Timeout = $this->System->Config['MainRouter']['ConnectTimeout']; 124 $Routerboard->Debug = true; 125 $Routerboard->ExecuteBatch(implode(';', $Commands)); 126 127 return($Output); 128 } 129 129 } -
trunk/Modules/NetworkConfigRouterOS/Routerboard2.php
r548 r738 67 67 function GetDHCPServerLeasesList() 68 68 { 69 return($this->GetList('/ip dhcp-server lease', array('address', 'active-address', 'comment', 'lease-time', 'status', 'host-name'))); 69 return($this->GetList('/ip dhcp-server lease', array('address', 'active-address', 'comment', 'lease-time', 'status', 'host-name'))); 70 70 } 71 71 } -
trunk/Modules/NetworkConfigRouterOS/RouterboardAPI.php
r704 r738 48 48 if($this->SSL) 49 49 { 50 $IP = 'ssl://'.$IP;50 $IP = 'ssl://'.$IP; 51 51 } 52 52 $this->Socket = @fsockopen($IP, $this->Port, $this->ErrorNo, $this->ErrorStr, $this->Timeout); -
trunk/Modules/NetworkConfigRouterOS/SSH.php
r548 r738 37 37 /* 38 38 //echo(') '.strlen($Buffer).' '.ord($Buffer{0}).'('); 39 for($I = 0; $I < strlen($Buffer); $I++) 39 for($I = 0; $I < strlen($Buffer); $I++) 40 40 { 41 41 if(((ord($Buffer{$I}) >= 32) and (ord($Buffer{$I}) <= 128)) or ($Buffer{$I} = "\n") or ($Buffer{$I} = "\r")) echo($Buffer{$I}); … … 55 55 echo($Response); 56 56 return(explode("\n", substr($Response, 0, -1))); 57 } 57 } 58 58 } -
trunk/Modules/NetworkShare/NetworkShare.php
r586 r738 17 17 $this->Dependencies = array('Network'); 18 18 } 19 19 20 20 function DoInstall() 21 21 { 22 22 } 23 23 24 24 function DoUnInstall() 25 25 { -
trunk/Modules/NetworkShare/SharePage.php
r584 r738 74 74 75 75 // Default host list view 76 if((count($_POST) == 0) and (count($_GET) == 0)) 76 if((count($_POST) == 0) and (count($_GET) == 0)) 77 77 { 78 78 $_POST['view'] = 1; 79 $_POST['page'] = 0; 79 $_POST['page'] = 0; 80 80 } 81 81 … … 101 101 102 102 // Log search 103 if(array_key_exists('keyword', $_POST) or array_key_exists('keyword', $_GET)) 103 if(array_key_exists('keyword', $_POST) or array_key_exists('keyword', $_GET)) 104 104 $this->System->ModuleManager->Modules['Log']->NewRecord('Share', 'Hledaný výraz', $_SESSION['keyword']); 105 105 … … 218 218 $Pocet = $Row[0]; 219 219 220 if($Pocet > 0) 220 if($Pocet > 0) 221 221 { 222 222 $Output .= 'Nalezeno celkem: '.$Pocet.' položek<br />'; 223 } else 223 } else 224 224 $Output .= 'Podle zadaných podmínek nic nenalezeno'; 225 225 if(($Pocet > 0) || ($upstr)) … … 228 228 <tr><th bgcolor="#E0E0FF"><a href="index.php?order=name">Soubor</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=ext">Přípona</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=size">Velikost</a></th><th bgcolor="#E0E0FF"><a href="index.php?order=date">Datum</a></th><th bgcolor="#E0E0FF">Umístění</th></tr>'; 229 229 $Output .= $upstr; 230 if($Pocet > 0) 230 if($Pocet > 0) 231 231 { 232 232 // Zobrazení tabulky s výsledky … … 260 260 } 261 261 } 262 if($Pocet > 0) 262 if($Pocet > 0) 263 263 { 264 264 // Celkový přehled -
trunk/Modules/NetworkShare/browse.php
r548 r738 4 4 $SambaSbinDir = '/usr/sbin/'; 5 5 $Database->select_db('share'); 6 $ZanoreniMax = 8; // Maximální úroven zanoreni7 $MaxProgress = 70; // Pocet casti stavu prubehu operace6 $ZanoreniMax = 8; // Maximální úroven zanoreni 7 $MaxProgress = 70; // Pocet casti stavu prubehu operace 8 8 $StartTime = time(); 9 $MountDir = '/tmp/browse/host'; // Složka, kde se dočasně připojují síťové disky10 $TempDir = '/tmp/browse/'; // Složka, kde se dočasně připojují síťové disky9 $MountDir = '/tmp/browse/host'; // Složka, kde se dočasně připojují síťové disky 10 $TempDir = '/tmp/browse/'; // Složka, kde se dočasně připojují síťové disky 11 11 if(!is_dir($TempDir)) mkdir($TempDir, 0777); 12 12 if(!is_dir($MountDir)) mkdir($MountDir, 0777); … … 44 44 { 45 45 global $Citac, $Soubor, $Host, $HostID, $Share, $ZanoreniMax, $Pocet, $Hotovo, $MountDir, $TempDir, $FileSize, $MaxProgress, $Database; 46 46 47 47 $VelikostSlozky = 0; 48 48 //$Vlozit = ''; … … 93 93 $Nazev = ltrim(substr($Radek,strlen($Time)+1)); 94 94 //echo($Date.','.$Time.','.$Radek.' '); 95 95 96 96 if((strpos($Nazev,'.') > 0) && ($Type != 2)) 97 97 { … … 101 101 //$Vlozit .= "INSERT INTO NetworkShareItem (name,size,date,ext,parent,type,host) ". 102 102 //"VALUES ('$Nazev','$Velikost',NOW(),'$Ext','$Parent','$Type','$HostID'); "; 103 103 104 104 $Database->insert('NetworkShareItem', array( 105 105 'name' => $Nazev, … … 114 114 $Citac = $Citac + 1; 115 115 // Pokud jde o sloľku, tak projdi jeji obsah a aktualizuj velikost 116 if($Type == 2) 116 if($Type == 2) 117 117 { 118 118 //echo($Vlozit); … … 120 120 // $Vlozit = ''; 121 121 $VelikostSlozky += Vetev($Cesta.$Nazev.'/',$Zanoreni+1); 122 } 122 } 123 123 } 124 124 //echo($Vlozit); 125 125 //if($Vlozit!='') DB_Query($Vlozit); // Vloz vsechny polozky 126 126 127 127 // Aktualizuj velikost 128 128 //DB_Query("SELECT SUM(size) FROM NetworkShareItem WHERE (parent=".$Parent.")"); … … 134 134 135 135 // Proskenuj jednotlive sdileni 136 $Database->query('DELETE FROM NetworkShareItem WHERE host='.$HostID); // Smaz predchozi polozky136 $Database->query('DELETE FROM NetworkShareItem WHERE host='.$HostID); // Smaz predchozi polozky 137 137 138 138 // Zapis nazev pocitace … … 185 185 $Soubor = fopen($TempDir.$Host.'.list','r'); 186 186 $Citac = 0; 187 Vetev('/', 0); // Skenuj sdileni188 fclose($Soubor); // Uzavřít soubor189 unlink($TempDir.$Host.'.list'); // Smazat soubor stromu adresářové struktury187 Vetev('/', 0); // Skenuj sdileni 188 fclose($Soubor); // Uzavřít soubor 189 unlink($TempDir.$Host.'.list'); // Smazat soubor stromu adresářové struktury 190 190 //echo(str_repeat('#',40-$Pocet)); 191 191 echo("] $Citac\n"); 192 192 //} else echo("CHYBA\n"); 193 193 } else echo('Soubor sdílení nenalezen!'); 194 passthru('umount '.$MountDir); // Odpojit sitovy disk194 passthru('umount '.$MountDir); // Odpojit sitovy disk 195 195 } 196 196 … … 215 215 $DbResult = $Database->query('SELECT id FROM hosts'); 216 216 $Vyber = ''; 217 while($Row = $DbResult->fetch_array()) 217 while($Row = $DbResult->fetch_array()) 218 218 $Vyber .= $Row['id'].','; 219 219 220 220 $Database->select_db('share'); 221 221 $DbResult = $Database->query("SELECT SUM(size) FROM NetworkShareItem WHERE ((parent=1) AND (host IN (".substr($Vyber,0,-1).')))'); … … 226 226 echo("Chyby sdílení...\n"); 227 227 $Database->delete('NetworkShareError', 'host="'.$Host.'"'); 228 if(is_dir($TempDir.'errors')) 228 if(is_dir($TempDir.'errors')) 229 229 { 230 230 $Dir = scandir($TempDir.'errors'); 231 231 foreach($Dir as $File) 232 { 232 { 233 233 if(substr($File, 0, strpos($File, '_')) == $Host) 234 234 { … … 241 241 { 242 242 $Row = fgets($ErrorFile); 243 if($Row != '') 243 if($Row != '') 244 244 { 245 245 $Row = substr($ShareFull.'/'.substr($Row, 39), 0, -1); … … 249 249 } 250 250 fclose($ErrorFile); 251 } 251 } 252 252 } 253 253 } -
trunk/Modules/NetworkShare/firefox.php
r548 r738 8 8 <!-- 9 9 function addSearchEngine(engineURL, iconURL, suggestedTitle, suggestedCategory){ 10 var msg="Přidání vyhledávacího modulu selhalo - ";10 var msg="Přidání vyhledávacího modulu selhalo - "; 11 11 12 if((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")){13 if(engineURL == null || engineURL == ""){14 alert(msg + "nebyla zadána jeho URL.");15 return false;16 }17 if(iconURL == null || iconURL == ""){18 alert(msg + "nebyla zadána URL ikony.");19 return false;20 }21 if(engineURL.search(/^http:\/\//i) == -1 || engineURL.search(/\.src$/i) == -1){22 alert(msg + "nebyla zadána platná URL.");23 return false;24 }25 if(iconURL.search(/^http:\/\//i) == -1 || iconURL.search(/\.(gif|jpg|jpeg|png)$/i) == -1){26 alert(msg + " nebyla platná URL ikony.");27 return false;28 }29 if(suggestedTitle == null) suggestedTitle = "";30 if(suggestedCategory == null) suggestedCategory = "";31 window.sidebar.addSearchEngine(engineURL, iconURL, suggestedTitle, suggestedCategory);32 }else{33 alert("Váš prohlížeč nepodporuje tuto funkci. Zkuste Mozillu.");34 }35 return false;36 } 12 if((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")){ 13 if(engineURL == null || engineURL == ""){ 14 alert(msg + "nebyla zadána jeho URL."); 15 return false; 16 } 17 if(iconURL == null || iconURL == ""){ 18 alert(msg + "nebyla zadána URL ikony."); 19 return false; 20 } 21 if(engineURL.search(/^http:\/\//i) == -1 || engineURL.search(/\.src$/i) == -1){ 22 alert(msg + "nebyla zadána platná URL."); 23 return false; 24 } 25 if(iconURL.search(/^http:\/\//i) == -1 || iconURL.search(/\.(gif|jpg|jpeg|png)$/i) == -1){ 26 alert(msg + " nebyla platná URL ikony."); 27 return false; 28 } 29 if(suggestedTitle == null) suggestedTitle = ""; 30 if(suggestedCategory == null) suggestedCategory = ""; 31 window.sidebar.addSearchEngine(engineURL, iconURL, suggestedTitle, suggestedCategory); 32 }else{ 33 alert("Váš prohlížeč nepodporuje tuto funkci. Zkuste Mozillu."); 34 } 35 return false; 36 } 37 37 //--> 38 38 </script>'); 39 echo(' 39 echo(' 40 40 Pomocí <a href="http://centrala/share/prohledavac_sdileni8.src" onclick="return addSearchEngine(\'http://centrala/share/prohledavac_sdileni8.src\', \'http://centrala/share/prohledavac_sdileni8.gif\', \'Prohledávač sdílení sítě ZděchovNET\', \'Web\')">tohoto odkazu</a> přidáte tento prohledávač sdílení do políčka Hledat ve vašem internetovém prohlížeči Mozilla Firefox. Pak můžete vyhledávat zjednodušeně zadáím hesel do tohoto políčka.<br><br> 41 41 <div align="center"><img src="firefox.png" alt="Firefox"></div>'); -
trunk/Modules/NetworkShare/online.php
r548 r738 12 12 echo("OK\n\nSeznam online pocitacu:\n"); 13 13 array_shift($Output); 14 $Online = array(); // Seznam online pocitacu14 $Online = array(); // Seznam online pocitacu 15 15 foreach($Output as $Radek) 16 16 { … … 35 35 { 36 36 $Output = array(); 37 37 38 38 //echo('arping -c 1 '.$Host); 39 39 exec('arping -c 1 '.$Host,$Output); 40 40 if(count($Output)!=4) 41 { 41 { 42 42 $Output = array(); 43 43 exec('arping -I wlan0 -c 1 '.$Host,$Output); 44 44 if(count($Output)!=4) 45 { 45 { 46 46 $Output = array(); 47 47 exec('arping -I wlan1 -c 1 '.$Host,$Output); 48 48 if(count($Output)!=4) 49 { 49 { 50 50 $Output = array(); 51 51 exec('arping -I wlan2 -c 1 '.$Host,$Output); 52 if(count($Output)!=4) 52 if(count($Output)!=4) 53 53 { 54 54 $Output = array(); … … 71 71 // Deaktivuj predchozi online pocitace 72 72 $Database->update('hosts', 1, array('online' => 0)); 73 73 74 74 //print_r($Online); 75 75 // Aktivuj online pocitace … … 82 82 } else $Database->insert('hosts',array('name' => $Item['host'], 'IP' => $Item['IP'], 'MAC' => $Item['MAC'], 'online' => 1,'date' => 'NOW()','lastdate' => 'NOW()', 'section' => $Section)); 83 83 } 84 84 85 85 echo("\nSeznam offline pocitacu:\n"); 86 86 $DbResult = $Database->query("SELECT * FROM hosts WHERE online=0"); -
trunk/Modules/NetworkShare/playlist.php
r548 r738 6 6 $Vyber = ''; 7 7 $Podminka = ''; 8 while($Row = $DbResult->fetch_array()) 8 while($Row = $DbResult->fetch_array()) 9 9 $Vyber .= $Row['id'].','; 10 10 $Podminka .= ' AND (host IN ('.substr($Vyber,0,-1).'))'; … … 20 20 { 21 21 global $MaxNesting, $Database; 22 22 23 23 // Vyhled�n� cesty 24 24 $Otec = $Row['parent']; -
trunk/Modules/NetworkShare/update.php
r548 r738 1 1 <?php 2 2 3 //$Perioda = 3600*3; // prochazet po tech hodinach3 //$Perioda = 3600*3; // prochazet po tech hodinach 4 4 5 5 $Dnes = date('Y-m-d'); … … 12 12 { 13 13 //echo('Host: '.$Host."...\n"); 14 14 15 15 //echo(.','.$Row['date']."\n"); 16 16 $HostID = 100; 17 17 $StartTime2 = GetMicrotime(); 18 if($Dnes != $Row['last_share_check']) 18 if($Dnes != $Row['last_share_check']) 19 19 { 20 20 echo("Kontroluji ".$Row['Name']."...\n"); … … 22 22 } 23 23 else echo("Vynechavam ".$Row['Name']."...\n"); 24 // Aktualizuj datum prochazeni 24 // Aktualizuj datum prochazeni 25 25 $Database->update('Hosts', "name='".$Row['name']."'",array('last_share_check' => $Dnes)); 26 26 } 27 27 $Rozdil = GetMicrotime()-$StartTime+10; 28 28 29 29 // Oprav a zoptimalizuj tabulku 30 30 //$Database->select_db('share'); … … 33 33 echo("\nOptimalizuji tabulku..."); 34 34 $Database->query('OPTIMIZE TABLE NetworkShareItem'); 35 35 36 36 echo("\nDoba procháení ".date("H:i:s",$Rozdil-3600)."\n\n"); 37 37 //$Cekat = $Perioda-$Rozdil; -
trunk/Modules/NetworkTopology/NetworkTopology.php
r586 r738 7 7 var $ParentClass = 'PagePortal'; 8 8 var $TopHostName = 'NIX-ROUTER'; 9 9 10 10 function Show() 11 11 { 12 12 if(count($this->System->PathItems) > 1) 13 { 13 { 14 14 if($this->System->PathItems[1] == 'topologie.png') return($this->ShowImage()); 15 15 else return(PAGE_NOT_FOUND); 16 16 17 17 } else return($this->ShowOverview()); 18 18 } 19 19 20 20 function ShowImage() 21 21 { … … 31 31 $width = $item[0]; 32 32 $height = $item[1]; 33 33 34 34 $spacex = 32; 35 35 $spacey = 68; 36 36 $halfx = $spacex / 2; 37 37 $halfy = $spacey / 2; 38 // Načtení pomocných obrázků 38 // Načtení pomocných obrázků 39 39 $im_comp = imagecreatefrompng(dirname(__FILE__).'/images/comp.png'); 40 40 $im_dev = imagecreatefrompng(dirname(__FILE__).'/images/device.png'); … … 47 47 $blue = imagecolorallocate($im, 100, 100, 255); 48 48 $gray = imagecolorallocate($im, 160, 160, 160); 49 49 50 50 //$DbResult = $Database->query("SELECT * FROM hosts, NetworkTopology WHERE host = id AND used=1"); 51 51 $DbResult = $this->Database->query('SELECT NetworkTopology.*, NetworkTopology.Host AS Id, '. … … 98 98 } 99 99 } 100 100 101 101 // === Sestavení výsledného souboru ============================================ 102 102 if($debug == 0) 103 103 { 104 104 Header("Content-type: image/png"); 105 Header("Cache-Control: no-cache"); // Dynamický graf, nekešovat105 Header("Cache-Control: no-cache"); // Dynamický graf, nekešovat 106 106 imagepng($im); 107 107 imagedestroy($im); … … 111 111 return(''); 112 112 } 113 113 114 114 function ShowOverview() 115 115 { … … 142 142 $this->Dependencies = array('Network'); 143 143 } 144 144 145 145 function DoInstall() 146 146 { 147 147 } 148 148 149 149 function DoUnInstall() 150 150 { -
trunk/Modules/NetworkTopology/topologie-img.php
r548 r738 9 9 10 10 // === Zpětné vyvážení stromu do hloubky ======================================= 11 function balance($id, $level, &$vlast, &$vleft, &$vpred, &$vfirst, &$vnext, &$tbound, &$width, $limit) 11 function balance($id, $level, &$vlast, &$vleft, &$vpred, &$vfirst, &$vnext, &$tbound, &$width, $limit) 12 12 { 13 13 global $debug, $bbound; 14 14 15 15 if(!array_key_exists($id, $vfirst)) $vfirst[$id] = 0; 16 if($i = $vfirst[$id]) 16 if($i = $vfirst[$id]) 17 17 { 18 18 //if ($debug==2) echo $id.':'.@$i.','.@$vpred[$i].'-'.@$vleft[@$vpred[$i]]."\n"; 19 if (($vlast[$id] > 0) && ($vleft[$id] > $vleft[$vlast[$id]])) 19 if (($vlast[$id] > 0) && ($vleft[$id] > $vleft[$vlast[$id]])) 20 20 { 21 21 $diff=$vleft[$id]-$vleft[$vlast[$id]]; 22 22 $i=$vfirst[$id]; 23 if ($vleft[$id] >= $tbound[$level]) 23 if ($vleft[$id] >= $tbound[$level]) 24 24 { 25 25 $tbound[$level] = $vleft[$id] + 2; … … 28 28 } else { 29 29 $diff=0; 30 if ($vpred[$i]&&($vleft[$i]<=$vleft[$vpred[$i]])) 30 if ($vpred[$i]&&($vleft[$i]<=$vleft[$vpred[$i]])) 31 31 { 32 32 $diff=$vleft[$i]-$vleft[$vpred[$i]]+2; 33 33 } else $i = 0; 34 34 } 35 while ($i>0) 35 while ($i>0) 36 36 { 37 37 $vleft[$i]+=$diff; … … 45 45 // === Generování rovinné stromové struktury =================================== 46 46 function gentree($mode) // depth-first algorithm 47 { 47 { 48 48 global $debug, $TopHostName, $Database; 49 49 50 50 // --- Inicializace ---------------------------------------------------------- 51 51 $tbound = array(); // Hranice pozic jednotlivých úrovní … … 58 58 $vtop = array(); // Pozice prvku shora 59 59 $vpred = array(); // Vedlejsi prvek na řádku 60 60 61 61 $index = 0; // Index aktuálního prvku 62 62 $curr = 0; // Aktuální prvek … … 68 68 $position[$level] = 0; // Aktuální pozice prvku na dané úrovni 69 69 $count[$level] = 0; // Počet prvků na dané úrovni 70 70 71 71 $maxindex = 0; 72 72 $tbound[$level] = 0; 73 73 $tranger[$level] = 0; 74 74 75 75 // --- Hlavní cyklus --------------------------------------------------------- 76 do 76 do 77 77 { 78 78 // --- Proveď databázový dotaz ----------------------------------------------- 79 79 $query = 'SELECT * FROM hosts WHERE used=1 AND '; 80 if ($level == 0) 81 { 82 $query .= 'name = "'.$TopHostName.'" ORDER BY id'; 83 } else 80 if ($level == 0) 81 { 82 $query .= 'name = "'.$TopHostName.'" ORDER BY id'; 83 } else 84 84 { 85 85 $query .= ' parent = '.$parent[$level].' ORDER BY id'; … … 91 91 $item = $DbResult->fetch_array(); 92 92 //print_r($item); 93 if($item) 93 if($item) 94 94 { 95 95 // --- Zpracování položky z DB ----------------------------------------------- 96 if($position[$level] > 0) 96 if($position[$level] > 0) 97 97 { 98 98 $vnext[$curr] = $item['id']; // Neprvní položka, nastav předchozí … … 114 114 $DbResult = $Database->query('SELECT COUNT(*) FROM hosts WHERE used=1 AND parent = '.$curr); 115 115 $childcnt = $DbResult->fetch_array(); 116 if ($childcnt[0] > 0) 117 { 116 if ($childcnt[0] > 0) 117 { 118 118 // Uzelový vrchol 119 if(array_key_exists($level + 1, $tbound)) 119 if(array_key_exists($level + 1, $tbound)) 120 120 if($tbound[$level + 1] > $vleft[$curr]) $vleft[$curr] = $tbound[$level + 1]; 121 121 } 122 122 $tbound[$level] = $vleft[$curr] + 2; 123 123 if ($vleft[$curr] > $width) $width = $vleft[$curr]; 124 if ($childcnt[0] > 0) 124 if ($childcnt[0] > 0) 125 125 { 126 126 $level++; … … 130 130 $count[$level] = 0; 131 131 } else $index++; // Listový vrchol 132 } else 132 } else 133 133 { 134 134 // --- Zarovnávání prvků kvůli vzhledu 135 135 if(!array_key_exists($vfirst[$parent[$level]], $vleft)) $vleft[$vfirst[$parent[$level]]] = 0; 136 136 if(!array_key_exists($parent[$level], $vleft)) $vleft[$parent[$level]] = 0; 137 if ($vleft[$vfirst[$parent[$level]]] > $vleft[$parent[$level]]) 137 if ($vleft[$vfirst[$parent[$level]]] > $vleft[$parent[$level]]) 138 138 { 139 139 $vleft[$parent[$level]] = $vleft[$vfirst[$parent[$level]]]; … … 141 141 } 142 142 balance($parent[$level],$level, $vlast,$vleft,$vpred,$vfirst,$vnext,$tbound, $width, 0); 143 if ($position[$level]==1) 143 if ($position[$level]==1) 144 144 { 145 145 $vleft[$vfirst[$parent[$level]]] = $vleft[$parent[$level]]; … … 149 149 if(!array_key_exists($parent[$level], $vlast)) $vlast[$parent[$level]] = 0; 150 150 $curr = $vlast[$parent[$level]]; 151 151 152 152 if(!array_key_exists($level, $tbound)) $tbound[$level] = 0; 153 153 if(!array_key_exists($level + 1, $tbound)) $tbound[$level + 1] = 0; … … 165 165 $datawidth = $data['width']; 166 166 for($i = 0; $i <= $maxindex; $i++) 167 { 167 { 168 168 if(!array_key_exists($i, $vleft)) $vleft[$i] = 0; 169 169 if(!array_key_exists($i, $data['vleft'])) $data['vleft'][$i] = 0; … … 179 179 $IconList = array(); 180 180 $DbResult = $Database->query('SELECT * FROM HostType'); 181 while($HostType = $DbResult->fetch_assoc()) 181 while($HostType = $DbResult->fetch_assoc()) 182 182 $IconList[$HostType['Id']] = imagecreatefrompng('images/'.$HostType['IconName'].'.png'); 183 183 … … 191 191 $gray = imagecolorallocate($im, 160, 160, 160); 192 192 193 function xpos($id) 193 function xpos($id) 194 194 { 195 195 global $vleft, $spacex; … … 198 198 199 199 $DbResult = $Database->query('SELECT * FROM hosts JOIN HostType ON HostType.Id = hosts.type WHERE hosts.used=1'); 200 while($item = $DbResult->fetch_array()) 200 while($item = $DbResult->fetch_array()) 201 201 { 202 202 $id = $item['id']; 203 203 if(!array_key_exists($id, $vtop)) $vtop[$id] = 0; 204 if(($vtop[$id] > 0) || ($item['name'] == $TopHostName)) 204 if(($vtop[$id] > 0) || ($item['name'] == $TopHostName)) 205 205 { 206 206 if($vtop[$id] > 0) imageline($im, xpos($id) + $halfx, $vtop[$id] * $spacey, xpos($id) + $halfx, $vtop[$id] * $spacey + 8, $black); 207 207 if(!array_key_exists($id, $vfirst)) $vfirst[$id] = 0; 208 if($vfirst[$id] > 0) 208 if($vfirst[$id] > 0) 209 209 { 210 210 imageline($im, xpos($vfirst[$id]) + $halfx, $vtop[$id] * $spacey + $spacey, xpos($vlast[$id]) + $halfx, $vtop[$id] * $spacey + $spacey, $black); 211 211 imageline($im, xpos($id) + $halfx, ($vtop[$id] + 1) * $spacey - 10, xpos($id) + $halfx, ($vtop[$id] + 1) * $spacey, $black); 212 212 } 213 213 214 214 $image = $IconList[$item['type']]; 215 215 if($item['IP'] == '') … … 228 228 imagecopy($im, $image, xpos($id) + $halfx - 15, $vtop[$id] * $spacey + 12, 0, 0, 30, 30); 229 229 // imagerectangle($im,xpos($id)+$halfx-6,$vtop[$id]*$spacey+16,xpos($id)+$halfx+6,$vtop[$id]*$spacey+28,$color); 230 if($debug) 230 if($debug) 231 231 { 232 232 imagestring($im, 2, xpos($id) + ($spacex - strlen($item['id']) * imagefontwidth(2)) / 2, $vtop[$id] * $spacey + 31 + imagefontheight(2), $item['id'], $color); 233 } else 233 } else 234 234 imagestring($im, 2, xpos($id) + ($spacex - strlen($item['name']) * imagefontwidth(2)) / 2, $vtop[$id] * $spacey + 31 + imagefontheight(2), strtoupper($item['name']), $color); 235 235 } -
trunk/Modules/NetworkTopology/topologie2.php
r577 r738 38 38 } 39 39 40 $this->Tree = $Hosts[$this->TopHostId]; 40 $this->Tree = $Hosts[$this->TopHostId]; 41 41 } 42 42 43 43 function CalculateDimension(&$Host) 44 44 { … … 66 66 67 67 function MoveNode(&$Host, $Displacement) 68 { 68 { 69 69 $Host['displacement'] = $Host['displacement'] + $Displacement; 70 70 foreach($Host['subitems'] as $Index => $SubHost) … … 92 92 $II = 0; 93 93 while($RightHost['parent_node']['subitems'][$II]['id'] != $RightHost['id']) $II++; 94 while($II < count($RightHost['parent_node']['subitems'])) 94 while($II < count($RightHost['parent_node']['subitems'])) 95 95 { 96 96 $this->MoveNode($RightHost['parent_node']['subitems'][$II], $Level[$I]['displacement'] - $Level[$I + 1]['displacement']); … … 100 100 } 101 101 } 102 102 103 103 function BuildLevels(&$Host) 104 104 { … … 116 116 { 117 117 $HostPos = array('x' => -$this->RelPos['min'] + $SubHost['displacement'], 'y' => $SubHost['level'] * $this->HostHeight); 118 imageline($this->Image, $ParentHostPos['x'], $ParentHostPos['y'], $ParentHostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $this->LineColor); 119 imageline($this->Image, $ParentHostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $HostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $this->LineColor); 120 imageline($this->Image, $HostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $HostPos['x'], $HostPos['y'], $this->LineColor); 118 imageline($this->Image, $ParentHostPos['x'], $ParentHostPos['y'], $ParentHostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $this->LineColor); 119 imageline($this->Image, $ParentHostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $HostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $this->LineColor); 120 imageline($this->Image, $HostPos['x'], $ParentHostPos['y'] + $this->HostHeight * 0.5, $HostPos['x'], $HostPos['y'], $this->LineColor); 121 121 $this->DrawNode(&$Host['subitems'][$Index]); 122 122 imagecopy($this->Image, $this->ImageComputer, $HostPos['x'] - imagesx($this->ImageComputer) * 0.5, $HostPos['y'] - imagesy($this->ImageComputer) * 0.5, 0, 0, 30, 30); -
trunk/Modules/News/ImportKinoVatra.php
r622 r738 16 16 $doc = new DOMDocument(); 17 17 $doc->load($SourceURL); 18 foreach($doc->getElementsByTagName('item') as $node) 18 foreach($doc->getElementsByTagName('item') as $node) 19 19 { 20 20 $Title = $node->getElementsByTagName('title')->item(0)->nodeValue; 21 21 $Description = $node->getElementsByTagName('description')->item(0)->nodeValue; 22 $Link = $node->getElementsByTagName('link')->item(0)->nodeValue; 22 $Link = $node->getElementsByTagName('link')->item(0)->nodeValue; 23 23 $Date = $node->getElementsByTagName('pubDate')->item(0)->nodeValue; 24 24 25 25 $Description = strip_tags($Description); 26 26 $Description = str_replace("\r", '', $Description); … … 29 29 // $Date = substr($Date, $CommaPos + 1); 30 30 $Date = TimeToMysqlDateTime(strtotime($Date)); 31 31 32 32 $Query = 'SELECT Id FROM News WHERE (`Title`="'.$System->Database->real_escape_string($Title).'") AND (`Category`='.$Category.') AND (`Content` = "'.$System->Database->real_escape_string($Description).'") AND (`Link` = "'.$System->Database->real_escape_string($Link).'")'; 33 33 $DbResult = $System->Database->query($Query); -
trunk/Modules/News/News.php
r711 r738 67 67 )); 68 68 $this->System->FormManager->RegisterFormType('TNewsCategory', array( 69 'Type' => 'Reference',70 'Table' => 'NewsCategory',71 'Id' => 'Id',72 'Name' => 'Caption',73 'Filter' => '1',69 'Type' => 'Reference', 70 'Table' => 'NewsCategory', 71 'Id' => 'Id', 72 'Name' => 'Caption', 73 'Filter' => '1', 74 74 )); 75 75 $this->System->FormManager->RegisterFormType('TNewsList', array( 76 'Type' => 'ManyToOne',77 'Table' => 'News',78 'Id' => 'Id',79 'Ref' => 'Category',80 'Filter' => '1',81 )); 82 76 'Type' => 'ManyToOne', 77 'Table' => 'News', 78 'Id' => 'Id', 79 'Ref' => 'Category', 80 'Filter' => '1', 81 )); 82 83 83 if($this->System->ModuleManager->ModulePresent('Search')) 84 84 { -
trunk/Modules/OpeningHours/OpeningHours.php
r586 r738 10 10 var $EventType = array('Žádný', 'Otevřeno', 'Zavřeno'); 11 11 var $ParentClass = 'PagePortal'; 12 12 13 13 function ToHumanTime($Time) 14 14 { 15 15 $Hours = floor($Time / 60); 16 16 $Minutes = $Time - $Hours * 60; 17 if($Minutes < 10) $Minutes = '0'.$Minutes; 17 if($Minutes < 10) $Minutes = '0'.$Minutes; 18 18 $Hours = $Hours % 24; 19 19 return($Hours.':'.$Minutes); 20 } 20 } 21 21 22 22 function ToHumanTime2($Time) … … 33 33 return($Output); 34 34 } 35 35 36 36 function EditSubject($Id) 37 37 { … … 72 72 return($Output); 73 73 } 74 74 75 75 function SaveSubject($Id) 76 76 { 77 77 global $Config; 78 78 79 79 $Output = ''; 80 80 if($this->System->User->CheckPermission('OpeningHours', 'Edit')) … … 97 97 $Day['Close2'] = $_POST['day'.$Index.'_close2_m'] + $_POST['day'.$Index.'_close2_h'] * 60; 98 98 $this->Database->insert('SubjectOpenTimeDay', $Day); 99 } 100 $Output .= 'Uloženo'; 101 99 } 100 $Output .= 'Uloženo'; 101 102 102 $File = new File($this->Database); 103 103 … … 112 112 } else $Output = 'Nemáte oprávnění'; 113 113 return($Output); 114 } 115 114 } 115 116 116 function ShowAll() 117 117 { … … 121 121 { 122 122 $Output .= '<strong>'.$Subject['Name'].':</strong><br />'; 123 123 124 124 // Load time event list 125 125 $Events = array(); … … 139 139 } 140 140 //print_r($Events); 141 141 142 142 // Calculate time to next event 143 143 if(count($Events) > 0) 144 144 { 145 145 $CurrentTime = ((date('w') + 6) % 7) * 24 * 60 + date('G') * 60 + date('i'); 146 146 147 147 $I = 0; 148 while(($I < count($Events)) and ($Events[$I]['Time'] < $CurrentTime)) 148 while(($I < count($Events)) and ($Events[$I]['Time'] < $CurrentTime)) 149 149 $I++; 150 150 if($I < count($Events)) … … 152 152 $NextTime = $Events[$I]['Time']; 153 153 $NextEventType = $Events[$I]['Type']; 154 } else 154 } else 155 155 { 156 156 $NextTime = $Events[0]['Time'] + 7 * 24 * 60; 157 157 $NextEventType = $Events[0]['Type']; 158 158 } 159 159 160 160 $TimeDelta = $NextTime - $CurrentTime; 161 161 //$Output .= $CurrentTime.' '.$NextTime; … … 163 163 else $Output .= 'Otevírá za '.$this->ToHumanTime2($TimeDelta); 164 164 } 165 166 // Show time inteval table 165 166 // Show time inteval table 167 167 $Output .= '<table class="WideTable"><tr><th>Den</th><th>Čas</th></tr>'; 168 168 foreach($this->DaysOfWeek as $DayIndex => $DayOfWeek) … … 187 187 $Output .= '</table>Aktualizováno: '.$Subject['UpdateTime'].'<br />'; 188 188 if($Subject['Notice'] != '') $Output .= 'Poznámka: '.$Subject['Notice'].'<br />'; 189 189 190 190 if($Subject['Photo'] != 0) $Output .= '<a href="file?id='.$Subject['Photo'].'">Fotka</a> '; 191 191 192 192 if($this->System->User->CheckPermission('SubjectOpenTime', 'Edit')) 193 193 $Output .= '<a href="edit?Subject='.$Subject['Id'].'">Editovat</a><br />'; … … 197 197 return($Output); 198 198 } 199 199 200 200 function Show() 201 201 { 202 202 if(count($this->System->PathItems) > 1) 203 { 203 { 204 204 if($this->System->PathItems[1] == 'edit') $Output = $this->EditSubject($_GET['Subject']); 205 else if($this->System->PathItems[1] == 'save') 205 else if($this->System->PathItems[1] == 'save') 206 206 { 207 207 $Output = $this->SaveSubject($_GET['Subject']); 208 208 $Output .= $this->ShowAll(); 209 } else $Output = PAGE_NOT_FOUND; 210 } else $Output = $this->ShowAll(); 209 } else $Output = PAGE_NOT_FOUND; 210 } else $Output = $this->ShowAll(); 211 211 return($Output); 212 212 } … … 225 225 $this->Dependencies = array(); 226 226 } 227 227 228 228 function DoStart() 229 229 { 230 230 $this->System->Pages['otviraci-doby'] = 'PageSubjectOpenTime'; 231 231 } 232 232 233 233 function DoInstall() 234 234 { -
trunk/Modules/Portal/Portal.php
r737 r738 63 63 while($Action = $DbResult->fetch_assoc()) 64 64 { 65 $Output .= $this->System->ShowAction($Action['Id']).'<br/>';65 $Output .= $this->System->ShowAction($Action['Id']).'<br/>'; 66 66 } 67 67 return($this->Panel($ActionGroup['Name'], $Output)); -
trunk/Modules/RSS/RSS.php
r670 r738 19 19 function Start() 20 20 { 21 $this->System->RegisterPage('rss', 'PageRSS');21 $this->System->RegisterPage('rss', 'PageRSS'); 22 22 } 23 23 … … 42 42 $Output = ''; 43 43 foreach($this->RSSChannels as $Channel) 44 {45 if($this->System->User->Licence($Channel['Permission']))46 $Output .= ' <link rel="alternate" title="'.$Channel['Title'].'" href="'.47 $this->System->Link('/rss/?channel='.$Channel['Channel']).'" type="application/rss+xml" />';48 }44 { 45 if($this->System->User->Licence($Channel['Permission'])) 46 $Output .= ' <link rel="alternate" title="'.$Channel['Title'].'" href="'. 47 $this->System->Link('/rss/?channel='.$Channel['Channel']).'" type="application/rss+xml" />'; 48 } 49 49 return($Output); 50 50 } … … 53 53 class PageRSS extends Page 54 54 { 55 function Show()56 {57 $this->ClearPage = true;55 function Show() 56 { 57 $this->ClearPage = true; 58 58 59 if(array_key_exists('channel', $_GET)) $ChannelName = $_GET['channel'];60 else $ChannelName = '';61 if(array_key_exists('token', $_GET)) $Token = $_GET['token'];62 else $Token = '';63 if(array_key_exists($ChannelName, $this->System->ModuleManager->Modules['RSS']->RSSChannels))64 {65 $Channel = $this->System->ModuleManager->Modules['RSS']->RSSChannels[$ChannelName];66 if($this->System->User->CheckPermission($Channel['Permission']['Module'], $Channel['Permission']['Operation']) or67 $this->System->User->CheckToken($Channel['Permission']['Module'], $Channel['Permission']['Operation'], $Token))68 {69 if(is_string($Channel['Callback'][0]))70 {71 $Class = new $Channel['Callback'][0]($this->System);72 $Output = $Class->$Channel['Callback'][1]();73 } else $Output = call_user_func($Channel['Callback']);74 } else $Output = 'Nemáte oprávnění';75 } else $Output = 'Kanál nenalezen';59 if(array_key_exists('channel', $_GET)) $ChannelName = $_GET['channel']; 60 else $ChannelName = ''; 61 if(array_key_exists('token', $_GET)) $Token = $_GET['token']; 62 else $Token = ''; 63 if(array_key_exists($ChannelName, $this->System->ModuleManager->Modules['RSS']->RSSChannels)) 64 { 65 $Channel = $this->System->ModuleManager->Modules['RSS']->RSSChannels[$ChannelName]; 66 if($this->System->User->CheckPermission($Channel['Permission']['Module'], $Channel['Permission']['Operation']) or 67 $this->System->User->CheckToken($Channel['Permission']['Module'], $Channel['Permission']['Operation'], $Token)) 68 { 69 if(is_string($Channel['Callback'][0])) 70 { 71 $Class = new $Channel['Callback'][0]($this->System); 72 $Output = $Class->$Channel['Callback'][1](); 73 } else $Output = call_user_func($Channel['Callback']); 74 } else $Output = 'Nemáte oprávnění'; 75 } else $Output = 'Kanál nenalezen'; 76 76 return($Output); 77 }77 } 78 78 } -
trunk/Modules/Scheduler/Scheduler.php
r735 r738 13 13 $this->Dependencies = array(); 14 14 } 15 15 16 16 function DoStart() 17 17 { … … 34 34 'Table' => 'SchedulerAction', 35 35 'DefaultSortColumn' => 'Name', 36 'ReadOnly' => true,36 'ReadOnly' => true, 37 37 'Items' => array( 38 38 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => '', 'ReadOnly' => true), … … 41 41 )); 42 42 $this->System->FormManager->RegisterFormType('TSchedulerAction', array( 43 'Type' => 'Reference',44 'Table' => 'SchedulerAction',45 'Id' => 'Id',46 'Name' => 'Name',47 'Filter' => '1',43 'Type' => 'Reference', 44 'Table' => 'SchedulerAction', 45 'Id' => 'Id', 46 'Name' => 'Name', 47 'Filter' => '1', 48 48 )); 49 49 $this->System->RegisterCommandLine('run-scheduler', array('ModuleScheduler', 'Run')); 50 50 } 51 51 52 52 function DoInstall() 53 53 { … … 55 55 56 56 function DoUnInstall() 57 { 57 { 58 58 } 59 59 60 60 function Run() 61 { 62 while(true)63 {64 $DbResult = $this->Database->query('SELECT `Scheduler`.*, `SchedulerAction`.`Class` AS `Class` FROM `Scheduler` '.65 'LEFT JOIN `SchedulerAction` ON `SchedulerAction`.`Id` = `Scheduler`.`Action` '.66 'WHERE (`Scheduler`.`Enabled`=1) AND (((`Scheduler`.`ScheduledTime` < "'.TimeToMysqlDateTime(time()).'") AND '.67 ' (`Scheduler`.`LastExecutedTime` < `Scheduler`.`ScheduledTime`)) OR '.68 '(`Scheduler`.`ScheduledTime` IS NULL))');69 while($DbRow = $DbResult->fetch_assoc())70 {71 echo('Executing '.$DbRow['Name']."\n");72 $Output = '';73 if(class_exists($DbRow['Class']))74 {75 $Class = new $DbRow['Class']($this->System);76 $Output = $Class->Execute();77 } else echo('Class '.$DbRow['Class'].' not found'."\n");78 $this->Database->update('Scheduler', 'Id='.$DbRow['Id'], 79 array('Log' => $Output, 'LastExecutedTime' => 'NOW()'));80 if($DbRow['ScheduledTime'] == '') $NewScheduledTime = time() + $DbRow['Period'];81 else $NewScheduledTime = MysqlDateTimeToTime($DbRow['ScheduledTime']) + $DbRow['Period']; 82 if($DbRow['Period'] != '') $this->Database->update('Scheduler', 'Id='.$DbRow['Id'],83 array('ScheduledTime' => TimeToMysqlDateTime($NewScheduledTime)));84 }85 echo('.');86 sleep(1);87 }61 { 62 while(true) 63 { 64 $DbResult = $this->Database->query('SELECT `Scheduler`.*, `SchedulerAction`.`Class` AS `Class` FROM `Scheduler` '. 65 'LEFT JOIN `SchedulerAction` ON `SchedulerAction`.`Id` = `Scheduler`.`Action` '. 66 'WHERE (`Scheduler`.`Enabled`=1) AND (((`Scheduler`.`ScheduledTime` < "'.TimeToMysqlDateTime(time()).'") AND '. 67 ' (`Scheduler`.`LastExecutedTime` < `Scheduler`.`ScheduledTime`)) OR '. 68 '(`Scheduler`.`ScheduledTime` IS NULL))'); 69 while($DbRow = $DbResult->fetch_assoc()) 70 { 71 echo('Executing '.$DbRow['Name']."\n"); 72 $Output = ''; 73 if(class_exists($DbRow['Class'])) 74 { 75 $Class = new $DbRow['Class']($this->System); 76 $Output = $Class->Execute(); 77 } else echo('Class '.$DbRow['Class'].' not found'."\n"); 78 $this->Database->update('Scheduler', 'Id='.$DbRow['Id'], 79 array('Log' => $Output, 'LastExecutedTime' => 'NOW()')); 80 if($DbRow['ScheduledTime'] == '') $NewScheduledTime = time() + $DbRow['Period']; 81 else $NewScheduledTime = MysqlDateTimeToTime($DbRow['ScheduledTime']) + $DbRow['Period']; 82 if($DbRow['Period'] != '') $this->Database->update('Scheduler', 'Id='.$DbRow['Id'], 83 array('ScheduledTime' => TimeToMysqlDateTime($NewScheduledTime))); 84 } 85 echo('.'); 86 sleep(1); 87 } 88 88 } 89 89 } … … 91 91 class SchedulerTask extends Model 92 92 { 93 function Execute()94 {95 }93 function Execute() 94 { 95 } 96 96 } -
trunk/Modules/Search/Search.php
r586 r738 10 10 $this->ParentClass = 'PagePortal'; 11 11 } 12 12 13 13 function Show() 14 14 { … … 29 29 $Columns .= ', `'.$Column.'`'; 30 30 $Condition .= ' OR (`'.$Column.'` LIKE "%'.$Text.'%")'; 31 } 31 } 32 32 $Columns = substr($Columns, 2); 33 33 $Condition = substr($Condition, 3); … … 51 51 var $Items; 52 52 var $MaxItemCount; 53 53 54 54 function __construct($System) 55 55 { … … 64 64 $this->Items = array(); 65 65 } 66 66 67 67 function DoStart() 68 68 { 69 69 $this->System->Pages['search'] = 'PageSearch'; 70 70 } 71 71 72 72 function DoInstall() 73 73 { … … 75 75 76 76 function DoUnInstall() 77 { 77 { 78 78 } 79 79 80 80 function RegisterSearch($Title, $TableName, $Columns) 81 81 { -
trunk/Modules/SpeedTest/SpeedTest.php
r615 r738 24 24 $this->Dependencies = array(); 25 25 } 26 26 27 27 function DoStart() 28 28 { 29 29 $this->System->Pages['speedtest'] = 'PageSpeedTest'; 30 } 30 } 31 31 } 32 32 … … 36 36 var $ShortTitle = 'Test rychlosti'; 37 37 var $ParentClass = 'PagePortal'; 38 38 39 39 function Show() 40 40 { … … 46 46 } else return($this->ShowMain()); 47 47 } 48 48 49 49 function ShowDownload() 50 50 { 51 51 global $config; 52 52 require_once(dirname(__FILE__)."/download.php"); 53 53 54 54 } 55 55 56 56 function ShowMain() 57 { 57 { 58 58 global $config; 59 59 60 60 require_once(dirname(__FILE__)."/common.php"); 61 61 ReadConfig(dirname(__FILE__)."/speedtest.cfg"); 62 62 63 63 ## Redirect immediately to download.php if auto_start = 1 64 64 if($config->{'general'}->{'auto_start'}) { … … 70 70 <head> 71 71 <title>'.$config->{'general'}->{'page_title'}.' - Fancy Speed Test</title> 72 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 73 <meta http-equiv="Pragma" CONTENT="no-cache" /> 74 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 72 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 73 <meta http-equiv="Pragma" CONTENT="no-cache" /> 74 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 75 75 <link rel="stylesheet" href="style.css" /> 76 76 </head> … … 89 89 ## Include "welcome.html" for a custom welcome page, if the file exists 90 90 include("welcome.html"); 91 } else { 91 } else { 92 92 ## Else print a standard welcome message 93 93 -
trunk/Modules/SpeedTest/download.php
r560 r738 38 38 ## Intial test is done. Set down/upload sizes to the same as 39 39 ## our initial measured speeds. That way the test should take 40 ## about 8 seconds for each test (up/down) making it about a 40 ## about 8 seconds for each test (up/down) making it about a 41 41 ## 16 second test 42 42 $down_kbytes = $_GET['downspeed']; … … 46 46 $down_kbytes = $config->{'download'}->{'initial_kbytes'}; 47 47 $up_kbytes = $config->{'upload'}->{'initial_kbytes'}; 48 } 48 } 49 49 } else { 50 50 ## auto_size is off. Just to the default sizes … … 84 84 <head> 85 85 <title><?php print $config->{'general'}->{'page_title'}; ?> - Fancy Speed Test</title> 86 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 87 <meta http-equiv="Pragma" CONTENT="no-cache" /> 88 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 86 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 87 <meta http-equiv="Pragma" CONTENT="no-cache" /> 88 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 89 89 <link rel="stylesheet" href="style.css" /> 90 90 </head> 91 91 <body> 92 92 93 <?php 93 <?php 94 94 if(file_exists("header.html")) { 95 95 ## Include "header.html" for a custom header, if the file exists 96 96 include("header.html"); 97 } else { 97 } else { 98 98 ## Else just print a plain header 99 99 print "<br /><br /><br /><br />\n"; … … 102 102 <div id="speedtest_contents"> 103 103 104 <?php 105 if( ($config_auto_size) && (! isset($_GET['auto_size'])) ) { 104 <?php 105 if( ($config_auto_size) && (! isset($_GET['auto_size'])) ) { 106 106 ## auto_size is performing the initial, small test 107 107 print "<div>Calculating appropriate file sizes for testing</div>\n"; 108 ob_flush(); 108 ob_flush(); 109 109 } else { 110 110 ?> … … 190 190 } 191 191 } 192 192 193 193 194 194 // --> … … 218 218 219 219 ## Read some stuff from our payload file 220 $data_file = "payload.js";221 $fd = fopen ($data_file, "r");220 $data_file = "payload.js"; 221 $fd = fopen ($data_file, "r"); 222 222 $data = fread ($fd, $each_chunk * 1024); 223 223 … … 281 281 CompleteDownloadBar(); 282 282 283 time = new Date();284 endtime = time.getTime();285 if (endtime == starttime)286 {downloadtime = 0287 } else {288 downloadtime = (endtime - starttime)/1000;289 }283 time = new Date(); 284 endtime = time.getTime(); 285 if (endtime == starttime) 286 {downloadtime = 0 287 } else { 288 downloadtime = (endtime - starttime)/1000; 289 } 290 290 <?php if(! $config->{'upload'}->{'skip_upload'}){ ?> StartUpload(); <?php } ?> 291 291 292 down_size = <?php echo $total_kbytes; ?>;293 downspeed = down_size/downloadtime;294 downspeed = (Math.round((downspeed*8)*10*1.024))/10;292 down_size = <?php echo $total_kbytes; ?>; 293 downspeed = down_size/downloadtime; 294 downspeed = (Math.round((downspeed*8)*10*1.024))/10; 295 295 296 296 formElement = document.getElementById('upload_test_form'); 297 297 298 <?php 298 <?php 299 299 if($config_auto_size && (! isset($_GET['auto_size'])) ) { 300 300 $params_auto_size = "&auto_size=1"; -
trunk/Modules/SpeedTest/results.php
r331 r738 49 49 <head> 50 50 <title><?php print $config->{'general'}->{'page_title'}; ?> - Fancy Speed Test</title> 51 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 52 <meta http-equiv="Pragma" CONTENT="no-cache" /> 53 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 51 <meta http-equiv="Expires" CONTENT="Fri, Jan 1 1980 00:00:00 GMT" /> 52 <meta http-equiv="Pragma" CONTENT="no-cache" /> 53 <meta http-equiv="Cache-Control" CONTENT="no-cache" /> 54 54 <link rel="stylesheet" href="style.css" /> 55 55 </head> 56 56 <body> 57 57 58 <?php 58 <?php 59 59 if(file_exists("header.html")) { 60 60 ## Include "header.html" for a custom header, if the file exists 61 61 include("header.html"); 62 } else { 62 } else { 63 63 ## Else just print a plain header 64 64 print "<center>\n"; … … 118 118 print "</table>\n"; 119 119 } 120 120 121 121 ?> 122 122 -
trunk/Modules/Stock/Stock.php
r736 r738 68 68 'ReadOnly' => true, 'SQL' => '(SELECT SUM(`SellPrice`) FROM `StockSerialNumber` WHERE '. 69 69 '(`StockSerialNumber`.`Stock`=#Id) AND (`StockSerialNumber`.`TimeElimination` IS NULL))', 'Suffix' => 'Kč'), 70 'Moves' => array('Type' => 'TStockMoveStock', 'Caption' => 'Pohyby', 'Default' => ''),70 'Moves' => array('Type' => 'TStockMoveStock', 'Caption' => 'Pohyby', 'Default' => ''), 71 71 ), 72 72 )); … … 78 78 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''), 79 79 'BillCode' => array('Type' => 'String', 'Caption' => 'Označení', 'Default' => ''), 80 'Time' => array('Type' => 'DateTime', 'Caption' => 'Čas', 'Default' => ''),81 'StockFrom' => array('Type' => 'TStock', 'Caption' => 'Zdrojový sklad', 'Default' => '', 'Null' => true),82 'StockTo' => array('Type' => 'TStock', 'Caption' => 'Cílový sklad', 'Default' => '', 'Null' => true),80 'Time' => array('Type' => 'DateTime', 'Caption' => 'Čas', 'Default' => ''), 81 'StockFrom' => array('Type' => 'TStock', 'Caption' => 'Zdrojový sklad', 'Default' => '', 'Null' => true), 82 'StockTo' => array('Type' => 'TStock', 'Caption' => 'Cílový sklad', 'Default' => '', 'Null' => true), 83 83 'File' => array('Type' => 'TFile', 'Caption' => 'Doklad', 'Default' => '', 'Null' => true), 84 84 'Price' => array('Type' => 'Float', 'Caption' => 'Cena', 'Default' => '', 85 85 'ReadOnly' => true, 'Suffix' => 'Kč', 'SQL' => '(SELECT SUM(`StockMoveItem`.`UnitPrice` * `StockMoveItem`.`Amount`) FROM `StockMoveItem` '. 86 86 'WHERE `StockMoveItem`.`StockMove`=#Id)'), 87 'Items' => array('Type' => 'TStockMoveItemListStockMove', 'Caption' => 'Položky', 'Default' => ''),88 ), 87 'Items' => array('Type' => 'TStockMoveItemListStockMove', 'Caption' => 'Položky', 'Default' => ''), 88 ), 89 89 'BeforeInsert' => array($this, 'BeforeInsertStockMove'), 90 90 )); … … 93 93 'BaseTable' => 'StockMove', 94 94 'DefaultSortColumn' => 'Time', 95 'SQL' => '(SELECT *, -1 AS `Direction`, `StockFrom` AS `Stock`, `StockTo` AS `StockOther` FROM `StockMove`) '.96 'UNION (SELECT *, 1 AS `Direction`, `StockTo` AS `Stock`, `StockFrom` AS `StockOther` FROM `StockMove`)',95 'SQL' => '(SELECT *, -1 AS `Direction`, `StockFrom` AS `Stock`, `StockTo` AS `StockOther` FROM `StockMove`) '. 96 'UNION (SELECT *, 1 AS `Direction`, `StockTo` AS `Stock`, `StockFrom` AS `StockOther` FROM `StockMove`)', 97 97 'Items' => array( 98 98 'DocumentLine' => array('Type' => 'TDocumentLine', 'Caption' => 'Dokladová řada', 'Default' => ''), 99 99 'BillCode' => array('Type' => 'String', 'Caption' => 'Označení', 'Default' => ''), 100 'Time' => array('Type' => 'DateTime', 'Caption' => 'Čas', 'Default' => ''),101 'Stock' => array('Type' => 'TStock', 'Caption' => 'První sklad', 'Default' => '', 'Null' => true),102 'StockOther' => array('Type' => 'TStock', 'Caption' => 'Druhý sklad', 'Default' => '', 'Null' => true),100 'Time' => array('Type' => 'DateTime', 'Caption' => 'Čas', 'Default' => ''), 101 'Stock' => array('Type' => 'TStock', 'Caption' => 'První sklad', 'Default' => '', 'Null' => true), 102 'StockOther' => array('Type' => 'TStock', 'Caption' => 'Druhý sklad', 'Default' => '', 'Null' => true), 103 103 'File' => array('Type' => 'TFile', 'Caption' => 'Doklad', 'Default' => '', 'Null' => true), 104 104 'Price' => array('Type' => 'Float', 'Caption' => 'Cena', 'Default' => '', 105 105 'ReadOnly' => true, 'Suffix' => 'Kč', 'SQL' => '(SELECT `TX`.`Direction` * SUM(`StockMoveItem`.`UnitPrice` * `StockMoveItem`.`Amount`) FROM `StockMoveItem` '. 106 106 'WHERE `StockMoveItem`.`StockMove`=#Id)'), 107 'Items' => array('Type' => 'TStockMoveItemListStockMove', 'Caption' => 'Položky', 'Default' => ''),108 ), 107 'Items' => array('Type' => 'TStockMoveItemListStockMove', 'Caption' => 'Položky', 'Default' => ''), 108 ), 109 109 'BeforeInsert' => array($this, 'BeforeInsertStockMove'), 110 110 )); … … 116 116 'StockMove' => array('Type' => 'TStockMove', 'Caption' => 'Skladový pohyb', 'Default' => ''), 117 117 'Product' => array('Type' => 'TProduct', 'Caption' => 'Produkt', 'Default' => ''), 118 'Amount' => array('Type' => 'Integer', 'Caption' => 'Množství', 'Default' => '1'),119 'Text' => array('Type' => 'String', 'Caption' => 'Text', 'Default' => ''),118 'Amount' => array('Type' => 'Integer', 'Caption' => 'Množství', 'Default' => '1'), 119 'Text' => array('Type' => 'String', 'Caption' => 'Text', 'Default' => ''), 120 120 'UnitPrice' => array('Type' => 'Integer', 'Caption' => 'Jednotková cena', 'Default' => '0', 'Suffix' => 'Kč'), 121 ), 121 ), 122 122 )); 123 123 $this->System->FormManager->RegisterFormType('TStockMoveItemListStockMove', array( … … 127 127 'Ref' => 'StockMove', 128 128 'Filter' => '1', 129 )); 129 )); 130 130 $this->System->FormManager->RegisterFormType('TStockMoveStock', array( 131 131 'Type' => 'ManyToOne', … … 134 134 'Ref' => 'Stock', 135 135 'Filter' => '1', 136 )); 136 )); 137 137 $this->System->FormManager->RegisterFormType('TStockMove', array( 138 138 'Type' => 'Reference', … … 167 167 function BeforeInsertStockMove($Form) 168 168 { 169 if(array_key_exists('Time', $Form->Values)) $Year = date("Y", $Form->Values['Time']);170 else $Year = date("Y", $Form->Values['ValidFrom']);169 if(array_key_exists('Time', $Form->Values)) $Year = date("Y", $Form->Values['Time']); 170 else $Year = date("Y", $Form->Values['ValidFrom']); 171 171 $DocumentLine = $Form->Values['DocumentLine']; 172 172 $Form->Values['BillCode'] = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year); -
trunk/Modules/Subject/Subject.php
r727 r738 28 28 'AddressCountry' => array('Type' => 'TCountry', 'Caption' => 'Země', 'Default' => ''), 29 29 'IC' => array('Type' => 'String', 'Caption' => 'IČ', 'Default' => ''), 30 'DIC' => array('Type' => 'String', 'Caption' => 'DIČ', 'Default' => ''), 30 'DIC' => array('Type' => 'String', 'Caption' => 'DIČ', 'Default' => ''), 31 31 'MapPosition' => array('Type' => 'TMapPosition', 'Caption' => 'Pozice na mapě', 'Default' => '', 'Null' => true), 32 32 'WWW' => array('Type' => 'Hyperlink', 'Caption' => 'WWW', 'Default' => ''), … … 39 39 'WHERE `FinanceOperation`.`Subject`=#Id), 0) - IFNULL((SELECT SUM(`FinanceInvoice`.`Value` * `FinanceInvoice`.`Direction`) FROM `FinanceInvoice` '. 40 40 'WHERE `FinanceInvoice`.`Subject`=#Id), 0)'), 41 'BankAccounts' => array('Type' => 'TFinanceBankAccountListSubject', 'Caption' => 'Bankovní účety', 'Default' => ''),41 'BankAccounts' => array('Type' => 'TFinanceBankAccountListSubject', 'Caption' => 'Bankovní účety', 'Default' => ''), 42 42 ), 43 43 )); -
trunk/Modules/System/System.php
r731 r738 2 2 3 3 class PageModules extends Page 4 { 4 { 5 5 function __construct($System) 6 6 { … … 10 10 $this->ParentClass = 'PagePortal'; 11 11 } 12 12 13 13 function ShowList() 14 14 { … … 17 17 $DbRow = $DbResult->fetch_row(); 18 18 $PageList = GetPageList($DbRow[0]); 19 19 20 20 $Output .= $PageList['Output']; 21 21 $Output .= '<table class="WideTable" style="font-size: small;">'; 22 22 23 23 $TableColumns = array( 24 24 array('Name' => 'Name', 'Title' => 'Jméno'), … … 37 37 'WHERE `ModuleLink`.`Module` = `Module`.`Id`) AS `Dependencies` '. 38 38 'FROM `Module` '.$Order['SQL'].$PageList['SQLLimit']; 39 39 40 40 $DbResult = $this->Database->query($Query); 41 41 while($Module = $DbResult->fetch_assoc()) … … 59 59 $Output .= $PageList['Output']; 60 60 $Output .= '<p><a href="?A=SaveToDb">Uložit do databáze</a></p>'; 61 return($Output); 62 } 63 61 return($Output); 62 } 63 64 64 function Show() 65 { 65 { 66 66 $Output = ''; 67 67 if(array_key_exists('A', $_GET)) 68 68 { 69 if($_GET['A'] == 'SaveToDb') 69 if($_GET['A'] == 'SaveToDb') 70 70 { 71 71 $Output .= $this->System->ModuleManager->Modules['System']->SaveToDatabase(); 72 $Output .= $this->SystemMessage('Načtení modulů', 'Seznam modulů v databázi zaktualizován'); 72 $Output .= $this->SystemMessage('Načtení modulů', 'Seznam modulů v databázi zaktualizován'); 73 73 } else 74 if($_GET['A'] == 'Install') 74 if($_GET['A'] == 'Install') 75 75 { 76 76 $this->System->ModuleManager->LoadModules(false); 77 77 $ModuleName = $this->System->ModuleManager->SearchModuleById($_GET['Id']); 78 if($ModuleName != '') 78 if($ModuleName != '') 79 79 { 80 80 $this->System->Modules[$ModuleName]->Install(); 81 81 $this->System->ModuleManager->Init(); 82 82 } else $Output .= 'Modul id '.$_GET['Id'].' nenalezen'; 83 83 84 84 } else 85 if($_GET['A'] == 'Uninstall') 85 if($_GET['A'] == 'Uninstall') 86 86 { 87 87 $ModuleName = $this->System->ModuleManager->SearchModuleById($_GET['Id']); 88 if($ModuleName != '') 88 if($ModuleName != '') 89 89 { 90 90 $this->System->ModuleManager->Modules[$ModuleName]->UnInstall(); 91 91 $this->System->ModuleManager->Init(); 92 92 } else $Output .= 'Modul id '.$_GET['Id'].' nenalezen'; 93 } else $Output .= 'Neplatná akce'; 93 } else $Output .= 'Neplatná akce'; 94 94 } 95 95 $Output .= $this->ShowList(); 96 return($Output); 97 } 98 } 96 return($Output); 97 } 98 } 99 99 100 100 class ModuleSystem extends AppModule 101 101 { 102 102 var $InstalledChecked; 103 103 104 104 function __construct($System) 105 105 { … … 112 112 $this->Dependencies = array(); 113 113 } 114 114 115 115 function DoInstall() 116 116 { … … 131 131 PRIMARY KEY (`Id`) 132 132 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1;'); 133 133 134 134 $this->Database->query('CREATE TABLE IF NOT EXISTS `SystemModuleDependency` ( 135 135 `Id` int(11) NOT NULL AUTO_INCREMENT, … … 143 143 $this->Database->query('ALTER TABLE `SystemModuleDependency` ADD CONSTRAINT `SystemModuleDependency_ibfk_1` FOREIGN KEY ( `Module` ) REFERENCES `SystemModule` (`Id`)'); 144 144 $this->Database->query('ALTER TABLE `SystemModuleDependency` ADD CONSTRAINT `SystemModuleDependency_ibfk_2` FOREIGN KEY ( `DependencyModule` ) REFERENCES `SystemModule` (`Id`)'); 145 145 146 146 $this->Database->query('CREATE TABLE IF NOT EXISTS `SystemModel` ( 147 147 `Id` int(11) NOT NULL AUTO_INCREMENT, … … 152 152 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1;'); 153 153 $this->Database->query('ALTER TABLE `SystemModel` ADD CONSTRAINT `SystemModel_ibfk_1` FOREIGN KEY ( `Module` ) REFERENCES `SystemModule` (`Id`)'); 154 154 155 155 $this->Database->query('CREATE TABLE IF NOT EXISTS `SystemModelProperty` ( 156 156 `Id` int(11) NOT NULL AUTO_INCREMENT, … … 163 163 $this->Database->query('ALTER TABLE `SystemModelProperty` ADD CONSTRAINT `SystemModelProperty_ibfk_1` FOREIGN KEY ( `Model` ) REFERENCES `SystemModel` (`Id`)'); 164 164 } 165 165 166 166 function DoUnInstall() 167 167 { … … 220 220 )); 221 221 $this->System->FormManager->RegisterClass('Module', array( 222 'Title' => 'Moduly',223 'Table' => 'Module',224 'Items' => array(225 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''),226 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''),227 'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),228 'Version' => array('Type' => 'String', 'Caption' => 'Verze', 'Default' => ''),229 'License' => array('Type' => 'String', 'Caption' => 'Licence', 'Default' => ''),230 'Creator' => array('Type' => 'String', 'Caption' => 'Tvůrce', 'Default' => ''),231 'HomePage' => array('Type' => 'Hyperlink', 'Caption' => 'Domovské stránky', 'Default' => ''), 232 'Installed' => array('Type' => 'Boolean', 'Caption' => 'Instalováno', 'Default' => '', 'ReadOnly' => true),233 'Models' => array('Type' => 'TModelListModule', 'Caption' => 'Modely', 'Default' => ''),234 'Links' => array('Type' => 'TModuleLinkListModule', 'Caption' => 'Vazby', 'Default' => ''),235 ),236 'Actions' => array(237 array('Caption' => 'Aktualizovat z disku', 'URL' => '/module/?A=SaveToDb'),238 ),222 'Title' => 'Moduly', 223 'Table' => 'Module', 224 'Items' => array( 225 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''), 226 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''), 227 'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''), 228 'Version' => array('Type' => 'String', 'Caption' => 'Verze', 'Default' => ''), 229 'License' => array('Type' => 'String', 'Caption' => 'Licence', 'Default' => ''), 230 'Creator' => array('Type' => 'String', 'Caption' => 'Tvůrce', 'Default' => ''), 231 'HomePage' => array('Type' => 'Hyperlink', 'Caption' => 'Domovské stránky', 'Default' => ''), 232 'Installed' => array('Type' => 'Boolean', 'Caption' => 'Instalováno', 'Default' => '', 'ReadOnly' => true), 233 'Models' => array('Type' => 'TModelListModule', 'Caption' => 'Modely', 'Default' => ''), 234 'Links' => array('Type' => 'TModuleLinkListModule', 'Caption' => 'Vazby', 'Default' => ''), 235 ), 236 'Actions' => array( 237 array('Caption' => 'Aktualizovat z disku', 'URL' => '/module/?A=SaveToDb'), 238 ), 239 239 )); 240 240 $this->System->FormManager->RegisterFormType('TModule', array( 241 'Type' => 'Reference',242 'Table' => 'Module',243 'Id' => 'Id',244 'Name' => 'Title',245 'Filter' => '1',241 'Type' => 'Reference', 242 'Table' => 'Module', 243 'Id' => 'Id', 244 'Name' => 'Title', 245 'Filter' => '1', 246 246 )); 247 247 $this->System->FormManager->RegisterFormType('TModelListModule', array( … … 253 253 )); 254 254 $this->System->FormManager->RegisterClass('Model', array( 255 'Title' => 'Modely',256 'Table' => 'Model',257 'Items' => array(258 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''),259 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''),260 'Module' => array('Type' => 'TModule', 'Caption' => 'Module', 'Default' => ''),261 'Query' => array('Type' => 'String', 'Caption' => 'SQL dotaz', 'Default' => ''),262 'DefaultSortColumn' => array('Type' => 'String', 'Caption' => 'Výchozí sloupce řazení', 'Default' => ''),263 'DefaultSortOrder' => array('Type' => 'Text', 'Caption' => 'Výchozí směr řazení', 'Default' => ''),264 'Fields' => array('Type' => 'TModelFieldListModel', 'Caption' => 'Pole', 'Default' => ''),265 ),255 'Title' => 'Modely', 256 'Table' => 'Model', 257 'Items' => array( 258 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''), 259 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''), 260 'Module' => array('Type' => 'TModule', 'Caption' => 'Module', 'Default' => ''), 261 'Query' => array('Type' => 'String', 'Caption' => 'SQL dotaz', 'Default' => ''), 262 'DefaultSortColumn' => array('Type' => 'String', 'Caption' => 'Výchozí sloupce řazení', 'Default' => ''), 263 'DefaultSortOrder' => array('Type' => 'Text', 'Caption' => 'Výchozí směr řazení', 'Default' => ''), 264 'Fields' => array('Type' => 'TModelFieldListModel', 'Caption' => 'Pole', 'Default' => ''), 265 ), 266 266 )); 267 267 $this->System->FormManager->RegisterFormType('TModel', array( 268 'Type' => 'Reference',269 'Table' => 'Model',270 'Id' => 'Id',271 'Name' => 'Title',272 'Filter' => '1',268 'Type' => 'Reference', 269 'Table' => 'Model', 270 'Id' => 'Id', 271 'Name' => 'Title', 272 'Filter' => '1', 273 273 )); 274 274 $this->System->FormManager->RegisterFormType('TModelFieldListModel', array( … … 280 280 )); 281 281 $this->System->FormManager->RegisterClass('ModelField', array( 282 'Title' => 'Pole modelu',283 'Table' => 'ModelField',284 'Items' => array(285 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''),286 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''),287 'Model' => array('Type' => 'TModel', 'Caption' => 'Model', 'Default' => ''),288 'Query' => array('Type' => 'String', 'Caption' => 'SQL dotaz', 'Default' => ''),289 'Type' => array('Type' => 'String', 'Caption' => 'Typ', 'Default' => ''),290 'DefaultValue' => array('Type' => 'String', 'Caption' => 'Výchozí hodnota', 'Default' => ''),291 'IsNull' => array('Type' => 'Boolean', 'Caption' => 'Také nulová hodnota', 'Default' => ''),292 'Suffix' => array('Type' => 'String', 'Caption' => 'Text za', 'Default' => ''),293 ),282 'Title' => 'Pole modelu', 283 'Table' => 'ModelField', 284 'Items' => array( 285 'Name' => array('Type' => 'String', 'Caption' => 'Systémové jméno', 'Default' => ''), 286 'Title' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''), 287 'Model' => array('Type' => 'TModel', 'Caption' => 'Model', 'Default' => ''), 288 'Query' => array('Type' => 'String', 'Caption' => 'SQL dotaz', 'Default' => ''), 289 'Type' => array('Type' => 'String', 'Caption' => 'Typ', 'Default' => ''), 290 'DefaultValue' => array('Type' => 'String', 'Caption' => 'Výchozí hodnota', 'Default' => ''), 291 'IsNull' => array('Type' => 'Boolean', 'Caption' => 'Také nulová hodnota', 'Default' => ''), 292 'Suffix' => array('Type' => 'String', 'Caption' => 'Text za', 'Default' => ''), 293 ), 294 294 )); 295 295 $this->System->FormManager->RegisterFormType('TModuleLink', array( 296 'Type' => 'Reference',297 'Table' => 'ModuleLink',298 'Id' => 'Id',299 'Name' => 'Module',300 'Filter' => '1',296 'Type' => 'Reference', 297 'Table' => 'ModuleLink', 298 'Id' => 'Id', 299 'Name' => 'Module', 300 'Filter' => '1', 301 301 )); 302 302 $this->System->FormManager->RegisterFormType('TModuleLinkListModule', array( … … 308 308 )); 309 309 $this->System->FormManager->RegisterClass('ModuleLink', array( 310 'Title' => 'Vazby modulu',311 'Table' => 'ModuleLink',312 'Items' => array(313 'Module' => array('Type' => 'TModule', 'Caption' => 'Modul', 'Default' => ''),314 'LinkedModule' => array('Type' => 'TModule', 'Caption' => 'Vázaný modul', 'Default' => ''),315 'Type' => array('Type' => 'String', 'Caption' => 'Typ vazby', 'Default' => ''),316 ),310 'Title' => 'Vazby modulu', 311 'Table' => 'ModuleLink', 312 'Items' => array( 313 'Module' => array('Type' => 'TModule', 'Caption' => 'Modul', 'Default' => ''), 314 'LinkedModule' => array('Type' => 'TModule', 'Caption' => 'Vázaný modul', 'Default' => ''), 315 'Type' => array('Type' => 'String', 'Caption' => 'Typ vazby', 'Default' => ''), 316 ), 317 317 )); 318 318 $this->System->FormManager->RegisterClass('Language', array( 319 'Title' => 'Jazyky',320 'Table' => 'Language',321 'DefaultSortColumn' => 'Name',322 'Items' => array(323 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),324 ),319 'Title' => 'Jazyky', 320 'Table' => 'Language', 321 'DefaultSortColumn' => 'Name', 322 'Items' => array( 323 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''), 324 ), 325 325 )); 326 326 $this->System->FormManager->RegisterClass('UnitOfMeasure', array( 327 'Title' => 'Měrné jednotky',328 'Table' => 'UnitOfMeasure',329 'DefaultSortColumn' => 'Name',330 'Items' => array(331 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),332 'Unit' => array('Type' => 'String', 'Caption' => 'Jednotka', 'Default' => ''),333 ),327 'Title' => 'Měrné jednotky', 328 'Table' => 'UnitOfMeasure', 329 'DefaultSortColumn' => 'Name', 330 'Items' => array( 331 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''), 332 'Unit' => array('Type' => 'String', 'Caption' => 'Jednotka', 'Default' => ''), 333 ), 334 334 )); 335 335 $this->System->FormManager->RegisterClass('Country', array( 336 'Title' => 'Země',337 'Table' => 'Country',338 'DefaultSortColumn' => 'Name',339 'Items' => array(340 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),341 ),336 'Title' => 'Země', 337 'Table' => 'Country', 338 'DefaultSortColumn' => 'Name', 339 'Items' => array( 340 'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''), 341 ), 342 342 )); 343 343 $this->System->FormManager->RegisterFormType('TCountry', array( 344 'Type' => 'Reference',345 'Table' => 'Country',346 'Id' => 'Id',347 'Name' => 'Name',348 'Filter' => '1',344 'Type' => 'Reference', 345 'Table' => 'Country', 346 'Id' => 'Id', 347 'Name' => 'Name', 348 'Filter' => '1', 349 349 )); 350 350 $this->System->FormManager->RegisterFormType('TUnitOfMeasure', array( 351 'Type' => 'Reference',352 'Table' => 'UnitOfMeasure',353 'Id' => 'Id',354 'Name' => 'Name',355 'Filter' => '1',351 'Type' => 'Reference', 352 'Table' => 'UnitOfMeasure', 353 'Id' => 'Id', 354 'Name' => 'Name', 355 'Filter' => '1', 356 356 )); 357 357 $this->System->FormManager->RegisterFormType('TLanguage', array( 358 'Type' => 'Reference',359 'Table' => 'Language',360 'Id' => 'Id',361 'Name' => 'Name',362 'Filter' => '1',358 'Type' => 'Reference', 359 'Table' => 'Language', 360 'Id' => 'Id', 361 'Name' => 'Name', 362 'Filter' => '1', 363 363 )); 364 364 $this->System->FormManager->RegisterFormType('TAction', array( 365 'Type' => 'Reference',366 'Table' => 'Action',367 'Id' => 'Id',368 'Name' => 'Title',369 'Filter' => '1',365 'Type' => 'Reference', 366 'Table' => 'Action', 367 'Id' => 'Id', 368 'Name' => 'Title', 369 'Filter' => '1', 370 370 )); 371 371 $this->System->FormManager->RegisterFormType('TActionIcon', array( 372 'Type' => 'Reference',373 'Table' => 'ActionIcon',374 'Id' => 'Id',375 'Name' => 'Name',376 'Filter' => '1',372 'Type' => 'Reference', 373 'Table' => 'ActionIcon', 374 'Id' => 'Id', 375 'Name' => 'Name', 376 'Filter' => '1', 377 377 )); 378 378 $this->System->FormManager->RegisterFormType('TActionType', array( 379 'Type' => 'Reference',380 'Table' => 'ActionType',381 'Id' => 'Id',382 'Name' => 'Name',383 'Filter' => '1',379 'Type' => 'Reference', 380 'Table' => 'ActionType', 381 'Id' => 'Id', 382 'Name' => 'Name', 383 'Filter' => '1', 384 384 )); 385 385 $this->System->FormManager->RegisterFormType('TActionGroup', array( 386 'Type' => 'Reference',387 'Table' => 'ActionGroup',388 'Id' => 'Id',389 'Name' => 'Name',390 'Filter' => '1',391 )); 386 'Type' => 'Reference', 387 'Table' => 'ActionGroup', 388 'Id' => 'Id', 389 'Name' => 'Name', 390 'Filter' => '1', 391 )); 392 392 $this->System->FormManager->RegisterFormType('TModule', array( 393 'Type' => 'Reference',394 'Table' => 'Module',395 'Id' => 'Id',396 'Name' => 'Name',397 'Filter' => '1',398 )); 399 393 'Type' => 'Reference', 394 'Table' => 'Module', 395 'Id' => 'Id', 396 'Name' => 'Name', 397 'Filter' => '1', 398 )); 399 400 400 //$this->Manager->OnModuleChange = array($this, 'ModuleChange'); 401 401 //$this->LoadFromDatabase(); 402 402 } 403 403 404 404 function DoStop() 405 405 { 406 406 } 407 407 408 408 function IsInstalled() 409 409 { … … 411 411 { 412 412 $DbResult = $this->Database->query('SELECT table_name FROM information_schema.tables 413 WHERE table_schema = "'.$this->Database->Database.'" AND table_name = "SystemVersion";'); 413 WHERE table_schema = "'.$this->Database->Database.'" AND table_name = "SystemVersion";'); 414 414 if($DbResult->num_rows > 0) $this->Installed = true; 415 415 else $this->Installed = false; 416 416 $this->InstalledChecked = true; 417 417 } 418 return($this->Installed); 419 } 420 418 return($this->Installed); 419 } 420 421 421 function ModuleChange($Module) 422 422 { 423 423 //if($this->IsInstalled()) 424 424 { 425 425 426 426 if($Module->IsInstalled()) $Installed = 1; 427 else $Installed = 0; 427 else $Installed = 0; 428 428 $this->Database->query('UPDATE `Module` SET `Installed`=1 WHERE `Name`="'.$Module->Name.'"'); 429 429 } 430 430 } 431 431 432 432 function LoadFromDatabase() 433 433 { … … 441 441 include_once('Modules/'.$Module['Name'].'/'.$Module['Name'].'.php'); 442 442 $ModuleClassName = 'Module'.$Module['Name']; 443 $NewModule = new $ModuleClassName($this->Database, $this->Manager); 443 $NewModule = new $ModuleClassName($this->Database, $this->Manager); 444 444 $NewModule->Id = $Module['Id']; 445 $NewModule->Installed = $Module['Installed']; 445 $NewModule->Installed = $Module['Installed']; 446 446 $this->Manager->RegisterModule($NewModule); 447 } 448 } 449 447 } 448 } 449 450 450 function SaveToDatabase() 451 451 { 452 $Output = '';452 $Output = ''; 453 453 $Modules = array(); 454 454 $DbResult = $this->Database->query('SELECT * FROM `Module`'); … … 461 461 462 462 // Add missing 463 foreach($this->System->ModuleManager->Modules as $Module) 464 { 463 foreach($this->System->ModuleManager->Modules as $Module) 464 { 465 465 if(!array_key_exists($Module->Name, $Modules)) 466 466 { 467 $this->Database->insert('Module', array('Name' => $Module->Name, 467 $this->Database->insert('Module', array('Name' => $Module->Name, 468 468 'Version' => $Module->Version, 'Creator' => $Module->Creator, 469 'HomePage' => $Module->HomePage, 'Title' => $Module->Title,469 'HomePage' => $Module->HomePage, 'Title' => $Module->Title, 470 470 'Description' => $Module->Description, 'License' => $Module->License, 471 471 'Installed' => $Module->Installed)); … … 474 474 else $this->Database->update('Module', 'Name = "'.$Module->Name.'"', array( 475 475 'Version' => $Module->Version, 'Creator' => $Module->Creator, 476 'HomePage' => $Module->HomePage, 'Title' => $Module->Title,476 'HomePage' => $Module->HomePage, 'Title' => $Module->Title, 477 477 'Description' => $Module->Description, 'License' => $Module->License, 478 478 'Installed' => $Module->Installed)); 479 479 } 480 480 481 481 // Remove exceeding 482 foreach($Modules as $Module) 482 foreach($Modules as $Module) 483 483 if(!$this->System->ModuleManager->ModulePresent($Module['Name'])) 484 484 { … … 487 487 $this->Database->query('DELETE FROM `ModuleLink` WHERE `LinkedModule` = '.$Module['Id']); 488 488 $DbResult = $this->Database->query('SELECT Id FROM `PermissionOperation` WHERE `Module` = '.$Module['Id']); 489 while($DbRow = $DbResult->fetch_assoc()) 489 while($DbRow = $DbResult->fetch_assoc()) 490 490 { 491 491 $this->Database->query('DELETE FROM `PermissionGroupAssignment` WHERE `AssignedOperation` = '.$DbRow['Id']); … … 498 498 $this->Database->query('DELETE FROM `ModelField` WHERE `Model` = '.$DbRow['Id']); 499 499 $this->Database->query('DELETE FROM `Module` WHERE `Id` = '.$Module['Id']); 500 } 501 500 } 501 502 502 // Reload dependencies 503 503 $DbDependency = array(); … … 505 505 while($DbRow = $DbResult->fetch_assoc()) 506 506 $DbDependency[$DbRow['Module']][] = $DbRow['LinkedModule']; 507 507 508 508 foreach($this->System->ModuleManager->Modules as $Module) 509 509 { … … 517 517 $DependencyId = $this->System->ModuleManager->Modules[$Dependency]->Id; 518 518 else throw new Exception('Dependent module '.$Dependency.' not found'); 519 $this->Database->insert('ModuleLink', array('Module' => $Module->Id, 519 $this->Database->insert('ModuleLink', array('Module' => $Module->Id, 520 520 'LinkedModule' => $DependencyId, 'Type' => 'DependOn')); 521 } 521 } 522 522 } 523 523 524 524 // Remove exceeding 525 525 if(array_key_exists($Module->Id, $DbDependency)) … … 530 530 $this->Database->query('DELETE FROM `ModuleLink` WHERE `Module` = '. 531 531 $Module->Id.' AND LinkedModule='.$Dep); 532 } 532 } 533 533 } 534 534 return($Output); 535 } 535 } 536 536 } -
trunk/Modules/TV/TV.php
r712 r738 8 8 var $ShortTitle = 'IPTV'; 9 9 var $ParentClass = 'PagePortal'; 10 10 11 11 function Show() 12 { 12 { 13 13 if(count($this->System->PathItems) > 1) 14 { 14 { 15 15 if($this->System->PathItems[1] == 'playlist.m3u') return($this->ShowPlayList()); 16 16 else return(PAGE_NOT_FOUND); 17 17 } else return($this->ShowChannelList()); 18 18 } 19 19 20 20 function ShowChannelList() 21 21 { 22 22 global $Channels; 23 23 24 24 $Output = 'Stažení přehrávače: <a href="http://www.videolan.org/vlc/">VLC Media Player</a><br/>'. 25 25 'Seznam všech kanálů do přehrávače: <a href="playlist.m3u">Playlist</a><br/>'. … … 28 28 '<div align="center"><strong>Výpis kanálů:</strong><br>'; 29 29 30 $Where = 30 $Where = 31 31 $DbResult = $this->Database->query('SELECT COUNT(*) FROM `TV` LEFT JOIN `TVGroup` ON `TVGroup`.`Id` = `TV`.`Category` '. 32 32 ' LEFT JOIN `Language` ON `Language`.`Id` = `TV`.`Language` WHERE (`TV`.`Stream` <> "") OR (`TV`.`StreamWeb` <> "")'); 33 33 $DbRow = $DbResult->fetch_row(); 34 $PageList = GetPageList($DbRow[0]); 34 $PageList = GetPageList($DbRow[0]); 35 35 36 36 $Output .= $PageList['Output']; 37 37 $Output .= '<table class="WideTable">'; 38 38 39 39 $TableColumns = array( 40 array('Name' => 'Name', 'Title' => 'Jméno stanice'), 41 array('Name' => 'Language', 'Title' => 'Jazyk'), 42 array('Name' => 'Category', 'Title' => 'Zaměření'), 43 array('Name' => 'SourceType', 'Title' => 'Zdroj'), 44 array('Name' => '', 'Title' => 'Ladění'), 40 array('Name' => 'Name', 'Title' => 'Jméno stanice'), 41 array('Name' => 'Language', 'Title' => 'Jazyk'), 42 array('Name' => 'Category', 'Title' => 'Zaměření'), 43 array('Name' => 'SourceType', 'Title' => 'Zdroj'), 44 array('Name' => '', 'Title' => 'Ladění'), 45 45 ); 46 46 $Order = GetOrderTableHeader($TableColumns, 'Name', 0); … … 51 51 52 52 $DbResult = $this->Database->query($Query); 53 while($Line = $DbResult->fetch_assoc()) 54 { 53 while($Line = $DbResult->fetch_assoc()) 54 { 55 55 if($Line['Stream'] <> '') $Line['Show'] = '<a href="playlist.m3u?id='.$Line['ShortName'].'">Naladit</a>'; 56 56 else 57 57 if($Line['StreamWeb'] <> '') $Line['Show'] = '<a href="'.$Line['StreamWeb'].'">Naladit</a>'; 58 58 else $Line['Show'] = ' '; 59 59 60 60 $Output .= '<tr><td><a href="'.$Line['Homepage'].'">'.$Line['Name'].'</a></td>'. 61 61 '<td>'.$Line['Language'].'</td>'. … … 66 66 $Output .= '</table>'; 67 67 $Output .= $PageList['Output']; 68 68 69 69 $Output .= '</div><br/>'; 70 70 71 71 $Output .= 'Další online TV na webu: <a href="http://spustit.cz">Spustit.cz</a><br/>'; 72 72 $Output .= 'Další online TV na webu: <a href="http://www.tvinfo.cz/live/televize/evropa/cz">TV info</a><br/>'; 73 73 74 74 return($Output); 75 75 } … … 78 78 { 79 79 $this->ClearPage = true; 80 80 81 81 Header("Content-Type: audio/mpegurl"); 82 82 Header("Content-Disposition: attachment; filename=playlist.m3u"); … … 101 101 } 102 102 } 103 } 103 } 104 104 } 105 105 … … 115 115 $this->Description = 'Television channels management'; 116 116 $this->Dependencies = array(); 117 } 117 } 118 118 119 119 function DoInstall() 120 120 { 121 121 } 122 122 123 123 function DoUninstall() 124 { 124 { 125 125 } 126 126 127 127 function DoStart() 128 128 { … … 155 155 )); 156 156 $this->System->FormManager->RegisterFormType('TTVGroup', array( 157 'Type' => 'Reference',158 'Table' => 'TVGroup',159 'Id' => 'Id',160 'Name' => 'Name',161 'Filter' => '1',157 'Type' => 'Reference', 158 'Table' => 'TVGroup', 159 'Id' => 'Id', 160 'Name' => 'Name', 161 'Filter' => '1', 162 162 )); 163 163 $this->System->FormManager->RegisterFormType('TTVListCategory', array( 164 'Type' => 'ManyToOne',165 'Table' => 'TV',166 'Id' => 'Id',167 'Ref' => 'Category',168 'Filter' => '1',169 )); 170 } 171 164 'Type' => 'ManyToOne', 165 'Table' => 'TV', 166 'Id' => 'Id', 167 'Ref' => 'Category', 168 'Filter' => '1', 169 )); 170 } 171 172 172 function DoStop() 173 { 174 } 173 { 174 } 175 175 } -
trunk/Modules/Task/Task.php
r712 r738 68 68 )); 69 69 $this->System->FormManager->RegisterFormType('TWorkListTask', array( 70 'Type' => 'ManyToOne',71 'Table' => 'Work',72 'Id' => 'Id',73 'Ref' => 'Task',74 'Filter' => '1',70 'Type' => 'ManyToOne', 71 'Table' => 'Work', 72 'Id' => 'Id', 73 'Ref' => 'Task', 74 'Filter' => '1', 75 75 )); 76 76 $this->System->FormManager->RegisterFormType('TTaskList', array( 77 'Type' => 'ManyToOne',78 'Table' => 'Task',79 'Id' => 'Id',80 'Ref' => 'Group',81 'Filter' => '1',77 'Type' => 'ManyToOne', 78 'Table' => 'Task', 79 'Id' => 'Id', 80 'Ref' => 'Group', 81 'Filter' => '1', 82 82 )); 83 83 $this->System->FormManager->RegisterFormType('TTaskGroup', array( 84 'Type' => 'Reference',85 'Table' => 'TaskGroup',86 'Id' => 'Id',87 'Name' => 'Name',88 'Filter' => '1',84 'Type' => 'Reference', 85 'Table' => 'TaskGroup', 86 'Id' => 'Id', 87 'Name' => 'Name', 88 'Filter' => '1', 89 89 )); 90 90 91 91 } 92 92 } -
trunk/Modules/TimeMeasure/Graph.php
r656 r738 20 20 { 21 21 $this->ClearPage = true; 22 return($this->Render());22 return($this->Render()); 23 23 } 24 24 -
trunk/Modules/TimeMeasure/Main.php
r656 r738 16 16 $this->ImageHeight = 200; 17 17 $this->ParentClass = 'PagePortal'; 18 $this->DefaultVariables = array(18 $this->DefaultVariables = array( 19 19 'TimeSpecify' => 0, 20 20 'Period' => 'day', -
trunk/Modules/TimeMeasure/Measurement/MeasureClient.php
r548 r738 26 26 } else echo('Třída '.$MeasureMethod['MeasureClass'].' neexistuje.'); 27 27 } 28 } 28 } 29 29 } -
trunk/Modules/TimeMeasure/Measurement/WoW.php
r536 r738 28 28 $DbResult = $Database->query('SELECT COUNT(*) FROM account'); 29 29 $Row = $DbResult->fetch_array(); 30 return($Row[0]); 30 return($Row[0]); 31 31 } 32 32 … … 57 57 function WoWEmulatorAvailability() 58 58 { 59 if(CheckPortStatus('localhost', 8085)) return(100); else return(0); 59 if(CheckPortStatus('localhost', 8085)) return(100); else return(0); 60 60 } 61 61 -
trunk/Modules/User/User.php
r729 r738 434 434 class ModuleUser extends AppModule 435 435 { 436 var $UserPanel;436 var $UserPanel; 437 437 438 438 function __construct($System) … … 659 659 )); 660 660 $this->System->FormManager->RegisterFormType('TUser', array( 661 'Type' => 'Reference',662 'Table' => 'User',663 'Id' => 'Id',664 'Name' => 'Name',665 'Filter' => '1',661 'Type' => 'Reference', 662 'Table' => 'User', 663 'Id' => 'Id', 664 'Name' => 'Name', 665 'Filter' => '1', 666 666 )); 667 667 $this->System->FormManager->RegisterFormType('TPermissionGroup', array( 668 'Type' => 'Reference',669 'Table' => 'PermissionGroup',670 'Id' => 'Id',671 'Name' => 'Description',672 'Filter' => '1',668 'Type' => 'Reference', 669 'Table' => 'PermissionGroup', 670 'Id' => 'Id', 671 'Name' => 'Description', 672 'Filter' => '1', 673 673 )); 674 674 $this->System->FormManager->RegisterFormType('TPermissionGroupAssignment', array( 675 'Type' => 'Reference',676 'Table' => 'PermissionGroupAssignment',677 'Id' => 'Id',678 'Name' => 'Id',679 'Filter' => '1',675 'Type' => 'Reference', 676 'Table' => 'PermissionGroupAssignment', 677 'Id' => 'Id', 678 'Name' => 'Id', 679 'Filter' => '1', 680 680 )); 681 681 $this->System->FormManager->RegisterFormType('TPermissionOperation', array( 682 'Type' => 'Reference',683 'Table' => 'PermissionOperation',684 'Id' => 'Id',685 'Name' => 'Id',686 'Filter' => '1',687 )); 688 682 'Type' => 'Reference', 683 'Table' => 'PermissionOperation', 684 'Id' => 'Id', 685 'Name' => 'Id', 686 'Filter' => '1', 687 )); 688 689 689 } 690 690 … … 695 695 function TopBarCallback() 696 696 { 697 if($this->System->User->User['Id'] == null) 697 if($this->System->User->User['Id'] == null) 698 698 { 699 699 $Output = '<a href="'.$this->System->Link('/user/?Action=LoginForm').'">Přihlášení</a> '. 700 700 '<a href="'.$this->System->Link('/user/?Action=UserRegister').'">Registrace</a>'; 701 } else 702 { 703 $Output = $this->System->User->User['Name'].701 } else 702 { 703 $Output = $this->System->User->User['Name']. 704 704 ' <a href="'.$this->System->Link('/user/?Action=UserMenu').'">Nabídka</a>'. 705 705 ' <a href="'.$this->System->Link('/user/?Action=Logout').'">Odhlásit</a>'; 706 // <a href="'.$this->System->Link('/?Action=UserOptions').'">Nastavení</a>';706 // <a href="'.$this->System->Link('/?Action=UserOptions').'">Nastavení</a>'; 707 707 } 708 708 return($Output); -
trunk/Modules/User/UserPage.php
r694 r738 54 54 if($this->System->User->User['Id'] != null) 55 55 { 56 $Actions = '';57 foreach($this->System->ModuleManager->Modules['User']->UserPanel as $Action)58 {59 if(is_string($Action[0]))60 {61 $Class = new $Action[0]($this->System);62 $Actions .= $Class->$Action[1]();63 } else $Actions .= call_user_func($Action).'<br/>';64 }56 $Actions = ''; 57 foreach($this->System->ModuleManager->Modules['User']->UserPanel as $Action) 58 { 59 if(is_string($Action[0])) 60 { 61 $Class = new $Action[0]($this->System); 62 $Actions .= $Class->$Action[1](); 63 } else $Actions .= call_user_func($Action).'<br/>'; 64 } 65 65 $Output .= '<div class="Centred"><table id="MainTable"><tr><td style="vertical-align:top;">'; 66 66 $Output .= $this->Panel('Nabídka uživatele', $Actions); … … 83 83 } 84 84 85 function Show()86 {87 $Output = '';85 function Show() 86 { 87 $Output = ''; 88 88 if(array_key_exists('Action', $_GET)) 89 89 { … … 209 209 } else $Output = $this->ShowMain(); 210 210 return($Output); 211 }212 213 function ShowMain()214 {215 $Output = 'Nebyla vybrána akce';216 return($Output);217 }211 } 212 213 function ShowMain() 214 { 215 $Output = 'Nebyla vybrána akce'; 216 return($Output); 217 } 218 218 } -
trunk/Modules/VPS/VPS.php
r731 r738 15 15 $this->Modules = array(); 16 16 } 17 17 18 18 function DoStart() 19 19 { 20 21 } 20 21 } 22 22 } -
trunk/Modules/WebCam/WebCam.php
r586 r738 6 6 var $ShortTitle = 'Kamera'; 7 7 var $ParentClass = 'PagePortal'; 8 8 9 9 function Show() 10 10 { … … 17 17 var theTimer = setTimeout("reloadImage()", 1); 18 18 19 function reloadImage() 19 function reloadImage() 20 20 { 21 21 theDate = new Date(); … … 57 57 $this->SupportedModels = array(); 58 58 } 59 59 60 60 function DoStart() 61 61 { 62 62 $this->System->Pages['webcam'] = 'PageWebcam'; 63 } 63 } 64 64 65 65 function ShowImage() … … 71 71 $Output .= '<a href="http://www.zdechov.net/kamery/?id=3"><img alt="Skiareál, motokrosová grapa" width="140" height="79" src="http://www.zdechov.net/images/webcam/webcam3.jpg" /></a>'; 72 72 $Output .= '<a href="http://www.zdechov.net/kamery/?id=4"><img alt="Fotbalové hřiště" width="140" height="79" src="http://www.zdechov.net/images/webcam/webcam4.jpg" /></a>'; 73 return($Output);74 } 73 return($Output); 74 } 75 75 } -
trunk/Modules/WebCam/webcam_refresh.php
r579 r738 10 10 // $Output = shell_exec('wget "http://kamera-stred/Webcam.jpg?MobilePass='.$Config['Web']['WebcamPassword'].'&V=2&Q=2&B=2&U=0" -O webcam_cache.jpg -T '.($Config['Web']['WebcamRefresh']).' --limit-rate=200k'); 11 11 $Output = shell_exec('wget "http://kamera-knihovna/cgi-bin/viewer/video.jpg" -O webcam_cache.jpg -T '.($Config['Web']['WebcamRefresh']).' --limit-rate=200k'); 12 13 if((strpos($Output, 'failed') === false) and (strpos($Output, 'error') === false)) 12 13 if((strpos($Output, 'failed') === false) and (strpos($Output, 'error') === false)) 14 14 shell_exec('mv -f webcam_cache.jpg webcam.jpg'); 15 15 } -
trunk/Modules/Wiki/Wiki.php
r586 r738 14 14 $this->Revision = 1; 15 15 } 16 16 17 17 function DoInstall() 18 18 { 19 19 parent::Install(); 20 20 $this->Database->Query("'CREATE TABLE IF NOT EXISTS `WikiPage` ( 21 `Id` int(11) NOT NULL AUTO_INCREMENT,22 `Name` varchar(255) NOT NULL,23 `NormalizedName` varchar(255) NOT NULL,24 `VisibleInMenu` int(11) NOT NULL,25 PRIMARY KEY (`Id`),26 UNIQUE KEY `Name` (`Name`),27 KEY `VisibleInMenu` (`VisibleInMenu`)21 `Id` int(11) NOT NULL AUTO_INCREMENT, 22 `Name` varchar(255) NOT NULL, 23 `NormalizedName` varchar(255) NOT NULL, 24 `VisibleInMenu` int(11) NOT NULL, 25 PRIMARY KEY (`Id`), 26 UNIQUE KEY `Name` (`Name`), 27 KEY `VisibleInMenu` (`VisibleInMenu`) 28 28 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 29 29 CREATE TABLE IF NOT EXISTS `WikiPageContent` ( 30 `Id` int(11) NOT NULL AUTO_INCREMENT,31 `Page` int(11) NOT NULL,32 `Time` datetime NOT NULL,33 `Content` text NOT NULL,34 `User` int(11) NOT NULL,35 PRIMARY KEY (`Id`),36 KEY `User` (`User`),37 KEY `Page` (`Page`)30 `Id` int(11) NOT NULL AUTO_INCREMENT, 31 `Page` int(11) NOT NULL, 32 `Time` datetime NOT NULL, 33 `Content` text NOT NULL, 34 `User` int(11) NOT NULL, 35 PRIMARY KEY (`Id`), 36 KEY `User` (`User`), 37 KEY `Page` (`Page`) 38 38 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 39 39 ALTER TABLE `WikiPageContent` … … 47 47 'DELETE TABLE `WikiPage`;"); 48 48 parent::UnInstall(); 49 } 50 49 } 50 51 51 function DoStart() 52 52 { 53 53 $this->LoadPages(); 54 54 } 55 55 56 56 function DoStop() 57 57 { 58 58 } 59 59 60 60 function LoadPages() 61 61 { 62 $DbResult = $this->Database->select('WikiPage', '*', 'VisibleInMenu=1');63 while($DbRow = $DbResult->fetch_assoc())64 {65 $this->System->RegisterPage($DbRow['NormalizedName'], 'PageWiki');66 $this->System->RegisterMenuItem(array(67 'Title' => $DbRow['Name'],68 'Hint' => '',69 'Link' => $this->System->Link('/'.$DbRow['NormalizedName'].'/'),70 'Permission' => LICENCE_ANONYMOUS,71 'Icon' => '',72 ), 2);73 }62 $DbResult = $this->Database->select('WikiPage', '*', 'VisibleInMenu=1'); 63 while($DbRow = $DbResult->fetch_assoc()) 64 { 65 $this->System->RegisterPage($DbRow['NormalizedName'], 'PageWiki'); 66 $this->System->RegisterMenuItem(array( 67 'Title' => $DbRow['Name'], 68 'Hint' => '', 69 'Link' => $this->System->Link('/'.$DbRow['NormalizedName'].'/'), 70 'Permission' => LICENCE_ANONYMOUS, 71 'Icon' => '', 72 ), 2); 73 } 74 74 } 75 75 } … … 80 80 var $ShortTitle = 'Wiki'; 81 81 var $ParentClass = 'PagePortal'; 82 82 83 83 function Show() 84 {85 if(array_key_exists('Action', $_GET))86 {87 if($_GET['Action'] == 'Edit') $Output = $this->EditContent();88 else if($_GET['Action'] == 'EditSave') $Output = $this->SaveContent();89 else if($_GET['Action'] == 'History') $Output = $this->ShowHistory();90 else $Output = $this->ShowContent();91 } else $Output = $this->ShowContent();92 return($Output);93 }94 95 function ShowContent()96 {97 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1];98 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"');99 if($DbResult->num_rows > 0)100 {101 $DbRow = $DbResult->fetch_assoc();102 if(array_key_exists('ver', $_GET))103 {104 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' AND Id='.$_GET['ver']*1);105 if($DbResult2->num_rows > 0)106 {107 $DbRow2 = $DbResult2->fetch_assoc();108 $Output = '<h3>Archív stránky '.$DbRow['Name'].' ('.HumanDateTime($DbRow2['Time']).')</h3>';109 $Output .= $DbRow2['Content'];110 if($this->System->User->Licence(LICENCE_MODERATOR))111 $Output .= '<div><a href="?Action=Edit">Upravit nejnovější</a> <a href="?Action=History">Historie</a></div>';112 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);113 } else 114 {115 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' ORDER BY Time DESC LIMIT 1');116 if($DbResult2->num_rows > 0)117 {118 $DbRow2 = $DbResult2->fetch_assoc();119 $Output = '<h3>'.$DbRow['Name'].'</h3>';120 $Output .= $DbRow2['Content'];121 if($this->System->User->Licence(LICENCE_MODERATOR))122 $Output .= '<div><a href="?Action=Edit">Upravit</a> <a href="?Action=History">Historie</a></div>';123 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);124 }125 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);126 return($Output);127 }128 129 function EditContent()130 {131 if($this->System->User->Licence(LICENCE_MODERATOR))132 {133 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1];134 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"');135 if($DbResult->num_rows > 0)136 {137 $DbRow = $DbResult->fetch_assoc();138 $Output = '<h3>Úprava '.$DbRow['Name'].'</h3>';139 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' ORDER BY Time DESC LIMIT 1');140 if($DbResult2->num_rows > 0)141 {142 $DbRow2 = $DbResult2->fetch_assoc();143 $Output .= '<form action="?Action=EditSave" method="post">'.144 '<textarea name="content" rows="8" cols="80" onkeydown="ResizeTextArea(this)" class="textedit">'.$DbRow2['Content'].'</textarea><br/>'.145 '<input type="submit" name="save" value="Uložit"/> '.146 '<input type="button" name="cancel" value="Zrušit" onclick="location.href=\'?\'"/>'.147 '</form>';148 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);149 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);150 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL);151 return($Output);152 }153 154 function SaveContent()155 {156 if($this->System->User->Licence(LICENCE_MODERATOR))157 {158 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1];159 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"');160 if($DbResult->num_rows > 0)161 {162 $DbRow = $DbResult->fetch_assoc();163 if(array_key_exists('content', $_POST) and array_key_exists('save', $_POST))164 {165 $DbResult2 = $this->Database->insert('WikiPageContent', array('Content' => stripslashes($_POST['content']),166 'User' => $this->System->User->Id, 'Time' => 'NOW()', 'Page' => $DbRow['Id']));167 $Output = ShowMessage('Wiki stránka uložena', MESSAGE_INFORMATION); 168 } else $Output = ShowMessage('Nezadána platná data', MESSAGE_CRITICAL);169 $Output .= $this->ShowContent();170 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);171 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL);172 return($Output);173 }174 175 function ShowHistory()176 { 177 if($this->System->User->Licence(LICENCE_MODERATOR))178 {179 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1];180 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"');181 if($DbResult->num_rows > 0)182 {183 $DbRow = $DbResult->fetch_assoc();184 185 $Output = '<h3>Historie stránky '.$DbRow['Name'].'</h3>';186 $DbResult2 = $this->Database->query('SELECT COUNT(*) FROM `WikiPageContent` WHERE Page='.$DbRow['Id']);187 $DbRow2 = $DbResult2->fetch_row();188 $PageList = GetPageList($DbRow2[0]);189 190 $Output .= $PageList['Output'];191 $Output .= '<table class="BaseTable">';192 193 $TableColumns = array(194 array('Name' => 'Time', 'Title' => 'Čas'),195 array('Name' => 'User', 'Title' => 'Uživatel'),196 array('Name' => 'Action', 'Title' => 'Akce'),197 );198 199 $Order = GetOrderTableHeader($TableColumns, 'Time', 1);200 $Output .= $Order['Output'];201 202 $DbResult2 = $this->Database->query('SELECT *, (SELECT `Name` FROM `User` WHERE `User`.`ID`=`WikiPageContent`.`User`) AS `UserName` '.203 ' FROM `WikiPageContent` WHERE Page='.204 $DbRow['Id'].' '.$Order['SQL'].$PageList['SQLLimit']);205 while($PageContent = $DbResult2->fetch_assoc())206 {207 $Output .= '<tr>'.208 '<td>'.HumanDateTime($PageContent['Time']).'</td>'.209 '<td><a href="'.$this->System->Link('/user.php?user='.$PageContent['User']).'">'.$PageContent['UserName'].'</a></td>'.210 '<td><a href="?id='.$PageContent['Id'].'&ver='.$PageContent['Id'].'">Zobrazit</a></td>';211 $Output .= '</tr>';212 } 213 214 $Output .= '</table>'.215 $PageList['Output'];216 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL);217 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL);218 return($Output);219 } 220 84 { 85 if(array_key_exists('Action', $_GET)) 86 { 87 if($_GET['Action'] == 'Edit') $Output = $this->EditContent(); 88 else if($_GET['Action'] == 'EditSave') $Output = $this->SaveContent(); 89 else if($_GET['Action'] == 'History') $Output = $this->ShowHistory(); 90 else $Output = $this->ShowContent(); 91 } else $Output = $this->ShowContent(); 92 return($Output); 93 } 94 95 function ShowContent() 96 { 97 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1]; 98 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"'); 99 if($DbResult->num_rows > 0) 100 { 101 $DbRow = $DbResult->fetch_assoc(); 102 if(array_key_exists('ver', $_GET)) 103 { 104 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' AND Id='.$_GET['ver']*1); 105 if($DbResult2->num_rows > 0) 106 { 107 $DbRow2 = $DbResult2->fetch_assoc(); 108 $Output = '<h3>Archív stránky '.$DbRow['Name'].' ('.HumanDateTime($DbRow2['Time']).')</h3>'; 109 $Output .= $DbRow2['Content']; 110 if($this->System->User->Licence(LICENCE_MODERATOR)) 111 $Output .= '<div><a href="?Action=Edit">Upravit nejnovější</a> <a href="?Action=History">Historie</a></div>'; 112 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 113 } else 114 { 115 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' ORDER BY Time DESC LIMIT 1'); 116 if($DbResult2->num_rows > 0) 117 { 118 $DbRow2 = $DbResult2->fetch_assoc(); 119 $Output = '<h3>'.$DbRow['Name'].'</h3>'; 120 $Output .= $DbRow2['Content']; 121 if($this->System->User->Licence(LICENCE_MODERATOR)) 122 $Output .= '<div><a href="?Action=Edit">Upravit</a> <a href="?Action=History">Historie</a></div>'; 123 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 124 } 125 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 126 return($Output); 127 } 128 129 function EditContent() 130 { 131 if($this->System->User->Licence(LICENCE_MODERATOR)) 132 { 133 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1]; 134 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"'); 135 if($DbResult->num_rows > 0) 136 { 137 $DbRow = $DbResult->fetch_assoc(); 138 $Output = '<h3>Úprava '.$DbRow['Name'].'</h3>'; 139 $DbResult2 = $this->Database->select('WikiPageContent', '*', 'Page='.$DbRow['Id'].' ORDER BY Time DESC LIMIT 1'); 140 if($DbResult2->num_rows > 0) 141 { 142 $DbRow2 = $DbResult2->fetch_assoc(); 143 $Output .= '<form action="?Action=EditSave" method="post">'. 144 '<textarea name="content" rows="8" cols="80" onkeydown="ResizeTextArea(this)" class="textedit">'.$DbRow2['Content'].'</textarea><br/>'. 145 '<input type="submit" name="save" value="Uložit"/> '. 146 '<input type="button" name="cancel" value="Zrušit" onclick="location.href=\'?\'"/>'. 147 '</form>'; 148 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 149 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 150 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL); 151 return($Output); 152 } 153 154 function SaveContent() 155 { 156 if($this->System->User->Licence(LICENCE_MODERATOR)) 157 { 158 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1]; 159 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"'); 160 if($DbResult->num_rows > 0) 161 { 162 $DbRow = $DbResult->fetch_assoc(); 163 if(array_key_exists('content', $_POST) and array_key_exists('save', $_POST)) 164 { 165 $DbResult2 = $this->Database->insert('WikiPageContent', array('Content' => stripslashes($_POST['content']), 166 'User' => $this->System->User->Id, 'Time' => 'NOW()', 'Page' => $DbRow['Id'])); 167 $Output = ShowMessage('Wiki stránka uložena', MESSAGE_INFORMATION); 168 } else $Output = ShowMessage('Nezadána platná data', MESSAGE_CRITICAL); 169 $Output .= $this->ShowContent(); 170 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 171 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL); 172 return($Output); 173 } 174 175 function ShowHistory() 176 { 177 if($this->System->User->Licence(LICENCE_MODERATOR)) 178 { 179 $PageName = $this->System->PathItems[count($this->System->PathItems) - 1]; 180 $DbResult = $this->Database->select('WikiPage', 'Name, Id', 'NormalizedName="'.$PageName.'"'); 181 if($DbResult->num_rows > 0) 182 { 183 $DbRow = $DbResult->fetch_assoc(); 184 185 $Output = '<h3>Historie stránky '.$DbRow['Name'].'</h3>'; 186 $DbResult2 = $this->Database->query('SELECT COUNT(*) FROM `WikiPageContent` WHERE Page='.$DbRow['Id']); 187 $DbRow2 = $DbResult2->fetch_row(); 188 $PageList = GetPageList($DbRow2[0]); 189 190 $Output .= $PageList['Output']; 191 $Output .= '<table class="BaseTable">'; 192 193 $TableColumns = array( 194 array('Name' => 'Time', 'Title' => 'Čas'), 195 array('Name' => 'User', 'Title' => 'Uživatel'), 196 array('Name' => 'Action', 'Title' => 'Akce'), 197 ); 198 199 $Order = GetOrderTableHeader($TableColumns, 'Time', 1); 200 $Output .= $Order['Output']; 201 202 $DbResult2 = $this->Database->query('SELECT *, (SELECT `Name` FROM `User` WHERE `User`.`ID`=`WikiPageContent`.`User`) AS `UserName` '. 203 ' FROM `WikiPageContent` WHERE Page='. 204 $DbRow['Id'].' '.$Order['SQL'].$PageList['SQLLimit']); 205 while($PageContent = $DbResult2->fetch_assoc()) 206 { 207 $Output .= '<tr>'. 208 '<td>'.HumanDateTime($PageContent['Time']).'</td>'. 209 '<td><a href="'.$this->System->Link('/user.php?user='.$PageContent['User']).'">'.$PageContent['UserName'].'</a></td>'. 210 '<td><a href="?id='.$PageContent['Id'].'&ver='.$PageContent['Id'].'">Zobrazit</a></td>'; 211 $Output .= '</tr>'; 212 } 213 214 $Output .= '</table>'. 215 $PageList['Output']; 216 } else $Output = ShowMessage('Wiki stránka nenalezena', MESSAGE_CRITICAL); 217 } else $Output = ShowMessage('Nemáte oprávnění', MESSAGE_CRITICAL); 218 return($Output); 219 } 220 221 221 function ToHtml($text) 222 222 { -
trunk/temp/Bills.php
r627 r738 15 15 if(strpos($Invoice['Text'], 'Poplatek za měsíc') !== false) 16 16 { 17 $Time = MysqlDateTimeToTime($Invoice['Time']);18 $TimeParts = ExtractTime($Time);19 $PeriodFrom = mktime($TimeParts['Hour'], $TimeParts['Minute'], $TimeParts['Second'],20 $TimeParts['Month'], 1, $TimeParts['Year']);21 $PeriodTo = mktime($TimeParts['Hour'], $TimeParts['Minute'], $TimeParts['Second'],22 $TimeParts['Month'], date('t', $Time), $TimeParts['Year']);23 $System->Database->query('UPDATE FinanceInvoice SET PeriodFrom = "'.TimeToMysqlDate($PeriodFrom).17 $Time = MysqlDateTimeToTime($Invoice['Time']); 18 $TimeParts = ExtractTime($Time); 19 $PeriodFrom = mktime($TimeParts['Hour'], $TimeParts['Minute'], $TimeParts['Second'], 20 $TimeParts['Month'], 1, $TimeParts['Year']); 21 $PeriodTo = mktime($TimeParts['Hour'], $TimeParts['Minute'], $TimeParts['Second'], 22 $TimeParts['Month'], date('t', $Time), $TimeParts['Year']); 23 $System->Database->query('UPDATE FinanceInvoice SET PeriodFrom = "'.TimeToMysqlDate($PeriodFrom). 24 24 '", PeriodTo ="'.TimeToMysqlDate($PeriodTo).'" WHERE Id='.$Invoice['Id']); 25 25 } 26 26 if(strpos($Invoice['Text'], 'za období') !== false) 27 27 { 28 $Period = substr($Invoice['Text'], strpos($Invoice['Text'], 'za období') + 10);29 $PeriodFrom = strtotime(substr($Period, 0, strpos($Period, '-')));30 $PeriodTo = strtotime(substr($Period, strpos($Period, '-') + 1));31 $System->Database->query('UPDATE FinanceInvoice SET PeriodFrom = "'.TimeToMysqlDate($PeriodFrom).32 '", PeriodTo ="'.TimeToMysqlDate($PeriodTo).'" WHERE Id='.$Invoice['Id']);33 28 $Period = substr($Invoice['Text'], strpos($Invoice['Text'], 'za období') + 10); 29 $PeriodFrom = strtotime(substr($Period, 0, strpos($Period, '-'))); 30 $PeriodTo = strtotime(substr($Period, strpos($Period, '-') + 1)); 31 $System->Database->query('UPDATE FinanceInvoice SET PeriodFrom = "'.TimeToMysqlDate($PeriodFrom). 32 '", PeriodTo ="'.TimeToMysqlDate($PeriodTo).'" WHERE Id='.$Invoice['Id']); 33 34 34 } 35 35 36 36 // SELECT * FROM (SELECT FinanceInvoice.Id, FinanceInvoice.Subject, FinanceInvoice.Value, (SELECT SUM(FinanceBillsItems.Price) FROM FinanceBillsItems WHERE FinanceBillsItems.Bill = FinanceBills.Id) AS BillPrice, (SELECT COUNT(FinanceBillsItems.Price) FROM FinanceBillsItems WHERE FinanceBillsItems.Bill = FinanceBills.Id) AS BillCount, (SELECT GROUP_CONCAT(FinanceBillsItems.Description SEPARATOR ",") FROM FinanceBillsItems WHERE FinanceBillsItems.Bill = FinanceBills.Id GROUP BY FinanceBillsItems.Bill) AS Items, FinanceInvoice.Text FROM `FinanceInvoice` LEFT JOIN FinanceBills ON FinanceBills.Id = FinanceInvoice.Bill WHERE FinanceInvoice.Bill IS NOT NULL) AS T WHERE Text <> Items AND Items <> "Poplatek za připojení k síti" 37 37 38 38 while($BillItem = $DbResult3->fetch_assoc()) 39 39 { -
trunk/temp/FioCVSToSQL.php
r572 r738 21 21 $Value = str_replace(' ', '', $Value); 22 22 $Text = $Line[9]; 23 if($Value > 0) 23 if($Value > 0) 24 24 { 25 25 $BillCode = 'BV'.$BVId.'/2013'; … … 31 31 } 32 32 if($Subject == '0094579415') $Subject = 72; 33 33 34 34 $Output .= "INSERT INTO `FinanceOperation` (`Id`, `Time`, `Subject`, `Cash`, `Value`, `BillCode`, `Taxable`, `File`, `Text`, `Network`, `BankAccount`, `Treasury`) VALUES 35 35 (NULL, '".TimeToMySQLDateTime($Date)."', ".$Subject.", 0, '".$Value."', '".$BillCode."', 1, NULL, '".$Text."', 1, 2, NULL);\n"; -
trunk/temp/meteo/Image.php
r548 r738 12 12 var $FileName; 13 13 var $Color; 14 15 function __construct() 14 15 function __construct() 16 16 { 17 17 $this->Color = COLOR_BLACK; … … 27 27 var $Y; 28 28 29 function __construct() 29 function __construct() 30 30 { 31 31 $this->Color = COLOR_BLACK; … … 40 40 var $Color; 41 41 42 function __construct() 42 function __construct() 43 43 { 44 44 $this->Color = COLOR_BLACK; … … 47 47 } 48 48 49 class Image 49 class Image 50 50 { 51 var $Image; 51 var $Image; 52 52 var $Type; 53 53 var $Font; 54 54 var $Pen; 55 55 56 56 function __construct() 57 57 { … … 59 59 $this->Type = IMAGETYPE_PNG; 60 60 $this->Pen = new Pen(); 61 $this->Font = new Font(); 62 $this->Brush = new Brush(); 61 $this->Font = new Font(); 62 $this->Brush = new Brush(); 63 63 } 64 64 65 65 function SaveToFile($FileName) 66 66 { 67 if($this->Type == IMAGETYPE_JPEG) 67 if($this->Type == IMAGETYPE_JPEG) 68 68 { 69 69 imagejpeg($this->Image, $FileName); 70 70 } else 71 if($this->Type == IMAGETYPE_GIF) 71 if($this->Type == IMAGETYPE_GIF) 72 72 { 73 73 imagegif($this->Image, $FileName); 74 74 } else 75 if($this->Type == IMAGETYPE_PNG) 75 if($this->Type == IMAGETYPE_PNG) 76 76 { 77 77 imagepng($this->Image, $FileName); 78 78 } 79 79 } 80 80 81 81 function LoadFromFile($FileName) 82 82 { 83 83 $ImageInfo = getimagesize($FileName); 84 84 $this->Type = $ImageInfo[2]; 85 if($this->Type == IMAGETYPE_JPEG) 85 if($this->Type == IMAGETYPE_JPEG) 86 86 { 87 87 $this->Image = imagecreatefromjpeg($FileName); 88 88 } else 89 if($this->Type == IMAGETYPE_GIF) 89 if($this->Type == IMAGETYPE_GIF) 90 90 { 91 91 $this->Image = imagecreatefromgif($FileName); 92 92 } else 93 if( $this->Type == IMAGETYPE_PNG) 93 if( $this->Type == IMAGETYPE_PNG) 94 94 { 95 95 $this->Image = imagecreatefrompng($FileName); 96 } 96 } 97 97 } 98 98 99 99 function Output() 100 100 { … … 103 103 104 104 function SetSize($Width, $Height) 105 { 105 { 106 106 $NewImage = imagecreatetruecolor($Width, $Height); 107 imagecopy($NewImage, $this->Image, 0, 0, 0, 0, $this->GetWidth(), $this->GetHeight()); 107 imagecopy($NewImage, $this->Image, 0, 0, 0, 0, $this->GetWidth(), $this->GetHeight()); 108 108 imagedestroy($this->Image); 109 109 $this->Image = $NewImage; 110 110 } 111 111 112 function GetWidth() 113 { 112 function GetWidth() 113 { 114 114 return(imagesx($this->Image)); 115 115 } 116 117 function GetHeight() 116 117 function GetHeight() 118 118 { 119 119 return(imagesy($this->Image)); 120 120 } 121 121 122 122 function TextOut($X, $Y, $Text) 123 123 { 124 124 imagettftext($this->Image, $this->Font->Size, 0, $X, $Y, $this->ConvertColor($this->Font->Color), $this->Font->FileName, $Text); 125 125 } 126 126 127 127 function TextWidth($Text) 128 128 { … … 130 130 return(abs($Box[4] - $Box[0])); 131 131 } 132 132 133 133 function TextHeight($Text) 134 134 { … … 136 136 return(abs($Box[5] - $Box[1])); 137 137 } 138 138 139 139 function ConvertColor($Color) 140 140 { 141 141 return(imagecolorallocate($this->Image, ($Color >> 16) & 0xff, ($Color >> 8) & 0xff, $Color & 0xff)); 142 142 } 143 143 144 144 function FillRect($X1, $Y1, $X2, $Y2) 145 145 { 146 146 imagefilledrectangle($this->Image, $X1, $Y1, $X2, $Y2, $this->ConvertColor($this->Brush->Color)); 147 147 } 148 148 149 149 function Line($X1, $Y1, $X2, $Y2) 150 150 { -
trunk/temp/meteo/load_meteo.php
r737 r738 3 3 include('Image.php'); 4 4 5 class MeteoStation 5 class MeteoStation 6 6 { 7 7 var $Id; … … 28 28 $this->Data = $Data; 29 29 } 30 30 31 31 function DownloadData() 32 32 { 33 33 $XmlData = simplexml_load_file($this->URL); 34 34 35 $Data = array('MeteoStation' => $this->Id, 35 $Data = array('MeteoStation' => $this->Id, 36 36 'WindSpeed' => trim($XmlData->windspeed), 37 37 'WindDir' => trim($XmlData->winddir), … … 61 61 'DewPoint' => $this->Data['DewPoint'])); 62 62 } 63 63 64 64 function CreateImage($FileName) 65 65 { … … 95 95 $Image->SaveToFile($FileName); 96 96 } 97 97 98 98 function LoadFromDb() 99 99 { … … 124 124 foreach($Meteo->Data as $Index => $Item) 125 125 { 126 $Collect[$Index][] = $Item; 126 $Collect[$Index][] = $Item; 127 127 } 128 if(($I % 6) == 0) 128 if(($I % 6) == 0) 129 129 { 130 130 foreach($Collect as $Index => $Item) -
trunk/temp/product.php
r548 r738 13 13 { 14 14 echo($DbRow['Name'].', '); 15 16 $System->Database->insert('Product', array('Name' => $DbRow['Name'], 15 16 $System->Database->insert('Product', array('Name' => $DbRow['Name'], 17 17 'SellPrice' => $DbRow['Price'], 'BuyPrice' => $DbRow['Price'], 18 18 'Consumption' => $DbRow['Consumption'], 'UnitOfMeasure' => 1, 'VAT' => 20)); … … 25 25 case 2: $Elimination = NULL; break; 26 26 } 27 27 28 28 // else $Elimination = $DbRow['TimeElimination']; 29 29 if($DbRow['Used'] == 2) $DbRow['User'] = NULL; 30 30 echo($DbRow['Used'].'"'.$Elimination.'"<br/>'); 31 31 // print_r(array('Stock' => 1, 'Product' => $ProductId, 'Amount' => $DbRow['Count'], 32 // 'Segment' => $DbRow['Segment'], 'TimeEnlistment' => $DbRow['Date'], 'TimeElimination' => $Elimination, 32 // 'Segment' => $DbRow['Segment'], 'TimeEnlistment' => $DbRow['Date'], 'TimeElimination' => $Elimination, 33 33 // 'SerialNumber' => $DbRow['DeviceId'], 'BuyPrice' => $DbRow['Price'], 'SellPrice' => $DbRow['Price'], 34 34 // 'Location' => $DbRow['User'], 'Info' => $DbRow['Info'])); 35 35 $Database->insert('StockItem', array('Stock' => 1, 'Product' => $ProductId, 'Amount' => $DbRow['Count'], 36 'Segment' => $DbRow['Segment'], 'TimeEnlistment' => $DbRow['Date'], 'TimeElimination' => $Elimination, 36 'Segment' => $DbRow['Segment'], 'TimeEnlistment' => $DbRow['Date'], 'TimeElimination' => $Elimination, 37 37 'SerialNumber' => $DbRow['DeviceId'], 'BuyPrice' => $DbRow['Price'], 'SellPrice' => $DbRow['Price'], 38 38 'Location' => $DbRow['User'], 'Info' => $DbRow['Info'])); -
trunk/temp/renumbering.php
r548 r738 29 29 16 => array('AddressRange' => '10.145.66.160', 'Mask' => 27), 30 30 ); 31 31 32 32 function Show() 33 33 { 34 34 global $Config; 35 35 36 36 $Output = ''; 37 37 … … 47 47 $Output .= '-- '.$Interface['Name'].': '.$Interface['LocalIP'].' => '.Int32ToIPv4($NextIP).'<br>'; 48 48 $Output .= 'UPDATE NetworkInterface SET LocalIP = "'.Int32ToIPv4($NextIP).'" WHERE Id='.$Interface['Id'].';<br>'; 49 $NextIP++; 49 $NextIP++; 50 50 } 51 51 $Output .= '<hr>'; -
trunk/temp/test.php
r705 r738 11 11 while($DbRow = $DbResult->fetch_assoc()) 12 12 { 13 $DbResult2 = $System->Database->select('NetworkSubnet', 'AddressRangeIPv6',14 'CompareNetworkPrefix(INET_ATON(AddressRange), INET_ATON("'.$DbRow['LocalIP'].'"), Mask) AND15 (AddressRangeIPv6 != "")');16 if($DbResult2->num_rows > 0)17 {18 $Subnet = $DbResult2->fetch_assoc();19 $SubnetParts = explode('/', $Subnet['AddressRangeIPv6']);13 $DbResult2 = $System->Database->select('NetworkSubnet', 'AddressRangeIPv6', 14 'CompareNetworkPrefix(INET_ATON(AddressRange), INET_ATON("'.$DbRow['LocalIP'].'"), Mask) AND 15 (AddressRangeIPv6 != "")'); 16 if($DbResult2->num_rows > 0) 17 { 18 $Subnet = $DbResult2->fetch_assoc(); 19 $SubnetParts = explode('/', $Subnet['AddressRangeIPv6']); 20 20 21 $Addr->AddressFromString($SubnetParts[0]);21 $Addr->AddressFromString($SubnetParts[0]); 22 22 $Addr->EncodeMAC($DbRow['MAC']); 23 23 echo($Addr->AddressToString().' '.$DbRow['MAC']."\n"); 24 24 25 $System->Database->update('NetworkInterface', 'Id='.$DbRow['Id'], array('IPv6' => $Addr->AddressToString()));26 }25 $System->Database->update('NetworkInterface', 'Id='.$DbRow['Id'], array('IPv6' => $Addr->AddressToString())); 26 } 27 27 } -
trunk/temp/user_mail.php
r548 r738 14 14 { 15 15 global $Config; 16 16 17 17 $Output = ''; 18 18
Note:
See TracChangeset
for help on using the changeset viewer.
