Example #1
0
 /**
  * Updates or adds new shop configuration parameters to DB.
  * Arrays must be passed not serialized, serialized values are supported just for backward compatibility.
  *
  * @param string $varType Variable Type
  * @param string $varName Variable name
  * @param mixed  $varVal  Variable value (can be string, integer or array)
  * @param string $shopId  Shop ID, default is current shop
  * @param string $module  Module name (empty for base options)
  */
 public function saveShopConfVar($varType, $varName, $varVal, $shopId = null, $module = '')
 {
     switch ($varType) {
         case 'arr':
         case 'aarr':
             $value = serialize($varVal);
             break;
         case 'bool':
             //config param
             $varVal = ($varVal == 'true' || $varVal) && $varVal && strcasecmp($varVal, "false");
             //db value
             $value = $varVal ? "1" : "";
             break;
         case 'num':
             //config param
             $varVal = $varVal != '' ? Registry::getUtils()->string2Float($varVal) : '';
             $value = $varVal;
             break;
         default:
             $value = $varVal;
             break;
     }
     if (!$shopId) {
         $shopId = $this->getShopId();
     }
     // Update value only for current shop
     if ($shopId == $this->getShopId()) {
         $this->setConfigParam($varName, $varVal);
     }
     $db = oxDb::getDb();
     $shopIdQuoted = $db->quote($shopId);
     $moduleQuoted = $db->quote($module);
     $varNameQuoted = $db->quote($varName);
     $varTypeQuoted = $db->quote($varType);
     $varValueQuoted = $db->quote($value);
     $configKeyQuoted = $db->quote($this->getConfigParam('sConfigKey'));
     $newOXIDdQuoted = $db->quote(UtilsObject::getInstance()->generateUID());
     $query = "delete from oxconfig where oxshopid = {$shopIdQuoted} and oxvarname = {$varNameQuoted} and oxmodule = {$moduleQuoted}";
     $db->execute($query);
     $query = "insert into oxconfig (oxid, oxshopid, oxmodule, oxvarname, oxvartype, oxvarvalue)\n               values({$newOXIDdQuoted}, {$shopIdQuoted}, {$moduleQuoted}, {$varNameQuoted}, {$varTypeQuoted}, ENCODE( {$varValueQuoted}, {$configKeyQuoted}) )";
     $db->execute($query);
 }