public function getSetting($key = null, $element_type = null, $return_object = false)
{
if (!$key) {
$key = $this->key;
}
if ($element_type) {
$metadata = self::model()->find('element_type_id=? and `key`=?', array($element_type->id, $key));
} else {
$metadata = self::model()->find('element_type_id is null and `key`=?', array($key));
}
if (!$metadata) {
return false;
}
$user_id = Yii::app()->session['user'] ? Yii::app()->session['user']->id : null;
$firm = Firm::model()->findByPk(Yii::app()->session['selected_firm_id']);
$firm_id = $firm ? $firm->id : null;
$subspecialty_id = $firm ? $firm->subspecialtyID : null;
$specialty_id = $firm && $firm->specialty ? $firm->specialty->id : null;
$site = Site::model()->findByPk(Yii::app()->session['selected_site_id']);
$site_id = $site ? $site->id : null;
$institution_id = $site ? $site->institution_id : null;
foreach (array('SettingUser' => 'user_id', 'SettingFirm' => 'firm_id', 'SettingSubspecialty' => 'subspecialty_id', 'SettingSpecialty' => 'specialty_id', 'SettingSite' => 'site_id', 'SettingInstitution' => 'institution_id', 'SettingInstallation' => null) as $class => $field) {
if ($field) {
if (${$field}) {
if ($setting = $this->getSettingValue($class, $key, $field, ${$field}, $element_type)) {
if ($return_object) {
return $setting;
}
return $this->parseSetting($setting, $metadata);
}
}
} else {
if ($setting = $this->getSettingValue($class, $key, null, null, $element_type)) {
if ($return_object) {
return $setting;
}
return $this->parseSetting($setting, $metadata);
}
}
}
if ($return_object) {
return false;
}
return $metadata->default_value;
}