Implementar rut chileno en joomla 3.x

Tema en 'Programación & Programación Web' iniciado por pachuno, 7 Ago 2014.

  1. pachuno

    pachuno Usuario Nuevo nvl. 1
    16/41

    Registrado:
    14 Abr 2009
    Mensajes:
    236
    Me Gusta recibidos:
    0
    espero que les sirva y aporten con sus comentarios.(es un poco largo pero sirve mucho)


    Como recomendación hacer una copia de seguridad de su joomla. Lo que yo hago antes de instalar cualquier cosa o modificar archivos es:


    Creo un Subdominio en mi cpanel ej: copia.misitio.cl y en en mi instalador (Softaculous), en mis listados de instalaciones hago un clon de mi joomla a mi otro sitio y realizo todos los cambios. si la página funciona bien meto mano en mi sitio oficial.


    Se supone que se está utilizando el registro de usuarios que trae por defecto Joomla






    [​IMG]




    Paso 1 (insertar campo rut)


    Lo primero que tenemos que caer es agregar en nuestra base de datos de joomla un campo llamado rut.
    Ingresamos nuestro cpanel de nuestro sito y le damos click en phpMy Admin
    [​IMG]


    Se nos abre la ventana de nuestras bases de datos instaladas, seleccionamos la de nuestro joomla, y le damos click a la tabla xxx_users (xxx corresponde al prefijo de nustra base de datos).


    [​IMG]


    Se nos abrirá en el lado derecho nuestra tabla y le damos clic en es menú Estructura.


    [​IMG]


    Selecionamos en campo id


    [​IMG]


    Seleccionamos la opción después de id y le damos a continuar


    [​IMG]




    Se nos abre la ventana de crear el campo y colocamos los siguientes datos.


    [​IMG]


    Nomre: rut
    Tipo : VARCHAR
    Longitud: 15
    Predeterminado : Personalisado
    Cotejamiento: utf8_general_ci


    y le damos a guardar.


    * Recuerden que esto se hace suponiendo que nuestro joomla esta recién instalado.
    si ya tenemos usuarios habrá que ingresar rut manualmente para no tener el campo nulo si son muchos usuari se pude insertar un rut a todos con sql.recuerden que modificar la base de datos es su responsabilidad.


    Fin de la primera parte




    Paso 2 (insertar Código validar rut)




    Buscamos el archivo /libraries/joomla/table/user.php para modificarlo. normalmente yo lo hago en mi cpanel con el administrador de archivos.


    mas menos en la línea 168 (las líneas de código varían). pero para que se guíen va después de esto.




    /**
    * Validation and filtering
    *
    * @ return boolean True if satisfactory
    *
    * @ since 11.1
    */
    public function check()
    {
    // Set user id to null istead of 0, if needed
    if ($this->id === 0)
    {
    $this->id = null;
    }


    Insertar a continuación el siguiente código de validación de nuestro rut






    //////////////////////////////////////////////////////////////////////////////
    // validar rut
    if (trim($this->rut) == '')
    {
    $this->setError(JText::_('Ingrese RUT para su comprobante de pago'));


    return false;


    }


    if(strpos($this->rut,"-"; )==false){
    $RUT[0] = substr($this->rut, 0, -1);
    $RUT[1] = substr($this->rut, -1);
    }else{
    $RUT = explode("-", trim($this->rut));
    }
    $elRut = str_replace(".", "", trim($RUT[0]));
    $factor = 2;
    for($i = strlen($elRut)-1; $i >= 0; $i--):
    $factor = $factor > 7 ? 2 : $factor;
    $suma += $elRut{$i}*$factor++;
    endfor;
    $resto = $suma % 11;
    $dv = 11 - $resto;
    if($dv == 11){
    $dv=0;
    }else if($dv == 10){
    $dv="k";
    }else{
    $dv=$dv;
    }
    if($dv == trim(strtolower($RUT[1]))){
    // return true;
    }else{
    $this->setError(JText::_('Ingrese RUT Valido'));


    return false;
    }






    $permitidos = "0123456789-kK.";
    for ($i=0; $i<strlen($this->rut); $i++){
    if (strpos($permitidos, substr($this->rut,$i,1))===false){
    $this->setError(JText::_('Ingrese RUT Valido'));
    return false;
    }
    }














    ///////////////////////////////////////////////////////////////////////////////////////////////


    y después sigue el código original.


    // Validate user information
    if (trim($this->name) == '')
    {
    $this->setError(JText::_('JLIB_DATABASE_ERROR_PLEASE_ENTER_YOUR_NAME'));


    return false;
    }


    if (trim($this->username) == '')
    {
    $this->setError(JText::_('JLIB_DATABASE_ERROR_PLEASE_ENTER_A_USER_NAME'));


    return false;
    }


    bla bla bla bla y todo eso, Guardamos y cerramos el archivo.










    Paso 3 (insertar campo en formulario)




    Buscamos el archivo /components/com_users/models/forms/registration.xml para modificarlo.
    en la línea 10 después de:


    <?xml version="1.0" encoding="utf-8"?>
    <form>
    <fieldset name="default"
    label="COM_USERS_REGISTRATION_DEFAULT_LABEL"
    >


    <field name="spacer" type="spacer" class="text"
    label="COM_USERS_REGISTER_REQUIRED"
    />


    insertar el siguiente codigo
    ////////////////////////////////////////////////////////////////////////////////////////////////////////




    <field name="rut" type="text"
    description="Para Generar Factura Excenta"
    filter="string"
    label="RUT"
    required="true"
    size=15
    />




    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    la description="Para Generar Factura Excenta" la pueden cambiar según su sitio








    Paso 4 (campo rut cuando en usuario edita su perfil)


    Buscamos el archivo /components/com_users/models/forms/profile.xml para modificarlo.


    en la linea 9




    ////////////////////////////////////////////////////////////////////////




    <field name="rut" type="text"
    description="Indentificacion de Usuario "
    filter="rut"
    label="RUT"
    required="true"
    readonly="true"
    size=15


    />




    ////////////////////////////////////////////////////////////////


    Nota: si miran el código la linea readonly="true" yo desactivo esta línea para que el rut solo se muestre y no esté disponible para su edición




    Recuerden insertar el código y acomodar todo (tabulaciones) para mantener un orden en nuestro código, es importante mantener las líneas de inserción para que no se modifique la posición del campo a la vista del usuario.








    Paso 5 (cuando el solo ve su perfil)


    Buscamos el archivo /components/com_users/views/profile/tmpl/default_core.php para modificarlo.




    en la lina 18 despues de este codigo:


    <fieldset id="users-profile-core">
    <legend>
    <?php echo JText::_('COM_USERS_PROFILE_CORE_LEGEND'); ?>
    </legend>
    <dl class="dl-horizontal">


    insertar lo sgt.




    <dt>
    <?php echo JText::_('RUT'); ?>
    </dt>
    <dd>
    <?php echo $this->data->rut; ?>
    </dd




    ////////////////////////////////////////////////////////////////////////////////////////////////////////






    Paso 6 (Variables de entorno)




    /libraries/joomla/user/authentication.php


    linea 379


    public $rut = '';






    /libraries/joomla/user/user.php


    linea 45


    public $rut = null;






    Paso 7 (mostrar campo en el administrador)


    Buscamos el archivo /administrator/components/com_users/models/forms/user.xml para modificarlo.




    recuerden que este campo esta obligatorio no puede ser nulo. en el admin lo puede modificar.




    línea 4 después de:


    <?xml version="1.0" encoding="utf-8"?>
    <form>
    <fieldset name="user_details">




    insertar
    ///////////////////////////////////////////////




    <field name="rut" type="text"
    description="Rut del cliente (admin)"
    label="RUT"
    required="true"
    size=15
    />




    /////////////////////////////////////////////////////////////////////


    [​IMG]








    Bueno eso sería mi humilde aporte, fueron noches descifrando joomla y por ultimo..






    VIVA [​IMG] MIER...........