original_string: public function add_bit(string $id_usr_opt, array $cfg): ?string
    {
      if (
        ($id_usr_opt = $this->_get_id_option($id_usr_opt)) &&
        ($c = $this->class_cfg['arch']['user_options_bits'])
      ){
        $to_cfg = $this->get_bit_cfg(null, $cfg);
        if ( isset($to_cfg['items']) ){
          unset($to_cfg['items']);
        }
        if ( !empty($to_cfg) ){
          if ( !empty($cfg[$c['cfg']]) ){
            if (  \bbn\str::is_json($cfg[$c['cfg']]) ){
              $cfg[$c['cfg']] = json_decode($cfg[$c['cfg']], true);
            }
            if ( \is_array($cfg[$c['cfg']]) ){
              $cfg[$c['cfg']] = array_merge($cfg[$c['cfg']], $to_cfg);
            }
            else {
              $cfg[$c['cfg']] = $to_cfg;
            }
          }
          else {
            $cfg[$c['cfg']] = $to_cfg;
          }
          $cfg[$c['cfg']] = json_encode($cfg[$c['cfg']]);
        }
        if ( $this->db->insert($this->class_cfg['tables']['user_options_bits'], [
          $c['id_user_option'] => $id_usr_opt,
          $c['id_parent'] => $cfg[$c['id_parent']] ?? NULL,
          $c['id_option'] => $cfg[$c['id_option']] ?? NULL,
          $c['num'] => $cfg[$c['num']] ?? NULL,
          $c['text'] => $cfg[$c['text']] ?? '',
          $c['cfg'] => $cfg[$c['cfg']] ?? '',
        ]) ){
          return $this->db->last_id();
        }
      }
      return null;
    }
code: public function add_bit(string $id_usr_opt, array $cfg): ?string
    {
      if (
        ($id_usr_opt = $this->_get_id_option($id_usr_opt)) &&
        ($c = $this->class_cfg['arch']['user_options_bits'])
      ){
        $to_cfg = $this->get_bit_cfg(null, $cfg);
        if ( isset($to_cfg['items']) ){
          unset($to_cfg['items']);
        }
        if ( !empty($to_cfg) ){
          if ( !empty($cfg[$c['cfg']]) ){
            if (  \bbn\str::is_json($cfg[$c['cfg']]) ){
              $cfg[$c['cfg']] = json_decode($cfg[$c['cfg']], true);
            }
            if ( \is_array($cfg[$c['cfg']]) ){
              $cfg[$c['cfg']] = array_merge($cfg[$c['cfg']], $to_cfg);
            }
            else {
              $cfg[$c['cfg']] = $to_cfg;
            }
          }
          else {
            $cfg[$c['cfg']] = $to_cfg;
          }
          $cfg[$c['cfg']] = json_encode($cfg[$c['cfg']]);
        }
        if ( $this->db->insert($this->class_cfg['tables']['user_options_bits'], [
          $c['id_user_option'] => $id_usr_opt,
          $c['id_parent'] => $cfg[$c['id_parent']] ?? NULL,
          $c['id_option'] => $cfg[$c['id_option']] ?? NULL,
          $c['num'] => $cfg[$c['num']] ?? NULL,
          $c['text'] => $cfg[$c['text']] ?? '',
          $c['cfg'] => $cfg[$c['cfg']] ?? '',
        ]) ){
          return $this->db->last_id();
        }
      }
      return null;
    }
code_tokens: public function add_bit ( string $ id_usr_opt , array $ cfg ) : ? string { if ( ( $ id_usr_opt = $ this -> _get_id_option ( $ id_usr_opt ) ) && ( $ c = $ this -> class_cfg [ 'arch' ] [ 'user_options_bits' ] ) ) { $ to_cfg = $ this -> get_bit_cfg ( null , $ cfg ) ; if ( isset ( $ to_cfg [ 'items' ] ) ) { unset ( $ to_cfg [ 'items' ] ) ; } if ( ! empty ( $ to_cfg ) ) { if ( ! empty ( $ cfg [ $ c [ 'cfg' ] ] ) ) { if ( \ bbn \ str :: is_json ( $ cfg [ $ c [ 'cfg' ] ] ) ) { $ cfg [ $ c [ 'cfg' ] ] = json_decode ( $ cfg [ $ c [ 'cfg' ] ] , true ) ; } if ( \ is_array ( $ cfg [ $ c [ 'cfg' ] ] ) ) { $ cfg [ $ c [ 'cfg' ] ] = array_merge ( $ cfg [ $ c [ 'cfg' ] ] , $ to_cfg ) ; } else { $ cfg [ $ c [ 'cfg' ] ] = $ to_cfg ; } } else { $ cfg [ $ c [ 'cfg' ] ] = $ to_cfg ; } $ cfg [ $ c [ 'cfg' ] ] = json_encode ( $ cfg [ $ c [ 'cfg' ] ] ) ; } if ( $ this -> db -> insert ( $ this -> class_cfg [ 'tables' ] [ 'user_options_bits' ] , [ $ c [ 'id_user_option' ] => $ id_usr_opt , $ c [ 'id_parent' ] => $ cfg [ $ c [ 'id_parent' ] ] ?? NULL , $ c [ 'id_option' ] => $ cfg [ $ c [ 'id_option' ] ] ?? NULL , $ c [ 'num' ] => $ cfg [ $ c [ 'num' ] ] ?? NULL , $ c [ 'text' ] => $ cfg [ $ c [ 'text' ] ] ?? '' , $ c [ 'cfg' ] => $ cfg [ $ c [ 'cfg' ] ] ?? '' , ] ) ) { return $ this -> db -> last_id ( ) ; } } return null ; }
docstring: Adds a bit to a preference
  
  @param string $id_usr_opt The preference's ID
  @param array $cfg The bit's values
  @return string|null
docstring_tokens: Adds a bit to a preference