64), array('data', 'safe'), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('section, key, data', 'safe', 'on' => 'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'i18ns' => array(self::HAS_MANY, 'StaticPageI18n', array('section', 'key'), 'index' => 'lang'), 'i18n' => array(self::HAS_ONE, 'StaticPageI18n', array('section', 'key'), 'condition' => 'lang=\'' . Yii::app()->language . '\''), ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'section' => 'Section', 'key' => 'Key', 'data' => 'Data', ); } /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria = new CDbCriteria; $criteria->compare('section', $this->section, true); $criteria->compare('key', $this->key, true); $criteria->compare('data', $this->data, true); return new CActiveDataProvider($this, array( 'criteria' => $criteria, )); } private $_data = null; /** * @return array */ public function getDataAttributes() { if (!isset($this->_data)) { $this->_data = unserialize($this->data); } if (!is_array($this->_data)) $this->_data = array(); return $this->_data; } /** * @param array $data */ public function setDataAttributes($data) { $this->_data = $data; $this->data = serialize($data); } /** * @static * @param $section * @param $key * @return StaticPage */ public static function modelByPk($section, $key) { return self::model()->with('i18n')->findByPk(array('section' => $section, 'key' => $key)); } }