original_string: public function get_full_bits(string $id_usr_opt, string $id_parent = null, bool $with_config = true): array
    {
      if ( \bbn\str::is_uid($id_usr_opt) ){
        $c = $this->class_cfg['arch']['user_options_bits'];
        $t = $this;
        return array_map(function($b) use($t, $c, $id_usr_opt, $with_config){
          if ( !empty($with_config) ){
            $b = $t->explode_bit_cfg($b);
          }
          $b['items'] = $t->get_full_bits($id_usr_opt, $b[$c['id']], $with_config);
          return $b;
        }, $this->db->rselect_all([
          'table' => $this->class_cfg['tables']['user_options_bits'],
          'fields' => [],
          'where' => [
            'conditions' => [[
              'field' => $c['id_user_option'],
              'value' => $id_usr_opt
            ], [
              'field' => $c['id_parent'],
              empty($id_parent) ? 'operator' : 'value' => $id_parent ?: 'isnull'
            ]]
          ],
          'order' => [$c['num'] => 'ASC']
        ]));
      }
      return [];
    }
code: public function get_full_bits(string $id_usr_opt, string $id_parent = null, bool $with_config = true): array
    {
      if ( \bbn\str::is_uid($id_usr_opt) ){
        $c = $this->class_cfg['arch']['user_options_bits'];
        $t = $this;
        return array_map(function($b) use($t, $c, $id_usr_opt, $with_config){
          if ( !empty($with_config) ){
            $b = $t->explode_bit_cfg($b);
          }
          $b['items'] = $t->get_full_bits($id_usr_opt, $b[$c['id']], $with_config);
          return $b;
        }, $this->db->rselect_all([
          'table' => $this->class_cfg['tables']['user_options_bits'],
          'fields' => [],
          'where' => [
            'conditions' => [[
              'field' => $c['id_user_option'],
              'value' => $id_usr_opt
            ], [
              'field' => $c['id_parent'],
              empty($id_parent) ? 'operator' : 'value' => $id_parent ?: 'isnull'
            ]]
          ],
          'order' => [$c['num'] => 'ASC']
        ]));
      }
      return [];
    }
code_tokens: public function get_full_bits ( string $ id_usr_opt , string $ id_parent = null , bool $ with_config = true ) : array { if ( \ bbn \ str :: is_uid ( $ id_usr_opt ) ) { $ c = $ this -> class_cfg [ 'arch' ] [ 'user_options_bits' ] ; $ t = $ this ; return array_map ( function ( $ b ) use ( $ t , $ c , $ id_usr_opt , $ with_config ) { if ( ! empty ( $ with_config ) ) { $ b = $ t -> explode_bit_cfg ( $ b ) ; } $ b [ 'items' ] = $ t -> get_full_bits ( $ id_usr_opt , $ b [ $ c [ 'id' ] ] , $ with_config ) ; return $ b ; } , $ this -> db -> rselect_all ( [ 'table' => $ this -> class_cfg [ 'tables' ] [ 'user_options_bits' ] , 'fields' => [ ] , 'where' => [ 'conditions' => [ [ 'field' => $ c [ 'id_user_option' ] , 'value' => $ id_usr_opt ] , [ 'field' => $ c [ 'id_parent' ] , empty ( $ id_parent ) ? 'operator' : 'value' => $ id_parent ? : 'isnull' ] ] ] , 'order' => [ $ c [ 'num' ] => 'ASC' ] ] ) ) ; } return [ ] ; }
docstring: Returns the hierarchical bits list of a preference
  
  @param string $id_usr_opt The preference's ID
  @param string $id_parent The parent's ID of a bit. Default: null
  @param bool $with_config Set it to false if you don't want the preference's cfg field values on the results.
  @return array
docstring_tokens: Returns the hierarchical bits list of a preference