Changes
Title
unchanged
Yii configuration: Dynamic & User dependent
Category
unchanged
How-tos
Yii version
unchanged
Tags
unchanged
config, theme, widget configuration
Content
changed
[...]
/**
* Provides an instance providing a user property when called.
*
* @param string $property Same as second parameter in CHtml::value
* @param string $default Default value, evaluated as PHP code (inside string, so null must be written as "null").
* @param string $template If provided '{val}' in the template is replaced with the User property.
* @return
mixed_UserProperty Property returned by User model or default if null or empty string.
*/
public static function getProperty($property,$default=null,$template=null) {[...]
$defaultexpression='';
}
$val="CHtml::value(Yii::app()->uAppUtils::getRealUser
(),'$property')";
if($template!==null) {
$val
2="
strtr('$template',array('{val}'=>$val))if(\"{\$this->val}\"!=='') \$this->val=strtr('$template',array('{val}'=>\$this->val));";
} else {
$val2="";
}
$code="class $propertyclass
{
private \$val;extends _UserProperty{
pr
ivateotected function _val() {
if(!isset(\$this->val)) {
\$this->val=$val;
$val2 $defaultexpression
}
return \$this->val;
}
public function __toString() {
\$r=\$this->_val()}";
//Yii::trace($code);
//if($property==='propertytocheck') throw new CException($code);
eval($code);
self::$inst[$propertyclass]=new $propertyclass;
}
return \$r;
}
return self::$inst[$propertyclass];
}
}
/**
* Abstract class for User Property.
*/
abstract class _UserProperty {
protected $val;
abstract protected function _val();
public function __toString() {
$r=$this->_val();
return $r;
}
public function __call(
\$name,
\$parameters) {
return call_user_func_array(array(
\$this->_val(),
\$name),
\$parameters);
}
}
public function __get(
\$name) {
return
\$this->_val()->
\$name;
}
}";
//print strtr($code,array("\n"=>'<br />'));
eval($code);
self::$inst[$propertyclass]=new $propertyclass;
}
return self::$inst[$propertyclass];
}
}
}
```