Ahora KumbiaPHP está en Slack!!

Si deseas contactar con nosotros y de forma rápida, estamos en Slack:

http://slack.kumbiaphp.com/

helper: tiempo de conección [versión 0.5-RC1]

edited agosto 2008 in FAQ
este helper se basa en el mismo que publique para la version 0.47 http://kumbiaphp.com/foro/viewtopic.php?f=21&t=773
solo que ahora tiene unas correciones para que funcione en la nueva version y sea independiente de las librerias del kumbia.

PASO 1:
creacion de una base de datos llamada logs

CREATE TABLE `logs` (
`id` int(4) NOT NULL auto_increment,
`usuarios_id` int(4) default NULL,
`fecha_at` datetime default NULL,
`fecha_in` datetime default NULL,
`ip` varchar(16) default NULL,
PRIMARY KEY (`id`)
)


PASO 2:
dentro de las carpeta app/default/heplers creamos una carpeta de nuestras librerias llamada asi: library y dentro de esta un archivo php llamado online.php, queda de esta manera

KUMBIA_PATH/apps/default/helpers/library/online.php

PSO 3:
el contenido de online.php

<?php
class Online{
public function __construct(){

}
static function set_user($id){
$lastid = Session::get("logs_id");
$rec = new Logs();
$rec->find($lastid);
$rec->usuarios_id = $id;
$rec->ip = $_SERVER['REMOTE_ADDR'];
$rec->save();
if($rec->select_one("LAST_INSERT_ID()")!=0)
Session::set("logs_id", $rec->select_one("LAST_INSERT_ID()"));

}
}
?>


PASO 4:
crear un 2° helpers para el cambio formato de las fechas (d/m/Y) llamado utils.php dentro de library asi:

KUMBIA_PATH/apps/default/helpers/library/utils.php


PASO 5:
contenido de utils.php

<?php
function fentrada($cad){
$uno=substr($cad, 0, 2);
$dos=substr($cad, 3, 2);
$tres=substr($cad, 6, 4);
$cad2 = ($tres."/".$dos."/".$uno);
return $cad2;
}
function fsalida($cad2){
$tres=substr($cad2, 0, 4);
$dos=substr($cad2, 5, 2);
$uno=substr($cad2, 8, 2);
$cad = ($uno."/".$dos."/".$tres);
return $cad;
}

?>


PASO 6:
agregar los herlpers a nuestra aplicacion: debes incluir estas librerias en el main.php de esta manera:


<?php
/**
* Todo helper que se coloque aqui estara disponible en toda la aplicacion
**/
require_once 'library/online.php';
require_once 'library/utils.php';
?>



PASO 7:
ya damos por hecho que existe una tabla de usuarios y que contiene un id, login, nombre, eyc ...

PASO 8:
obtener el id del usuario cuando inicie sesion en el sistema y guardarla en una variable de sesion, de esta manera.


// $this->Usuarios->id obtiengo el id de la Tabla usuarios
Session::set_data('usuarios_id', $this->Usuarios->id);


PASO 9:
ahora en todas las paginas y sus funciones colocar el sigte codigo:


Online::set_user(Session::get("usuarios_id"));


ej:

function index(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}
function insert(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}
function before_insert(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}
function delete(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}
function buscar(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}
function etc(){
Online::set_user(Session::get("usuarios_id"));
/* codigo */
}


PASO 10:
con esto ya estamos listo solo faltaría visualizar el reporte:

craer un ApplicationController
logs_controller.php

KUMBIA_PATH/apps/default/controller/logs_controller.php


<?php
class LogsController extends ApplicationController {
function index(){
$this->fecha = fentrada($this->request("fecha"));
if($this->fecha!="//"){
$this->items = $this->Logs->find("fecha_in BETWEEN '$this->fecha 00:00:00' AND '$this->fecha 23:59:59'", "order: id desc");
}else{
$this->fecha = date("Y/m/d");
$this->items = $this->Logs->find("fecha_in BETWEEN '$this->fecha 00:00:00' AND '$this->fecha 23:59:59'", "order: id desc");
}
}
}
?>


modelo:
logs.php

KUMBIA_PATH/apps/default/model/logs.php


<?php
class Logs extends ActiveRecord {

}

?>


una vista:

KUMBIA_PATH/apps/default/view/logs/index.phtml


<? content() ?>
<span class="label"><?= date("d/m/Y H:m:s")?></span>
<?= form_tag("logs") ?>
<div align="center">
<? $fecha = fsalida($fecha); ?>
<?= date_field_tag("fecha", "class: label", "size: 10", "value: $fecha") ?>
<?= submit_tag("Ir")?>
</div>
<?= end_form_tag() ?>
<p>
</p>
<table align="center" width="80%">
<tr class="tabla_grupos">
<th>Usuario</th>
<th>Fec. y hora de inicio</th>
<th>Fec. y hora de término</th>
<th>Ip de acceso</th>
</tr>
<?
$class = "browse_primary";
foreach ($items as $item):
$aTmp_1 = explode(" ",$item->fecha_at);
$aTmp_2 = explode(" ",$item->fecha_in);
$fecha_ini = fsalida($aTmp_1[0])." ".$aTmp_1[1];
$fecha_fin = fsalida($aTmp_2[0])." ".$aTmp_2[1];
$usuarios = $Usuarios->find($item->usuarios_id);
?>
<tr class="<?= $class ?>">
<td><?= $usuarios->nombre ?></td>
<td align="center"><?= $fecha_ini ?></td>
<td align="center"><?= $fecha_fin ?></td>
<td align="center"><?= $item->ip ?></td>
</tr>
<?
if($class=="browse_primary")
$class = "browse_secondary";
else
$class = "browse_primary";
endforeach; ?>
</table>
Sign In or Register to comment.