Usar AlphauserPoints con Rsform Pro de Joomla

Versiones utilizadas: RSform Pro 1.4.49 | AlphaUserPoints 1.89 | Joomla 2.57 

Hace tiempo tuve la necesidad de hacer una integración de dos componentes de joomla, el componente AlphaUserPoints y RSform Pro.

AlphaUserPoints es un componente que permite hacer un sistema de puntuación con joomla, ya sea por registrarse, iniciar sesión, leer un artículo o por evaluar algún articulo, AlphaUserPoints es muy extensible y permite crear unos plugin para que podamos otorgar puntos de forma personalizada, también nos proporciona una API con la cual podemos otorgar o quitar puntos de una forma muy sencilla, y esta va a ser la forma que veremos en este artículo.

Rsform Pro es un componente de joomla que nos permite crear de una forma muy rápida formularios los cuales podemos utilizar desde un simple formulario de contacto o como en este caso para otorgar puntos.

La necesidad de mi cliente era que un usuario pueda asignar puntos a otros clientes, entonces les mostraremos como asignar puntos con RSform Pro.

Lo primero que vamos a crear es el formulario para poder asignar los puntos, para esto necesitamos como mínimo los campos de usuario, puntos y descripción, asumiré que si necesitan más campos los pueden crear, también para este casó el usuario estará asignado desde la URL y será invocado desde otra parte, lo que necesitamos es el id.

Bien el formulario quedaría así:

alphauserpoint01

Cuando estamos creando un formulario RSform Pro tiene dos pestañas, una de componente y la otra de propiedades, en la pestaña de propiedades hay una opción que nos permite ejecutar un scripts durante el proceso del formulario, hay tres campos, el primer campo es llamado cuando el formulario es invocado, el segundo campo es llamado cuando el formulario se está procesando y el tercer campo es utilizado cuando el formulario fue enviado.  este tercer campo es el ocuparemos para asignar los puntos. y lo haremos con el siguiente código.
alphauserpoint03

 

Lo que veremos en el código anterior es la asignación de usuario, obtenemos los puntos y también la descripción después invocamos el API de AlphaUserPoints para actualizar los puntos. Veremos cada una de las partes del código.

La instrucción JRequest::getVar() de joomla nos permite obtener una variable desde la URL en este caso la variable “userid” y le asignamos una valor inicial para evitar error al ser llamado el formulario sin asignar un id de usuario.

Las variables “$puntos” y “$descripcion” son tomados del formulario y son asignados con la sintaxis de rsform.
La variable “$razon” es creada para mostrar la información en los puntos. 

Esta es la parte interesante de esta publicación,  en esta sección es donde se invoca la API de AlphaUserPoints y también se hace la asignación de puntos. en la primera linea  es invocado el archivo helper del componentes y en la segunda linea se comprueba que esté habilitado y funcionando, si la comprobación es correcta se hace una solicitud de la API.

Estas lineas son las encargados de asignar los puntos, una vez que se hizo la comprobación de la API se procede a hacer la comprobación del usuario, en la primera linea se hace una asignación del usuario, y en la segunda linea se comprueba si el usuario existe y si es verdadero se procede a utilizar los puntos, el modelo “AlphaUserpointsHelper::newpoints”  admite 5 parámetros y en orden son: plugin a utilizar, ID de usuario, clave de referencia, data, puntos, notificar puntos.

Plugin a usar: aquí se debe colocar el nombre del plugin el cual será utilizado para asignar los puntos, en nuestro caso utilizaremos el plugin “sysplgaup_custom” el cual es un plugin propio del componente que permite asignar puntos a cualquier usuario desde el backend.

Id de usuario: aquí es donde colocamos el id del usuario sin importar los métodos que se utilicen para asignarlo, ya sea por medio de url, desde un textbox, si el usuario está logueado, etc.

Clave de referencia: la clave de referencia se utiliza cuando tenemos un plugin personalizado y es necesario ademas un identificador, por esta razón se quedó vació.

data: esta es la información que se almacena en la base de datos del componente como una descripción.

Puntos: aquí es donde se asignan los puntos, si el valor es positivo los puntos son sumados, si el valor es negativo, los puntos son restados.

Notificar puntos: este es un valor boleano el cual nos permite habilitar la notificación de la actualización de puntos. en nuestro caso tenemos “true”, por lo que al ser actualizados los puntos se enviará un correo al usuario notificándolo, esto también depende de la configuración del plugin. 

Una vez que el formulario fue enviado se ejecuta el código anterior y si la API de AlphUserPoints está activa y el usuario existe, se actualizarán los puntos y se enviará una notificación. Espero que esta publicación les pueda ayudar.