protected function setFields($fields = array(), $add_table = true)
 {
     if (isset($this->extend_options['text'])) {
         if ($fields) {
             foreach ($fields as $id => $field) {
                 if ($id == 'text' || $field == 'text') {
                     unset($fields[$id]);
                 }
             }
         } else {
             $fields = array();
             foreach ($this->fields as $field => $info) {
                 if ($info['type'] != 'text') {
                     $fields[] = $field;
                 }
             }
         }
         switch ($this->extend_options['text']) {
             case 'full':
                 $fields['text'] = "{$this->table}.text";
                 break;
             case 'preview':
                 $fields['text'] = "SUBSTRING(IFNULL({$this->table}.text_before_cut, {$this->table}.text), 400)";
                 break;
             case 'cut':
             default:
                 $fields['text'] = "IFNULL({$this->table}.text_before_cut, {$this->table}.text)";
                 $fields['cutted'] = "(CASE WHEN {$this->table}.text_before_cut IS NULL THEN 0 ELSE 1 END)";
                 break;
         }
     }
     return parent::setFields($fields, $add_table);
 }