El presente manual está hecho para Xoops 2.0.13.2 (creo que debe funcionar también hasta la versión xoops 2.0.15) y en él voy a mostrar cómo añadir un campo al formulario de registro. En el ejemplo añadiré un área de texto (text area) con la pregunta '¿Qué relación tienes con el grupo?', con 5 líneas de alto y requerido.
Lo primero que tendríamos que hacer es una copia de seguridad de la tabla xxx_users (sustituir xxx_ por el prefijo de la base de datos) y de los archivos register.php, include/registerform.php y kernel/user.php, con el objeto de restaurar los originales si nos encontramos con algún problema.
Modificación de tabla xxx_users
Se han de añadir las columnas que se deseen incorporar al formulario de registro. En mi caso añado la columna ‘relacion’.
Modificaciones en archivo registerform.php
Está situado en el directorio include. Justo antes de (línea 80 aproximadamente):
if ($xoopsConfigUser['reg_dispdsclmr'] != 0
&& $xoopsConfigUser['reg_disclaimer'] != '') {
Añadir la línea:
$reg_form->addElement(new XoopsFormTextarea('¿Qué relación tienes con el grupo?'
, "relacion", $myts->htmlSpecialChars($relacion),5), true);
Modificaciones en archivo register.php
Justo antes de (línea 158 aproximadamente):
<input type='hidden' name='user_mailok' value='".$user_mailok."' />
Añadir la línea:
<input type='hidden' name='relacion' value='".$relacion."' />
Y también justo antes de (línea 192 aproximadamente):
$newuser->setVar('user_mailok',$user_mailok, true);
Añadir la línea:
$newuser->setVar('relacion',$relacion, true);
Modificaciones en archivo user.php
Está situado en el directorio kernel. Justo después de (línea 103 aproximadamente):
$this->initVar('user_mailok', XOBJ_DTYPE_INT, 1, false);
Añadir la línea:
$this->initVar('relacion', XOBJ_DTYPE_TXTAREA, null, false, null);
Cambiar (línea 526 aproximadamente):
$sql = sprintf("INSERT INTO %s (uid, uname, name, email
, url, user_avatar, user_regdate, user_icq, user_from, user_sig
, user_viewemail, actkey, user_aim, user_yim, user_msnm, pass
, posts, attachsig, rank, level, theme, timezone_offset, last_login
, umode, uorder, notify_method, notify_mode, user_occ, bio
, user_intrest, user_mailok) VALUES (%u, %s, %s, %s, %s, %s, %u
, %s, %s, %s, %u, %s, %s, %s, %s, %s, %u, %u, %u, %u, %s
, %.2f, %u, %s, %u, %u, %u, %s, %s, %s, %u)"
, $this->db->prefix('users'), $uid, $this->db->quoteString($uname)
, $this->db->quoteString($name), $this->db->quoteString($email)
, $this->db->quoteString($url), $this->db->quoteString($user_avatar)
, time(), $this->db->quoteString($user_icq)
, $this->db->quoteString($user_from)
, $this->db->quoteString($user_sig), $user_viewemail
, $this->db->quoteString($actkey)
, $this->db->quoteString($user_aim)
, $this->db->quoteString($user_yim)
, $this->db->quoteString($user_msnm)
, $this->db->quoteString($pass), $posts, $attachsig, $rank, $level
, $this->db->quoteString($theme), $timezone_offset, 0
, $this->db->quoteString($umode), $uorder, $notify_method
, $notify_mode, $this->db->quoteString($user_occ)
, $this->db->quoteString($bio), $this->db->quoteString($user_intrest)
, $user_mailok);
Por
$sql = sprintf("INSERT INTO %s (uid, uname, name
, email, url, user_avatar, user_regdate, user_icq
, user_from, user_sig, user_viewemail, actkey, user_aim
, user_yim, user_msnm, pass, posts, attachsig
, rank, level, theme, timezone_offset, last_login
, umode, uorder, notify_method, notify_mode, user_occ, bio
, user_intrest, user_mailok,relacion)
VALUES (%u, %s, %s, %s, %s, %s, %u, %s, %s, %s, %u
, %s, %s, %s, %s, %s, %u, %u, %u, %u, %s, %.2f, %u, %s
, %u, %u, %u, %s, %s, %s, %u, %s)", $this->db->prefix('users')
, $uid, $this->db->quoteString($uname)
, $this->db->quoteString($name), $this->db->quoteString($email)
, $this->db->quoteString($url), $this->db->quoteString($user_avatar)
, time(), $this->db->quoteString($user_icq)
, $this->db->quoteString($user_from)
, $this->db->quoteString($user_sig), $user_viewemail
, $this->db->quoteString($actkey)
, $this->db->quoteString($user_aim)
, $this->db->quoteString($user_yim)
, $this->db->quoteString($user_msnm)
, $this->db->quoteString($pass), $posts, $attachsig, $rank
, $level, $this->db->quoteString($theme), $timezone_offset, 0
, $this->db->quoteString($umode), $uorder, $notify_method
, $notify_mode, $this->db->quoteString($user_occ)
, $this->db->quoteString($bio), $this->db->quoteString($user_intrest)
, $user_mailok, $this->db->quoteString($relacion));
Cambiar (línea 528 aproximadamente):
$sql = sprintf("UPDATE %s SET uname = %s, name = %s
, email = %s, url = %s, user_avatar = %s, user_icq = %s
, user_from = %s, user_sig = %s, user_viewemail = %u
, user_aim = %s, user_yim = %s, user_msnm = %s
, posts = %d, pass = %s, attachsig = %u, rank = %u
, level= %u, theme = %s, timezone_offset = %.2f, umode = %s
, last_login = %u, uorder = %u, notify_method = %u
, notify_mode = %u, user_occ = %s, bio = %s
, user_intrest = %s, user_mailok = %u WHERE uid = %u"
, $this->db->prefix('users'), $this->db->quoteString($uname)
, $this->db->quoteString($name), $this->db->quoteString($email)
, $this->db->quoteString($url), $this->db->quoteString($user_avatar)
, $this->db->quoteString($user_icq)
, $this->db->quoteString($user_from)
, $this->db->quoteString($user_sig), $user_viewemail
, $this->db->quoteString($user_aim)
, $this->db->quoteString($user_yim)
, $this->db->quoteString($user_msnm), $posts
, $this->db->quoteString($pass), $attachsig, $rank, $level
, $this->db->quoteString($theme), $timezone_offset
, $this->db->quoteString($umode), $last_login
, $uorder, $notify_method, $notify_mode
, $this->db->quoteString($user_occ)
, $this->db->quoteString($bio)
, $this->db->quoteString($user_intrest), $user_mailok, $uid);
Por
$sql = sprintf("UPDATE %s SET uname = %s, name = %s
, email = %s, url = %s, user_avatar = %s, user_icq = %s
, user_from = %s,user_sig = %s, user_viewemail = %u
, user_aim = %s, user_yim = %s, user_msnm = %s, posts = %d
, pass = %s, attachsig = %u, rank = %u, level= %u, theme = %s
, timezone_offset = %.2f, umode = %s, last_login = %u, uorder = %u
, notify_method = %u, notify_mode = %u, user_occ = %s, bio = %s
, user_intrest = %s, user_mailok = %u , relacion = %s
WHERE uid = %u", $this->db->prefix('users')
, $this->db->quoteString($uname), $this->db->quoteString($name)
, $this->db->quoteString($email), $this->db->quoteString($url)
, $this->db->quoteString($user_avatar)
, $this->db->quoteString($user_icq)
, $this->db->quoteString($user_from)
, $this->db->quoteString($user_sig)
, $user_viewemail, $this->db->quoteString($user_aim)
, $this->db->quoteString($user_yim)
, $this->db->quoteString($user_msnm)
, $posts, $this->db->quoteString($pass)
, $attachsig, $rank, $level, $this->db->quoteString($theme)
, $timezone_offset, $this->db->quoteString($umode)
, $last_login, $uorder, $notify_method, $notify_mode
, $this->db->quoteString($user_occ), $this->db->quoteString($bio)
, $this->db->quoteString($user_intrest), $user_mailok
, $this->db->quoteString($relacion), $uid);
Eso es todo. Espero que os sirva.
|