ApplicationSettings.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. class ApplicationSettings {
  3. const SETTINGS_PATH="settings.ini";
  4. private static $DEFAULT_SETTINGS=array(
  5. "general"=>array(
  6. "default_page"=>"E404",
  7. "template"=>"template.php"
  8. )
  9. );
  10. private static $_settings;
  11. private static function PopulateSettingsWithDefaults(){
  12. if (self::$_settings==null)
  13. self::$_settings=array();
  14. foreach (self::$DEFAULT_SETTINGS as $category=>$settings){
  15. if (!isset(self::$_settings[$category]))
  16. self::$_settings[$category]=self::$DEFAULT_SETTINGS[$category];
  17. else
  18. foreach ($settings as $key=>$value)
  19. if (!isset(self::$_settings[$category][$key]))
  20. self::$_settings[$category][$key]=$value;
  21. }
  22. }
  23. public static function ReloadSettings(){
  24. if (file_exists(self::SETTINGS_PATH)){
  25. try {
  26. self::$_settings=parse_ini_file(self::SETTINGS_PATH,true);
  27. } catch(Exception $e){
  28. throw new Exception("Unable to load settings.ini", 0, $e);
  29. }
  30. }
  31. self::PopulateSettingsWithDefaults();
  32. }
  33. public static function GetSetting($category,$setting){
  34. if (self::$_settings==null)
  35. self::ReloadSettings();
  36. if (!isset(self::$_settings[$category]))
  37. throw new Exception("Settings category '$category' has not been defined.");
  38. if (!isset(self::$_settings[$category][$setting]))
  39. throw new Exception("Setting '$setting' has not been defined.");
  40. return self::$_settings[$category][$setting];
  41. }
  42. public static function GetSettings($category){
  43. if (self::$_settings==null)
  44. self::ReloadSettings();
  45. if (!isset(self::$_settings[$category]))
  46. throw new Exception("Settings category '$category' has not been defined.");
  47. return self::$_settings[$category];
  48. }
  49. public static function RegisterDefaultSetting($category,$setting,$value){
  50. if(!isset(self::$DEFAULT_SETTINGS[$category]))
  51. self::$DEFAULT_SETTINGS[$category]=array();
  52. self::$DEFAULT_SETTINGS[$category][$setting]=$value;
  53. self::ReloadSettings();
  54. }
  55. }