Changeset 2630

Show
Ignore:
Timestamp:
09/30/06 12:59:24 (5 years ago)
Author:
gregmac
Message:

Database update uses INSERT/UPDATE instead of REPLACE (to be more compatible with non-mysql RDBMs),
setDefault takes additional parameter to control if code is enabled or not by default

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • freepbx/trunk/amp_conf/htdocs/admin/featurecodes.class.php

    r2549 r2630  
    77  var $_defaultcode;  // Default code if user doesn't pick one 
    88  var $_customcode; // Custom code 
    9   var $_enabled;    // Enabled/Disabled (0-disabled; 1-enabled) 
    10    
     9  var $_enabled;    // Enabled/Disabled (0=disabled; 1=enabled; -1=unknown) 
     10  var $_loaded;   // If this feature code was succesfully loaded from the DB 
     11 
    1112  // CONSTRUCTOR 
    1213  function featurecode($modulename, $featurename) { 
     
    1718    $this->_featurename = $featurename; 
    1819    $this->_enabled = -1;  // -1 means not initialised 
     20    $this->_loaded = false; 
    1921  } 
    2022 
     
    4547      $this->_enabled = $res[3]; 
    4648       
     49      $this->_loaded = true; 
     50 
    4751      return true; 
    4852    } else { 
    49       // didn't find, but mark as 'enabled' by default ??? 
    50       $this->_enabled = 1; 
    5153       
    5254      return false; 
     
    5658  // UPDATE FUNCTION -- WRITES CURRENT STUFF BACK TO DATABASE 
    5759  function update() { 
    58     global $amp_conf;  
     60    global $amp_conf; 
     61    if ($this->_enabled == -1) { 
     62      // not explicitly set, old default was to enable by default, we will preserve that behaviour 
     63      $this->_enabled = 1; 
     64    } 
     65 
    5966    if (!$this->isReady()) 
    6067      die('FeatureCode: class function init never called...will not update'); 
    6168 
    62     $s = "REPLACE INTO featurecodes (modulename, featurename, description, defaultcode, customcode, enabled) "; 
    63     $s .= "VALUES (".sql_formattext($this->_modulename).", ".sql_formattext($this->_featurename).", ".sql_formattext($this->_description).", ".sql_formattext($this->_defaultcode).", ".sql_formattext($this->_customcode).", ".sql_formattext($this->_enabled).") "; 
    64      
    65     // replace into is MYSQL only. 
    66     // pgsql should be checkedd. sqlite does not like this. 
    67     if ($amp_conf["AMPDBENGINE"] == "sqlite") { 
    68       $s = str_replace( "REPLACE", "INSERT", $s ); 
    69     } 
    70  
    71     sql($s, "query"); 
     69     
     70    if ($this->_loaded) { 
     71      $sql = 'UPDATE featurecodes SET '. 
     72             'description = '.sql_formattext($this->_description).', '. 
     73             'defaultcode = '.sql_formattext($this->_defaultcode).', '. 
     74             'customcode = '.sql_formattext($this->_customcode).', '. 
     75             'enabled = '.sql_formattext($this->_enabled).' '. 
     76             'WHERE modulename = '.sql_formattext($this->_modulename). 
     77             ' AND featurename = '.sql_formattext($this->_featurename); 
     78    } else { 
     79      $sql = 'INSERT INTO featurecodes (modulename, featurename, description, defaultcode, customcode, enabled) '. 
     80             'VALUES ('.sql_formattext($this->_modulename).', '.sql_formattext($this->_featurename).', '.sql_formattext($this->_description).', '.sql_formattext($this->_defaultcode).', '.sql_formattext($this->_customcode).', '.sql_formattext($this->_enabled).') '; 
     81    } 
     82 
     83    sql($sql, 'query'); 
    7284     
    7385    return true; 
     
    97109   
    98110  // SET DEFAULT CODE 
    99   function setDefault($deafultcode) { 
     111  function setDefault($deafultcode, $defaultenabled = true) { 
    100112    if (!$this->isReady()) 
    101113      $this->init(1); 
     
    106118      $this->_defaultcode = $deafultcode;      
    107119    } 
     120 
     121 
    108122  } 
    109123