ApplicationSettings.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /*
  3. * To change this license header, choose License Headers in Project Properties.
  4. * To change this template file, choose Tools | Templates
  5. * and open the template in the editor.
  6. */
  7. /**
  8. * Description of ApplicationSettings
  9. *
  10. * @author robert.marshall
  11. */
  12. class ApplicationSettings {
  13. const SETTINGS_PATH="settings.ini";
  14. private static $DEFAULT_SETTINGS=array(
  15. "general"=>array(
  16. "default_page"=>"E404",
  17. "template"=>"template.php"
  18. )
  19. );
  20. private static $_settings;
  21. private static function PopulateSettingsWithDefaults(){
  22. if (self::$_settings==null)
  23. self::$_settings=array();
  24. foreach (self::$DEFAULT_SETTINGS as $category=>$settings){
  25. if (!isset(self::$_settings[$category]))
  26. self::$_settings[$category]=self::$DEFAULT_SETTINGS[$category];
  27. else
  28. foreach ($settings as $key=>$value)
  29. if (!isset(self::$_settings[$category][$key]))
  30. self::$_settings[$category][$key]=$value;
  31. }
  32. }
  33. public static function ReloadSettings(){
  34. if (file_exists(self::SETTINGS_PATH)){
  35. try {
  36. self::$_settings=parse_ini_file(self::SETTINGS_PATH,true);
  37. } catch(Exception $e){
  38. throw new Exception("Unable to load settings.ini", 0, $e);
  39. }
  40. }
  41. self::PopulateSettingsWithDefaults();
  42. }
  43. public static function GetSetting($category,$setting){
  44. if (self::$_settings==null)
  45. self::ReloadSettings();
  46. if (!isset(self::$_settings[$category]))
  47. throw new Exception("Settings category '$category' has not been defined.");
  48. if (!isset(self::$_settings[$category][$setting]))
  49. throw new Exception("Setting '$setting' has not been defined.");
  50. return self::$_settings[$category][$setting];
  51. }
  52. public static function RegisterDefaultSetting($category,$setting,$value){
  53. if(!isset(self::$DEFAULT_SETTINGS[$category]))
  54. self::$DEFAULT_SETTINGS[$category]=array();
  55. self::$DEFAULT_SETTINGS[$category][$setting]=$value;
  56. self::ReloadSettings();
  57. }
  58. }