Scalr\Model\Collections\SettingsCollection::saveSettings PHP Method

saveSettings() public method

Saves multiply settings
public saveSettings ( array $settings )
$settings array Name-value settings array
    public function saveSettings(array $settings)
    {
        /* @var $stmt EntityStatement */
        $stmt = call_user_func([$this->entityClass, 'prepareSaveStatement']);
        $encryptedFields = [];
        if (method_exists($this->entityClass, 'listEncryptedFields')) {
            $encryptedFields = call_user_func("{$this->entityClass}::listEncryptedFields");
        }
        try {
            $stmt->start();
            foreach ($settings as $index => $data) {
                /* @var $setting Setting */
                $setting = new $this->entityClass();
                if (is_array($data)) {
                    foreach ($setting->getIterator() as $name => $value) {
                        if (isset($data[$name])) {
                            $setting->{$name} = $data[$name];
                        }
                    }
                } else {
                    $setting->name = $index;
                    $setting->value = $data;
                }
                $this->offsetSet($index, $setting);
                /* @var $field Field */
                if (in_array($setting->name, $encryptedFields)) {
                    $field = $setting->getIterator()->fields()['value'];
                    $prevType = $field->getType();
                    $field->setType(new EncryptedType($field));
                }
                $stmt->execute($setting, $data === false ? EntityStatement::TYPE_DELETE : null);
                if (isset($prevType)) {
                    $field->setType($prevType);
                    $prevType = null;
                }
                if ($data === false) {
                    $this->offsetUnset($index);
                }
            }
            $stmt->commit();
        } catch (Exception $e) {
            $stmt->rollback();
            throw $e;
        }
    }

Usage Example

Beispiel #1
0
 /**
  * Unlocks this farm
  *
  * @param   User    $user The User on whose behalf the lock unset
  * @return  Farm
  */
 public function unlock(User $user)
 {
     $this->_settings->saveSettings([FarmSetting::LOCK => '', FarmSetting::LOCK_BY => '', FarmSetting::LOCK_UNLOCK_BY => $user->id, FarmSetting::LOCK_COMMENT => '', FarmSetting::LOCK_RESTRICT => '']);
     return $this;
 }