phpbridge: problema " doesn't have a default value [1364]"

Forum dedicato allo script per i tornei e ladder di videogames PHP Rivals mod.
Form about phpRivals Mod script.

phpbridge: problema " doesn't have a default value [1364]"

Messaggioda prophecy » 04/11/2014, 21:01

Ciao... premetto che ho letto il precedente thread e ho cercato di trovare gli eventuali problemi che già erano stati indicati.
Sulla mia installazione di test ho riscontrato il problema durante la fase di registrazione dei nuovi utenti che passano attraverso un bridge Joomla.-> phpbb3

Nello specifico sto utilizzando sul portale il bridge RokBridge (che puoi trovare qui) Online attualmente trovi la versione per Joomal 2.x e 3.x mentre noi stiamo usando ancora la versione Joomla 1.5 che puoi trovare qui sul mio drive. Di fatto l'utente si registra su Joomla e successivamente viene fatto il sync dell'utente in phpbb3.

Leggendo il precedente thread sulla problematica con WoldPress, ho fatto le verifiche sul file indicati di phpbb3 (ucp_register.php dove i campi sono stati aggiunti correttamente dall'install del MOD), ed ho attivato il debug e questo è l'output

Codice: Seleziona tutto
Errore Generale
SQL ERROR [ mysqli ]

Field 'user_tournaments' doesn't have a default value [1364]

SQL

INSERT INTO phpbbVIAF_users (username, username_clean, user_password, user_pass_convert, user_email, user_email_hash, group_id, user_type, user_permissions, user_timezone, user_dateformat, user_lang, user_style, user_actkey, user_ip, user_regdate, user_passchg, user_options, user_new, user_inactive_reason, user_inactive_time, user_lastmark, user_lastvisit, user_lastpost_time, user_lastpage, user_posts, user_dst, user_colour, user_occ, user_interests, user_avatar, user_avatar_type, user_avatar_width, user_avatar_height, user_new_privmsg, user_unread_privmsg, user_last_privmsg, user_message_rules, user_full_folder, user_emailtime, user_notify, user_notify_pm, user_notify_type, user_allow_pm, user_allow_viewonline, user_allow_viewemail, user_allow_massemail, user_sig, user_sig_bbcode_uid, user_sig_bbcode_bitfield, user_form_salt) VALUES ('demoviaf1', 'demoviaf1', '', 0, 'demo1@viaf.it', '29230602813', '2', '0', '', '1', '|d/m/Y|, G:i', 'it', 2, '', '192.168.101.2', 1415127494, 1415127494, 231295, 0, 0, 0, 1415127494, 0, 0, '', 0, 1, '', '', '', '', 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1, 0, 1, 1, 1, 1, '', '', '', '8592760be6d1d483')

BACKTRACE

FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()

FILE: [ROOT]/includes/functions_user.php
LINE: 279
CALL: dbal_mysqli->sql_query()

FILE: [ROOT]/includes/auth.php
LINE: 930
CALL: user_add()

FILE: [ROOT]/includes/functions.php
LINE: 3036
CALL: auth->login()

FILE: [ROOT]/ucp.php
LINE: 81
CALL: login_box()


Essendo ovvio il problema legato al bridge tra joomla e phpbb3
spulciando nei files del bridge, premesso che in programamzione php sono una capra, ho trovato questo nel file che è il "plugin per l'autenticazione sul db joomla" che viene inserito nelle folder "include" di phpbb3 e che deve essere impostato come metodo di autenticazione AUTH_JOOMLA.PHP . Questo sembra essere a mio avviso il punto cruciale:

Codice: Seleziona tutto
   // user not in phpbb3 db, but is in joomla
   if (!$row && $result)
   {
      //get the joomla user
      $juser =& JFactory::getUser();
      
      // retrieve default group id
      $sql = 'SELECT group_id
            FROM ' . GROUPS_TABLE . "
            WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
            AND group_type = " . GROUP_SPECIAL;
      $result = $db->sql_query($sql);
      $group = $db->sql_fetchrow($result);
      $db->sql_freeresult($result);
      
      if (!$group) {
         trigger_error('NO_GROUP');
      }

      // generate user account data
      $row = array(
         'username'      => $username,
         //'user_password'   => phpbb_hash($password),
         'user_email'   => $juser->email,
         'group_id'      => $group['group_id'],
         'user_type'      => (string)USER_NORMAL,
         'user_ip'      => $user->ip,
      );
      
      if(!empty($has_login_name)) {
         $row['username']   = $juser->name;
         $row['login_name'] = $username;
      }
      
      $status = LOGIN_SUCCESS_CREATE_PROFILE;
   }

ed inserire dopo il

Codice: Seleziona tutto
      // generate user account data
      $row = array(
         'username'      => $username,
         //'user_password'   => phpbb_hash($password),
         'user_email'   => $juser->email,
         'group_id'      => $group['group_id'],
         'user_type'      => (string)USER_NORMAL,
         'user_ip'      => $user->ip,

il pezzo necessario per il MOD Rivals facendolo diventare
Codice: Seleziona tutto
// generate user account data
      $row = array(
         'username'      => $username,
         //'user_password'   => phpbb_hash($password),
         'user_email'   => $juser->email,
         'group_id'      => $group['group_id'],
         'user_type'      => (string)USER_NORMAL,
         'user_ip'      => $user->ip,
         // RIVALS MOD START
         'group_session'         => 0,
         'user_mvp'            => 0,
         'gamer_name'         => '',
         'user_tournaments'      => '',
         'user_ladder_level'      => 0,
         'user_ladder_value'      => 0,
         'user_exp'            => 0,
         'user_round_wins'      => 0,
         'user_round_losses'      => 0,
         'user_chicken'         => 0,
         'user_powns'         => 0,
         'rep_value'            => 5,
         'rep_time'            => 1,
         // RIVALS MOD END );
          );


Cosa ne pensi?
Avatar utente
prophecy
Sconosciuto
 
Messaggi: 4
Iscritto il: 04/11/2014, 13:23
Numero MVP totali: Nessuno

Re: phpbridge: problema " doesn't have a default value [1364

Messaggioda prophecy » 04/11/2014, 23:52

alora ottime notizie... ti confermo che ho applicato la modifica che avevo ipotizzato.: nel file auth_joomla.php che è presente nella folder [phpbb3_root]/includes/auth/

dopo il codice (alla riga 147)
Codice: Seleziona tutto
         'user_ip'      => $user->ip,

ho aggiunto la definizione dei dati delle tabelle che sono presenti nel file ucp_register.php dopo l'installazione del MOD, ottenendo questo:

Codice: Seleziona tutto
      // generate user account data
      $row = array(
         'username'      => $username,
         //'user_password'   => phpbb_hash($password),
         'user_email'   => $juser->email,
         'group_id'      => $group['group_id'],
         'user_type'      => (string)USER_NORMAL,
         'user_ip'      => $user->ip,
         // RIVALS MOD START
         'group_session'         => 0,
         'user_mvp'            => 0,
         'gamer_name'         => '',
         'user_tournaments'      => '',
         'user_ladder_level'      => 0,
         'user_ladder_value'      => 0,
         'user_exp'            => 0,
         'user_round_wins'      => 0,
         'user_round_losses'      => 0,
         'user_chicken'         => 0,
         'user_powns'         => 0,
         'rep_value'            => 5,
         'rep_time'            => 1,
         // RIVALS MOD END
      );


...e pe ora tutto funziona :mrgreen: 8-) adesso farò qualche altra prova e nel caso ti farò sapere ma sono confidente di aver trovato il bandolo della matassa. Ora mi rimangono sempre gli altri due problemi di cui ti ho parlato nel mio precedente post.
Luca
Avatar utente
prophecy
Sconosciuto
 
Messaggi: 4
Iscritto il: 04/11/2014, 13:23
Numero MVP totali: Nessuno

Re: phpbridge: problema " doesn't have a default value [1364

Messaggioda Soshen » 06/12/2014, 19:54

hai fatto la cosa giusta

in particolare il problema è per il campo tournament's che essend text non ha valore di default.

La stessa cosa l'avevo fatta per il bridge con wp.

Per gli altri 2 problemi non ho capito bene, puoi essere più chiaro?
Vedi le mie collezioni
Avatar utente
Soshen
Site Admin
 
Messaggi: 1357
Iscritto il: 09/07/2010, 23:54
Nazionalità: Italy (it)
Numero MVP totali: 4
Gamername: Soshen


Torna a phpRivals Mod

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron