/**
  * @return array of available attributes in category
  */
 public function getEavAttributes()
 {
     if (is_array($this->_eavAttributes)) {
         return $this->_eavAttributes;
     }
     // Find category types
     $model = new ShopProduct(null);
     $criteria = $model->cache($this->cacheTime)->applyCategories($this->model)->active()->getDbCriteria();
     unset($model);
     $builder = new CDbCommandBuilder(Yii::app()->db->getSchema());
     $criteria->select = 'type_id';
     $criteria->group = 'type_id';
     $criteria->distinct = true;
     $typesUsed = $builder->createFindCommand(ShopProduct::model()->tableName(), $criteria)->queryColumn();
     // Find attributes by type
     $criteria = new CDbCriteria();
     $criteria->addInCondition('types.type_id', $typesUsed);
     $query = ShopAttribute::model()->cache($this->cacheTime)->useInFilter()->with(array('types', 'options'))->findAll($criteria);
     $this->_eavAttributes = array();
     foreach ($query as $attr) {
         $this->_eavAttributes[$attr->name] = $attr;
     }
     return $this->_eavAttributes;
 }