public static function _ConfigSubmit(Form $form) {
		$elements = $form->getElements();

		$updatedcount = 0;

		foreach ($elements as $e) {
			/** @var FormElement $e */
			
			// I'm only interested in config options.
			if (strpos($e->get('name'), 'config[') === false) continue;

			// Make the name usable a little.
			$n = $e->get('name');
			if (($pos = strpos($n, '[]')) !== false) $n = substr($n, 0, $pos);
			$n = substr($n, 7, -1);

			// And get the config object
			$c = new ConfigModel($n);
			$val = null;

			switch ($c->get('type')) {
				case 'string':
				case 'text':
				case 'enum':
				case 'boolean':
				case 'int':
					$val = $e->get('value');
					break;
				case 'set':
					$val = implode('|', $e->get('value'));
					break;
				default:
					throw new Exception('Unsupported configuration type for ' . $c->get('key') . ', [' . $c->get('type') . ']');
					break;
			}

			// This is required because enterprise multisite mode has a different location for site configs.
			if(Core::IsComponentAvailable('multisite') && MultiSiteHelper::GetCurrentSiteID()){
				$siteconfig = MultiSiteConfigModel::Construct($c->get('key'), MultiSiteHelper::GetCurrentSiteID());
				$siteconfig->setValue($val);
				if($siteconfig->save()) ++$updatedcount;
			}
			else{
				$c->setValue($val);
				if ($c->save()) ++$updatedcount;
			}

		}

		\Core\set_message('t:MESSAGE_SUCCESS_UPDATED_N_CONFIGURATION', $updatedcount);

		return true;
	}
	/**
	 * Set a configuration value.
	 *
	 * This CANNOT create new configuration keys!
	 * Please use GetConfig() for that.
	 *
	 * @param string $key   The key to set
	 * @param string $value The value to set
	 * @return bool True/False on success or failure.
	 */
	public static function Set($key, $value) {
		$instance = self::GetInstance();

		if(!isset($instance->_cacheFromDB[$key])){
			return false;
		}

		/** @var $config ConfigModel */
		$config = $instance->_cacheFromDB[$key];

		// This is required because enterprise multisite mode has a different location for site configs.
		// Instead of having this outside the code, it's here for now at least.
		// This is a trade-off between standard procedure and convenience.
		if(
			$config->get('overrideable') == 1 &&
			Core::IsComponentAvailable('multisite') &&
			MultiSiteHelper::GetCurrentSiteID()
		){
			$siteconfig = MultiSiteConfigModel::Construct($key, MultiSiteHelper::GetCurrentSiteID());
			$siteconfig->set('value', $value);
			$siteconfig->save();
			$instance->_overrides[$key] = $value;
		}
		else{
			$config->setValue($value);
			$config->save();
		}

		return true;
	}