b2evolution

Multilingual multiuser multiblog engine

b2evolution Technical Documentation (0.9.x) [ class tree: evocore ] [ index: evocore ] [ all elements ]

Source for file _class_settings.php

Documentation is available at _class_settings.php

  1. <?php
  2. /**
  3.  * Class to handle the global settings
  4.  *
  5.  * b2evolution - {@link http://b2evolution.net/}
  6.  * Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
  7.  * @copyright (c)2003-2005 by Francois PLANQUE - {@link http://fplanque.net/}
  8.  *
  9.  * @package evocore
  10.  * @author blueyed
  11.  */
  12. if!defined('DB_USER') ) die'Please, do not access this page directly.' );
  13.  
  14. /**
  15.  * Class to handle the global settings
  16.  *
  17.  * @package evocore
  18.  */
  19. class Settings
  20. {
  21.     /**
  22.      * Constructor
  23.      *
  24.      * loads settings, checks db_version
  25.      */
  26.     function Settings()
  27.     // constructor
  28.         global $new_db_version$DB$tablesettings;
  29.  
  30.         $result $DB->get_results"SELECT * FROM $tablesettings);
  31.  
  32.         if$DB->get_col_info('name'0== 'set_name' )
  33.         // read new format only
  34.             foreach$result as $loop_row )
  35.             {
  36.                 $this->{$loop_row->set_name}->value $loop_row->set_value;
  37.                 $this->{$loop_row->set_name}->dbstatus 'uptodate';
  38.                 $this->{$loop_row->set_name}->dbescape false;
  39.             }
  40.         }
  41.         else
  42.         {    // Get old version number in order to display it in error message:
  43.                 $this->db_version->value $DB->get_var"SELECT db_version FROM $tablesettings);
  44.                 // This is a very incomplete load, but we'll die right below anyway. 
  45.         }
  46.  
  47.         if$new_db_version != $this->db_version->value )
  48.         {    // Database is not up to date:
  49.             $error_message 'Database schema is not up to date. You have schema version '.$this->db_version->value.', but we would need '.$new_db_version.'.';
  50.             require dirname(__FILE__).'/_conf_error.page.php';    // error & exit
  51.         }
  52.     }
  53.  
  54.  
  55.     /**
  56.      * get a setting from the DB settings table
  57.      * @param string name of setting
  58.      */
  59.     function get$setting )
  60.     {
  61.         // echo 'get: '.$setting.'<br />';
  62.  
  63.         ifisset($this->$setting) )
  64.         {
  65.             return $this->$setting->value;
  66.         }
  67.         else
  68.         {
  69.             debug_log("Setting '$setting' not defined.");
  70.             return false;
  71.         }
  72.     }
  73.  
  74.  
  75.     /**
  76.      * temporarily sets a setting (updateDB(-) writes it to DB)
  77.      *
  78.      * @param string name of setting
  79.      * @param mixed new value
  80.      * @param boolean should the value be escaped in DB?
  81.      */
  82.     function set$setting$value$escape true )
  83.     {
  84.         // echo 'set '.$setting;
  85.         ifisset($this->$setting->value) )
  86.         {
  87.             if$this->$setting->value == $value )
  88.             // already set
  89.                 return false;
  90.             }
  91.  
  92.             if$this->$setting->dbstatus == 'uptodate' )
  93.             {
  94.                 $this->$setting->dbstatus 'update';
  95.             }
  96.             else
  97.             {
  98.                 $this->$setting->dbstatus 'insert';
  99.             }
  100.         }
  101.         else
  102.         {
  103.             $this->$setting->dbstatus 'insert';
  104.         }
  105.  
  106.         $this->$setting->value $value;
  107.         $this->$setting->dbescape $escape;
  108.  
  109.         // echo ' to '.$value.' <br />';
  110.         return true;
  111.     }
  112.  
  113.  
  114.     /**
  115.      * commits changed settings to DB
  116.      */
  117.     function updateDB()
  118.     {
  119.         global $tablesettings$DB;
  120.  
  121.         $queries_update array();
  122.         $query_insert array();
  123.  
  124.         foreach$this as $key => $setting )
  125.         {
  126.             if$setting->dbstatus != 'uptodate' )
  127.             {
  128.                 // NOTE: we could split this to use UPDATE for dbstatus=='update'. Dunno what's better for performance.
  129.                 $query_insert["('$key', '"
  130.                     .$setting->dbescape $DB->escape($setting->value$setting->value )
  131.                     ."')";
  132.             }
  133.         }
  134.  
  135.         $q false;
  136.  
  137.         ifcount($query_insert) )
  138.         {
  139.             $query "REPLACE INTO $tablesettings (set_name, set_value) VALUES ".implode(', '$query_insert);
  140.             $q $DB->query$query );
  141.         }
  142.  
  143.         return $q;
  144.     }
  145.  
  146. }
  147.  
  148.  
  149. ?>

Documentation generated on Tue, 20 May 2008 01:53:33 +0200 by phpDocumentor 1.4.2