87 lines
2.3 KiB
PHP
87 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace common\manager;
|
|
|
|
use common\helpers\AppArrayHelper;
|
|
use common\models\Property;
|
|
use common\models\PropertyDefinition;
|
|
use common\models\PropertySetting;
|
|
use common\models\PropertySettingModel;
|
|
|
|
class PropertySettingsManager
|
|
{
|
|
|
|
/**
|
|
* @return PropertySetting[]
|
|
*/
|
|
public function getPropertySettings()
|
|
{
|
|
$settings = [];
|
|
$definitions = PropertyDefinition::find()->all();
|
|
$properties = Property::find()->all();
|
|
|
|
$propertyByDefinition = AppArrayHelper::objectArrayToMap($properties,
|
|
function ($property) {
|
|
return $property->id_property_definition;
|
|
},
|
|
function ($property) {
|
|
return $property;
|
|
}
|
|
);
|
|
|
|
foreach ($definitions as $definition) {
|
|
$setting = new PropertySetting([
|
|
'property' => AppArrayHelper::getOrDefault($propertyByDefinition, $definition->id),
|
|
'definition' => $definition
|
|
]);
|
|
$settings[] = $setting;
|
|
}
|
|
return $settings;
|
|
}
|
|
|
|
/**
|
|
* @param PropertySetting $setting
|
|
*/
|
|
public function saveSetting($setting ){
|
|
Property::deleteAll(['id_property_definition' =>$setting->definition->id ]);
|
|
$setting->property->save(false);
|
|
}
|
|
/**
|
|
* @param PropertySetting[] $setting
|
|
*/
|
|
public function saveSettings($settings ){
|
|
foreach ($settings as $setting){
|
|
Property::deleteAll(['id_property_definition' =>$setting->definition->id ]);
|
|
$setting->property->save(false);
|
|
|
|
}
|
|
}
|
|
|
|
public function getSettingsMap(){
|
|
$settings = $this->getPropertySettings();
|
|
return AppArrayHelper::objectArrayToMap($settings,
|
|
function ($setting){
|
|
return $setting->definition->name;
|
|
},
|
|
function ($setting){
|
|
return $setting->getValue();
|
|
});
|
|
}
|
|
|
|
public function getSettingFromSettingsMap($settingsMap,$key,$defaultValue = null){
|
|
return AppArrayHelper::getOrDefault(
|
|
$settingsMap,
|
|
$key,
|
|
$defaultValue
|
|
);
|
|
}
|
|
|
|
public function getSetting($key,$defaultValue = null){
|
|
$settingsMap = $this->getSettingsMap();
|
|
return $this->getSettingFromSettingsMap($settingsMap,$key,$defaultValue);
|
|
}
|
|
|
|
|
|
|
|
}
|