1 <?php
2
3 class UWrelBelongsTo {
4
5 public $params = array(
6 'modelName'=>'',
7 'optionName'=>'',
8 'emptyField'=>'',
9 'relationName'=>'',
10 );
11
12 13 14 15
16 public function init() {
17 return array(
18 'name'=>__CLASS__,
19 'label'=>UserModule::t('Relation Belongs To',array(),__CLASS__),
20 'fieldType'=>array('INTEGER'),
21 'params'=>$this->params,
22 'paramsLabels' => array(
23 'modelName'=>UserModule::t('Model Name',array(),__CLASS__),
24 'optionName'=>UserModule::t('Lable field name',array(),__CLASS__),
25 'emptyField'=>UserModule::t('Empty item name',array(),__CLASS__),
26 'relationName'=>UserModule::t('Profile model relation name',array(),__CLASS__),
27 ),
28 );
29 }
30
31 32 33 34 35 36
37 public function setAttributes($value,$model,$field_varname) {
38 return $value;
39 }
40
41 42 43 44 45
46 public function viewAttribute($model,$field) {
47 $relation = $model->relations();
48 if ($this->params['relationName']&&isset($relation[$this->params['relationName']])) {
49 $m = $model->__get($this->params['relationName']);
50 } else {
51 $m = CActiveRecord::model($this->params['modelName'])->findByPk($model->getAttribute($field->varname));
52 }
53
54 if ($m)
55 return (($this->params['optionName'])?$m->getAttribute($this->params['optionName']):$m->id);
56 else
57 return $this->params['emptyField'];
58
59 }
60
61 62 63 64 65 66
67 public function editAttribute($model,$field,$htmlOptions=array()) {
68 $list = array();
69 if ($this->params['emptyField']) $list[0] = $this->params['emptyField'];
70
71 $models = CActiveRecord::model($this->params['modelName'])->findAll();
72 foreach ($models as $m)
73 $list[$m->id] = (($this->params['optionName'])?$m->getAttribute($this->params['optionName']):$m->id);
74 return CHtml::activeDropDownList($model,$field->varname,$list,$htmlOptions=array());
75 }
76
77 }